void unpack9(unsigned int *p, unsigned int *w) {
  int i;
  for (i = 0; i < 128; i += 32, p += 32, w += 9) {
    p[0] = (w[0] >> 23);
    p[1] = (w[0] >> 14) & 511;
    p[2] = (w[0] >> 5) & 511;
    p[3] = (w[0] << 4) & 511;
    p[3] |= (w[1] >> 28);
    p[4] = (w[1] >> 19) & 511;
    p[5] = (w[1] >> 10) & 511;
    p[6] = (w[1] >> 1) & 511;
    p[7] = (w[1] << 8) & 511;
    p[7] |= (w[2] >> 24);
    p[8] = (w[2] >> 15) & 511;
    p[9] = (w[2] >> 6) & 511;
    p[10] = (w[2] << 3) & 511;
    p[10] |= (w[3] >> 29);
    p[11] = (w[3] >> 20) & 511;
    p[12] = (w[3] >> 11) & 511;
    p[13] = (w[3] >> 2) & 511;
    p[14] = (w[3] << 7) & 511;
    p[14] |= (w[4] >> 25);
    p[15] = (w[4] >> 16) & 511;
    p[16] = (w[4] >> 7) & 511;
    p[17] = (w[4] << 2) & 511;
    p[17] |= (w[5] >> 30);
    p[18] = (w[5] >> 21) & 511;
    p[19] = (w[5] >> 12) & 511;
    p[20] = (w[5] >> 3) & 511;
    p[21] = (w[5] << 6) & 511;
    p[21] |= (w[6] >> 26);
    p[22] = (w[6] >> 17) & 511;
    p[23] = (w[6] >> 8) & 511;
    p[24] = (w[6] << 1) & 511;
    p[24] |= (w[7] >> 31);
    p[25] = (w[7] >> 22) & 511;
    p[26] = (w[7] >> 13) & 511;
    p[27] = (w[7] >> 4) & 511;
    p[28] = (w[7] << 5) & 511;
    p[28] |= (w[8] >> 27);
    p[29] = (w[8] >> 18) & 511;
    p[30] = (w[8] >> 9) & 511;
    p[31] = (w[8]) & 511;
  }
}


