char *deblkclr(blk)
char *blk;
{
  register int i, j;
  char c;
  static char iobuf[30];
  for (i = 0; i < 10; i++) {
    c = 0;
    for (j = 0; j < 7; j++) {
      c <<= 1;
      c |= blk[8 * i + j];
    }
    iobuf[i] = c;
  }
  iobuf[i] = 0;
  return (iobuf);
}


x86 assembly (clang, -O0):
<deblkclr>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x8(%rbp)
movl   $0x0,-0xc(%rbp)
cmpl   $0xa,-0xc(%rbp)
jge    1182 <deblkclr+0x82>
movb   $0x0,-0x11(%rbp)
movl   $0x0,-0x10(%rbp)
cmpl   $0x7,-0x10(%rbp)
jge    1163 <deblkclr+0x63>
movsbl -0x11(%rbp),%eax
shl    $0x1,%eax
mov    %al,-0x11(%rbp)
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
shl    $0x3,%ecx
add    -0x10(%rbp),%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%ecx
movsbl -0x11(%rbp),%eax
or     %ecx,%eax
mov    %al,-0x11(%rbp)
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    1124 <deblkclr+0x24>
mov    -0x11(%rbp),%dl
movslq -0xc(%rbp),%rcx
lea    0x2ebf(%rip),%rax
mov    %dl,(%rax,%rcx,1)
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc(%rbp)
jmp    110f <deblkclr+0xf>
movslq -0xc(%rbp),%rcx
lea    0x2ea3(%rip),%rax
movb   $0x0,(%rax,%rcx,1)
lea    0x2e98(%rip),%rax
pop    %rbp
ret

