unsigned char send_cmd_fast(unsigned char *in) {
  int i, j;
  unsigned char b, crc = 0;
  *((unsigned int *)0xC000A044) |= (1 << 1);
  for (i = 0; i < 5; i++) {
    b = in[i];
    for (j = 0; j < 8; j++) {
      do {
        *((unsigned int *)0xC000A040) &= ~(1 << 0);
        asm volatile("nop");
      } while (0);
      if (b & 0x80)
        *((unsigned int *)0xC000A040) |= (1 << 1);
      else
        *((unsigned int *)0xC000A040) &= ~(1 << 1);
      crc <<= 1;
      do {
        asm volatile("nop");
        *((unsigned int *)0xC000A040) |= (1 << 0);
      } while (0);
      if ((crc ^ b) & 0x80)
        crc ^= 0x09;
      b <<= 1;
    }
    crc &= 0x7f;
  }
  crc = ((crc << 1) | 0x01);
  b = crc;
  for (j = 0; j < 8; j++) {
    do {
      *((unsigned int *)0xC000A040) &= ~(1 << 0);
      asm volatile("nop");
    } while (0);
    if (crc & 0x80)
      *((unsigned int *)0xC000A040) |= (1 << 1);
    else
      *((unsigned int *)0xC000A040) &= ~(1 << 1);
    do {
      asm volatile("nop");
      *((unsigned int *)0xC000A040) |= (1 << 0);
    } while (0);
    crc <<= 1;
  }
  return b;
}


x86 assembly (clang, -O0):
<send_cmd_fast>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x8(%rbp)
movb   $0x0,-0x12(%rbp)
mov    $0xc000a044,%eax
mov    (%rax),%ecx
or     $0x2,%ecx
mov    $0xc000a044,%eax
mov    %ecx,(%rax)
movl   $0x0,-0xc(%rbp)
cmpl   $0x5,-0xc(%rbp)
jge    120b <send_cmd_fast+0x10b>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
mov    (%rax,%rcx,1),%al
mov    %al,-0x11(%rbp)
movl   $0x0,-0x10(%rbp)
cmpl   $0x8,-0x10(%rbp)
jge    11f3 <send_cmd_fast+0xf3>
jmp    1152 <send_cmd_fast+0x52>
mov    $0xc000a040,%eax
mov    (%rax),%ecx
and    $0xfffffffe,%ecx
mov    $0xc000a040,%eax
mov    %ecx,(%rax)
nop
movzbl -0x11(%rbp),%eax
and    $0x80,%eax
cmp    $0x0,%eax
je     118c <send_cmd_fast+0x8c>
mov    $0xc000a040,%eax
mov    (%rax),%ecx
or     $0x2,%ecx
mov    $0xc000a040,%eax
mov    %ecx,(%rax)
jmp    119d <send_cmd_fast+0x9d>
mov    $0xc000a040,%eax
mov    (%rax),%ecx
and    $0xfffffffd,%ecx
mov    $0xc000a040,%eax
mov    %ecx,(%rax)
movzbl -0x12(%rbp),%eax
shl    $0x1,%eax
mov    %al,-0x12(%rbp)
nop
mov    $0xc000a040,%eax
mov    (%rax),%ecx
or     $0x1,%ecx
mov    $0xc000a040,%eax
mov    %ecx,(%rax)
movzbl -0x12(%rbp),%eax
movzbl -0x11(%rbp),%ecx
xor    %ecx,%eax
and    $0x80,%eax
cmp    $0x0,%eax
je     11db <send_cmd_fast+0xdb>
movzbl -0x12(%rbp),%eax
xor    $0x9,%eax
mov    %al,-0x12(%rbp)
movzbl -0x11(%rbp),%eax
shl    $0x1,%eax
mov    %al,-0x11(%rbp)
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    1143 <send_cmd_fast+0x43>
movzbl -0x12(%rbp),%eax
and    $0x7f,%eax
mov    %al,-0x12(%rbp)
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc(%rbp)
jmp    1124 <send_cmd_fast+0x24>
movzbl -0x12(%rbp),%eax
shl    $0x1,%eax
or     $0x1,%eax
mov    %al,-0x12(%rbp)
mov    -0x12(%rbp),%al
mov    %al,-0x11(%rbp)
movl   $0x0,-0x10(%rbp)
cmpl   $0x8,-0x10(%rbp)
jge    12ae <send_cmd_fast+0x1ae>
jmp    1234 <send_cmd_fast+0x134>
mov    $0xc000a040,%eax
mov    (%rax),%ecx
and    $0xfffffffe,%ecx
mov    $0xc000a040,%eax
mov    %ecx,(%rax)
nop
movzbl -0x12(%rbp),%eax
and    $0x80,%eax
cmp    $0x0,%eax
je     126e <send_cmd_fast+0x16e>
mov    $0xc000a040,%eax
mov    (%rax),%ecx
or     $0x2,%ecx
mov    $0xc000a040,%eax
mov    %ecx,(%rax)
jmp    127f <send_cmd_fast+0x17f>
mov    $0xc000a040,%eax
mov    (%rax),%ecx
and    $0xfffffffd,%ecx
mov    $0xc000a040,%eax
mov    %ecx,(%rax)
jmp    1284 <send_cmd_fast+0x184>
nop
mov    $0xc000a040,%eax
mov    (%rax),%ecx
or     $0x1,%ecx
mov    $0xc000a040,%eax
mov    %ecx,(%rax)
movzbl -0x12(%rbp),%eax
shl    $0x1,%eax
mov    %al,-0x12(%rbp)
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    1225 <send_cmd_fast+0x125>
movzbl -0x11(%rbp),%eax
pop    %rbp
ret

