int singleNumber(int *nums, int numsSize) {
  char x[32];
  int i, j, ret;
  for (i = 0; i < 32; ++i) {
    x[i] = 0;
  }
  for (i = 0; i < numsSize; ++i) {
    for (j = 0; j < 32; ++j) {
      x[j] = (x[j] + ((nums[i] >> j) & 1)) % 3;
    }
  }
  ret = 0;
  for (i = 0; i < 32; ++i) {
    ret |= (x[i] & 1) << i;
  }
  return ret;
}


x86 assembly (clang, -O0):
<singleNumber>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x8(%rbp)
mov    %esi,-0xc(%rbp)
movl   $0x0,-0x34(%rbp)
cmpl   $0x20,-0x34(%rbp)
jge    1133 <singleNumber+0x33>
movslq -0x34(%rbp),%rax
movb   $0x0,-0x30(%rbp,%rax,1)
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
jmp    1112 <singleNumber+0x12>
movl   $0x0,-0x34(%rbp)
mov    -0x34(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    11aa <singleNumber+0xaa>
movl   $0x0,-0x38(%rbp)
cmpl   $0x20,-0x38(%rbp)
jge    1197 <singleNumber+0x97>
movslq -0x38(%rbp),%rax
movsbl -0x30(%rbp,%rax,1),%eax
mov    -0x8(%rbp),%rcx
movslq -0x34(%rbp),%rdx
mov    (%rcx,%rdx,4),%edx
mov    -0x38(%rbp),%ecx
sar    %cl,%edx
mov    %edx,%ecx
and    $0x1,%ecx
add    %ecx,%eax
mov    $0x3,%ecx
cltd
idiv   %ecx
mov    %dl,%cl
movslq -0x38(%rbp),%rax
mov    %cl,-0x30(%rbp,%rax,1)
mov    -0x38(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x38(%rbp)
jmp    114d <singleNumber+0x4d>
jmp    119c <singleNumber+0x9c>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
jmp    113a <singleNumber+0x3a>
movl   $0x0,-0x3c(%rbp)
movl   $0x0,-0x34(%rbp)
cmpl   $0x20,-0x34(%rbp)
jge    11e7 <singleNumber+0xe7>
movslq -0x34(%rbp),%rax
movsbl -0x30(%rbp,%rax,1),%eax
and    $0x1,%eax
mov    -0x34(%rbp),%ecx
shl    %cl,%eax
or     -0x3c(%rbp),%eax
mov    %eax,-0x3c(%rbp)
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
jmp    11b8 <singleNumber+0xb8>
mov    -0x3c(%rbp),%eax
pop    %rbp
ret

x86 assembly (clang, -O2):
<singleNumber>:
pxor   %xmm5,%xmm5
movdqa %xmm5,-0x18(%rsp)
movdqa %xmm5,-0x28(%rsp)
test   %esi,%esi
jle    1444 <singleNumber+0x344>
mov    %esi,%eax
movdqa -0x28(%rsp),%xmm6
movdqa -0x18(%rsp),%xmm7
xor    %ecx,%ecx
movaps 0xed0(%rip),%xmm12
movdqa 0xed7(%rip),%xmm9
movdqa 0xede(%rip),%xmm10
movdqa 0xee5(%rip),%xmm11
nopl   0x0(%rax,%rax,1)
movd   (%rdi,%rcx,4),%xmm0
pshufd $0x0,%xmm0,%xmm0
punpckhbw %xmm6,%xmm1
punpcklwd %xmm1,%xmm4
psrad  $0x18,%xmm4
punpckhwd %xmm1,%xmm15
psrad  $0x18,%xmm15
punpcklbw %xmm6,%xmm1
punpcklwd %xmm1,%xmm14
psrad  $0x18,%xmm14
punpckhwd %xmm1,%xmm13
psrad  $0x18,%xmm13
movdqa %xmm0,%xmm1
psrld  $0x7,%xmm1
movdqa %xmm0,%xmm5
psrld  $0x6,%xmm5
punpckhqdq %xmm1,%xmm5
movdqa %xmm0,%xmm6
psrld  $0x5,%xmm6
movdqa %xmm0,%xmm3
psrld  $0x4,%xmm3
punpcklqdq %xmm6,%xmm3
shufps $0xcc,%xmm5,%xmm3
movdqa %xmm0,%xmm5
psrld  $0x3,%xmm5
movdqa %xmm0,%xmm2
psrld  $0x2,%xmm2
punpckhqdq %xmm5,%xmm2
movdqa %xmm0,%xmm5
psrld  $0x1,%xmm5
movdqa %xmm0,%xmm6
punpcklqdq %xmm5,%xmm6
shufps $0xcc,%xmm2,%xmm6
movdqa %xmm0,%xmm2
psrld  $0xf,%xmm2
movdqa %xmm0,%xmm5
psrld  $0xe,%xmm5
punpckhqdq %xmm2,%xmm5
movdqa %xmm0,%xmm2
psrld  $0xd,%xmm2
movdqa %xmm0,%xmm1
psrld  $0xc,%xmm1
punpcklqdq %xmm2,%xmm1
shufps $0xcc,%xmm5,%xmm1
movdqa %xmm0,%xmm2
psrld  $0xb,%xmm2
movdqa %xmm0,%xmm8
psrld  $0xa,%xmm8
punpckhqdq %xmm2,%xmm8
movdqa %xmm0,%xmm2
psrld  $0x9,%xmm2
movdqa %xmm0,%xmm5
psrld  $0x8,%xmm5
punpcklqdq %xmm2,%xmm5
shufps $0xcc,%xmm8,%xmm5
andps  %xmm12,%xmm5
paddd  %xmm4,%xmm5
andps  %xmm12,%xmm1
paddd  %xmm15,%xmm1
packssdw %xmm1,%xmm5
andps  %xmm12,%xmm6
paddd  %xmm14,%xmm6
andps  %xmm12,%xmm3
paddd  %xmm13,%xmm3
packssdw %xmm3,%xmm6
movdqa %xmm6,%xmm1
pmulhw %xmm9,%xmm1
movdqa %xmm1,%xmm2
psrlw  $0xf,%xmm2
paddw  %xmm1,%xmm2
pmullw %xmm10,%xmm2
psubw  %xmm2,%xmm6
movdqa %xmm5,%xmm1
pmulhw %xmm9,%xmm1
movdqa %xmm1,%xmm2
psrlw  $0xf,%xmm2
paddw  %xmm1,%xmm2
pmullw %xmm10,%xmm2
psubw  %xmm2,%xmm5
pand   %xmm11,%xmm5
pand   %xmm11,%xmm6
packuswb %xmm5,%xmm6
punpckhbw %xmm7,%xmm1
punpcklwd %xmm1,%xmm4
psrad  $0x18,%xmm4
punpckhwd %xmm1,%xmm14
psrad  $0x18,%xmm14
punpcklbw %xmm7,%xmm1
punpcklwd %xmm1,%xmm13
psrad  $0x18,%xmm13
punpckhwd %xmm1,%xmm8
psrad  $0x18,%xmm8
movdqa %xmm0,%xmm5
psrld  $0x17,%xmm5
movdqa %xmm0,%xmm7
psrld  $0x16,%xmm7
punpckhqdq %xmm5,%xmm7
movdqa %xmm0,%xmm1
psrld  $0x15,%xmm1
movdqa %xmm0,%xmm5
psrld  $0x14,%xmm5
punpcklqdq %xmm1,%xmm5
shufps $0xcc,%xmm7,%xmm5
movdqa %xmm0,%xmm1
psrld  $0x13,%xmm1
movdqa %xmm0,%xmm2
psrld  $0x12,%xmm2
punpckhqdq %xmm1,%xmm2
movdqa %xmm0,%xmm1
psrld  $0x11,%xmm1
movdqa %xmm0,%xmm7
psrld  $0x10,%xmm7
punpcklqdq %xmm1,%xmm7
shufps $0xcc,%xmm2,%xmm7
movdqa %xmm0,%xmm1
psrld  $0x1f,%xmm1
movdqa %xmm0,%xmm2
psrld  $0x1e,%xmm2
punpckhqdq %xmm1,%xmm2
movdqa %xmm0,%xmm1
psrld  $0x1d,%xmm1
movdqa %xmm0,%xmm3
psrld  $0x1c,%xmm3
punpcklqdq %xmm1,%xmm3
shufps $0xcc,%xmm2,%xmm3
movdqa %xmm0,%xmm1
psrld  $0x1b,%xmm1
movdqa %xmm0,%xmm2
psrld  $0x1a,%xmm2
punpckhqdq %xmm1,%xmm2
movdqa %xmm0,%xmm1
psrld  $0x19,%xmm1
psrld  $0x18,%xmm0
punpcklqdq %xmm1,%xmm0
shufps $0xcc,%xmm2,%xmm0
andps  %xmm12,%xmm0
paddd  %xmm4,%xmm0
andps  %xmm12,%xmm3
paddd  %xmm14,%xmm3
packssdw %xmm3,%xmm0
andps  %xmm12,%xmm7
paddd  %xmm13,%xmm7
andps  %xmm12,%xmm5
paddd  %xmm8,%xmm5
packssdw %xmm5,%xmm7
movdqa %xmm7,%xmm1
pmulhw %xmm9,%xmm1
movdqa %xmm1,%xmm2
psrlw  $0xf,%xmm2
paddw  %xmm1,%xmm2
pmullw %xmm10,%xmm2
psubw  %xmm2,%xmm7
movdqa %xmm0,%xmm1
pmulhw %xmm9,%xmm1
movdqa %xmm1,%xmm2
psrlw  $0xf,%xmm2
paddw  %xmm1,%xmm2
pmullw %xmm10,%xmm2
psubw  %xmm2,%xmm0
pand   %xmm11,%xmm0
pand   %xmm11,%xmm7
packuswb %xmm0,%xmm7
add    $0x1,%rcx
cmp    %rcx,%rax
jne    1150 <singleNumber+0x50>
movdqa %xmm6,-0x28(%rsp)
movdqa %xmm7,-0x18(%rsp)
pxor   %xmm5,%xmm5
movdqa 0xbf4(%rip),%xmm1
movdqa -0x28(%rsp),%xmm0
pand   %xmm1,%xmm0
punpcklbw %xmm5,%xmm0
punpcklwd %xmm5,%xmm0
pshufd $0xf5,%xmm0,%xmm2
pmuludq 0xbe5(%rip),%xmm0
pshufd $0xe8,%xmm0,%xmm0
pmuludq 0xbe8(%rip),%xmm2
pshufd $0xe8,%xmm2,%xmm2
punpckldq %xmm2,%xmm0
movd   -0x24(%rsp),%xmm2
pand   %xmm1,%xmm2
punpcklbw %xmm5,%xmm2
punpcklwd %xmm5,%xmm2
pshufd $0xf5,%xmm2,%xmm3
pmuludq 0xbd0(%rip),%xmm2
pshufd $0xe8,%xmm2,%xmm2
pmuludq 0xbd3(%rip),%xmm3
pshufd $0xe8,%xmm3,%xmm3
punpckldq %xmm3,%xmm2
por    %xmm0,%xmm2
movq   -0x20(%rsp),%xmm0
pand   %xmm1,%xmm0
punpcklbw %xmm5,%xmm0
punpcklwd %xmm5,%xmm0
pshufd $0xf5,%xmm0,%xmm3
pmuludq 0xbb7(%rip),%xmm0
pshufd $0xe8,%xmm0,%xmm4
pmuludq 0xbba(%rip),%xmm3
pshufd $0xe8,%xmm3,%xmm0
punpckldq %xmm0,%xmm4
movd   -0x1c(%rsp),%xmm0
pand   %xmm1,%xmm0
punpcklbw %xmm5,%xmm0
punpcklwd %xmm5,%xmm0
pshufd $0xf5,%xmm0,%xmm3
pmuludq 0xba2(%rip),%xmm0
pshufd $0xe8,%xmm0,%xmm0
pmuludq 0xba5(%rip),%xmm3
pshufd $0xe8,%xmm3,%xmm3
punpckldq %xmm3,%xmm0
por    %xmm4,%xmm0
por    %xmm2,%xmm0
movdqa -0x18(%rsp),%xmm2
pand   %xmm1,%xmm2
punpcklbw %xmm5,%xmm2
punpcklwd %xmm5,%xmm2
pshufd $0xf5,%xmm2,%xmm3
pmuludq 0xb85(%rip),%xmm2
pmuludq 0xb8d(%rip),%xmm3
pshufd $0xe8,%xmm2,%xmm2
pshufd $0xe8,%xmm3,%xmm3
punpckldq %xmm3,%xmm2
movd   -0x14(%rsp),%xmm3
pand   %xmm1,%xmm3
punpcklbw %xmm5,%xmm3
punpcklwd %xmm5,%xmm3
pshufd $0xf5,%xmm3,%xmm4
pmuludq 0xb70(%rip),%xmm3
pmuludq 0xb78(%rip),%xmm4
pshufd $0xe8,%xmm3,%xmm3
pshufd $0xe8,%xmm4,%xmm4
punpckldq %xmm4,%xmm3
por    %xmm2,%xmm3
movq   -0x10(%rsp),%xmm2
pand   %xmm1,%xmm2
punpcklbw %xmm5,%xmm2
punpcklwd %xmm5,%xmm2
pshufd $0xf5,%xmm2,%xmm4
pmuludq 0xb57(%rip),%xmm2
pshufd $0xe8,%xmm2,%xmm2
pmuludq 0xb5a(%rip),%xmm4
pshufd $0xe8,%xmm4,%xmm4
punpckldq %xmm4,%xmm2
por    %xmm3,%xmm2
movd   -0xc(%rsp),%xmm3
pand   %xmm1,%xmm3
punpcklbw %xmm5,%xmm3
punpcklwd %xmm5,%xmm3
pshufd $0xf5,%xmm3,%xmm1
pmuludq 0xb3e(%rip),%xmm3
por    %xmm0,%xmm2
pshufd $0xe8,%xmm3,%xmm0
pmuludq 0xb3d(%rip),%xmm1
pshufd $0xe8,%xmm1,%xmm1
punpckldq %xmm1,%xmm0
por    %xmm2,%xmm0
pshufd $0xee,%xmm0,%xmm1
por    %xmm0,%xmm1
pshufd $0x55,%xmm1,%xmm0
por    %xmm1,%xmm0
movd   %xmm0,%eax
ret

LLVM IR (-O0):
define i32 @singleNumber(i32* %0, i32 %1) {
%3 = alloca i32*
%4 = alloca i32
%5 = alloca [32 x i8]
%6 = alloca i32
%7 = alloca i32
%8 = alloca i32
store i32* %0, i32** %3
store i32 %1, i32* %4
store i32 0, i32* %6
br label %9
9: ; preds = %16, %2
%10 = load i32, i32* %6
%11 = icmp slt i32 %10, 32
br i1 %11, label %12, label %19
12: ; preds = %9
%13 = load i32, i32* %6
%14 = sext i32 %13 to i64
%15 = getelementptr inbounds [32 x i8], [32 x i8]* %5, i64 0, i64 %14
store i8 0, i8* %15
br label %16
16: ; preds = %12
%17 = load i32, i32* %6
%18 = add nsw i32 %17, 1
store i32 %18, i32* %6
br label %9
19: ; preds = %9
store i32 0, i32* %6
br label %20
20: ; preds = %52, %19
%21 = load i32, i32* %6
%22 = load i32, i32* %4
%23 = icmp slt i32 %21, %22
br i1 %23, label %24, label %55
24: ; preds = %20
store i32 0, i32* %7
br label %25
25: ; preds = %48, %24
%26 = load i32, i32* %7
%27 = icmp slt i32 %26, 32
br i1 %27, label %28, label %51
28: ; preds = %25
%29 = load i32, i32* %7
%30 = sext i32 %29 to i64
%31 = getelementptr inbounds [32 x i8], [32 x i8]* %5, i64 0, i64 %30
%32 = load i8, i8* %31
%33 = sext i8 %32 to i32
%34 = load i32*, i32** %3
%35 = load i32, i32* %6
%36 = sext i32 %35 to i64
%37 = getelementptr inbounds i32, i32* %34, i64 %36
%38 = load i32, i32* %37
%39 = load i32, i32* %7
%40 = ashr i32 %38, %39
%41 = and i32 %40, 1
%42 = add nsw i32 %33, %41
%43 = srem i32 %42, 3
%44 = trunc i32 %43 to i8
%45 = load i32, i32* %7
%46 = sext i32 %45 to i64
%47 = getelementptr inbounds [32 x i8], [32 x i8]* %5, i64 0, i64 %46
store i8 %44, i8* %47
br label %48
48: ; preds = %28
%49 = load i32, i32* %7
%50 = add nsw i32 %49, 1
store i32 %50, i32* %7
br label %25
51: ; preds = %25
br label %52
52: ; preds = %51
%53 = load i32, i32* %6
%54 = add nsw i32 %53, 1
store i32 %54, i32* %6
br label %20
55: ; preds = %20
store i32 0, i32* %8
store i32 0, i32* %6
br label %56
56: ; preds = %70, %55
%57 = load i32, i32* %6
%58 = icmp slt i32 %57, 32
br i1 %58, label %59, label %73
59: ; preds = %56
%60 = load i32, i32* %6
%61 = sext i32 %60 to i64
%62 = getelementptr inbounds [32 x i8], [32 x i8]* %5, i64 0, i64 %61
%63 = load i8, i8* %62
%64 = sext i8 %63 to i32
%65 = and i32 %64, 1
%66 = load i32, i32* %6
%67 = shl i32 %65, %66
%68 = load i32, i32* %8
%69 = or i32 %68, %67
store i32 %69, i32* %8
br label %70
70: ; preds = %59
%71 = load i32, i32* %6
%72 = add nsw i32 %71, 1
store i32 %72, i32* %6
br label %56
73: ; preds = %56
%74 = load i32, i32* %8
ret i32 %74
}

LLVM IR (-O2):
define i32 @singleNumber(i32* nocapture %0, i32 %1) {
%3 = alloca [32 x i8]
%4 = getelementptr inbounds [32 x i8], [32 x i8]* %3, i64 0, i64 0
%5 = getelementptr inbounds [32 x i8], [32 x i8]* %3, i64 0, i64 0
%6 = icmp sgt i32 %1, 0
br i1 %6, label %7, label %39
7: ; preds = %2
%8 = zext i32 %1 to i64
%9 = bitcast [32 x i8]* %3 to <16 x i8>*
%10 = getelementptr inbounds [32 x i8], [32 x i8]* %3, i64 0, i64 16
%11 = bitcast i8* %10 to <16 x i8>*
%12 = load <16 x i8>, <16 x i8>* %9
%13 = load <16 x i8>, <16 x i8>* %11
br label %14
14: ; preds = %14, %7
%15 = phi <16 x i8> [ %13, %7 ], [ %35, %14 ]
%16 = phi <16 x i8> [ %12, %7 ], [ %28, %14 ]
%17 = phi i64 [ 0, %7 ], [ %36, %14 ]
%18 = getelementptr inbounds i32, i32* %0, i64 %17
%19 = load i32, i32* %18
%20 = insertelement <16 x i32> poison, i32 %19, i64 0
%21 = shufflevector <16 x i32> %20, <16 x i32> poison, <16 x i32> zeroinitializer
%22 = sext <16 x i8> %16 to <16 x i32>
%23 = lshr <16 x i32> %21, <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
%24 = and <16 x i32> %23, <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1>
%25 = add nsw <16 x i32> %24, %22
%26 = trunc <16 x i32> %25 to <16 x i16>
%27 = srem <16 x i16> %26, <i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3>
%28 = trunc <16 x i16> %27 to <16 x i8>
%29 = sext <16 x i8> %15 to <16 x i32>
%30 = lshr <16 x i32> %21, <i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31>
%31 = and <16 x i32> %30, <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1>
%32 = add nsw <16 x i32> %31, %29
%33 = trunc <16 x i32> %32 to <16 x i16>
%34 = srem <16 x i16> %33, <i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3>
%35 = trunc <16 x i16> %34 to <16 x i8>
%36 = add nuw nsw i64 %17, 1
%37 = icmp eq i64 %36, %8
br i1 %37, label %38, label %14
38: ; preds = %14
store <16 x i8> %28, <16 x i8>* %9
store <16 x i8> %35, <16 x i8>* %11
br label %39
39: ; preds = %38, %2
%40 = bitcast [32 x i8]* %3 to <4 x i8>*
%41 = load <4 x i8>, <4 x i8>* %40
%42 = and <4 x i8> %41, <i8 1, i8 1, i8 1, i8 1>
%43 = zext <4 x i8> %42 to <4 x i32>
%44 = shl nuw <4 x i32> %43, <i32 0, i32 1, i32 2, i32 3>
%45 = getelementptr inbounds [32 x i8], [32 x i8]* %3, i64 0, i64 4
%46 = bitcast i8* %45 to <4 x i8>*
%47 = load <4 x i8>, <4 x i8>* %46
%48 = and <4 x i8> %47, <i8 1, i8 1, i8 1, i8 1>
%49 = zext <4 x i8> %48 to <4 x i32>
%50 = shl nuw <4 x i32> %49, <i32 4, i32 5, i32 6, i32 7>
%51 = or <4 x i32> %50, %44
%52 = getelementptr inbounds [32 x i8], [32 x i8]* %3, i64 0, i64 8
%53 = bitcast i8* %52 to <4 x i8>*
%54 = load <4 x i8>, <4 x i8>* %53
%55 = and <4 x i8> %54, <i8 1, i8 1, i8 1, i8 1>
%56 = zext <4 x i8> %55 to <4 x i32>
%57 = shl nuw <4 x i32> %56, <i32 8, i32 9, i32 10, i32 11>
%58 = or <4 x i32> %57, %51
%59 = getelementptr inbounds [32 x i8], [32 x i8]* %3, i64 0, i64 12
%60 = bitcast i8* %59 to <4 x i8>*
%61 = load <4 x i8>, <4 x i8>* %60
%62 = and <4 x i8> %61, <i8 1, i8 1, i8 1, i8 1>
%63 = zext <4 x i8> %62 to <4 x i32>
%64 = shl nuw <4 x i32> %63, <i32 12, i32 13, i32 14, i32 15>
%65 = or <4 x i32> %64, %58
%66 = getelementptr inbounds [32 x i8], [32 x i8]* %3, i64 0, i64 16
%67 = bitcast i8* %66 to <4 x i8>*
%68 = load <4 x i8>, <4 x i8>* %67
%69 = and <4 x i8> %68, <i8 1, i8 1, i8 1, i8 1>
%70 = zext <4 x i8> %69 to <4 x i32>
%71 = shl nuw <4 x i32> %70, <i32 16, i32 17, i32 18, i32 19>
%72 = or <4 x i32> %71, %65
%73 = getelementptr inbounds [32 x i8], [32 x i8]* %3, i64 0, i64 20
%74 = bitcast i8* %73 to <4 x i8>*
%75 = load <4 x i8>, <4 x i8>* %74
%76 = and <4 x i8> %75, <i8 1, i8 1, i8 1, i8 1>
%77 = zext <4 x i8> %76 to <4 x i32>
%78 = shl nuw <4 x i32> %77, <i32 20, i32 21, i32 22, i32 23>
%79 = or <4 x i32> %78, %72
%80 = getelementptr inbounds [32 x i8], [32 x i8]* %3, i64 0, i64 24
%81 = bitcast i8* %80 to <4 x i8>*
%82 = load <4 x i8>, <4 x i8>* %81
%83 = and <4 x i8> %82, <i8 1, i8 1, i8 1, i8 1>
%84 = zext <4 x i8> %83 to <4 x i32>
%85 = shl nuw <4 x i32> %84, <i32 24, i32 25, i32 26, i32 27>
%86 = or <4 x i32> %85, %79
%87 = getelementptr inbounds [32 x i8], [32 x i8]* %3, i64 0, i64 28
%88 = bitcast i8* %87 to <4 x i8>*
%89 = load <4 x i8>, <4 x i8>* %88
%90 = and <4 x i8> %89, <i8 1, i8 1, i8 1, i8 1>
%91 = zext <4 x i8> %90 to <4 x i32>
%92 = shl nuw <4 x i32> %91, <i32 28, i32 29, i32 30, i32 31>
%93 = or <4 x i32> %92, %86
%94 = call i32 @llvm.vector.reduce.or.v4i32(<4 x i32> %93)
ret i32 %94
}