x86 assembly (clang, -O2):
<deblkclr>:
mov    (%rdi),%al
mov    0x1(%rdi),%cl
shl    $0x2,%al
add    %cl,%cl
or     %al,%cl
or     0x2(%rdi),%cl
mov    0x3(%rdi),%al
shl    $0x2,%cl
add    %al,%al
or     %cl,%al
or     0x4(%rdi),%al
mov    0x5(%rdi),%cl
shl    $0x2,%al
add    %cl,%cl
or     %al,%cl
or     0x6(%rdi),%cl
mov    %cl,0x2f01(%rip)
lea    0x2efa(%rip),%rax
mov    0x8(%rdi),%cl
mov    0x9(%rdi),%dl
shl    $0x2,%cl
add    %dl,%dl
or     %cl,%dl
or     0xa(%rdi),%dl
mov    0xb(%rdi),%cl
shl    $0x2,%dl
add    %cl,%cl
or     %dl,%cl
or     0xc(%rdi),%cl
mov    0xd(%rdi),%dl
shl    $0x2,%cl
add    %dl,%dl
or     %cl,%dl
or     0xe(%rdi),%dl
mov    %dl,0x2ecb(%rip)
mov    0x10(%rdi),%cl
mov    0x11(%rdi),%dl
shl    $0x2,%cl
add    %dl,%dl
or     %cl,%dl
or     0x12(%rdi),%dl
mov    0x13(%rdi),%cl
shl    $0x2,%dl
add    %cl,%cl
or     %dl,%cl
or     0x14(%rdi),%cl
mov    0x15(%rdi),%dl
shl    $0x2,%cl
add    %dl,%dl
or     %cl,%dl
or     0x16(%rdi),%dl
mov    %dl,0x2e9c(%rip)
mov    0x18(%rdi),%cl
mov    0x19(%rdi),%dl
shl    $0x2,%cl
add    %dl,%dl
or     %cl,%dl
or     0x1a(%rdi),%dl
mov    0x1b(%rdi),%cl
shl    $0x2,%dl
add    %cl,%cl
or     %dl,%cl
or     0x1c(%rdi),%cl
mov    0x1d(%rdi),%dl
shl    $0x2,%cl
add    %dl,%dl
or     %cl,%dl
or     0x1e(%rdi),%dl
mov    %dl,0x2e6d(%rip)
mov    0x20(%rdi),%cl
mov    0x21(%rdi),%dl
shl    $0x2,%cl
add    %dl,%dl
or     %cl,%dl
or     0x22(%rdi),%dl
mov    0x23(%rdi),%cl
shl    $0x2,%dl
add    %cl,%cl
or     %dl,%cl
or     0x24(%rdi),%cl
mov    0x25(%rdi),%dl
shl    $0x2,%cl
add    %dl,%dl
or     %cl,%dl
or     0x26(%rdi),%dl
mov    %dl,0x2e3e(%rip)
mov    0x28(%rdi),%cl
mov    0x29(%rdi),%dl
shl    $0x2,%cl
add    %dl,%dl
or     %cl,%dl
or     0x2a(%rdi),%dl
mov    0x2b(%rdi),%cl
shl    $0x2,%dl
add    %cl,%cl
or     %dl,%cl
or     0x2c(%rdi),%cl
mov    0x2d(%rdi),%dl
shl    $0x2,%cl
add    %dl,%dl
or     %cl,%dl
or     0x2e(%rdi),%dl
mov    %dl,0x2e0f(%rip)
mov    0x30(%rdi),%cl
mov    0x31(%rdi),%dl
shl    $0x2,%cl
add    %dl,%dl
or     %cl,%dl
or     0x32(%rdi),%dl
mov    0x33(%rdi),%cl
shl    $0x2,%dl
add    %cl,%cl
or     %dl,%cl
or     0x34(%rdi),%cl
mov    0x35(%rdi),%dl
shl    $0x2,%cl
add    %dl,%dl
or     %cl,%dl
or     0x36(%rdi),%dl
mov    %dl,0x2de0(%rip)
mov    0x38(%rdi),%cl
mov    0x39(%rdi),%dl
shl    $0x2,%cl
add    %dl,%dl
or     %cl,%dl
or     0x3a(%rdi),%dl
mov    0x3b(%rdi),%cl
shl    $0x2,%dl
add    %cl,%cl
or     %dl,%cl
or     0x3c(%rdi),%cl
mov    0x3d(%rdi),%dl
shl    $0x2,%cl
add    %dl,%dl
or     %cl,%dl
or     0x3e(%rdi),%dl
mov    %dl,0x2db1(%rip)
mov    0x40(%rdi),%cl
mov    0x41(%rdi),%dl
shl    $0x2,%cl
add    %dl,%dl
or     %cl,%dl
or     0x42(%rdi),%dl
mov    0x43(%rdi),%cl
shl    $0x2,%dl
add    %cl,%cl
or     %dl,%cl
or     0x44(%rdi),%cl
mov    0x45(%rdi),%dl
shl    $0x2,%cl
add    %dl,%dl
or     %cl,%dl
or     0x46(%rdi),%dl
mov    %dl,0x2d82(%rip)
mov    0x48(%rdi),%cl
mov    0x49(%rdi),%dl
shl    $0x2,%cl
add    %dl,%dl
or     %cl,%dl
or     0x4a(%rdi),%dl
mov    0x4b(%rdi),%cl
shl    $0x2,%dl
add    %cl,%cl
or     %dl,%cl
or     0x4c(%rdi),%cl
mov    0x4d(%rdi),%dl
shl    $0x2,%cl
add    %dl,%dl
or     %cl,%dl
or     0x4e(%rdi),%dl
mov    %dl,0x2d53(%rip)
movb   $0x0,0x2d4d(%rip)
ret