x86 assembly (clang, -O0):
<unpack9>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
movl   $0x0,-0x14(%rbp)
cmpl   $0x80,-0x14(%rbp)
jge    14ba <unpack9+0x3ba>
mov    -0x10(%rbp),%rax
mov    (%rax),%ecx
shr    $0x17,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x10(%rbp),%rax
mov    (%rax),%ecx
shr    $0xe,%ecx
and    $0x1ff,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x4(%rax)
mov    -0x10(%rbp),%rax
mov    (%rax),%ecx
shr    $0x5,%ecx
and    $0x1ff,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x8(%rax)
mov    -0x10(%rbp),%rax
mov    (%rax),%ecx
shl    $0x4,%ecx
and    $0x1ff,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0xc(%rax)
mov    -0x10(%rbp),%rax
mov    0x4(%rax),%ecx
shr    $0x1c,%ecx
mov    -0x8(%rbp),%rax
or     0xc(%rax),%ecx
mov    %ecx,0xc(%rax)
mov    -0x10(%rbp),%rax
mov    0x4(%rax),%ecx
shr    $0x13,%ecx
and    $0x1ff,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x10(%rax)
mov    -0x10(%rbp),%rax
mov    0x4(%rax),%ecx
shr    $0xa,%ecx
and    $0x1ff,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x14(%rax)
mov    -0x10(%rbp),%rax
mov    0x4(%rax),%ecx
shr    $0x1,%ecx
and    $0x1ff,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x18(%rax)
mov    -0x10(%rbp),%rax
mov    0x4(%rax),%ecx
shl    $0x8,%ecx
and    $0x1ff,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x1c(%rax)
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%ecx
shr    $0x18,%ecx
mov    -0x8(%rbp),%rax
or     0x1c(%rax),%ecx
mov    %ecx,0x1c(%rax)
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%ecx
shr    $0xf,%ecx
and    $0x1ff,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x20(%rax)
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%ecx
shr    $0x6,%ecx
and    $0x1ff,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x24(%rax)
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%ecx
shl    $0x3,%ecx
and    $0x1ff,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x28(%rax)
mov    -0x10(%rbp),%rax
mov    0xc(%rax),%ecx
shr    $0x1d,%ecx
mov    -0x8(%rbp),%rax
or     0x28(%rax),%ecx
mov    %ecx,0x28(%rax)
mov    -0x10(%rbp),%rax
mov    0xc(%rax),%ecx
shr    $0x14,%ecx
and    $0x1ff,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x2c(%rax)
mov    -0x10(%rbp),%rax
mov    0xc(%rax),%ecx
shr    $0xb,%ecx
and    $0x1ff,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x30(%rax)
mov    -0x10(%rbp),%rax
mov    0xc(%rax),%ecx
shr    $0x2,%ecx
and    $0x1ff,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x34(%rax)
mov    -0x10(%rbp),%rax
mov    0xc(%rax),%ecx
shl    $0x7,%ecx
and    $0x1ff,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x38(%rax)
mov    -0x10(%rbp),%rax
mov    0x10(%rax),%ecx
shr    $0x19,%ecx
mov    -0x8(%rbp),%rax
or     0x38(%rax),%ecx
mov    %ecx,0x38(%rax)
mov    -0x10(%rbp),%rax
mov    0x10(%rax),%ecx
shr    $0x10,%ecx
and    $0x1ff,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x3c(%rax)
mov    -0x10(%rbp),%rax
mov    0x10(%rax),%ecx
shr    $0x7,%ecx
and    $0x1ff,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x40(%rax)
mov    -0x10(%rbp),%rax
mov    0x10(%rax),%ecx
shl    $0x2,%ecx
and    $0x1ff,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x44(%rax)
mov    -0x10(%rbp),%rax
mov    0x14(%rax),%ecx
shr    $0x1e,%ecx
mov    -0x8(%rbp),%rax
or     0x44(%rax),%ecx
mov    %ecx,0x44(%rax)
mov    -0x10(%rbp),%rax
mov    0x14(%rax),%ecx
shr    $0x15,%ecx
and    $0x1ff,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x48(%rax)
mov    -0x10(%rbp),%rax
mov    0x14(%rax),%ecx
shr    $0xc,%ecx
and    $0x1ff,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x4c(%rax)
mov    -0x10(%rbp),%rax
mov    0x14(%rax),%ecx
shr    $0x3,%ecx
and    $0x1ff,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x50(%rax)
mov    -0x10(%rbp),%rax
mov    0x14(%rax),%ecx
shl    $0x6,%ecx
and    $0x1ff,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x54(%rax)
mov    -0x10(%rbp),%rax
mov    0x18(%rax),%ecx
shr    $0x1a,%ecx
mov    -0x8(%rbp),%rax
or     0x54(%rax),%ecx
mov    %ecx,0x54(%rax)
mov    -0x10(%rbp),%rax
mov    0x18(%rax),%ecx
shr    $0x11,%ecx
and    $0x1ff,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x58(%rax)
mov    -0x10(%rbp),%rax
mov    0x18(%rax),%ecx
shr    $0x8,%ecx
and    $0x1ff,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x5c(%rax)
mov    -0x10(%rbp),%rax
mov    0x18(%rax),%ecx
shl    $0x1,%ecx
and    $0x1ff,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x60(%rax)
mov    -0x10(%rbp),%rax
mov    0x1c(%rax),%ecx
shr    $0x1f,%ecx
mov    -0x8(%rbp),%rax
or     0x60(%rax),%ecx
mov    %ecx,0x60(%rax)
mov    -0x10(%rbp),%rax
mov    0x1c(%rax),%ecx
shr    $0x16,%ecx
and    $0x1ff,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x64(%rax)
mov    -0x10(%rbp),%rax
mov    0x1c(%rax),%ecx
shr    $0xd,%ecx
and    $0x1ff,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x68(%rax)
mov    -0x10(%rbp),%rax
mov    0x1c(%rax),%ecx
shr    $0x4,%ecx
and    $0x1ff,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x6c(%rax)
mov    -0x10(%rbp),%rax
mov    0x1c(%rax),%ecx
shl    $0x5,%ecx
and    $0x1ff,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x70(%rax)
mov    -0x10(%rbp),%rax
mov    0x20(%rax),%ecx
shr    $0x1b,%ecx
mov    -0x8(%rbp),%rax
or     0x70(%rax),%ecx
mov    %ecx,0x70(%rax)
mov    -0x10(%rbp),%rax
mov    0x20(%rax),%ecx
shr    $0x12,%ecx
and    $0x1ff,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x74(%rax)
mov    -0x10(%rbp),%rax
mov    0x20(%rax),%ecx
shr    $0x9,%ecx
and    $0x1ff,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x78(%rax)
mov    -0x10(%rbp),%rax
mov    0x20(%rax),%ecx
and    $0x1ff,%ecx
mov    -0x8(%rbp),%rax
mov    %ecx,0x7c(%rax)
mov    -0x14(%rbp),%eax
add    $0x20,%eax
mov    %eax,-0x14(%rbp)
mov    -0x8(%rbp),%rax
add    $0x80,%rax
mov    %rax,-0x8(%rbp)
mov    -0x10(%rbp),%rax
add    $0x24,%rax
mov    %rax,-0x10(%rbp)
jmp    1113 <unpack9+0x13>
pop    %rbp
ret

