unsigned char me_valid(unsigned short m) {
  char i, t;
  register char a, b;
  for (i = 0, t = 0; i < 8; i++) {
    a = !!(m & 1);
    b = !!(m & 2);
    t += (!(a || b)) || (a && b);
    m >>= 2;
  }
  return !t;
}


x86 assembly (clang, -O0):
<me_valid>:
push   %rbp
mov    %rsp,%rbp
mov    %di,%ax
mov    %ax,-0x2(%rbp)
movb   $0x0,-0x3(%rbp)
movb   $0x0,-0x4(%rbp)
movsbl -0x3(%rbp),%eax
cmp    $0x8,%eax
jge    11bf <me_valid+0xbf>
movzwl -0x2(%rbp),%eax
and    $0x1,%eax
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%eax
mov    %al,-0x5(%rbp)
movzwl -0x2(%rbp),%eax
and    $0x2,%eax
cmp    $0x0,%eax
setne  %al
xor    $0xff,%al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%eax
mov    %al,-0x6(%rbp)
movsbl -0x5(%rbp),%eax
cmp    $0x0,%eax
jne    1171 <me_valid+0x71>
movsbl -0x6(%rbp),%ecx
mov    $0x1,%al
cmp    $0x0,%ecx
mov    %al,-0x7(%rbp)
je     1196 <me_valid+0x96>
movsbl -0x5(%rbp),%ecx
xor    %eax,%eax
cmp    $0x0,%ecx
mov    %al,-0x8(%rbp)
je     1190 <me_valid+0x90>
movsbl -0x6(%rbp),%eax
cmp    $0x0,%eax
setne  %al
mov    %al,-0x8(%rbp)
mov    -0x8(%rbp),%al
mov    %al,-0x7(%rbp)
mov    -0x7(%rbp),%al
and    $0x1,%al
movzbl %al,%ecx
movsbl -0x4(%rbp),%eax
add    %ecx,%eax
mov    %al,-0x4(%rbp)
movzwl -0x2(%rbp),%eax
sar    $0x2,%eax
mov    %ax,-0x2(%rbp)
mov    -0x3(%rbp),%al
add    $0x1,%al
mov    %al,-0x3(%rbp)
jmp    1113 <me_valid+0x13>
cmpb   $0x0,-0x4(%rbp)
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%eax
movzbl %al,%eax
pop    %rbp
ret

x86 assembly (clang, -O2):
<me_valid>:
mov    %edi,%eax
shr    $0x2,%eax
mov    %edi,%ecx
shr    $0x4,%ecx
mov    %edi,%edx
shr    $0x6,%edx
movd   %edi,%xmm0
pinsrw $0x1,%eax,%xmm0
pinsrw $0x2,%ecx,%xmm0
pinsrw $0x3,%edx,%xmm0
pand   0xed6(%rip),%xmm0
movdqa 0xede(%rip),%xmm1
pcmpeqw %xmm0,%xmm1
punpcklwd %xmm1,%xmm1
pcmpeqw 0xede(%rip),%xmm0
punpcklwd %xmm0,%xmm0
por    %xmm1,%xmm0
mov    %edi,%eax
shr    $0x8,%eax
and    $0x3,%eax
sete   %cl
cmp    $0x3,%ax
sete   %sil
or     %cl,%sil
mov    %edi,%ecx
shr    $0xa,%ecx
and    $0x3,%ecx
sete   %dl
cmp    $0x3,%cx
sete   %r8b
or     %dl,%r8b
mov    %edi,%edx
shr    $0xc,%edx
and    $0x3,%edx
sete   %al
cmp    $0x3,%dx
sete   %dl
or     %al,%dl
pslld  $0x1f,%xmm0
movmskps %xmm0,%eax
mov    %eax,%ecx
shr    %cl
and    $0x5,%cl
sub    %cl,%al
mov    %eax,%ecx
and    $0x33,%cl
shr    $0x2,%al
and    $0x33,%al
add    %cl,%al
mov    %eax,%ecx
shr    $0x4,%cl
add    %al,%cl
and    $0xf,%cl
add    %sil,%cl
add    %r8b,%cl
add    %dl,%cl
add    $0x4000,%edi
movzwl %di,%eax
shr    $0xf,%eax
add    $0xff,%al
cmp    %al,%cl
sete   %al
ret