LLVM IR (-O0):
@deblkclr.iobuf = internal global [30 x i8] zeroinitializer
define i8* @deblkclr(i8* %0) {
%2 = alloca i8*
%3 = alloca i32
%4 = alloca i32
%5 = alloca i8
store i8* %0, i8** %2
store i32 0, i32* %3
br label %6
6: ; preds = %39, %1
%7 = load i32, i32* %3
%8 = icmp slt i32 %7, 10
br i1 %8, label %9, label %42
9: ; preds = %6
store i8 0, i8* %5
store i32 0, i32* %4
br label %10
10: ; preds = %31, %9
%11 = load i32, i32* %4
%12 = icmp slt i32 %11, 7
br i1 %12, label %13, label %34
13: ; preds = %10
%14 = load i8, i8* %5
%15 = sext i8 %14 to i32
%16 = shl i32 %15, 1
%17 = trunc i32 %16 to i8
store i8 %17, i8* %5
%18 = load i8*, i8** %2
%19 = load i32, i32* %3
%20 = mul nsw i32 8, %19
%21 = load i32, i32* %4
%22 = add nsw i32 %20, %21
%23 = sext i32 %22 to i64
%24 = getelementptr inbounds i8, i8* %18, i64 %23
%25 = load i8, i8* %24
%26 = sext i8 %25 to i32
%27 = load i8, i8* %5
%28 = sext i8 %27 to i32
%29 = or i32 %28, %26
%30 = trunc i32 %29 to i8
store i8 %30, i8* %5
br label %31
31: ; preds = %13
%32 = load i32, i32* %4
%33 = add nsw i32 %32, 1
store i32 %33, i32* %4
br label %10
34: ; preds = %10
%35 = load i8, i8* %5
%36 = load i32, i32* %3
%37 = sext i32 %36 to i64
%38 = getelementptr inbounds [30 x i8], [30 x i8]* @deblkclr.iobuf, i64 0, i64 %37
store i8 %35, i8* %38
br label %39
39: ; preds = %34
%40 = load i32, i32* %3
%41 = add nsw i32 %40, 1
store i32 %41, i32* %3
br label %6
42: ; preds = %6
%43 = load i32, i32* %3
%44 = sext i32 %43 to i64
%45 = getelementptr inbounds [30 x i8], [30 x i8]* @deblkclr.iobuf, i64 0, i64 %44
store i8 0, i8* %45
ret i8* getelementptr inbounds ([30 x i8], [30 x i8]* @deblkclr.iobuf, i64 0, i64 0)
}