x86 assembly (clang, -O2):
<send_cmd_fast>:
mov    $0xc000a040,%r8d
orb    $0x2,0x4(%r8)
mov    (%r8),%edx
mov    (%rdi),%r9b
mov    $0x8,%esi
xor    %eax,%eax
nopl   0x0(%rax,%rax,1)
and    $0xfffffffe,%edx
mov    %edx,(%r8)
nop
mov    (%r8),%edx
and    $0xfffffffd,%edx
mov    %r9d,%ecx
shr    $0x6,%cl
and    $0x2,%cl
movzbl %cl,%ecx
or     %edx,%ecx
mov    %ecx,(%r8)
add    %al,%al
nop
mov    (%r8),%edx
or     $0x1,%edx
mov    %edx,(%r8)
mov    %eax,%ecx
xor    $0x9,%cl
movzbl %al,%r10d
xor    %r9b,%al
movzbl %cl,%eax
cmovns %r10d,%eax
add    %r9b,%r9b
add    $0xffffffff,%esi
jne    1120 <send_cmd_fast+0x20>
and    $0x7f,%al
mov    0x1(%rdi),%r9b
mov    $0x8,%esi
and    $0xfffffffe,%edx
mov    %edx,(%r8)
nop
mov    (%r8),%edx
and    $0xfffffffd,%edx
mov    %r9d,%ecx
shr    $0x6,%cl
and    $0x2,%cl
movzbl %cl,%ecx
or     %edx,%ecx
mov    %ecx,(%r8)
add    %al,%al
nop
mov    (%r8),%edx
or     $0x1,%edx
mov    %edx,(%r8)
mov    %eax,%ecx
xor    $0x9,%cl
movzbl %al,%r10d
xor    %r9b,%al
movzbl %cl,%eax
cmovns %r10d,%eax
add    %r9b,%r9b
add    $0xffffffff,%esi
jne    1170 <send_cmd_fast+0x70>
and    $0x7f,%al
mov    0x2(%rdi),%r9b
mov    $0x8,%esi
and    $0xfffffffe,%edx
mov    %edx,(%r8)
nop
mov    (%r8),%edx
and    $0xfffffffd,%edx
mov    %r9d,%ecx
shr    $0x6,%cl
and    $0x2,%cl
movzbl %cl,%ecx
or     %edx,%ecx
mov    %ecx,(%r8)
add    %al,%al
nop
mov    (%r8),%edx
or     $0x1,%edx
mov    %edx,(%r8)
mov    %eax,%ecx
xor    $0x9,%cl
movzbl %al,%r10d
xor    %r9b,%al
movzbl %cl,%eax
cmovns %r10d,%eax
add    %r9b,%r9b
add    $0xffffffff,%esi
jne    11c0 <send_cmd_fast+0xc0>
and    $0x7f,%al
mov    0x3(%rdi),%r9b
mov    $0x8,%esi
and    $0xfffffffe,%edx
mov    %edx,(%r8)
nop
mov    (%r8),%edx
and    $0xfffffffd,%edx
mov    %r9d,%ecx
shr    $0x6,%cl
and    $0x2,%cl
movzbl %cl,%ecx
or     %edx,%ecx
mov    %ecx,(%r8)
add    %al,%al
nop
mov    (%r8),%edx
or     $0x1,%edx
mov    %edx,(%r8)
mov    %eax,%ecx
xor    $0x9,%cl
movzbl %al,%r10d
xor    %r9b,%al
movzbl %cl,%eax
cmovns %r10d,%eax
add    %r9b,%r9b
add    $0xffffffff,%esi
jne    1210 <send_cmd_fast+0x110>
and    $0x7f,%al
mov    0x4(%rdi),%r9b
mov    $0x8,%esi
and    $0xfffffffe,%edx
mov    %edx,(%r8)
nop
mov    (%r8),%edx
and    $0xfffffffd,%edx
mov    %r9d,%ecx
shr    $0x6,%cl
and    $0x2,%cl
movzbl %cl,%ecx
or     %edx,%ecx
mov    %ecx,(%r8)
add    %al,%al
nop
mov    (%r8),%edi
mov    %edi,%edx
or     $0x1,%edx
mov    %edx,(%r8)
mov    %eax,%ecx
xor    $0x9,%cl
movzbl %al,%r10d
xor    %r9b,%al
movzbl %cl,%eax
cmovns %r10d,%eax
add    %r9b,%r9b
add    $0xffffffff,%esi
jne    1260 <send_cmd_fast+0x160>
and    $0xfffffffe,%edi
mov    %edi,(%r8)
nop
mov    (%r8),%ecx
and    $0xfffffffd,%ecx
mov    %eax,%edx
shr    $0x5,%dl
and    $0x2,%dl
movzbl %dl,%edx
or     %ecx,%edx
mov    %edx,(%r8)
nop
andb   $0xfe,(%r8)
nop
mov    (%r8),%ecx
and    $0xfffffffd,%ecx
mov    %eax,%edx
shr    $0x4,%dl
and    $0x2,%dl
movzbl %dl,%edx
or     %ecx,%edx
mov    %edx,(%r8)
nop
andb   $0xfe,(%r8)
nop
mov    (%r8),%ecx
and    $0xfffffffd,%ecx
mov    %eax,%edx
shr    $0x3,%dl
and    $0x2,%dl
movzbl %dl,%edx
or     %ecx,%edx
mov    %edx,(%r8)
nop
andb   $0xfe,(%r8)
nop
mov    (%r8),%ecx
and    $0xfffffffd,%ecx
mov    %eax,%edx
shr    $0x2,%dl
and    $0x2,%dl
movzbl %dl,%edx
or     %ecx,%edx
mov    %edx,(%r8)
nop
andb   $0xfe,(%r8)
nop
mov    (%r8),%ecx
and    $0xfffffffd,%ecx
mov    %eax,%edx
shr    %dl
and    $0x2,%dl
movzbl %dl,%edx
or     %ecx,%edx
mov    %edx,(%r8)
nop
andb   $0xfe,(%r8)
lea    (%rax,%rax,1),%ecx
nop
mov    (%r8),%edx
and    $0xfffffffd,%edx
and    $0x2,%al
movzbl %al,%eax
or     %edx,%eax
mov    %eax,(%r8)
nop
andb   $0xfe,(%r8)
lea    0x1(%rcx),%eax
nop
mov    (%r8),%edx
and    $0xfffffffd,%edx
and    $0x2,%cl
movzbl %cl,%ecx
or     %edx,%ecx
mov    %ecx,(%r8)
nop
andb   $0xfe,(%r8)
nop
orb    $0x2,(%r8)
nop
orb    $0x1,(%r8)
ret

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

