#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
int /*<<< orphan*/ memset(int *, int /*<<< orphan*/, int);
int missingNumber(int *nums, int numsSize) {
  int i, j;
  int bits[32];
  int res = 0;
  memset(bits, 0, sizeof(int) * 32);
  for (j = 0; j < 32; j++)
    bits[j] += (numsSize >> j) & 1;
  for (i = 0; i < numsSize; i++) {
    for (j = 0; j < 32; j++)
      bits[j] += (nums[i] >> j) & 1;
    for (j = 0; j < 32; j++)
      bits[j] += (i >> j) & 1;
  }
  for (j = 0; j < 32; j++)
    res += (bits[j] % 2) << j;
  return res;
}


x86 assembly (clang, -O0):
<missingNumber>:
push   %rbp
mov    %rsp,%rbp
sub    $0xb0,%rsp
mov    %rdi,-0x8(%rbp)
mov    %esi,-0xc(%rbp)
movl   $0x0,-0xa4(%rbp)
lea    -0xa0(%rbp),%rdi
xor    %esi,%esi
mov    $0x80,%edx
call   1030 <memset@plt>
movl   $0x0,-0x14(%rbp)
cmpl   $0x20,-0x14(%rbp)
jge    117d <missingNumber+0x6d>
mov    -0xc(%rbp),%eax
mov    -0x14(%rbp),%ecx
sar    %cl,%eax
mov    %eax,%ecx
and    $0x1,%ecx
movslq -0x14(%rbp),%rax
add    -0xa0(%rbp,%rax,4),%ecx
mov    %ecx,-0xa0(%rbp,%rax,4)
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    1146 <missingNumber+0x36>
movl   $0x0,-0x10(%rbp)
mov    -0x10(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    1227 <missingNumber+0x117>
movl   $0x0,-0x14(%rbp)
cmpl   $0x20,-0x14(%rbp)
jge    11d6 <missingNumber+0xc6>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    -0x14(%rbp),%ecx
sar    %cl,%eax
mov    %eax,%ecx
and    $0x1,%ecx
movslq -0x14(%rbp),%rax
add    -0xa0(%rbp,%rax,4),%ecx
mov    %ecx,-0xa0(%rbp,%rax,4)
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    1197 <missingNumber+0x87>
movl   $0x0,-0x14(%rbp)
cmpl   $0x20,-0x14(%rbp)
jge    1214 <missingNumber+0x104>
mov    -0x10(%rbp),%eax
mov    -0x14(%rbp),%ecx
sar    %cl,%eax
mov    %eax,%ecx
and    $0x1,%ecx
movslq -0x14(%rbp),%rax
add    -0xa0(%rbp,%rax,4),%ecx
mov    %ecx,-0xa0(%rbp,%rax,4)
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    11dd <missingNumber+0xcd>
jmp    1219 <missingNumber+0x109>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    1184 <missingNumber+0x74>
movl   $0x0,-0x14(%rbp)
cmpl   $0x20,-0x14(%rbp)
jge    126c <missingNumber+0x15c>
movslq -0x14(%rbp),%rax
mov    -0xa0(%rbp,%rax,4),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %edx,%eax
mov    -0x14(%rbp),%ecx
shl    %cl,%eax
add    -0xa4(%rbp),%eax
mov    %eax,-0xa4(%rbp)
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    122e <missingNumber+0x11e>
mov    -0xa4(%rbp),%eax
add    $0xb0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<missingNumber>:
push   %rbp
push   %rbx
sub    $0xd8,%rsp
mov    %esi,%ebp
mov    %rdi,%rbx
mov    %rsp,%rdi
xor    %esi,%esi
mov    $0x80,%edx
call   1030 <memset@plt>
movd   %ebp,%xmm0
pshufd $0x0,%xmm0,%xmm0
movdqa %xmm0,%xmm1
psrld  $0x3,%xmm1
movdqa %xmm0,%xmm2
psrld  $0x2,%xmm2
punpckhqdq %xmm1,%xmm2
movdqa %xmm0,%xmm1
psrld  $0x1,%xmm1
movdqa %xmm0,%xmm3
punpcklqdq %xmm1,%xmm3
shufps $0xcc,%xmm2,%xmm3
movaps 0xe97(%rip),%xmm11
andps  %xmm11,%xmm3
paddd  (%rsp),%xmm3
movdqa %xmm3,(%rsp)
movdqa %xmm0,%xmm1
psrld  $0x7,%xmm1
movdqa %xmm0,%xmm2
psrld  $0x6,%xmm2
punpckhqdq %xmm1,%xmm2
movdqa %xmm0,%xmm1
psrld  $0x5,%xmm1
movdqa %xmm0,%xmm3
psrld  $0x4,%xmm3
punpcklqdq %xmm1,%xmm3
shufps $0xcc,%xmm2,%xmm3
andps  %xmm11,%xmm3
paddd  0x10(%rsp),%xmm3
movdqa %xmm3,0x10(%rsp)
movdqa %xmm0,%xmm1
psrld  $0xb,%xmm1
movdqa %xmm0,%xmm2
psrld  $0xa,%xmm2
punpckhqdq %xmm1,%xmm2
movdqa %xmm0,%xmm1
psrld  $0x9,%xmm1
movdqa %xmm0,%xmm3
psrld  $0x8,%xmm3
punpcklqdq %xmm1,%xmm3
shufps $0xcc,%xmm2,%xmm3
andps  %xmm11,%xmm3
paddd  0x20(%rsp),%xmm3
movdqa %xmm3,0x20(%rsp)
movdqa %xmm0,%xmm1
psrld  $0xf,%xmm1
movdqa %xmm0,%xmm2
psrld  $0xe,%xmm2
punpckhqdq %xmm1,%xmm2
movdqa %xmm0,%xmm1
psrld  $0xd,%xmm1
movdqa %xmm0,%xmm3
psrld  $0xc,%xmm3
punpcklqdq %xmm1,%xmm3
shufps $0xcc,%xmm2,%xmm3
andps  %xmm11,%xmm3
paddd  0x30(%rsp),%xmm3
movdqa %xmm3,0x30(%rsp)
movdqa %xmm0,%xmm1
psrld  $0x13,%xmm1
movdqa %xmm0,%xmm2
psrld  $0x12,%xmm2
punpckhqdq %xmm1,%xmm2
movdqa %xmm0,%xmm1
psrld  $0x11,%xmm1
movdqa %xmm0,%xmm3
psrld  $0x10,%xmm3
punpcklqdq %xmm1,%xmm3
shufps $0xcc,%xmm2,%xmm3
andps  %xmm11,%xmm3
paddd  0x40(%rsp),%xmm3
movdqa %xmm3,0x40(%rsp)
movdqa %xmm0,%xmm1
psrld  $0x17,%xmm1
movdqa %xmm0,%xmm2
psrld  $0x16,%xmm2
punpckhqdq %xmm1,%xmm2
movdqa %xmm0,%xmm1
psrld  $0x15,%xmm1
movdqa %xmm0,%xmm3
psrld  $0x14,%xmm3
punpcklqdq %xmm1,%xmm3
shufps $0xcc,%xmm2,%xmm3
andps  %xmm11,%xmm3
paddd  0x50(%rsp),%xmm3
movdqa %xmm3,0x50(%rsp)
movdqa %xmm0,%xmm1
psrld  $0x1b,%xmm1
movdqa %xmm0,%xmm2
psrld  $0x1a,%xmm2
punpckhqdq %xmm1,%xmm2
movdqa %xmm0,%xmm1
psrld  $0x19,%xmm1
movdqa %xmm0,%xmm3
psrld  $0x18,%xmm3
punpcklqdq %xmm1,%xmm3
shufps $0xcc,%xmm2,%xmm3
andps  %xmm11,%xmm3
paddd  0x60(%rsp),%xmm3
movdqa %xmm3,0x60(%rsp)
movdqa %xmm0,%xmm1
psrld  $0x1f,%xmm1
movdqa %xmm0,%xmm2
psrld  $0x1e,%xmm2
punpckhqdq %xmm1,%xmm2
movdqa %xmm0,%xmm1
psrld  $0x1d,%xmm1
psrld  $0x1c,%xmm0
punpcklqdq %xmm1,%xmm0
shufps $0xcc,%xmm2,%xmm0
andps  %xmm11,%xmm0
paddd  0x70(%rsp),%xmm0
movdqa %xmm0,0x70(%rsp)
test   %ebp,%ebp
jle    1806 <missingNumber+0x6f6>
mov    %ebp,%eax
movdqa (%rsp),%xmm14
movdqa 0x10(%rsp),%xmm13
movdqa 0x20(%rsp),%xmm15
movdqa 0x30(%rsp),%xmm8
movdqa 0x40(%rsp),%xmm6
movdqa 0x50(%rsp),%xmm5
movdqa 0x60(%rsp),%xmm3
movdqa 0x70(%rsp),%xmm0
xor    %ecx,%ecx
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
movdqa %xmm8,0xb0(%rsp)
movdqa %xmm6,0x80(%rsp)
movdqa %xmm5,0x90(%rsp)
movdqa %xmm3,0xc0(%rsp)
movdqa %xmm0,0xa0(%rsp)
movd   (%rbx,%rcx,4),%xmm0
pshufd $0x0,%xmm0,%xmm7
movdqa %xmm7,%xmm1
psrld  $0x3,%xmm1
movdqa %xmm7,%xmm2
psrld  $0x2,%xmm2
punpckhqdq %xmm1,%xmm2
movdqa %xmm7,%xmm1
psrld  $0x1,%xmm1
movdqa %xmm7,%xmm9
punpcklqdq %xmm1,%xmm9
shufps $0xcc,%xmm2,%xmm9
movdqa %xmm7,%xmm1
psrld  $0x7,%xmm1
movdqa %xmm7,%xmm2
psrld  $0x6,%xmm2
punpckhqdq %xmm1,%xmm2
movdqa %xmm7,%xmm1
psrld  $0x5,%xmm1
movdqa %xmm7,%xmm8
psrld  $0x4,%xmm8
punpcklqdq %xmm1,%xmm8
shufps $0xcc,%xmm2,%xmm8
movdqa %xmm7,%xmm1
psrld  $0xb,%xmm1
movdqa %xmm7,%xmm2
psrld  $0xa,%xmm2
punpckhqdq %xmm1,%xmm2
movdqa %xmm7,%xmm1
psrld  $0x9,%xmm1
movdqa %xmm7,%xmm6
psrld  $0x8,%xmm6
punpcklqdq %xmm1,%xmm6
shufps $0xcc,%xmm2,%xmm6
movdqa %xmm7,%xmm1
psrld  $0xf,%xmm1
movdqa %xmm7,%xmm2
psrld  $0xe,%xmm2
punpckhqdq %xmm1,%xmm2
movdqa %xmm7,%xmm1
psrld  $0xd,%xmm1
movdqa %xmm7,%xmm5
psrld  $0xc,%xmm5
punpcklqdq %xmm1,%xmm5
shufps $0xcc,%xmm2,%xmm5
movdqa %xmm7,%xmm1
psrld  $0x13,%xmm1
movdqa %xmm7,%xmm2
psrld  $0x12,%xmm2
punpckhqdq %xmm1,%xmm2
movdqa %xmm7,%xmm1
psrld  $0x11,%xmm1
movdqa %xmm7,%xmm3
psrld  $0x10,%xmm3
punpcklqdq %xmm1,%xmm3
shufps $0xcc,%xmm2,%xmm3
movdqa %xmm7,%xmm1
psrld  $0x17,%xmm1
movdqa %xmm7,%xmm4
psrld  $0x16,%xmm4
punpckhqdq %xmm1,%xmm4
movdqa %xmm7,%xmm1
psrld  $0x15,%xmm1
movdqa %xmm7,%xmm2
psrld  $0x14,%xmm2
punpcklqdq %xmm1,%xmm2
shufps $0xcc,%xmm4,%xmm2
movdqa %xmm7,%xmm1
psrld  $0x1b,%xmm1
movdqa %xmm7,%xmm4
psrld  $0x1a,%xmm4
punpckhqdq %xmm1,%xmm4
movdqa %xmm7,%xmm0
psrld  $0x19,%xmm0
movdqa %xmm7,%xmm1
psrld  $0x18,%xmm1
punpcklqdq %xmm0,%xmm1
shufps $0xcc,%xmm4,%xmm1
movdqa %xmm7,%xmm0
psrld  $0x1f,%xmm0
movdqa %xmm7,%xmm4
psrld  $0x1e,%xmm4
punpckhqdq %xmm0,%xmm4
movdqa %xmm7,%xmm0
psrld  $0x1d,%xmm0
psrld  $0x1c,%xmm7
punpcklqdq %xmm0,%xmm7
shufps $0xcc,%xmm4,%xmm7
movd   %ecx,%xmm0
pshufd $0x0,%xmm0,%xmm0
movdqa %xmm0,%xmm4
psrld  $0x3,%xmm4
movdqa %xmm0,%xmm10
psrld  $0x2,%xmm10
punpckhqdq %xmm4,%xmm10
movaps %xmm11,%xmm12
movdqa %xmm0,%xmm11
psrld  $0x1,%xmm11
movdqa %xmm0,%xmm4
punpcklqdq %xmm11,%xmm4
movaps %xmm12,%xmm11
andps  %xmm12,%xmm9
shufps $0xcc,%xmm10,%xmm4
andps  %xmm12,%xmm4
paddd  %xmm4,%xmm14
paddd  %xmm9,%xmm14
movdqa %xmm0,%xmm9
psrld  $0x7,%xmm9
movdqa %xmm0,%xmm10
psrld  $0x6,%xmm10
punpckhqdq %xmm9,%xmm10
movdqa %xmm0,%xmm9
psrld  $0x5,%xmm9
movdqa %xmm0,%xmm4
psrld  $0x4,%xmm4
punpcklqdq %xmm9,%xmm4
andps  %xmm12,%xmm8
shufps $0xcc,%xmm10,%xmm4
andps  %xmm12,%xmm4
paddd  %xmm4,%xmm13
paddd  %xmm8,%xmm13
movdqa %xmm0,%xmm8
psrld  $0xb,%xmm8
movdqa %xmm0,%xmm9
psrld  $0xa,%xmm9
punpckhqdq %xmm8,%xmm9
movdqa %xmm0,%xmm8
psrld  $0x9,%xmm8
movdqa %xmm0,%xmm4
psrld  $0x8,%xmm4
punpcklqdq %xmm8,%xmm4
andps  %xmm12,%xmm6
shufps $0xcc,%xmm9,%xmm4
andps  %xmm12,%xmm4
paddd  %xmm4,%xmm15
paddd  %xmm6,%xmm15
movdqa %xmm0,%xmm4
psrld  $0xf,%xmm4
movdqa %xmm0,%xmm6
psrld  $0xe,%xmm6
punpckhqdq %xmm4,%xmm6
movdqa %xmm0,%xmm8
psrld  $0xd,%xmm8
movdqa %xmm0,%xmm4
psrld  $0xc,%xmm4
punpcklqdq %xmm8,%xmm4
movdqa 0xb0(%rsp),%xmm8
andps  %xmm12,%xmm5
shufps $0xcc,%xmm6,%xmm4
andps  %xmm12,%xmm4
paddd  %xmm4,%xmm8
paddd  %xmm5,%xmm8
movdqa %xmm0,%xmm4
psrld  $0x13,%xmm4
movdqa %xmm0,%xmm5
psrld  $0x12,%xmm5
punpckhqdq %xmm4,%xmm5
movdqa %xmm0,%xmm4
psrld  $0x11,%xmm4
movdqa %xmm0,%xmm6
psrld  $0x10,%xmm6
punpcklqdq %xmm4,%xmm6
andps  %xmm12,%xmm3
shufps $0xcc,%xmm5,%xmm6
andps  %xmm12,%xmm6
movdqa 0x80(%rsp),%xmm4
paddd  %xmm6,%xmm4
movdqa %xmm4,0x80(%rsp)
movdqa 0x80(%rsp),%xmm6
paddd  %xmm3,%xmm6
movdqa %xmm0,%xmm3
psrld  $0x17,%xmm3
movdqa %xmm0,%xmm4
psrld  $0x16,%xmm4
punpckhqdq %xmm3,%xmm4
movdqa %xmm0,%xmm3
psrld  $0x15,%xmm3
movdqa %xmm0,%xmm5
psrld  $0x14,%xmm5
punpcklqdq %xmm3,%xmm5
andps  %xmm12,%xmm2
shufps $0xcc,%xmm4,%xmm5
andps  %xmm12,%xmm5
movdqa 0x90(%rsp),%xmm3
paddd  %xmm5,%xmm3
movdqa %xmm3,0x90(%rsp)
movdqa 0x90(%rsp),%xmm5
paddd  %xmm2,%xmm5
movdqa %xmm0,%xmm2
psrld  $0x1b,%xmm2
movdqa %xmm0,%xmm3
psrld  $0x1a,%xmm3
punpckhqdq %xmm2,%xmm3
movdqa %xmm0,%xmm2
psrld  $0x19,%xmm2
movdqa %xmm0,%xmm4
psrld  $0x18,%xmm4
punpcklqdq %xmm2,%xmm4
shufps $0xcc,%xmm3,%xmm4
movdqa 0xc0(%rsp),%xmm3
andps  %xmm12,%xmm1
andps  %xmm12,%xmm4
paddd  %xmm4,%xmm3
paddd  %xmm1,%xmm3
movdqa %xmm0,%xmm1
psrld  $0x1f,%xmm1
movdqa %xmm0,%xmm2
psrld  $0x1e,%xmm2
punpckhqdq %xmm1,%xmm2
movdqa %xmm0,%xmm1
psrld  $0x1d,%xmm1
psrld  $0x1c,%xmm0
punpcklqdq %xmm1,%xmm0
shufps $0xcc,%xmm2,%xmm0
andps  %xmm11,%xmm0
movdqa 0xa0(%rsp),%xmm1
paddd  %xmm0,%xmm1
movdqa %xmm1,0xa0(%rsp)
movdqa 0xa0(%rsp),%xmm0
andps  %xmm11,%xmm7
paddd  %xmm7,%xmm0
add    $0x1,%rcx
cmp    %rcx,%rax
jne    1380 <missingNumber+0x270>
movdqa %xmm14,(%rsp)
movdqa %xmm13,0x10(%rsp)
movdqa %xmm15,0x20(%rsp)
movdqa %xmm8,0x30(%rsp)
movdqa %xmm6,0x40(%rsp)
movdqa %xmm5,0x50(%rsp)
movdqa %xmm3,0x60(%rsp)
movdqa %xmm0,0x70(%rsp)
movdqa (%rsp),%xmm2
movdqa 0x10(%rsp),%xmm1
movdqa 0x20(%rsp),%xmm0
movdqa %xmm2,%xmm3
psrld  $0x1f,%xmm3
paddd  %xmm2,%xmm3
psrad  $0x1,%xmm3
paddd  %xmm3,%xmm3
psubd  %xmm3,%xmm2
pshufd $0xf5,%xmm2,%xmm3
pmuludq 0x7d2(%rip),%xmm2
pshufd $0xe8,%xmm2,%xmm4
pmuludq 0x7d5(%rip),%xmm3
pshufd $0xe8,%xmm3,%xmm2
punpckldq %xmm2,%xmm4
movdqa %xmm1,%xmm2
psrld  $0x1f,%xmm2
paddd  %xmm1,%xmm2
psrad  $0x1,%xmm2
paddd  %xmm2,%xmm2
psubd  %xmm2,%xmm1
pshufd $0xf5,%xmm1,%xmm3
pmuludq 0x7b5(%rip),%xmm1
movdqa 0x30(%rsp),%xmm2
pshufd $0xe8,%xmm1,%xmm1
pmuludq 0x7b2(%rip),%xmm3
pshufd $0xe8,%xmm3,%xmm3
punpckldq %xmm3,%xmm1
paddd  %xmm4,%xmm1
movdqa %xmm0,%xmm3
psrld  $0x1f,%xmm3
paddd  %xmm0,%xmm3
psrad  $0x1,%xmm3
paddd  %xmm3,%xmm3
psubd  %xmm3,%xmm0
pshufd $0xf5,%xmm0,%xmm3
pmuludq 0x78e(%rip),%xmm0
pshufd $0xe8,%xmm0,%xmm4
pmuludq 0x791(%rip),%xmm3
pshufd $0xe8,%xmm3,%xmm0
punpckldq %xmm0,%xmm4
movdqa %xmm2,%xmm0
psrld  $0x1f,%xmm0
paddd  %xmm2,%xmm0
psrad  $0x1,%xmm0
paddd  %xmm0,%xmm0
psubd  %xmm0,%xmm2
pshufd $0xf5,%xmm2,%xmm3
pmuludq 0x771(%rip),%xmm2
pshufd $0xe8,%xmm2,%xmm0
pmuludq 0x774(%rip),%xmm3
pshufd $0xe8,%xmm3,%xmm2
punpckldq %xmm2,%xmm0
paddd  %xmm4,%xmm0
paddd  %xmm1,%xmm0
movdqa 0x40(%rsp),%xmm1
movdqa %xmm1,%xmm2
psrld  $0x1f,%xmm2
paddd  %xmm1,%xmm2
psrad  $0x1,%xmm2
paddd  %xmm2,%xmm2
psubd  %xmm2,%xmm1
pshufd $0xf5,%xmm1,%xmm2
pmuludq 0x746(%rip),%xmm1
pshufd $0xe8,%xmm1,%xmm1
pmuludq 0x749(%rip),%xmm2
pshufd $0xe8,%xmm2,%xmm2
punpckldq %xmm2,%xmm1
movdqa 0x50(%rsp),%xmm2
movdqa %xmm2,%xmm3
psrld  $0x1f,%xmm3
paddd  %xmm2,%xmm3
psrad  $0x1,%xmm3
paddd  %xmm3,%xmm3
psubd  %xmm3,%xmm2
pshufd $0xf5,%xmm2,%xmm3
pmuludq 0x723(%rip),%xmm2
pmuludq 0x72b(%rip),%xmm3
pshufd $0xe8,%xmm2,%xmm2
pshufd $0xe8,%xmm3,%xmm3
punpckldq %xmm3,%xmm2
movdqa 0x60(%rsp),%xmm3
movdqa %xmm3,%xmm4
psrld  $0x1f,%xmm4
paddd  %xmm3,%xmm4
psrad  $0x1,%xmm4
paddd  %xmm4,%xmm4
psubd  %xmm4,%xmm3
pshufd $0xf5,%xmm3,%xmm4
pmuludq 0x700(%rip),%xmm3
paddd  %xmm1,%xmm2
pshufd $0xe8,%xmm3,%xmm1
pmuludq 0x6ff(%rip),%xmm4
pshufd $0xe8,%xmm4,%xmm3
punpckldq %xmm3,%xmm1
paddd  %xmm2,%xmm1
movdqa 0x70(%rsp),%xmm2
movdqa %xmm2,%xmm3
psrld  $0x1f,%xmm3
paddd  %xmm2,%xmm3
psrad  $0x1,%xmm3
paddd  %xmm3,%xmm3
psubd  %xmm3,%xmm2
pshufd $0xf5,%xmm2,%xmm3
pmuludq 0x6d5(%rip),%xmm2
paddd  %xmm0,%xmm1
pshufd $0xe8,%xmm2,%xmm0
pmuludq 0x6d4(%rip),%xmm3
pshufd $0xe8,%xmm3,%xmm2
punpckldq %xmm2,%xmm0
paddd  %xmm1,%xmm0
pshufd $0xee,%xmm0,%xmm1
paddd  %xmm0,%xmm1
pshufd $0x55,%xmm1,%xmm0
paddd  %xmm1,%xmm0
movd   %xmm0,%eax
add    $0xd8,%rsp
pop    %rbx
pop    %rbp
ret

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

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