LLVM IR (-O2):
@deblkclr.iobuf = internal global [30 x i8] zeroinitializer
define i8* @deblkclr(i8* nocapture %0) {
%2 = load i8, i8* %0
%3 = getelementptr inbounds i8, i8* %0, i64 1
%4 = load i8, i8* %3
%5 = shl i8 %2, 2
%6 = shl i8 %4, 1
%7 = or i8 %5, %6
%8 = getelementptr inbounds i8, i8* %0, i64 2
%9 = load i8, i8* %8
%10 = or i8 %9, %7
%11 = getelementptr inbounds i8, i8* %0, i64 3
%12 = load i8, i8* %11
%13 = shl i8 %10, 2
%14 = shl i8 %12, 1
%15 = or i8 %13, %14
%16 = getelementptr inbounds i8, i8* %0, i64 4
%17 = load i8, i8* %16
%18 = or i8 %17, %15
%19 = getelementptr inbounds i8, i8* %0, i64 5
%20 = load i8, i8* %19
%21 = shl i8 %18, 2
%22 = shl i8 %20, 1
%23 = or i8 %21, %22
%24 = getelementptr inbounds i8, i8* %0, i64 6
%25 = load i8, i8* %24
%26 = or i8 %25, %23
store i8 %26, i8* getelementptr inbounds ([30 x i8], [30 x i8]* @deblkclr.iobuf, i64 0, i64 0)
%27 = getelementptr inbounds i8, i8* %0, i64 8
%28 = load i8, i8* %27
%29 = getelementptr inbounds i8, i8* %0, i64 9
%30 = load i8, i8* %29
%31 = shl i8 %28, 2
%32 = shl i8 %30, 1
%33 = or i8 %31, %32
%34 = getelementptr inbounds i8, i8* %0, i64 10
%35 = load i8, i8* %34
%36 = or i8 %35, %33
%37 = getelementptr inbounds i8, i8* %0, i64 11
%38 = load i8, i8* %37
%39 = shl i8 %36, 2
%40 = shl i8 %38, 1
%41 = or i8 %39, %40
%42 = getelementptr inbounds i8, i8* %0, i64 12
%43 = load i8, i8* %42
%44 = or i8 %43, %41
%45 = getelementptr inbounds i8, i8* %0, i64 13
%46 = load i8, i8* %45
%47 = shl i8 %44, 2
%48 = shl i8 %46, 1
%49 = or i8 %47, %48
%50 = getelementptr inbounds i8, i8* %0, i64 14
%51 = load i8, i8* %50
%52 = or i8 %51, %49
store i8 %52, i8* getelementptr inbounds ([30 x i8], [30 x i8]* @deblkclr.iobuf, i64 0, i64 1)
%53 = getelementptr inbounds i8, i8* %0, i64 16
%54 = load i8, i8* %53
%55 = getelementptr inbounds i8, i8* %0, i64 17
%56 = load i8, i8* %55
%57 = shl i8 %54, 2
%58 = shl i8 %56, 1
%59 = or i8 %57, %58
%60 = getelementptr inbounds i8, i8* %0, i64 18
%61 = load i8, i8* %60
%62 = or i8 %61, %59
%63 = getelementptr inbounds i8, i8* %0, i64 19
%64 = load i8, i8* %63
%65 = shl i8 %62, 2
%66 = shl i8 %64, 1
%67 = or i8 %65, %66
%68 = getelementptr inbounds i8, i8* %0, i64 20
%69 = load i8, i8* %68
%70 = or i8 %69, %67
%71 = getelementptr inbounds i8, i8* %0, i64 21
%72 = load i8, i8* %71
%73 = shl i8 %70, 2
%74 = shl i8 %72, 1
%75 = or i8 %73, %74
%76 = getelementptr inbounds i8, i8* %0, i64 22
%77 = load i8, i8* %76
%78 = or i8 %77, %75
store i8 %78, i8* getelementptr inbounds ([30 x i8], [30 x i8]* @deblkclr.iobuf, i64 0, i64 2)
%79 = getelementptr inbounds i8, i8* %0, i64 24
%80 = load i8, i8* %79
%81 = getelementptr inbounds i8, i8* %0, i64 25
%82 = load i8, i8* %81
%83 = shl i8 %80, 2
%84 = shl i8 %82, 1
%85 = or i8 %83, %84
%86 = getelementptr inbounds i8, i8* %0, i64 26
%87 = load i8, i8* %86
%88 = or i8 %87, %85
%89 = getelementptr inbounds i8, i8* %0, i64 27
%90 = load i8, i8* %89
%91 = shl i8 %88, 2
%92 = shl i8 %90, 1
%93 = or i8 %91, %92
%94 = getelementptr inbounds i8, i8* %0, i64 28
%95 = load i8, i8* %94
%96 = or i8 %95, %93
%97 = getelementptr inbounds i8, i8* %0, i64 29
%98 = load i8, i8* %97
%99 = shl i8 %96, 2
%100 = shl i8 %98, 1
%101 = or i8 %99, %100
%102 = getelementptr inbounds i8, i8* %0, i64 30
%103 = load i8, i8* %102
%104 = or i8 %103, %101
store i8 %104, i8* getelementptr inbounds ([30 x i8], [30 x i8]* @deblkclr.iobuf, i64 0, i64 3)
%105 = getelementptr inbounds i8, i8* %0, i64 32
%106 = load i8, i8* %105
%107 = getelementptr inbounds i8, i8* %0, i64 33
%108 = load i8, i8* %107
%109 = shl i8 %106, 2
%110 = shl i8 %108, 1
%111 = or i8 %109, %110
%112 = getelementptr inbounds i8, i8* %0, i64 34
%113 = load i8, i8* %112
%114 = or i8 %113, %111
%115 = getelementptr inbounds i8, i8* %0, i64 35
%116 = load i8, i8* %115
%117 = shl i8 %114, 2
%118 = shl i8 %116, 1
%119 = or i8 %117, %118
%120 = getelementptr inbounds i8, i8* %0, i64 36
%121 = load i8, i8* %120
%122 = or i8 %121, %119
%123 = getelementptr inbounds i8, i8* %0, i64 37
%124 = load i8, i8* %123
%125 = shl i8 %122, 2
%126 = shl i8 %124, 1
%127 = or i8 %125, %126
%128 = getelementptr inbounds i8, i8* %0, i64 38
%129 = load i8, i8* %128
%130 = or i8 %129, %127
store i8 %130, i8* getelementptr inbounds ([30 x i8], [30 x i8]* @deblkclr.iobuf, i64 0, i64 4)
%131 = getelementptr inbounds i8, i8* %0, i64 40
%132 = load i8, i8* %131
%133 = getelementptr inbounds i8, i8* %0, i64 41
%134 = load i8, i8* %133
%135 = shl i8 %132, 2
%136 = shl i8 %134, 1
%137 = or i8 %135, %136
%138 = getelementptr inbounds i8, i8* %0, i64 42
%139 = load i8, i8* %138
%140 = or i8 %139, %137
%141 = getelementptr inbounds i8, i8* %0, i64 43
%142 = load i8, i8* %141
%143 = shl i8 %140, 2
%144 = shl i8 %142, 1
%145 = or i8 %143, %144
%146 = getelementptr inbounds i8, i8* %0, i64 44
%147 = load i8, i8* %146
%148 = or i8 %147, %145
%149 = getelementptr inbounds i8, i8* %0, i64 45
%150 = load i8, i8* %149
%151 = shl i8 %148, 2
%152 = shl i8 %150, 1
%153 = or i8 %151, %152
%154 = getelementptr inbounds i8, i8* %0, i64 46
%155 = load i8, i8* %154
%156 = or i8 %155, %153
store i8 %156, i8* getelementptr inbounds ([30 x i8], [30 x i8]* @deblkclr.iobuf, i64 0, i64 5)
%157 = getelementptr inbounds i8, i8* %0, i64 48
%158 = load i8, i8* %157
%159 = getelementptr inbounds i8, i8* %0, i64 49
%160 = load i8, i8* %159
%161 = shl i8 %158, 2
%162 = shl i8 %160, 1
%163 = or i8 %161, %162
%164 = getelementptr inbounds i8, i8* %0, i64 50
%165 = load i8, i8* %164
%166 = or i8 %165, %163
%167 = getelementptr inbounds i8, i8* %0, i64 51
%168 = load i8, i8* %167
%169 = shl i8 %166, 2
%170 = shl i8 %168, 1
%171 = or i8 %169, %170
%172 = getelementptr inbounds i8, i8* %0, i64 52
%173 = load i8, i8* %172
%174 = or i8 %173, %171
%175 = getelementptr inbounds i8, i8* %0, i64 53
%176 = load i8, i8* %175
%177 = shl i8 %174, 2
%178 = shl i8 %176, 1
%179 = or i8 %177, %178
%180 = getelementptr inbounds i8, i8* %0, i64 54
%181 = load i8, i8* %180
%182 = or i8 %181, %179
store i8 %182, i8* getelementptr inbounds ([30 x i8], [30 x i8]* @deblkclr.iobuf, i64 0, i64 6)
%183 = getelementptr inbounds i8, i8* %0, i64 56
%184 = load i8, i8* %183
%185 = getelementptr inbounds i8, i8* %0, i64 57
%186 = load i8, i8* %185
%187 = shl i8 %184, 2
%188 = shl i8 %186, 1
%189 = or i8 %187, %188
%190 = getelementptr inbounds i8, i8* %0, i64 58
%191 = load i8, i8* %190
%192 = or i8 %191, %189
%193 = getelementptr inbounds i8, i8* %0, i64 59
%194 = load i8, i8* %193
%195 = shl i8 %192, 2
%196 = shl i8 %194, 1
%197 = or i8 %195, %196
%198 = getelementptr inbounds i8, i8* %0, i64 60
%199 = load i8, i8* %198
%200 = or i8 %199, %197
%201 = getelementptr inbounds i8, i8* %0, i64 61
%202 = load i8, i8* %201
%203 = shl i8 %200, 2
%204 = shl i8 %202, 1
%205 = or i8 %203, %204
%206 = getelementptr inbounds i8, i8* %0, i64 62
%207 = load i8, i8* %206
%208 = or i8 %207, %205
store i8 %208, i8* getelementptr inbounds ([30 x i8], [30 x i8]* @deblkclr.iobuf, i64 0, i64 7)
%209 = getelementptr inbounds i8, i8* %0, i64 64
%210 = load i8, i8* %209
%211 = getelementptr inbounds i8, i8* %0, i64 65
%212 = load i8, i8* %211
%213 = shl i8 %210, 2
%214 = shl i8 %212, 1
%215 = or i8 %213, %214
%216 = getelementptr inbounds i8, i8* %0, i64 66
%217 = load i8, i8* %216
%218 = or i8 %217, %215
%219 = getelementptr inbounds i8, i8* %0, i64 67
%220 = load i8, i8* %219
%221 = shl i8 %218, 2
%222 = shl i8 %220, 1
%223 = or i8 %221, %222
%224 = getelementptr inbounds i8, i8* %0, i64 68
%225 = load i8, i8* %224
%226 = or i8 %225, %223
%227 = getelementptr inbounds i8, i8* %0, i64 69
%228 = load i8, i8* %227
%229 = shl i8 %226, 2
%230 = shl i8 %228, 1
%231 = or i8 %229, %230
%232 = getelementptr inbounds i8, i8* %0, i64 70
%233 = load i8, i8* %232
%234 = or i8 %233, %231
store i8 %234, i8* getelementptr inbounds ([30 x i8], [30 x i8]* @deblkclr.iobuf, i64 0, i64 8)
%235 = getelementptr inbounds i8, i8* %0, i64 72
%236 = load i8, i8* %235
%237 = getelementptr inbounds i8, i8* %0, i64 73
%238 = load i8, i8* %237
%239 = shl i8 %236, 2
%240 = shl i8 %238, 1
%241 = or i8 %239, %240
%242 = getelementptr inbounds i8, i8* %0, i64 74
%243 = load i8, i8* %242
%244 = or i8 %243, %241
%245 = getelementptr inbounds i8, i8* %0, i64 75
%246 = load i8, i8* %245
%247 = shl i8 %244, 2
%248 = shl i8 %246, 1
%249 = or i8 %247, %248
%250 = getelementptr inbounds i8, i8* %0, i64 76
%251 = load i8, i8* %250
%252 = or i8 %251, %249
%253 = getelementptr inbounds i8, i8* %0, i64 77
%254 = load i8, i8* %253
%255 = shl i8 %252, 2
%256 = shl i8 %254, 1
%257 = or i8 %255, %256
%258 = getelementptr inbounds i8, i8* %0, i64 78
%259 = load i8, i8* %258
%260 = or i8 %259, %257
store i8 %260, i8* getelementptr inbounds ([30 x i8], [30 x i8]* @deblkclr.iobuf, i64 0, i64 9)
store i8 0, i8* getelementptr inbounds ([30 x i8], [30 x i8]* @deblkclr.iobuf, i64 0, i64 10)
ret i8* getelementptr inbounds ([30 x i8], [30 x i8]* @deblkclr.iobuf, i64 0, i64 0)
}