LLVM IR (-O2):
define zeroext i8 @send_cmd_fast(i8* nocapture %0) {
%2 = load i32, i32* inttoptr (i64 3221266500 to i32*)
%3 = or i32 %2, 2
store i32 %3, i32* inttoptr (i64 3221266500 to i32*)
%4 = load i32, i32* inttoptr (i64 3221266496 to i32*)
%5 = load i8, i8* %0
br label %6
6: ; preds = %1, %6
%7 = phi i32 [ %4, %1 ], [ %20, %6 ]
%8 = phi i8 [ 0, %1 ], [ %24, %6 ]
%9 = phi i8 [ %5, %1 ], [ %25, %6 ]
%10 = phi i32 [ 0, %1 ], [ %26, %6 ]
%11 = and i32 %7, -2
store i32 %11, i32* inttoptr (i64 3221266496 to i32*)
tail call void asm sideeffect "nop", "~{dirflag},~{fpsr},~{flags}"()
%12 = load i32, i32* inttoptr (i64 3221266496 to i32*)
%13 = and i32 %12, -3
%14 = lshr i8 %9, 6
%15 = and i8 %14, 2
%16 = zext i8 %15 to i32
%17 = or i32 %13, %16
store i32 %17, i32* inttoptr (i64 3221266496 to i32*)
%18 = shl i8 %8, 1
tail call void asm sideeffect "nop", "~{dirflag},~{fpsr},~{flags}"()
%19 = load i32, i32* inttoptr (i64 3221266496 to i32*)
%20 = or i32 %19, 1
store i32 %20, i32* inttoptr (i64 3221266496 to i32*)
%21 = xor i8 %18, %9
%22 = icmp sgt i8 %21, -1
%23 = xor i8 %18, 9
%24 = select i1 %22, i8 %18, i8 %23
%25 = shl i8 %9, 1
%26 = add nuw nsw i32 %10, 1
%27 = icmp eq i32 %26, 8
br i1 %27, label %28, label %6
28: ; preds = %6
%29 = and i8 %24, 127
%30 = getelementptr inbounds i8, i8* %0, i64 1
%31 = load i8, i8* %30
br label %32
32: ; preds = %32, %28
%33 = phi i32 [ %20, %28 ], [ %46, %32 ]
%34 = phi i8 [ %29, %28 ], [ %50, %32 ]
%35 = phi i8 [ %31, %28 ], [ %51, %32 ]
%36 = phi i32 [ 0, %28 ], [ %52, %32 ]
%37 = and i32 %33, -2
store i32 %37, i32* inttoptr (i64 3221266496 to i32*)
tail call void asm sideeffect "nop", "~{dirflag},~{fpsr},~{flags}"()
%38 = load i32, i32* inttoptr (i64 3221266496 to i32*)
%39 = and i32 %38, -3
%40 = lshr i8 %35, 6
%41 = and i8 %40, 2
%42 = zext i8 %41 to i32
%43 = or i32 %39, %42
store i32 %43, i32* inttoptr (i64 3221266496 to i32*)
%44 = shl i8 %34, 1
tail call void asm sideeffect "nop", "~{dirflag},~{fpsr},~{flags}"()
%45 = load i32, i32* inttoptr (i64 3221266496 to i32*)
%46 = or i32 %45, 1
store i32 %46, i32* inttoptr (i64 3221266496 to i32*)
%47 = xor i8 %44, %35
%48 = icmp sgt i8 %47, -1
%49 = xor i8 %44, 9
%50 = select i1 %48, i8 %44, i8 %49
%51 = shl i8 %35, 1
%52 = add nuw nsw i32 %36, 1
%53 = icmp eq i32 %52, 8
br i1 %53, label %54, label %32
54: ; preds = %32
%55 = and i8 %50, 127
%56 = getelementptr inbounds i8, i8* %0, i64 2
%57 = load i8, i8* %56
br label %58
58: ; preds = %58, %54
%59 = phi i32 [ %46, %54 ], [ %72, %58 ]
%60 = phi i8 [ %55, %54 ], [ %76, %58 ]
%61 = phi i8 [ %57, %54 ], [ %77, %58 ]
%62 = phi i32 [ 0, %54 ], [ %78, %58 ]
%63 = and i32 %59, -2
store i32 %63, i32* inttoptr (i64 3221266496 to i32*)
tail call void asm sideeffect "nop", "~{dirflag},~{fpsr},~{flags}"()
%64 = load i32, i32* inttoptr (i64 3221266496 to i32*)
%65 = and i32 %64, -3
%66 = lshr i8 %61, 6
%67 = and i8 %66, 2
%68 = zext i8 %67 to i32
%69 = or i32 %65, %68
store i32 %69, i32* inttoptr (i64 3221266496 to i32*)
%70 = shl i8 %60, 1
tail call void asm sideeffect "nop", "~{dirflag},~{fpsr},~{flags}"()
%71 = load i32, i32* inttoptr (i64 3221266496 to i32*)
%72 = or i32 %71, 1
store i32 %72, i32* inttoptr (i64 3221266496 to i32*)
%73 = xor i8 %70, %61
%74 = icmp sgt i8 %73, -1
%75 = xor i8 %70, 9
%76 = select i1 %74, i8 %70, i8 %75
%77 = shl i8 %61, 1
%78 = add nuw nsw i32 %62, 1
%79 = icmp eq i32 %78, 8
br i1 %79, label %80, label %58
80: ; preds = %58
%81 = and i8 %76, 127
%82 = getelementptr inbounds i8, i8* %0, i64 3
%83 = load i8, i8* %82
br label %84
84: ; preds = %84, %80
%85 = phi i32 [ %72, %80 ], [ %98, %84 ]
%86 = phi i8 [ %81, %80 ], [ %102, %84 ]
%87 = phi i8 [ %83, %80 ], [ %103, %84 ]
%88 = phi i32 [ 0, %80 ], [ %104, %84 ]
%89 = and i32 %85, -2
store i32 %89, i32* inttoptr (i64 3221266496 to i32*)
tail call void asm sideeffect "nop", "~{dirflag},~{fpsr},~{flags}"()
%90 = load i32, i32* inttoptr (i64 3221266496 to i32*)
%91 = and i32 %90, -3
%92 = lshr i8 %87, 6
%93 = and i8 %92, 2
%94 = zext i8 %93 to i32
%95 = or i32 %91, %94
store i32 %95, i32* inttoptr (i64 3221266496 to i32*)
%96 = shl i8 %86, 1
tail call void asm sideeffect "nop", "~{dirflag},~{fpsr},~{flags}"()
%97 = load i32, i32* inttoptr (i64 3221266496 to i32*)
%98 = or i32 %97, 1
store i32 %98, i32* inttoptr (i64 3221266496 to i32*)
%99 = xor i8 %96, %87
%100 = icmp sgt i8 %99, -1
%101 = xor i8 %96, 9
%102 = select i1 %100, i8 %96, i8 %101
%103 = shl i8 %87, 1
%104 = add nuw nsw i32 %88, 1
%105 = icmp eq i32 %104, 8
br i1 %105, label %106, label %84
106: ; preds = %84
%107 = and i8 %102, 127
%108 = getelementptr inbounds i8, i8* %0, i64 4
%109 = load i8, i8* %108
br label %110
110: ; preds = %110, %106
%111 = phi i32 [ %98, %106 ], [ %124, %110 ]
%112 = phi i8 [ %107, %106 ], [ %128, %110 ]
%113 = phi i8 [ %109, %106 ], [ %129, %110 ]
%114 = phi i32 [ 0, %106 ], [ %130, %110 ]
%115 = and i32 %111, -2
store i32 %115, i32* inttoptr (i64 3221266496 to i32*)
tail call void asm sideeffect "nop", "~{dirflag},~{fpsr},~{flags}"()
%116 = load i32, i32* inttoptr (i64 3221266496 to i32*)
%117 = and i32 %116, -3
%118 = lshr i8 %113, 6
%119 = and i8 %118, 2
%120 = zext i8 %119 to i32
%121 = or i32 %117, %120
store i32 %121, i32* inttoptr (i64 3221266496 to i32*)
%122 = shl i8 %112, 1
tail call void asm sideeffect "nop", "~{dirflag},~{fpsr},~{flags}"()
%123 = load i32, i32* inttoptr (i64 3221266496 to i32*)
%124 = or i32 %123, 1
store i32 %124, i32* inttoptr (i64 3221266496 to i32*)
%125 = xor i8 %122, %113
%126 = icmp sgt i8 %125, -1
%127 = xor i8 %122, 9
%128 = select i1 %126, i8 %122, i8 %127
%129 = shl i8 %113, 1
%130 = add nuw nsw i32 %114, 1
%131 = icmp eq i32 %130, 8
br i1 %131, label %132, label %110
132: ; preds = %110
%133 = shl i8 %128, 1
%134 = or i8 %133, 1
%135 = and i32 %123, -2
store i32 %135, i32* inttoptr (i64 3221266496 to i32*)
tail call void asm sideeffect "nop", "~{dirflag},~{fpsr},~{flags}"()
%136 = load i32, i32* inttoptr (i64 3221266496 to i32*)
%137 = and i32 %136, -3
%138 = lshr i8 %133, 6
%139 = and i8 %138, 2
%140 = zext i8 %139 to i32
%141 = or i32 %137, %140
store i32 %141, i32* inttoptr (i64 3221266496 to i32*)
tail call void asm sideeffect "nop", "~{dirflag},~{fpsr},~{flags}"()
%142 = load i32, i32* inttoptr (i64 3221266496 to i32*)
%143 = and i32 %142, -2
store i32 %143, i32* inttoptr (i64 3221266496 to i32*)
tail call void asm sideeffect "nop", "~{dirflag},~{fpsr},~{flags}"()
%144 = load i32, i32* inttoptr (i64 3221266496 to i32*)
%145 = and i32 %144, -3
%146 = lshr i8 %128, 4
%147 = and i8 %146, 2
%148 = zext i8 %147 to i32
%149 = or i32 %145, %148
store i32 %149, i32* inttoptr (i64 3221266496 to i32*)
tail call void asm sideeffect "nop", "~{dirflag},~{fpsr},~{flags}"()
%150 = load i32, i32* inttoptr (i64 3221266496 to i32*)
%151 = and i32 %150, -2
store i32 %151, i32* inttoptr (i64 3221266496 to i32*)
tail call void asm sideeffect "nop", "~{dirflag},~{fpsr},~{flags}"()
%152 = load i32, i32* inttoptr (i64 3221266496 to i32*)
%153 = and i32 %152, -3
%154 = lshr i8 %128, 3
%155 = and i8 %154, 2
%156 = zext i8 %155 to i32
%157 = or i32 %153, %156
store i32 %157, i32* inttoptr (i64 3221266496 to i32*)
tail call void asm sideeffect "nop", "~{dirflag},~{fpsr},~{flags}"()
%158 = load i32, i32* inttoptr (i64 3221266496 to i32*)
%159 = and i32 %158, -2
store i32 %159, i32* inttoptr (i64 3221266496 to i32*)
tail call void asm sideeffect "nop", "~{dirflag},~{fpsr},~{flags}"()
%160 = load i32, i32* inttoptr (i64 3221266496 to i32*)
%161 = and i32 %160, -3
%162 = lshr i8 %128, 2
%163 = and i8 %162, 2
%164 = zext i8 %163 to i32
%165 = or i32 %161, %164
store i32 %165, i32* inttoptr (i64 3221266496 to i32*)
tail call void asm sideeffect "nop", "~{dirflag},~{fpsr},~{flags}"()
%166 = load i32, i32* inttoptr (i64 3221266496 to i32*)
%167 = and i32 %166, -2
store i32 %167, i32* inttoptr (i64 3221266496 to i32*)
tail call void asm sideeffect "nop", "~{dirflag},~{fpsr},~{flags}"()
%168 = load i32, i32* inttoptr (i64 3221266496 to i32*)
%169 = and i32 %168, -3
%170 = lshr i8 %128, 1
%171 = and i8 %170, 2
%172 = zext i8 %171 to i32
%173 = or i32 %169, %172
store i32 %173, i32* inttoptr (i64 3221266496 to i32*)
tail call void asm sideeffect "nop", "~{dirflag},~{fpsr},~{flags}"()
%174 = load i32, i32* inttoptr (i64 3221266496 to i32*)
%175 = and i32 %174, -2
store i32 %175, i32* inttoptr (i64 3221266496 to i32*)
tail call void asm sideeffect "nop", "~{dirflag},~{fpsr},~{flags}"()
%176 = load i32, i32* inttoptr (i64 3221266496 to i32*)
%177 = and i32 %176, -3
%178 = and i8 %128, 2
%179 = zext i8 %178 to i32
%180 = or i32 %177, %179
store i32 %180, i32* inttoptr (i64 3221266496 to i32*)
tail call void asm sideeffect "nop", "~{dirflag},~{fpsr},~{flags}"()
%181 = load i32, i32* inttoptr (i64 3221266496 to i32*)
%182 = and i32 %181, -2
store i32 %182, i32* inttoptr (i64 3221266496 to i32*)
tail call void asm sideeffect "nop", "~{dirflag},~{fpsr},~{flags}"()
%183 = load i32, i32* inttoptr (i64 3221266496 to i32*)
%184 = and i32 %183, -3
%185 = and i8 %133, 2
%186 = zext i8 %185 to i32
%187 = or i32 %184, %186
store i32 %187, i32* inttoptr (i64 3221266496 to i32*)
tail call void asm sideeffect "nop", "~{dirflag},~{fpsr},~{flags}"()
%188 = load i32, i32* inttoptr (i64 3221266496 to i32*)
%189 = and i32 %188, -2
store i32 %189, i32* inttoptr (i64 3221266496 to i32*)
tail call void asm sideeffect "nop", "~{dirflag},~{fpsr},~{flags}"()
%190 = load i32, i32* inttoptr (i64 3221266496 to i32*)
%191 = or i32 %190, 2
store i32 %191, i32* inttoptr (i64 3221266496 to i32*)
tail call void asm sideeffect "nop", "~{dirflag},~{fpsr},~{flags}"()
%192 = load i32, i32* inttoptr (i64 3221266496 to i32*)
%193 = or i32 %192, 1
store i32 %193, i32* inttoptr (i64 3221266496 to i32*)
ret i8 %134
}