LLVM IR (-O0):
define zeroext i8 @me_valid(i16 zeroext %0) {
%2 = alloca i16
%3 = alloca i8
%4 = alloca i8
%5 = alloca i8
%6 = alloca i8
store i16 %0, i16* %2
store i8 0, i8* %3
store i8 0, i8* %4
br label %7
7: ; preds = %56, %1
%8 = load i8, i8* %3
%9 = sext i8 %8 to i32
%10 = icmp slt i32 %9, 8
br i1 %10, label %11, label %59
11: ; preds = %7
%12 = load i16, i16* %2
%13 = zext i16 %12 to i32
%14 = and i32 %13, 1
%15 = icmp ne i32 %14, 0
%16 = xor i1 %15, true
%17 = xor i1 %16, true
%18 = zext i1 %17 to i32
%19 = trunc i32 %18 to i8
store i8 %19, i8* %5
%20 = load i16, i16* %2
%21 = zext i16 %20 to i32
%22 = and i32 %21, 2
%23 = icmp ne i32 %22, 0
%24 = xor i1 %23, true
%25 = xor i1 %24, true
%26 = zext i1 %25 to i32
%27 = trunc i32 %26 to i8
store i8 %27, i8* %6
%28 = load i8, i8* %5
%29 = sext i8 %28 to i32
%30 = icmp ne i32 %29, 0
br i1 %30, label %35, label %31
31: ; preds = %11
%32 = load i8, i8* %6
%33 = sext i8 %32 to i32
%34 = icmp ne i32 %33, 0
br i1 %34, label %35, label %45
35: ; preds = %31, %11
%36 = load i8, i8* %5
%37 = sext i8 %36 to i32
%38 = icmp ne i32 %37, 0
br i1 %38, label %39, label %43
39: ; preds = %35
%40 = load i8, i8* %6
%41 = sext i8 %40 to i32
%42 = icmp ne i32 %41, 0
br label %43
43: ; preds = %39, %35
%44 = phi i1 [ false, %35 ], [ %42, %39 ]
br label %45
45: ; preds = %43, %31
%46 = phi i1 [ true, %31 ], [ %44, %43 ]
%47 = zext i1 %46 to i32
%48 = load i8, i8* %4
%49 = sext i8 %48 to i32
%50 = add nsw i32 %49, %47
%51 = trunc i32 %50 to i8
store i8 %51, i8* %4
%52 = load i16, i16* %2
%53 = zext i16 %52 to i32
%54 = ashr i32 %53, 2
%55 = trunc i32 %54 to i16
store i16 %55, i16* %2
br label %56
56: ; preds = %45
%57 = load i8, i8* %3
%58 = add i8 %57, 1
store i8 %58, i8* %3
br label %7
59: ; preds = %7
%60 = load i8, i8* %4
%61 = icmp ne i8 %60, 0
%62 = xor i1 %61, true
%63 = zext i1 %62 to i32
%64 = trunc i32 %63 to i8
ret i8 %64
}

LLVM IR (-O2):
define zeroext i8 @me_valid(i16 zeroext %0) {
%2 = lshr i16 %0, 2
%3 = lshr i16 %0, 4
%4 = lshr i16 %0, 6
%5 = insertelement <4 x i16> poison, i16 %0, i64 0
%6 = insertelement <4 x i16> %5, i16 %2, i64 1
%7 = insertelement <4 x i16> %6, i16 %3, i64 2
%8 = insertelement <4 x i16> %7, i16 %4, i64 3
%9 = and <4 x i16> %8, <i16 3, i16 3, i16 3, i16 3>
%10 = icmp eq <4 x i16> %9, <i16 3, i16 0, i16 3, i16 0>
%11 = icmp eq <4 x i16> %9, <i16 0, i16 3, i16 0, i16 3>
%12 = or <4 x i1> %10, %11
%13 = lshr i16 %0, 8
%14 = and i16 %13, 3
%15 = icmp eq i16 %14, 0
%16 = icmp eq i16 %14, 3
%17 = or i1 %15, %16
%18 = zext i1 %17 to i8
%19 = lshr i16 %0, 10
%20 = and i16 %19, 3
%21 = icmp eq i16 %20, 0
%22 = icmp eq i16 %20, 3
%23 = or i1 %21, %22
%24 = zext i1 %23 to i8
%25 = lshr i16 %0, 12
%26 = and i16 %25, 3
%27 = icmp eq i16 %26, 0
%28 = icmp eq i16 %26, 3
%29 = or i1 %27, %28
%30 = zext i1 %29 to i8
%31 = bitcast <4 x i1> %12 to i4
%32 = call i4 @llvm.ctpop.i4(i4 %31)
%33 = zext i4 %32 to i8
%34 = add nuw nsw i8 %33, %18
%35 = add nuw nsw i8 %34, %24
%36 = add nuw nsw i8 %35, %30
%37 = add i16 %0, 16384
%38 = lshr i16 %37, 15
%39 = trunc i16 %38 to i8
%40 = add nsw i8 %39, -1
%41 = icmp eq i8 %36, %40
%42 = zext i1 %41 to i8
ret i8 %42
}