x86 assembly (clang, -O2):
<unpack9>:
mov    $0xffffffe0,%eax
mov    $0x1ff,%r8d
nopl   0x0(%rax,%rax,1)
mov    (%rsi),%edx
shr    $0x17,%edx
mov    %edx,(%rdi)
mov    (%rsi),%edx
shr    $0xe,%edx
and    $0x1ff,%edx
mov    %edx,0x4(%rdi)
mov    (%rsi),%edx
shr    $0x5,%edx
and    $0x1ff,%edx
mov    %edx,0x8(%rdi)
mov    (%rsi),%ecx
mov    %ecx,%edx
and    $0x1f,%edx
shl    $0x4,%edx
mov    %edx,0xc(%rdi)
mov    0x4(%rsi),%edx
shrd   $0x1c,%ecx,%edx
and    $0x1ff,%edx
mov    %edx,0xc(%rdi)
mov    0x4(%rsi),%ecx
shr    $0x13,%ecx
and    $0x1ff,%ecx
mov    %ecx,0x10(%rdi)
mov    0x4(%rsi),%ecx
shr    $0xa,%ecx
and    $0x1ff,%ecx
mov    %ecx,0x14(%rdi)
mov    0x4(%rsi),%ecx
shr    %ecx
and    $0x1ff,%ecx
mov    %ecx,0x18(%rdi)
mov    0x4(%rsi),%ecx
mov    %ecx,%edx
and    $0x1,%edx
shl    $0x8,%edx
mov    %edx,0x1c(%rdi)
mov    0x8(%rsi),%edx
shrd   $0x18,%ecx,%edx
and    $0x1ff,%edx
mov    %edx,0x1c(%rdi)
mov    0x8(%rsi),%ecx
shr    $0xf,%ecx
and    $0x1ff,%ecx
mov    %ecx,0x20(%rdi)
mov    0x8(%rsi),%ecx
shr    $0x6,%ecx
and    $0x1ff,%ecx
mov    %ecx,0x24(%rdi)
mov    0x8(%rsi),%ecx
mov    %ecx,%edx
and    $0x3f,%edx
shl    $0x3,%edx
mov    %edx,0x28(%rdi)
mov    0xc(%rsi),%edx
shrd   $0x1d,%ecx,%edx
and    $0x1ff,%edx
mov    %edx,0x28(%rdi)
mov    0xc(%rsi),%ecx
shr    $0x14,%ecx
and    $0x1ff,%ecx
mov    %ecx,0x2c(%rdi)
mov    0xc(%rsi),%ecx
shr    $0xb,%ecx
and    $0x1ff,%ecx
mov    %ecx,0x30(%rdi)
mov    0xc(%rsi),%ecx
shr    $0x2,%ecx
and    $0x1ff,%ecx
mov    %ecx,0x34(%rdi)
mov    0xc(%rsi),%ecx
mov    %ecx,%edx
and    $0x3,%edx
shl    $0x7,%edx
mov    %edx,0x38(%rdi)
mov    0x10(%rsi),%edx
shrd   $0x19,%ecx,%edx
and    $0x1ff,%edx
mov    %edx,0x38(%rdi)
movzwl 0x12(%rsi),%ecx
and    $0x1ff,%ecx
mov    %ecx,0x3c(%rdi)
mov    0x10(%rsi),%ecx
shr    $0x7,%ecx
and    $0x1ff,%ecx
mov    %ecx,0x40(%rdi)
mov    0x10(%rsi),%ecx
mov    %ecx,%edx
and    $0x7f,%edx
shl    $0x2,%edx
mov    %edx,0x44(%rdi)
mov    0x14(%rsi),%edx
shrd   $0x1e,%ecx,%edx
and    $0x1ff,%edx
mov    %edx,0x44(%rdi)
mov    0x14(%rsi),%ecx
shr    $0x15,%ecx
and    $0x1ff,%ecx
mov    %ecx,0x48(%rdi)
mov    0x14(%rsi),%ecx
shr    $0xc,%ecx
and    $0x1ff,%ecx
mov    %ecx,0x4c(%rdi)
mov    0x14(%rsi),%ecx
shr    $0x3,%ecx
and    $0x1ff,%ecx
mov    %ecx,0x50(%rdi)
mov    0x14(%rsi),%ecx
mov    %ecx,%edx
and    $0x7,%edx
shl    $0x6,%edx
mov    %edx,0x54(%rdi)
mov    0x18(%rsi),%edx
shrd   $0x1a,%ecx,%edx
and    $0x1ff,%edx
mov    %edx,0x54(%rdi)
mov    0x18(%rsi),%ecx
shr    $0x11,%ecx
and    $0x1ff,%ecx
mov    %ecx,0x58(%rdi)
mov    0x18(%rsi),%ecx
shr    $0x8,%ecx
and    $0x1ff,%ecx
mov    %ecx,0x5c(%rdi)
mov    0x18(%rsi),%ecx
movzbl %cl,%edx
add    %edx,%edx
mov    %edx,0x60(%rdi)
mov    0x1c(%rsi),%edx
shrd   $0x1f,%ecx,%edx
and    $0x1ff,%edx
mov    %edx,0x60(%rdi)
mov    0x1c(%rsi),%ecx
shr    $0x16,%ecx
and    $0x1ff,%ecx
mov    %ecx,0x64(%rdi)
mov    0x1c(%rsi),%ecx
shr    $0xd,%ecx
and    $0x1ff,%ecx
mov    %ecx,0x68(%rdi)
mov    0x1c(%rsi),%ecx
shr    $0x4,%ecx
and    $0x1ff,%ecx
mov    %ecx,0x6c(%rdi)
mov    0x1c(%rsi),%ecx
mov    %ecx,%edx
and    $0xf,%edx
shl    $0x5,%edx
mov    %edx,0x70(%rdi)
mov    0x20(%rsi),%edx
shrd   $0x1b,%ecx,%edx
and    $0x1ff,%edx
mov    %edx,0x70(%rdi)
mov    0x20(%rsi),%ecx
shr    $0x12,%ecx
and    $0x1ff,%ecx
mov    %ecx,0x74(%rdi)
mov    0x20(%rsi),%ecx
shr    $0x9,%ecx
and    $0x1ff,%ecx
mov    %ecx,0x78(%rdi)
mov    0x20(%rsi),%ecx
and    %r8d,%ecx
mov    %ecx,0x7c(%rdi)
add    $0x20,%eax
add    $0x24,%rsi
sub    $0xffffffffffffff80,%rdi
cmp    $0x60,%eax
jb     1110 <unpack9+0x10>
ret

LLVM IR (-O0):
define void @unpack9(i32* %0, i32* %1) {
%3 = alloca i32*
%4 = alloca i32*
%5 = alloca i32
store i32* %0, i32** %3
store i32* %1, i32** %4
store i32 0, i32* %5
br label %6
6: ; preds = %296, %2
%7 = load i32, i32* %5
%8 = icmp slt i32 %7, 128
br i1 %8, label %9, label %303
9: ; preds = %6
%10 = load i32*, i32** %4
%11 = getelementptr inbounds i32, i32* %10, i64 0
%12 = load i32, i32* %11
%13 = lshr i32 %12, 23
%14 = load i32*, i32** %3
%15 = getelementptr inbounds i32, i32* %14, i64 0
store i32 %13, i32* %15
%16 = load i32*, i32** %4
%17 = getelementptr inbounds i32, i32* %16, i64 0
%18 = load i32, i32* %17
%19 = lshr i32 %18, 14
%20 = and i32 %19, 511
%21 = load i32*, i32** %3
%22 = getelementptr inbounds i32, i32* %21, i64 1
store i32 %20, i32* %22
%23 = load i32*, i32** %4
%24 = getelementptr inbounds i32, i32* %23, i64 0
%25 = load i32, i32* %24
%26 = lshr i32 %25, 5
%27 = and i32 %26, 511
%28 = load i32*, i32** %3
%29 = getelementptr inbounds i32, i32* %28, i64 2
store i32 %27, i32* %29
%30 = load i32*, i32** %4
%31 = getelementptr inbounds i32, i32* %30, i64 0
%32 = load i32, i32* %31
%33 = shl i32 %32, 4
%34 = and i32 %33, 511
%35 = load i32*, i32** %3
%36 = getelementptr inbounds i32, i32* %35, i64 3
store i32 %34, i32* %36
%37 = load i32*, i32** %4
%38 = getelementptr inbounds i32, i32* %37, i64 1
%39 = load i32, i32* %38
%40 = lshr i32 %39, 28
%41 = load i32*, i32** %3
%42 = getelementptr inbounds i32, i32* %41, i64 3
%43 = load i32, i32* %42
%44 = or i32 %43, %40
store i32 %44, i32* %42
%45 = load i32*, i32** %4
%46 = getelementptr inbounds i32, i32* %45, i64 1
%47 = load i32, i32* %46
%48 = lshr i32 %47, 19
%49 = and i32 %48, 511
%50 = load i32*, i32** %3
%51 = getelementptr inbounds i32, i32* %50, i64 4
store i32 %49, i32* %51
%52 = load i32*, i32** %4
%53 = getelementptr inbounds i32, i32* %52, i64 1
%54 = load i32, i32* %53
%55 = lshr i32 %54, 10
%56 = and i32 %55, 511
%57 = load i32*, i32** %3
%58 = getelementptr inbounds i32, i32* %57, i64 5
store i32 %56, i32* %58
%59 = load i32*, i32** %4
%60 = getelementptr inbounds i32, i32* %59, i64 1
%61 = load i32, i32* %60
%62 = lshr i32 %61, 1
%63 = and i32 %62, 511
%64 = load i32*, i32** %3
%65 = getelementptr inbounds i32, i32* %64, i64 6
store i32 %63, i32* %65
%66 = load i32*, i32** %4
%67 = getelementptr inbounds i32, i32* %66, i64 1
%68 = load i32, i32* %67
%69 = shl i32 %68, 8
%70 = and i32 %69, 511
%71 = load i32*, i32** %3
%72 = getelementptr inbounds i32, i32* %71, i64 7
store i32 %70, i32* %72
%73 = load i32*, i32** %4
%74 = getelementptr inbounds i32, i32* %73, i64 2
%75 = load i32, i32* %74
%76 = lshr i32 %75, 24
%77 = load i32*, i32** %3
%78 = getelementptr inbounds i32, i32* %77, i64 7
%79 = load i32, i32* %78
%80 = or i32 %79, %76
store i32 %80, i32* %78
%81 = load i32*, i32** %4
%82 = getelementptr inbounds i32, i32* %81, i64 2
%83 = load i32, i32* %82
%84 = lshr i32 %83, 15
%85 = and i32 %84, 511
%86 = load i32*, i32** %3
%87 = getelementptr inbounds i32, i32* %86, i64 8
store i32 %85, i32* %87
%88 = load i32*, i32** %4
%89 = getelementptr inbounds i32, i32* %88, i64 2
%90 = load i32, i32* %89
%91 = lshr i32 %90, 6
%92 = and i32 %91, 511
%93 = load i32*, i32** %3
%94 = getelementptr inbounds i32, i32* %93, i64 9
store i32 %92, i32* %94
%95 = load i32*, i32** %4
%96 = getelementptr inbounds i32, i32* %95, i64 2
%97 = load i32, i32* %96
%98 = shl i32 %97, 3
%99 = and i32 %98, 511
%100 = load i32*, i32** %3
%101 = getelementptr inbounds i32, i32* %100, i64 10
store i32 %99, i32* %101
%102 = load i32*, i32** %4
%103 = getelementptr inbounds i32, i32* %102, i64 3
%104 = load i32, i32* %103
%105 = lshr i32 %104, 29
%106 = load i32*, i32** %3
%107 = getelementptr inbounds i32, i32* %106, i64 10
%108 = load i32, i32* %107
%109 = or i32 %108, %105
store i32 %109, i32* %107
%110 = load i32*, i32** %4
%111 = getelementptr inbounds i32, i32* %110, i64 3
%112 = load i32, i32* %111
%113 = lshr i32 %112, 20
%114 = and i32 %113, 511
%115 = load i32*, i32** %3
%116 = getelementptr inbounds i32, i32* %115, i64 11
store i32 %114, i32* %116
%117 = load i32*, i32** %4
%118 = getelementptr inbounds i32, i32* %117, i64 3
%119 = load i32, i32* %118
%120 = lshr i32 %119, 11
%121 = and i32 %120, 511
%122 = load i32*, i32** %3
%123 = getelementptr inbounds i32, i32* %122, i64 12
store i32 %121, i32* %123
%124 = load i32*, i32** %4
%125 = getelementptr inbounds i32, i32* %124, i64 3
%126 = load i32, i32* %125
%127 = lshr i32 %126, 2
%128 = and i32 %127, 511
%129 = load i32*, i32** %3
%130 = getelementptr inbounds i32, i32* %129, i64 13
store i32 %128, i32* %130
%131 = load i32*, i32** %4
%132 = getelementptr inbounds i32, i32* %131, i64 3
%133 = load i32, i32* %132
%134 = shl i32 %133, 7
%135 = and i32 %134, 511
%136 = load i32*, i32** %3
%137 = getelementptr inbounds i32, i32* %136, i64 14
store i32 %135, i32* %137
%138 = load i32*, i32** %4
%139 = getelementptr inbounds i32, i32* %138, i64 4
%140 = load i32, i32* %139
%141 = lshr i32 %140, 25
%142 = load i32*, i32** %3
%143 = getelementptr inbounds i32, i32* %142, i64 14
%144 = load i32, i32* %143
%145 = or i32 %144, %141
store i32 %145, i32* %143
%146 = load i32*, i32** %4
%147 = getelementptr inbounds i32, i32* %146, i64 4
%148 = load i32, i32* %147
%149 = lshr i32 %148, 16
%150 = and i32 %149, 511
%151 = load i32*, i32** %3
%152 = getelementptr inbounds i32, i32* %151, i64 15
store i32 %150, i32* %152
%153 = load i32*, i32** %4
%154 = getelementptr inbounds i32, i32* %153, i64 4
%155 = load i32, i32* %154
%156 = lshr i32 %155, 7
%157 = and i32 %156, 511
%158 = load i32*, i32** %3
%159 = getelementptr inbounds i32, i32* %158, i64 16
store i32 %157, i32* %159
%160 = load i32*, i32** %4
%161 = getelementptr inbounds i32, i32* %160, i64 4
%162 = load i32, i32* %161
%163 = shl i32 %162, 2
%164 = and i32 %163, 511
%165 = load i32*, i32** %3
%166 = getelementptr inbounds i32, i32* %165, i64 17
store i32 %164, i32* %166
%167 = load i32*, i32** %4
%168 = getelementptr inbounds i32, i32* %167, i64 5
%169 = load i32, i32* %168
%170 = lshr i32 %169, 30
%171 = load i32*, i32** %3
%172 = getelementptr inbounds i32, i32* %171, i64 17
%173 = load i32, i32* %172
%174 = or i32 %173, %170
store i32 %174, i32* %172
%175 = load i32*, i32** %4
%176 = getelementptr inbounds i32, i32* %175, i64 5
%177 = load i32, i32* %176
%178 = lshr i32 %177, 21
%179 = and i32 %178, 511
%180 = load i32*, i32** %3
%181 = getelementptr inbounds i32, i32* %180, i64 18
store i32 %179, i32* %181
%182 = load i32*, i32** %4
%183 = getelementptr inbounds i32, i32* %182, i64 5
%184 = load i32, i32* %183
%185 = lshr i32 %184, 12
%186 = and i32 %185, 511
%187 = load i32*, i32** %3
%188 = getelementptr inbounds i32, i32* %187, i64 19
store i32 %186, i32* %188
%189 = load i32*, i32** %4
%190 = getelementptr inbounds i32, i32* %189, i64 5
%191 = load i32, i32* %190
%192 = lshr i32 %191, 3
%193 = and i32 %192, 511
%194 = load i32*, i32** %3
%195 = getelementptr inbounds i32, i32* %194, i64 20
store i32 %193, i32* %195
%196 = load i32*, i32** %4
%197 = getelementptr inbounds i32, i32* %196, i64 5
%198 = load i32, i32* %197
%199 = shl i32 %198, 6
%200 = and i32 %199, 511
%201 = load i32*, i32** %3
%202 = getelementptr inbounds i32, i32* %201, i64 21
store i32 %200, i32* %202
%203 = load i32*, i32** %4
%204 = getelementptr inbounds i32, i32* %203, i64 6
%205 = load i32, i32* %204
%206 = lshr i32 %205, 26
%207 = load i32*, i32** %3
%208 = getelementptr inbounds i32, i32* %207, i64 21
%209 = load i32, i32* %208
%210 = or i32 %209, %206
store i32 %210, i32* %208
%211 = load i32*, i32** %4
%212 = getelementptr inbounds i32, i32* %211, i64 6
%213 = load i32, i32* %212
%214 = lshr i32 %213, 17
%215 = and i32 %214, 511
%216 = load i32*, i32** %3
%217 = getelementptr inbounds i32, i32* %216, i64 22
store i32 %215, i32* %217
%218 = load i32*, i32** %4
%219 = getelementptr inbounds i32, i32* %218, i64 6
%220 = load i32, i32* %219
%221 = lshr i32 %220, 8
%222 = and i32 %221, 511
%223 = load i32*, i32** %3
%224 = getelementptr inbounds i32, i32* %223, i64 23
store i32 %222, i32* %224
%225 = load i32*, i32** %4
%226 = getelementptr inbounds i32, i32* %225, i64 6
%227 = load i32, i32* %226
%228 = shl i32 %227, 1
%229 = and i32 %228, 511
%230 = load i32*, i32** %3
%231 = getelementptr inbounds i32, i32* %230, i64 24
store i32 %229, i32* %231
%232 = load i32*, i32** %4
%233 = getelementptr inbounds i32, i32* %232, i64 7
%234 = load i32, i32* %233
%235 = lshr i32 %234, 31
%236 = load i32*, i32** %3
%237 = getelementptr inbounds i32, i32* %236, i64 24
%238 = load i32, i32* %237
%239 = or i32 %238, %235
store i32 %239, i32* %237
%240 = load i32*, i32** %4
%241 = getelementptr inbounds i32, i32* %240, i64 7
%242 = load i32, i32* %241
%243 = lshr i32 %242, 22
%244 = and i32 %243, 511
%245 = load i32*, i32** %3
%246 = getelementptr inbounds i32, i32* %245, i64 25
store i32 %244, i32* %246
%247 = load i32*, i32** %4
%248 = getelementptr inbounds i32, i32* %247, i64 7
%249 = load i32, i32* %248
%250 = lshr i32 %249, 13
%251 = and i32 %250, 511
%252 = load i32*, i32** %3
%253 = getelementptr inbounds i32, i32* %252, i64 26
store i32 %251, i32* %253
%254 = load i32*, i32** %4
%255 = getelementptr inbounds i32, i32* %254, i64 7
%256 = load i32, i32* %255
%257 = lshr i32 %256, 4
%258 = and i32 %257, 511
%259 = load i32*, i32** %3
%260 = getelementptr inbounds i32, i32* %259, i64 27
store i32 %258, i32* %260
%261 = load i32*, i32** %4
%262 = getelementptr inbounds i32, i32* %261, i64 7
%263 = load i32, i32* %262
%264 = shl i32 %263, 5
%265 = and i32 %264, 511
%266 = load i32*, i32** %3
%267 = getelementptr inbounds i32, i32* %266, i64 28
store i32 %265, i32* %267
%268 = load i32*, i32** %4
%269 = getelementptr inbounds i32, i32* %268, i64 8
%270 = load i32, i32* %269
%271 = lshr i32 %270, 27
%272 = load i32*, i32** %3
%273 = getelementptr inbounds i32, i32* %272, i64 28
%274 = load i32, i32* %273
%275 = or i32 %274, %271
store i32 %275, i32* %273
%276 = load i32*, i32** %4
%277 = getelementptr inbounds i32, i32* %276, i64 8
%278 = load i32, i32* %277
%279 = lshr i32 %278, 18
%280 = and i32 %279, 511
%281 = load i32*, i32** %3
%282 = getelementptr inbounds i32, i32* %281, i64 29
store i32 %280, i32* %282
%283 = load i32*, i32** %4
%284 = getelementptr inbounds i32, i32* %283, i64 8
%285 = load i32, i32* %284
%286 = lshr i32 %285, 9
%287 = and i32 %286, 511
%288 = load i32*, i32** %3
%289 = getelementptr inbounds i32, i32* %288, i64 30
store i32 %287, i32* %289
%290 = load i32*, i32** %4
%291 = getelementptr inbounds i32, i32* %290, i64 8
%292 = load i32, i32* %291
%293 = and i32 %292, 511
%294 = load i32*, i32** %3
%295 = getelementptr inbounds i32, i32* %294, i64 31
store i32 %293, i32* %295
br label %296
296: ; preds = %9
%297 = load i32, i32* %5
%298 = add nsw i32 %297, 32
store i32 %298, i32* %5
%299 = load i32*, i32** %3
%300 = getelementptr inbounds i32, i32* %299, i64 32
store i32* %300, i32** %3
%301 = load i32*, i32** %4
%302 = getelementptr inbounds i32, i32* %301, i64 9
store i32* %302, i32** %4
br label %6
303: ; preds = %6
ret void
}

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