int ints(long a, unsigned long b) {
  enum EnumA { A };
  enum EnumB { B };
  enum EnumC { C = 0x10000 };
  return (a == (unsigned long)b) + (a == (unsigned int)b) +
         (a == (unsigned short)b) + (a == (unsigned char)b) + ((long)a == b) +
         ((int)a == b) + ((short)a == b) + ((signed char)a == b) +
         ((long)a == (unsigned long)b) + ((int)a == (unsigned int)b) +
         ((short)a == (unsigned short)b) +
         ((signed char)a == (unsigned char)b) + (a < (unsigned long)b) +
         (a < (unsigned int)b) + (a < (unsigned short)b) +
         (a < (unsigned char)b) + ((long)a < b) + ((int)a < b) +
         ((short)a < b) + ((signed char)a < b) + ((long)a < (unsigned long)b) +
         ((int)a < (unsigned int)b) + ((short)a < (unsigned short)b) +
         ((signed char)a < (unsigned char)b) + (A == (unsigned long)b) +
         (A == (unsigned int)b) + (A == (unsigned short)b) +
         (A == (unsigned char)b) + ((long)A == b) + ((int)A == b) +
         ((short)A == b) + ((signed char)A == b) +
         ((long)A == (unsigned long)b) + ((int)A == (unsigned int)b) +
         ((short)A == (unsigned short)b) +
         ((signed char)A == (unsigned char)b) + (A < (unsigned long)b) +
         (A < (unsigned int)b) + (A < (unsigned short)b) +
         (A < (unsigned char)b) + ((long)A < b) + ((int)A < b) +
         ((short)A < b) + ((signed char)A < b) + ((long)A < (unsigned long)b) +
         ((int)A < (unsigned int)b) + ((short)A < (unsigned short)b) +
         ((signed char)A < (unsigned char)b) + (a == (unsigned long)B) +
         (a == (unsigned int)B) + (a == (unsigned short)B) +
         (a == (unsigned char)B) + ((long)a == B) + ((int)a == B) +
         ((short)a == B) + ((signed char)a == B) +
         ((long)a == (unsigned long)B) + ((int)a == (unsigned int)B) +
         ((short)a == (unsigned short)B) +
         ((signed char)a == (unsigned char)B) + (a < (unsigned long)B) +
         (a < (unsigned int)B) + (a < (unsigned short)B) +
         (a < (unsigned char)B) + ((long)a < B) + ((int)a < B) +
         ((short)a < B) + ((signed char)a < B) + ((long)a < (unsigned long)B) +
         ((int)a < (unsigned int)B) + ((short)a < (unsigned short)B) +
         ((signed char)a < (unsigned char)B) + (C == (unsigned long)b) +
         (C == (unsigned int)b) + (C == (unsigned short)b) +
         (C == (unsigned char)b) + ((long)C == b) + ((int)C == b) +
         ((short)C == b) + ((signed char)C == b) +
         ((long)C == (unsigned long)b) + ((int)C == (unsigned int)b) +
         ((short)C == (unsigned short)b) +
         ((signed char)C == (unsigned char)b) + (C < (unsigned long)b) +
         (C < (unsigned int)b) + (C < (unsigned short)b) +
         (C < (unsigned char)b) + ((long)C < b) + ((int)C < b) +
         ((short)C < b) + ((signed char)C < b) + ((long)C < (unsigned long)b) +
         ((int)C < (unsigned int)b) + ((short)C < (unsigned short)b) +
         ((signed char)C < (unsigned char)b) + (a == (unsigned long)C) +
         (a == (unsigned int)C) + (a == (unsigned short)C) +
         (a == (unsigned char)C) + ((long)a == C) + ((int)a == C) +
         ((short)a == C) + ((signed char)a == C) +
         ((long)a == (unsigned long)C) + ((int)a == (unsigned int)C) +
         ((short)a == (unsigned short)C) +
         ((signed char)a == (unsigned char)C) + (a < (unsigned long)C) +
         (a < (unsigned int)C) + (a < (unsigned short)C) +
         (a < (unsigned char)C) + ((long)a < C) + ((int)a < C) +
         ((short)a < C) + ((signed char)a < C) + ((long)a < (unsigned long)C) +
         ((int)a < (unsigned int)C) + ((short)a < (unsigned short)C) +
         ((signed char)a < (unsigned char)C) + (0x80000 == (unsigned long)b) +
         (0x80000 == (unsigned int)b) + (0x80000 == (unsigned short)b) +
         (0x80000 == (unsigned char)b) + ((long)0x80000 == b) +
         ((int)0x80000 == b) + ((short)0x80000 == b) +
         ((signed char)0x80000 == b) + ((long)0x80000 == (unsigned long)b) +
         ((int)0x80000 == (unsigned int)b) +
         ((short)0x80000 == (unsigned short)b) +
         ((signed char)0x80000 == (unsigned char)b) +
         (0x80000 < (unsigned long)b) + (0x80000 < (unsigned int)b) +
         (0x80000 < (unsigned short)b) + (0x80000 < (unsigned char)b) +
         ((long)0x80000 < b) + ((int)0x80000 < b) + ((short)0x80000 < b) +
         ((signed char)0x80000 < b) + ((long)0x80000 < (unsigned long)b) +
         ((int)0x80000 < (unsigned int)b) +
         ((short)0x80000 < (unsigned short)b) +
         ((signed char)0x80000 < (unsigned char)b) +
         (a == (unsigned long)0x80000) + (a == (unsigned int)0x80000) +
         (a == (unsigned short)0x80000) + (a == (unsigned char)0x80000) +
         ((long)a == 0x80000) + ((int)a == 0x80000) + ((short)a == 0x80000) +
         ((signed char)a == 0x80000) + ((long)a == (unsigned long)0x80000) +
         ((int)a == (unsigned int)0x80000) +
         ((short)a == (unsigned short)0x80000) +
         ((signed char)a == (unsigned char)0x80000) +
         (a < (unsigned long)0x80000) + (a < (unsigned int)0x80000) +
         (a < (unsigned short)0x80000) + (a < (unsigned char)0x80000) +
         ((long)a < 0x80000) + ((int)a < 0x80000) + ((short)a < 0x80000) +
         ((signed char)a < 0x80000) + ((long)a < (unsigned long)0x80000) +
         ((int)a < (unsigned int)0x80000) +
         ((short)a < (unsigned short)0x80000) +
         ((signed char)a < (unsigned char)0x80000) + (b != (a < 4 ? 1 : 2)) +
         10;
}


x86 assembly (clang, -O0):
<ints>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    -0x8(%rbp),%rax
cmp    -0x10(%rbp),%rax
sete   %al
and    $0x1,%al
movzbl %al,%eax
mov    -0x8(%rbp),%rcx
mov    -0x10(%rbp),%rdx
mov    %edx,%edx
cmp    %rdx,%rcx
sete   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    -0x8(%rbp),%rcx
mov    -0x10(%rbp),%rdx
movzwl %dx,%edx
cmp    %rdx,%rcx
sete   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    -0x8(%rbp),%rcx
mov    -0x10(%rbp),%rdx
movzbl %dl,%edx
cmp    %rdx,%rcx
sete   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    -0x8(%rbp),%rcx
cmp    -0x10(%rbp),%rcx
sete   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    -0x8(%rbp),%rcx
movslq %ecx,%rcx
cmp    -0x10(%rbp),%rcx
sete   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    -0x8(%rbp),%rcx
movswq %cx,%rcx
cmp    -0x10(%rbp),%rcx
sete   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    -0x8(%rbp),%rcx
movsbq %cl,%rcx
cmp    -0x10(%rbp),%rcx
sete   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    -0x8(%rbp),%rcx
cmp    -0x10(%rbp),%rcx
sete   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    -0x8(%rbp),%rcx
mov    -0x10(%rbp),%rdx
cmp    %edx,%ecx
sete   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    -0x8(%rbp),%rcx
movswl %cx,%ecx
mov    -0x10(%rbp),%rdx
movzwl %dx,%edx
cmp    %edx,%ecx
sete   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    -0x8(%rbp),%rcx
movsbl %cl,%ecx
mov    -0x10(%rbp),%rdx
movzbl %dl,%edx
cmp    %edx,%ecx
sete   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    -0x8(%rbp),%rcx
cmp    -0x10(%rbp),%rcx
setb   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    -0x8(%rbp),%rcx
mov    -0x10(%rbp),%rdx
mov    %edx,%edx
cmp    %rdx,%rcx
setl   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    -0x8(%rbp),%rcx
mov    -0x10(%rbp),%rdx
movzwl %dx,%edx
cmp    %rdx,%rcx
setl   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    -0x8(%rbp),%rcx
mov    -0x10(%rbp),%rdx
movzbl %dl,%edx
cmp    %rdx,%rcx
setl   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    -0x8(%rbp),%rcx
cmp    -0x10(%rbp),%rcx
setb   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    -0x8(%rbp),%rcx
movslq %ecx,%rcx
cmp    -0x10(%rbp),%rcx
setb   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    -0x8(%rbp),%rcx
movswq %cx,%rcx
cmp    -0x10(%rbp),%rcx
setb   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    -0x8(%rbp),%rcx
movsbq %cl,%rcx
cmp    -0x10(%rbp),%rcx
setb   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    -0x8(%rbp),%rcx
cmp    -0x10(%rbp),%rcx
setb   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    -0x8(%rbp),%rcx
mov    -0x10(%rbp),%rdx
cmp    %edx,%ecx
setb   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    -0x8(%rbp),%rcx
movswl %cx,%ecx
mov    -0x10(%rbp),%rdx
movzwl %dx,%edx
cmp    %edx,%ecx
setl   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    -0x8(%rbp),%rcx
movsbl %cl,%ecx
mov    -0x10(%rbp),%rdx
movzbl %dl,%edx
cmp    %edx,%ecx
setl   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
xor    %ecx,%ecx
cmp    -0x10(%rbp),%rcx
sete   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    -0x10(%rbp),%rcx
mov    %ecx,%edx
xor    %ecx,%ecx
cmp    %edx,%ecx
sete   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    -0x10(%rbp),%rcx
movzwl %cx,%edx
xor    %ecx,%ecx
cmp    %edx,%ecx
sete   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    -0x10(%rbp),%rcx
movzbl %cl,%edx
xor    %ecx,%ecx
cmp    %edx,%ecx
sete   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
xor    %ecx,%ecx
cmp    -0x10(%rbp),%rcx
sete   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
xor    %ecx,%ecx
cmp    -0x10(%rbp),%rcx
sete   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
xor    %ecx,%ecx
cmp    -0x10(%rbp),%rcx
sete   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
xor    %ecx,%ecx
cmp    -0x10(%rbp),%rcx
sete   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
xor    %ecx,%ecx
cmp    -0x10(%rbp),%rcx
sete   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    -0x10(%rbp),%rcx
mov    %ecx,%edx
xor    %ecx,%ecx
cmp    %edx,%ecx
sete   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    -0x10(%rbp),%rcx
movzwl %cx,%edx
xor    %ecx,%ecx
cmp    %edx,%ecx
sete   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    -0x10(%rbp),%rcx
movzbl %cl,%edx
xor    %ecx,%ecx
cmp    %edx,%ecx
sete   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
xor    %ecx,%ecx
cmp    -0x10(%rbp),%rcx
setb   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    -0x10(%rbp),%rcx
mov    %ecx,%edx
xor    %ecx,%ecx
cmp    %edx,%ecx
setb   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    -0x10(%rbp),%rcx
movzwl %cx,%edx
xor    %ecx,%ecx
cmp    %edx,%ecx
setl   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    -0x10(%rbp),%rcx
movzbl %cl,%edx
xor    %ecx,%ecx
cmp    %edx,%ecx
setl   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
xor    %ecx,%ecx
cmp    -0x10(%rbp),%rcx
setb   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
xor    %ecx,%ecx
cmp    -0x10(%rbp),%rcx
setb   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
xor    %ecx,%ecx
cmp    -0x10(%rbp),%rcx
setb   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
xor    %ecx,%ecx
cmp    -0x10(%rbp),%rcx
setb   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
xor    %ecx,%ecx
cmp    -0x10(%rbp),%rcx
setb   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    -0x10(%rbp),%rcx
mov    %ecx,%edx
xor    %ecx,%ecx
cmp    %edx,%ecx
setb   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    -0x10(%rbp),%rcx
movzwl %cx,%edx
xor    %ecx,%ecx
cmp    %edx,%ecx
setl   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    -0x10(%rbp),%rcx
movzbl %cl,%edx
xor    %ecx,%ecx
cmp    %edx,%ecx
setl   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
cmpq   $0x0,-0x8(%rbp)
sete   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
cmpq   $0x0,-0x8(%rbp)
sete   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
cmpq   $0x0,-0x8(%rbp)
sete   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
cmpq   $0x0,-0x8(%rbp)
sete   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
cmpq   $0x0,-0x8(%rbp)
sete   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    -0x8(%rbp),%rcx
cmp    $0x0,%ecx
sete   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    -0x8(%rbp),%rcx
movswl %cx,%ecx
cmp    $0x0,%ecx
sete   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    -0x8(%rbp),%rcx
movsbl %cl,%ecx
cmp    $0x0,%ecx
sete   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
cmpq   $0x0,-0x8(%rbp)
sete   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    -0x8(%rbp),%rcx
cmp    $0x0,%ecx
sete   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    -0x8(%rbp),%rcx
movswl %cx,%ecx
cmp    $0x0,%ecx
sete   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    -0x8(%rbp),%rcx
movsbl %cl,%ecx
cmp    $0x0,%ecx
sete   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
cmpq   $0x0,-0x8(%rbp)
setb   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
cmpq   $0x0,-0x8(%rbp)
setl   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
cmpq   $0x0,-0x8(%rbp)
setl   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
cmpq   $0x0,-0x8(%rbp)
setl   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
cmpq   $0x0,-0x8(%rbp)
setl   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    -0x8(%rbp),%rcx
cmp    $0x0,%ecx
setl   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    -0x8(%rbp),%rcx
movswl %cx,%ecx
cmp    $0x0,%ecx
setl   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    -0x8(%rbp),%rcx
movsbl %cl,%ecx
cmp    $0x0,%ecx
setl   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
cmpq   $0x0,-0x8(%rbp)
setb   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    -0x8(%rbp),%rcx
cmp    $0x0,%ecx
setb   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    -0x8(%rbp),%rcx
movswl %cx,%ecx
cmp    $0x0,%ecx
setl   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    -0x8(%rbp),%rcx
movsbl %cl,%ecx
cmp    $0x0,%ecx
setl   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    $0x10000,%ecx
cmp    -0x10(%rbp),%rcx
sete   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    -0x10(%rbp),%rcx
mov    %ecx,%edx
mov    $0x10000,%ecx
cmp    %edx,%ecx
sete   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    -0x10(%rbp),%rcx
movzwl %cx,%edx
mov    $0x10000,%ecx
cmp    %edx,%ecx
sete   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    -0x10(%rbp),%rcx
movzbl %cl,%edx
mov    $0x10000,%ecx
cmp    %edx,%ecx
sete   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    $0x10000,%ecx
cmp    -0x10(%rbp),%rcx
sete   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    $0x10000,%ecx
cmp    -0x10(%rbp),%rcx
sete   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
xor    %ecx,%ecx
cmp    -0x10(%rbp),%rcx
sete   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
xor    %ecx,%ecx
cmp    -0x10(%rbp),%rcx
sete   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    $0x10000,%ecx
cmp    -0x10(%rbp),%rcx
sete   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    -0x10(%rbp),%rcx
mov    %ecx,%edx
mov    $0x10000,%ecx
cmp    %edx,%ecx
sete   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    -0x10(%rbp),%rcx
movzwl %cx,%edx
xor    %ecx,%ecx
cmp    %edx,%ecx
sete   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    -0x10(%rbp),%rcx
movzbl %cl,%edx
xor    %ecx,%ecx
cmp    %edx,%ecx
sete   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    $0x10000,%ecx
cmp    -0x10(%rbp),%rcx
setb   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    -0x10(%rbp),%rcx
mov    %ecx,%edx
mov    $0x10000,%ecx
cmp    %edx,%ecx
setb   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    -0x10(%rbp),%rcx
movzwl %cx,%edx
mov    $0x10000,%ecx
cmp    %edx,%ecx
setl   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    -0x10(%rbp),%rcx
movzbl %cl,%edx
mov    $0x10000,%ecx
cmp    %edx,%ecx
setl   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    $0x10000,%ecx
cmp    -0x10(%rbp),%rcx
setb   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    $0x10000,%ecx
cmp    -0x10(%rbp),%rcx
setb   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
xor    %ecx,%ecx
cmp    -0x10(%rbp),%rcx
setb   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
xor    %ecx,%ecx
cmp    -0x10(%rbp),%rcx
setb   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    $0x10000,%ecx
cmp    -0x10(%rbp),%rcx
setb   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    -0x10(%rbp),%rcx
mov    %ecx,%edx
mov    $0x10000,%ecx
cmp    %edx,%ecx
setb   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    -0x10(%rbp),%rcx
movzwl %cx,%edx
xor    %ecx,%ecx
cmp    %edx,%ecx
setl   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    -0x10(%rbp),%rcx
movzbl %cl,%edx
xor    %ecx,%ecx
cmp    %edx,%ecx
setl   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
cmpq   $0x10000,-0x8(%rbp)
sete   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
cmpq   $0x10000,-0x8(%rbp)
sete   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
cmpq   $0x0,-0x8(%rbp)
sete   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
cmpq   $0x0,-0x8(%rbp)
sete   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
cmpq   $0x10000,-0x8(%rbp)
sete   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    -0x8(%rbp),%rcx
cmp    $0x10000,%ecx
sete   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    -0x8(%rbp),%rcx
movswl %cx,%ecx
cmp    $0x10000,%ecx
sete   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    -0x8(%rbp),%rcx
movsbl %cl,%ecx
cmp    $0x10000,%ecx
sete   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
cmpq   $0x10000,-0x8(%rbp)
sete   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    -0x8(%rbp),%rcx
cmp    $0x10000,%ecx
sete   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    -0x8(%rbp),%rcx
movswl %cx,%ecx
cmp    $0x0,%ecx
sete   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    -0x8(%rbp),%rcx
movsbl %cl,%ecx
cmp    $0x0,%ecx
sete   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
cmpq   $0x10000,-0x8(%rbp)
setb   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
cmpq   $0x10000,-0x8(%rbp)
setl   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
cmpq   $0x0,-0x8(%rbp)
setl   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
cmpq   $0x0,-0x8(%rbp)
setl   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
cmpq   $0x10000,-0x8(%rbp)
setl   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    -0x8(%rbp),%rcx
cmp    $0x10000,%ecx
setl   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    -0x8(%rbp),%rcx
movswl %cx,%ecx
cmp    $0x10000,%ecx
setl   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    -0x8(%rbp),%rcx
movsbl %cl,%ecx
cmp    $0x10000,%ecx
setl   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
cmpq   $0x10000,-0x8(%rbp)
setb   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    -0x8(%rbp),%rcx
cmp    $0x10000,%ecx
setb   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    -0x8(%rbp),%rcx
movswl %cx,%ecx
cmp    $0x0,%ecx
setl   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    -0x8(%rbp),%rcx
movsbl %cl,%ecx
cmp    $0x0,%ecx
setl   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    $0x80000,%ecx
cmp    -0x10(%rbp),%rcx
sete   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    -0x10(%rbp),%rcx
mov    %ecx,%edx
mov    $0x80000,%ecx
cmp    %edx,%ecx
sete   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    -0x10(%rbp),%rcx
movzwl %cx,%edx
mov    $0x80000,%ecx
cmp    %edx,%ecx
sete   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    -0x10(%rbp),%rcx
movzbl %cl,%edx
mov    $0x80000,%ecx
cmp    %edx,%ecx
sete   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    $0x80000,%ecx
cmp    -0x10(%rbp),%rcx
sete   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    $0x80000,%ecx
cmp    -0x10(%rbp),%rcx
sete   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
xor    %ecx,%ecx
cmp    -0x10(%rbp),%rcx
sete   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
xor    %ecx,%ecx
cmp    -0x10(%rbp),%rcx
sete   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    $0x80000,%ecx
cmp    -0x10(%rbp),%rcx
sete   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    -0x10(%rbp),%rcx
mov    %ecx,%edx
mov    $0x80000,%ecx
cmp    %edx,%ecx
sete   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    -0x10(%rbp),%rcx
movzwl %cx,%edx
xor    %ecx,%ecx
cmp    %edx,%ecx
sete   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    -0x10(%rbp),%rcx
movzbl %cl,%edx
xor    %ecx,%ecx
cmp    %edx,%ecx
sete   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    $0x80000,%ecx
cmp    -0x10(%rbp),%rcx
setb   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    -0x10(%rbp),%rcx
mov    %ecx,%edx
mov    $0x80000,%ecx
cmp    %edx,%ecx
setb   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    -0x10(%rbp),%rcx
movzwl %cx,%edx
mov    $0x80000,%ecx
cmp    %edx,%ecx
setl   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    -0x10(%rbp),%rcx
movzbl %cl,%edx
mov    $0x80000,%ecx
cmp    %edx,%ecx
setl   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    $0x80000,%ecx
cmp    -0x10(%rbp),%rcx
setb   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    $0x80000,%ecx
cmp    -0x10(%rbp),%rcx
setb   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
xor    %ecx,%ecx
cmp    -0x10(%rbp),%rcx
setb   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
xor    %ecx,%ecx
cmp    -0x10(%rbp),%rcx
setb   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    $0x80000,%ecx
cmp    -0x10(%rbp),%rcx
setb   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    -0x10(%rbp),%rcx
mov    %ecx,%edx
mov    $0x80000,%ecx
cmp    %edx,%ecx
setb   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    -0x10(%rbp),%rcx
movzwl %cx,%edx
xor    %ecx,%ecx
cmp    %edx,%ecx
setl   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    -0x10(%rbp),%rcx
movzbl %cl,%edx
xor    %ecx,%ecx
cmp    %edx,%ecx
setl   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
cmpq   $0x80000,-0x8(%rbp)
sete   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
cmpq   $0x80000,-0x8(%rbp)
sete   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
cmpq   $0x0,-0x8(%rbp)
sete   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
cmpq   $0x0,-0x8(%rbp)
sete   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
cmpq   $0x80000,-0x8(%rbp)
sete   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    -0x8(%rbp),%rcx
cmp    $0x80000,%ecx
sete   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    -0x8(%rbp),%rcx
movswl %cx,%ecx
cmp    $0x80000,%ecx
sete   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    -0x8(%rbp),%rcx
movsbl %cl,%ecx
cmp    $0x80000,%ecx
sete   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
cmpq   $0x80000,-0x8(%rbp)
sete   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    -0x8(%rbp),%rcx
cmp    $0x80000,%ecx
sete   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    -0x8(%rbp),%rcx
movswl %cx,%ecx
cmp    $0x0,%ecx
sete   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    -0x8(%rbp),%rcx
movsbl %cl,%ecx
cmp    $0x0,%ecx
sete   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
cmpq   $0x80000,-0x8(%rbp)
setb   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
cmpq   $0x80000,-0x8(%rbp)
setl   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
cmpq   $0x0,-0x8(%rbp)
setl   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
cmpq   $0x0,-0x8(%rbp)
setl   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
cmpq   $0x80000,-0x8(%rbp)
setl   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    -0x8(%rbp),%rcx
cmp    $0x80000,%ecx
setl   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    -0x8(%rbp),%rcx
movswl %cx,%ecx
cmp    $0x80000,%ecx
setl   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    -0x8(%rbp),%rcx
movsbl %cl,%ecx
cmp    $0x80000,%ecx
setl   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
cmpq   $0x80000,-0x8(%rbp)
setb   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    -0x8(%rbp),%rcx
cmp    $0x80000,%ecx
setb   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    -0x8(%rbp),%rcx
movswl %cx,%ecx
cmp    $0x0,%ecx
setl   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    -0x8(%rbp),%rcx
movsbl %cl,%ecx
cmp    $0x0,%ecx
setl   %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    -0x10(%rbp),%rcx
mov    -0x8(%rbp),%rdi
mov    $0x2,%edx
mov    $0x1,%esi
cmp    $0x4,%rdi
cmovl  %esi,%edx
movslq %edx,%rdx
cmp    %rdx,%rcx
setne  %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
add    $0xa,%eax
pop    %rbp
ret

x86 assembly (clang, -O2):
<ints>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
mov    %rdi,%r10
xor    %eax,%eax
test   %rdi,%rdi
sete   %al
mov    %rax,%rdx
mov    %rax,-0x8(%rsp)
xor    %eax,%eax
xor    %ecx,%ecx
cmp    $0x10000,%rdi
sete   %al
setl   %cl
add    %eax,%edx
add    %edx,%ecx
cmp    $0x10000,%rdi
adc    $0x0,%ecx
xor    %edx,%edx
xor    %edi,%edi
cmp    $0x80000,%r10
sete   %dl
setl   %dil
add    %edx,%ecx
add    %edi,%ecx
cmp    $0x80000,%r10
adc    $0x0,%ecx
mov    %rsi,%rdi
xor    %ebp,%ebp
xor    %esi,%esi
cmp    $0x10000,%rdi
sete   %bpl
mov    %rbp,-0x10(%rsp)
seta   %sil
mov    %rsi,%rbx
mov    %rsi,-0x18(%rsp)
xor    %esi,%esi
cmp    $0x10000,%r10d
setl   %sil
shld   $0x1,%r10d,%eax
lea    (%rax,%rdx,2),%eax
lea    (%rax,%rbp,2),%eax
lea    (%rax,%rbx,2),%eax
add    %esi,%eax
cmp    $0x10000,%r10d
adc    $0x0,%eax
xor    %edx,%edx
cmp    $0x80000,%r10d
sete   %dl
mov    %edx,-0x2c(%rsp)
xor    %edx,%edx
cmp    $0x10000,%r10d
sete   %dl
mov    %edx,-0x30(%rsp)
xor    %edx,%edx
cmp    $0x80000,%r10d
setl   %dl
xor    %ebp,%ebp
xor    %esi,%esi
cmp    $0x80000,%rdi
sete   %bpl
mov    %rbp,-0x20(%rsp)
seta   %sil
mov    %rsi,-0x28(%rsp)
lea    (%rax,%rbp,2),%eax
lea    (%rax,%rsi,2),%ebp
add    %edx,%ebp
cmp    $0x80000,%r10d
movslq %r10d,%rbx
adc    $0x0,%ebp
xor    %edx,%edx
cmp    %rdi,%rbx
movswq %r10w,%rax
mov    %rax,-0x58(%rsp)
sete   %dl
mov    %edx,-0x64(%rsp)
xor    %r14d,%r14d
cmp    %rdi,%rax
sete   %r14b
movsbq %r10b,%rax
mov    %rax,-0x60(%rsp)
xor    %r15d,%r15d
cmp    %rdi,%rax
sete   %r15b
xor    %r12d,%r12d
cmp    %edi,%ebx
sete   %r12b
mov    %edi,%eax
xor    %edx,%edx
xor    %r13d,%r13d
cmp    %r10,%rax
sete   %dl
setg   %r13b
movzwl %di,%esi
xor    %r8d,%r8d
xor    %r11d,%r11d
cmp    %r10,%rsi
sete   %r8b
setg   %r11b
movzbl %dil,%esi
xor    %eax,%eax
xor    %r9d,%r9d
cmp    %r10,%rsi
sete   %al
setg   %r9b
add    %ebp,%edx
add    %r8d,%edx
add    %eax,%edx
add    -0x64(%rsp),%edx
add    %r14d,%edx
add    %r15d,%edx
add    %r12d,%edx
add    %r13d,%edx
add    %r11d,%edx
add    %r9d,%edx
cmp    %rdi,%rbx
adc    $0x0,%edx
cmp    %rdi,-0x58(%rsp)
adc    $0x0,%edx
cmp    %rdi,-0x60(%rsp)
adc    $0x0,%edx
cmp    %edi,%ebx
adc    $0x0,%edx
movswl %bx,%eax
mov    %ebx,%r13d
shl    $0x10,%r13d
mov    %ebx,%esi
shl    $0x18,%esi
mov    %esi,%r11d
mov    %esi,-0x4c(%rsp)
movzwl %di,%r8d
xor    %esi,%esi
xor    %ebp,%ebp
cmp    %r8d,%eax
sete   %sil
mov    %esi,-0x64(%rsp)
setl   %bpl
mov    %ebp,-0x34(%rsp)
movsbl %bl,%eax
movzbl %dil,%r9d
xor    %ebp,%ebp
xor    %esi,%esi
cmp    %r9d,%eax
sete   %bpl
mov    %ebp,-0x3c(%rsp)
setl   %sil
mov    %esi,-0x38(%rsp)
xor    %eax,%eax
xor    %esi,%esi
test   %rdi,%rdi
sete   %al
mov    %rax,-0x58(%rsp)
setne  %sil
mov    %rsi,-0x60(%rsp)
xor    %r14d,%r14d
xor    %r15d,%r15d
test   %edi,%edi
sete   %r14b
setne  %r15b
xor    %esi,%esi
xor    %eax,%eax
test   %r8d,%r8d
sete   %sil
mov    %esi,-0x40(%rsp)
setne  %al
mov    %eax,-0x44(%rsp)
xor    %r12d,%r12d
xor    %eax,%eax
test   %r9d,%r9d
sete   %r12b
setne  %al
mov    %eax,-0x48(%rsp)
mov    %r13d,%r9d
shr    $0x1f,%r9d
mov    %r11d,%eax
shr    $0x1f,%eax
xor    %r11d,%r11d
cmp    $0x10000,%edi
sete   %r11b
xor    %ebp,%ebp
cmp    $0x80000,%edi
sete   %bpl
xor    %esi,%esi
cmp    $0x4,%r10
setl   %sil
mov    $0x2,%r8d
sub    %rsi,%r8
xor    %esi,%esi
cmp    %rdi,%r8
setne  %sil
mov    %r10,%r8
shr    $0x3d,%r8
and    $0xfffffffc,%r8d
add    -0x58(%rsp),%ecx
add    -0x60(%rsp),%ecx
cmp    $0x1,%ebx
adc    $0x0,%ecx
add    -0x10(%rsp),%ecx
add    -0x18(%rsp),%ecx
add    -0x30(%rsp),%ecx
add    -0x20(%rsp),%ecx
add    -0x28(%rsp),%ecx
add    -0x2c(%rsp),%ecx
add    %r14d,%ecx
add    %r15d,%ecx
add    %r11d,%ecx
cmp    $0x10001,%edi
sbb    $0xffffffff,%ecx
add    %ebp,%ecx
cmp    $0x80001,%edi
sbb    $0xffffffff,%ecx
add    %r8d,%ecx
add    %r9d,%eax
cmp    $0x1,%r13d
adc    $0x0,%eax
cmpl   $0x1,-0x4c(%rsp)
adc    $0x0,%eax
add    %r12d,%eax
add    -0x40(%rsp),%eax
add    -0x44(%rsp),%eax
add    -0x48(%rsp),%eax
xor    %ebp,%ebp
cmp    %rdi,%r10
mov    -0x60(%rsp),%rdi
lea    (%rcx,%rdi,4),%ecx
mov    -0x58(%rsp),%rdi
lea    (%rcx,%rdi,4),%ecx
mov    -0x8(%rsp),%rdi
lea    (%rcx,%rdi,4),%ecx
sete   %bpl
adc    $0x0,%ebp
add    %edx,%esi
add    -0x64(%rsp),%esi
add    -0x3c(%rsp),%esi
add    -0x34(%rsp),%esi
add    -0x38(%rsp),%esi
lea    (%rsi,%rcx,2),%ecx
lea    (%rcx,%rax,4),%eax
lea    0x0(%rbp,%rbp,2),%ecx
add    %ecx,%eax
add    $0xe,%eax
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
define i32 @ints(i64 %0, i64 %1) {
%3 = alloca i64
%4 = alloca i64
store i64 %0, i64* %3
store i64 %1, i64* %4
%5 = load i64, i64* %3
%6 = load i64, i64* %4
%7 = icmp eq i64 %5, %6
%8 = zext i1 %7 to i32
%9 = load i64, i64* %3
%10 = load i64, i64* %4
%11 = trunc i64 %10 to i32
%12 = zext i32 %11 to i64
%13 = icmp eq i64 %9, %12
%14 = zext i1 %13 to i32
%15 = add nsw i32 %8, %14
%16 = load i64, i64* %3
%17 = load i64, i64* %4
%18 = trunc i64 %17 to i16
%19 = zext i16 %18 to i64
%20 = icmp eq i64 %16, %19
%21 = zext i1 %20 to i32
%22 = add nsw i32 %15, %21
%23 = load i64, i64* %3
%24 = load i64, i64* %4
%25 = trunc i64 %24 to i8
%26 = zext i8 %25 to i64
%27 = icmp eq i64 %23, %26
%28 = zext i1 %27 to i32
%29 = add nsw i32 %22, %28
%30 = load i64, i64* %3
%31 = load i64, i64* %4
%32 = icmp eq i64 %30, %31
%33 = zext i1 %32 to i32
%34 = add nsw i32 %29, %33
%35 = load i64, i64* %3
%36 = trunc i64 %35 to i32
%37 = sext i32 %36 to i64
%38 = load i64, i64* %4
%39 = icmp eq i64 %37, %38
%40 = zext i1 %39 to i32
%41 = add nsw i32 %34, %40
%42 = load i64, i64* %3
%43 = trunc i64 %42 to i16
%44 = sext i16 %43 to i64
%45 = load i64, i64* %4
%46 = icmp eq i64 %44, %45
%47 = zext i1 %46 to i32
%48 = add nsw i32 %41, %47
%49 = load i64, i64* %3
%50 = trunc i64 %49 to i8
%51 = sext i8 %50 to i64
%52 = load i64, i64* %4
%53 = icmp eq i64 %51, %52
%54 = zext i1 %53 to i32
%55 = add nsw i32 %48, %54
%56 = load i64, i64* %3
%57 = load i64, i64* %4
%58 = icmp eq i64 %56, %57
%59 = zext i1 %58 to i32
%60 = add nsw i32 %55, %59
%61 = load i64, i64* %3
%62 = trunc i64 %61 to i32
%63 = load i64, i64* %4
%64 = trunc i64 %63 to i32
%65 = icmp eq i32 %62, %64
%66 = zext i1 %65 to i32
%67 = add nsw i32 %60, %66
%68 = load i64, i64* %3
%69 = trunc i64 %68 to i16
%70 = sext i16 %69 to i32
%71 = load i64, i64* %4
%72 = trunc i64 %71 to i16
%73 = zext i16 %72 to i32
%74 = icmp eq i32 %70, %73
%75 = zext i1 %74 to i32
%76 = add nsw i32 %67, %75
%77 = load i64, i64* %3
%78 = trunc i64 %77 to i8
%79 = sext i8 %78 to i32
%80 = load i64, i64* %4
%81 = trunc i64 %80 to i8
%82 = zext i8 %81 to i32
%83 = icmp eq i32 %79, %82
%84 = zext i1 %83 to i32
%85 = add nsw i32 %76, %84
%86 = load i64, i64* %3
%87 = load i64, i64* %4
%88 = icmp ult i64 %86, %87
%89 = zext i1 %88 to i32
%90 = add nsw i32 %85, %89
%91 = load i64, i64* %3
%92 = load i64, i64* %4
%93 = trunc i64 %92 to i32
%94 = zext i32 %93 to i64
%95 = icmp slt i64 %91, %94
%96 = zext i1 %95 to i32
%97 = add nsw i32 %90, %96
%98 = load i64, i64* %3
%99 = load i64, i64* %4
%100 = trunc i64 %99 to i16
%101 = zext i16 %100 to i64
%102 = icmp slt i64 %98, %101
%103 = zext i1 %102 to i32
%104 = add nsw i32 %97, %103
%105 = load i64, i64* %3
%106 = load i64, i64* %4
%107 = trunc i64 %106 to i8
%108 = zext i8 %107 to i64
%109 = icmp slt i64 %105, %108
%110 = zext i1 %109 to i32
%111 = add nsw i32 %104, %110
%112 = load i64, i64* %3
%113 = load i64, i64* %4
%114 = icmp ult i64 %112, %113
%115 = zext i1 %114 to i32
%116 = add nsw i32 %111, %115
%117 = load i64, i64* %3
%118 = trunc i64 %117 to i32
%119 = sext i32 %118 to i64
%120 = load i64, i64* %4
%121 = icmp ult i64 %119, %120
%122 = zext i1 %121 to i32
%123 = add nsw i32 %116, %122
%124 = load i64, i64* %3
%125 = trunc i64 %124 to i16
%126 = sext i16 %125 to i64
%127 = load i64, i64* %4
%128 = icmp ult i64 %126, %127
%129 = zext i1 %128 to i32
%130 = add nsw i32 %123, %129
%131 = load i64, i64* %3
%132 = trunc i64 %131 to i8
%133 = sext i8 %132 to i64
%134 = load i64, i64* %4
%135 = icmp ult i64 %133, %134
%136 = zext i1 %135 to i32
%137 = add nsw i32 %130, %136
%138 = load i64, i64* %3
%139 = load i64, i64* %4
%140 = icmp ult i64 %138, %139
%141 = zext i1 %140 to i32
%142 = add nsw i32 %137, %141
%143 = load i64, i64* %3
%144 = trunc i64 %143 to i32
%145 = load i64, i64* %4
%146 = trunc i64 %145 to i32
%147 = icmp ult i32 %144, %146
%148 = zext i1 %147 to i32
%149 = add nsw i32 %142, %148
%150 = load i64, i64* %3
%151 = trunc i64 %150 to i16
%152 = sext i16 %151 to i32
%153 = load i64, i64* %4
%154 = trunc i64 %153 to i16
%155 = zext i16 %154 to i32
%156 = icmp slt i32 %152, %155
%157 = zext i1 %156 to i32
%158 = add nsw i32 %149, %157
%159 = load i64, i64* %3
%160 = trunc i64 %159 to i8
%161 = sext i8 %160 to i32
%162 = load i64, i64* %4
%163 = trunc i64 %162 to i8
%164 = zext i8 %163 to i32
%165 = icmp slt i32 %161, %164
%166 = zext i1 %165 to i32
%167 = add nsw i32 %158, %166
%168 = load i64, i64* %4
%169 = icmp eq i64 0, %168
%170 = zext i1 %169 to i32
%171 = add nsw i32 %167, %170
%172 = load i64, i64* %4
%173 = trunc i64 %172 to i32
%174 = icmp eq i32 0, %173
%175 = zext i1 %174 to i32
%176 = add nsw i32 %171, %175
%177 = load i64, i64* %4
%178 = trunc i64 %177 to i16
%179 = zext i16 %178 to i32
%180 = icmp eq i32 0, %179
%181 = zext i1 %180 to i32
%182 = add nsw i32 %176, %181
%183 = load i64, i64* %4
%184 = trunc i64 %183 to i8
%185 = zext i8 %184 to i32
%186 = icmp eq i32 0, %185
%187 = zext i1 %186 to i32
%188 = add nsw i32 %182, %187
%189 = load i64, i64* %4
%190 = icmp eq i64 0, %189
%191 = zext i1 %190 to i32
%192 = add nsw i32 %188, %191
%193 = load i64, i64* %4
%194 = icmp eq i64 0, %193
%195 = zext i1 %194 to i32
%196 = add nsw i32 %192, %195
%197 = load i64, i64* %4
%198 = icmp eq i64 0, %197
%199 = zext i1 %198 to i32
%200 = add nsw i32 %196, %199
%201 = load i64, i64* %4
%202 = icmp eq i64 0, %201
%203 = zext i1 %202 to i32
%204 = add nsw i32 %200, %203
%205 = load i64, i64* %4
%206 = icmp eq i64 0, %205
%207 = zext i1 %206 to i32
%208 = add nsw i32 %204, %207
%209 = load i64, i64* %4
%210 = trunc i64 %209 to i32
%211 = icmp eq i32 0, %210
%212 = zext i1 %211 to i32
%213 = add nsw i32 %208, %212
%214 = load i64, i64* %4
%215 = trunc i64 %214 to i16
%216 = zext i16 %215 to i32
%217 = icmp eq i32 0, %216
%218 = zext i1 %217 to i32
%219 = add nsw i32 %213, %218
%220 = load i64, i64* %4
%221 = trunc i64 %220 to i8
%222 = zext i8 %221 to i32
%223 = icmp eq i32 0, %222
%224 = zext i1 %223 to i32
%225 = add nsw i32 %219, %224
%226 = load i64, i64* %4
%227 = icmp ult i64 0, %226
%228 = zext i1 %227 to i32
%229 = add nsw i32 %225, %228
%230 = load i64, i64* %4
%231 = trunc i64 %230 to i32
%232 = icmp ult i32 0, %231
%233 = zext i1 %232 to i32
%234 = add nsw i32 %229, %233
%235 = load i64, i64* %4
%236 = trunc i64 %235 to i16
%237 = zext i16 %236 to i32
%238 = icmp slt i32 0, %237
%239 = zext i1 %238 to i32
%240 = add nsw i32 %234, %239
%241 = load i64, i64* %4
%242 = trunc i64 %241 to i8
%243 = zext i8 %242 to i32
%244 = icmp slt i32 0, %243
%245 = zext i1 %244 to i32
%246 = add nsw i32 %240, %245
%247 = load i64, i64* %4
%248 = icmp ult i64 0, %247
%249 = zext i1 %248 to i32
%250 = add nsw i32 %246, %249
%251 = load i64, i64* %4
%252 = icmp ult i64 0, %251
%253 = zext i1 %252 to i32
%254 = add nsw i32 %250, %253
%255 = load i64, i64* %4
%256 = icmp ult i64 0, %255
%257 = zext i1 %256 to i32
%258 = add nsw i32 %254, %257
%259 = load i64, i64* %4
%260 = icmp ult i64 0, %259
%261 = zext i1 %260 to i32
%262 = add nsw i32 %258, %261
%263 = load i64, i64* %4
%264 = icmp ult i64 0, %263
%265 = zext i1 %264 to i32
%266 = add nsw i32 %262, %265
%267 = load i64, i64* %4
%268 = trunc i64 %267 to i32
%269 = icmp ult i32 0, %268
%270 = zext i1 %269 to i32
%271 = add nsw i32 %266, %270
%272 = load i64, i64* %4
%273 = trunc i64 %272 to i16
%274 = zext i16 %273 to i32
%275 = icmp slt i32 0, %274
%276 = zext i1 %275 to i32
%277 = add nsw i32 %271, %276
%278 = load i64, i64* %4
%279 = trunc i64 %278 to i8
%280 = zext i8 %279 to i32
%281 = icmp slt i32 0, %280
%282 = zext i1 %281 to i32
%283 = add nsw i32 %277, %282
%284 = load i64, i64* %3
%285 = icmp eq i64 %284, 0
%286 = zext i1 %285 to i32
%287 = add nsw i32 %283, %286
%288 = load i64, i64* %3
%289 = icmp eq i64 %288, 0
%290 = zext i1 %289 to i32
%291 = add nsw i32 %287, %290
%292 = load i64, i64* %3
%293 = icmp eq i64 %292, 0
%294 = zext i1 %293 to i32
%295 = add nsw i32 %291, %294
%296 = load i64, i64* %3
%297 = icmp eq i64 %296, 0
%298 = zext i1 %297 to i32
%299 = add nsw i32 %295, %298
%300 = load i64, i64* %3
%301 = icmp eq i64 %300, 0
%302 = zext i1 %301 to i32
%303 = add nsw i32 %299, %302
%304 = load i64, i64* %3
%305 = trunc i64 %304 to i32
%306 = icmp eq i32 %305, 0
%307 = zext i1 %306 to i32
%308 = add nsw i32 %303, %307
%309 = load i64, i64* %3
%310 = trunc i64 %309 to i16
%311 = sext i16 %310 to i32
%312 = icmp eq i32 %311, 0
%313 = zext i1 %312 to i32
%314 = add nsw i32 %308, %313
%315 = load i64, i64* %3
%316 = trunc i64 %315 to i8
%317 = sext i8 %316 to i32
%318 = icmp eq i32 %317, 0
%319 = zext i1 %318 to i32
%320 = add nsw i32 %314, %319
%321 = load i64, i64* %3
%322 = icmp eq i64 %321, 0
%323 = zext i1 %322 to i32
%324 = add nsw i32 %320, %323
%325 = load i64, i64* %3
%326 = trunc i64 %325 to i32
%327 = icmp eq i32 %326, 0
%328 = zext i1 %327 to i32
%329 = add nsw i32 %324, %328
%330 = load i64, i64* %3
%331 = trunc i64 %330 to i16
%332 = sext i16 %331 to i32
%333 = icmp eq i32 %332, 0
%334 = zext i1 %333 to i32
%335 = add nsw i32 %329, %334
%336 = load i64, i64* %3
%337 = trunc i64 %336 to i8
%338 = sext i8 %337 to i32
%339 = icmp eq i32 %338, 0
%340 = zext i1 %339 to i32
%341 = add nsw i32 %335, %340
%342 = load i64, i64* %3
%343 = icmp ult i64 %342, 0
%344 = zext i1 %343 to i32
%345 = add nsw i32 %341, %344
%346 = load i64, i64* %3
%347 = icmp slt i64 %346, 0
%348 = zext i1 %347 to i32
%349 = add nsw i32 %345, %348
%350 = load i64, i64* %3
%351 = icmp slt i64 %350, 0
%352 = zext i1 %351 to i32
%353 = add nsw i32 %349, %352
%354 = load i64, i64* %3
%355 = icmp slt i64 %354, 0
%356 = zext i1 %355 to i32
%357 = add nsw i32 %353, %356
%358 = load i64, i64* %3
%359 = icmp slt i64 %358, 0
%360 = zext i1 %359 to i32
%361 = add nsw i32 %357, %360
%362 = load i64, i64* %3
%363 = trunc i64 %362 to i32
%364 = icmp slt i32 %363, 0
%365 = zext i1 %364 to i32
%366 = add nsw i32 %361, %365
%367 = load i64, i64* %3
%368 = trunc i64 %367 to i16
%369 = sext i16 %368 to i32
%370 = icmp slt i32 %369, 0
%371 = zext i1 %370 to i32
%372 = add nsw i32 %366, %371
%373 = load i64, i64* %3
%374 = trunc i64 %373 to i8
%375 = sext i8 %374 to i32
%376 = icmp slt i32 %375, 0
%377 = zext i1 %376 to i32
%378 = add nsw i32 %372, %377
%379 = load i64, i64* %3
%380 = icmp ult i64 %379, 0
%381 = zext i1 %380 to i32
%382 = add nsw i32 %378, %381
%383 = load i64, i64* %3
%384 = trunc i64 %383 to i32
%385 = icmp ult i32 %384, 0
%386 = zext i1 %385 to i32
%387 = add nsw i32 %382, %386
%388 = load i64, i64* %3
%389 = trunc i64 %388 to i16
%390 = sext i16 %389 to i32
%391 = icmp slt i32 %390, 0
%392 = zext i1 %391 to i32
%393 = add nsw i32 %387, %392
%394 = load i64, i64* %3
%395 = trunc i64 %394 to i8
%396 = sext i8 %395 to i32
%397 = icmp slt i32 %396, 0
%398 = zext i1 %397 to i32
%399 = add nsw i32 %393, %398
%400 = load i64, i64* %4
%401 = icmp eq i64 65536, %400
%402 = zext i1 %401 to i32
%403 = add nsw i32 %399, %402
%404 = load i64, i64* %4
%405 = trunc i64 %404 to i32
%406 = icmp eq i32 65536, %405
%407 = zext i1 %406 to i32
%408 = add nsw i32 %403, %407
%409 = load i64, i64* %4
%410 = trunc i64 %409 to i16
%411 = zext i16 %410 to i32
%412 = icmp eq i32 65536, %411
%413 = zext i1 %412 to i32
%414 = add nsw i32 %408, %413
%415 = load i64, i64* %4
%416 = trunc i64 %415 to i8
%417 = zext i8 %416 to i32
%418 = icmp eq i32 65536, %417
%419 = zext i1 %418 to i32
%420 = add nsw i32 %414, %419
%421 = load i64, i64* %4
%422 = icmp eq i64 65536, %421
%423 = zext i1 %422 to i32
%424 = add nsw i32 %420, %423
%425 = load i64, i64* %4
%426 = icmp eq i64 65536, %425
%427 = zext i1 %426 to i32
%428 = add nsw i32 %424, %427
%429 = load i64, i64* %4
%430 = icmp eq i64 0, %429
%431 = zext i1 %430 to i32
%432 = add nsw i32 %428, %431
%433 = load i64, i64* %4
%434 = icmp eq i64 0, %433
%435 = zext i1 %434 to i32
%436 = add nsw i32 %432, %435
%437 = load i64, i64* %4
%438 = icmp eq i64 65536, %437
%439 = zext i1 %438 to i32
%440 = add nsw i32 %436, %439
%441 = load i64, i64* %4
%442 = trunc i64 %441 to i32
%443 = icmp eq i32 65536, %442
%444 = zext i1 %443 to i32
%445 = add nsw i32 %440, %444
%446 = load i64, i64* %4
%447 = trunc i64 %446 to i16
%448 = zext i16 %447 to i32
%449 = icmp eq i32 0, %448
%450 = zext i1 %449 to i32
%451 = add nsw i32 %445, %450
%452 = load i64, i64* %4
%453 = trunc i64 %452 to i8
%454 = zext i8 %453 to i32
%455 = icmp eq i32 0, %454
%456 = zext i1 %455 to i32
%457 = add nsw i32 %451, %456
%458 = load i64, i64* %4
%459 = icmp ult i64 65536, %458
%460 = zext i1 %459 to i32
%461 = add nsw i32 %457, %460
%462 = load i64, i64* %4
%463 = trunc i64 %462 to i32
%464 = icmp ult i32 65536, %463
%465 = zext i1 %464 to i32
%466 = add nsw i32 %461, %465
%467 = load i64, i64* %4
%468 = trunc i64 %467 to i16
%469 = zext i16 %468 to i32
%470 = icmp slt i32 65536, %469
%471 = zext i1 %470 to i32
%472 = add nsw i32 %466, %471
%473 = load i64, i64* %4
%474 = trunc i64 %473 to i8
%475 = zext i8 %474 to i32
%476 = icmp slt i32 65536, %475
%477 = zext i1 %476 to i32
%478 = add nsw i32 %472, %477
%479 = load i64, i64* %4
%480 = icmp ult i64 65536, %479
%481 = zext i1 %480 to i32
%482 = add nsw i32 %478, %481
%483 = load i64, i64* %4
%484 = icmp ult i64 65536, %483
%485 = zext i1 %484 to i32
%486 = add nsw i32 %482, %485
%487 = load i64, i64* %4
%488 = icmp ult i64 0, %487
%489 = zext i1 %488 to i32
%490 = add nsw i32 %486, %489
%491 = load i64, i64* %4
%492 = icmp ult i64 0, %491
%493 = zext i1 %492 to i32
%494 = add nsw i32 %490, %493
%495 = load i64, i64* %4
%496 = icmp ult i64 65536, %495
%497 = zext i1 %496 to i32
%498 = add nsw i32 %494, %497
%499 = load i64, i64* %4
%500 = trunc i64 %499 to i32
%501 = icmp ult i32 65536, %500
%502 = zext i1 %501 to i32
%503 = add nsw i32 %498, %502
%504 = load i64, i64* %4
%505 = trunc i64 %504 to i16
%506 = zext i16 %505 to i32
%507 = icmp slt i32 0, %506
%508 = zext i1 %507 to i32
%509 = add nsw i32 %503, %508
%510 = load i64, i64* %4
%511 = trunc i64 %510 to i8
%512 = zext i8 %511 to i32
%513 = icmp slt i32 0, %512
%514 = zext i1 %513 to i32
%515 = add nsw i32 %509, %514
%516 = load i64, i64* %3
%517 = icmp eq i64 %516, 65536
%518 = zext i1 %517 to i32
%519 = add nsw i32 %515, %518
%520 = load i64, i64* %3
%521 = icmp eq i64 %520, 65536
%522 = zext i1 %521 to i32
%523 = add nsw i32 %519, %522
%524 = load i64, i64* %3
%525 = icmp eq i64 %524, 0
%526 = zext i1 %525 to i32
%527 = add nsw i32 %523, %526
%528 = load i64, i64* %3
%529 = icmp eq i64 %528, 0
%530 = zext i1 %529 to i32
%531 = add nsw i32 %527, %530
%532 = load i64, i64* %3
%533 = icmp eq i64 %532, 65536
%534 = zext i1 %533 to i32
%535 = add nsw i32 %531, %534
%536 = load i64, i64* %3
%537 = trunc i64 %536 to i32
%538 = icmp eq i32 %537, 65536
%539 = zext i1 %538 to i32
%540 = add nsw i32 %535, %539
%541 = load i64, i64* %3
%542 = trunc i64 %541 to i16
%543 = sext i16 %542 to i32
%544 = icmp eq i32 %543, 65536
%545 = zext i1 %544 to i32
%546 = add nsw i32 %540, %545
%547 = load i64, i64* %3
%548 = trunc i64 %547 to i8
%549 = sext i8 %548 to i32
%550 = icmp eq i32 %549, 65536
%551 = zext i1 %550 to i32
%552 = add nsw i32 %546, %551
%553 = load i64, i64* %3
%554 = icmp eq i64 %553, 65536
%555 = zext i1 %554 to i32
%556 = add nsw i32 %552, %555
%557 = load i64, i64* %3
%558 = trunc i64 %557 to i32
%559 = icmp eq i32 %558, 65536
%560 = zext i1 %559 to i32
%561 = add nsw i32 %556, %560
%562 = load i64, i64* %3
%563 = trunc i64 %562 to i16
%564 = sext i16 %563 to i32
%565 = icmp eq i32 %564, 0
%566 = zext i1 %565 to i32
%567 = add nsw i32 %561, %566
%568 = load i64, i64* %3
%569 = trunc i64 %568 to i8
%570 = sext i8 %569 to i32
%571 = icmp eq i32 %570, 0
%572 = zext i1 %571 to i32
%573 = add nsw i32 %567, %572
%574 = load i64, i64* %3
%575 = icmp ult i64 %574, 65536
%576 = zext i1 %575 to i32
%577 = add nsw i32 %573, %576
%578 = load i64, i64* %3
%579 = icmp slt i64 %578, 65536
%580 = zext i1 %579 to i32
%581 = add nsw i32 %577, %580
%582 = load i64, i64* %3
%583 = icmp slt i64 %582, 0
%584 = zext i1 %583 to i32
%585 = add nsw i32 %581, %584
%586 = load i64, i64* %3
%587 = icmp slt i64 %586, 0
%588 = zext i1 %587 to i32
%589 = add nsw i32 %585, %588
%590 = load i64, i64* %3
%591 = icmp slt i64 %590, 65536
%592 = zext i1 %591 to i32
%593 = add nsw i32 %589, %592
%594 = load i64, i64* %3
%595 = trunc i64 %594 to i32
%596 = icmp slt i32 %595, 65536
%597 = zext i1 %596 to i32
%598 = add nsw i32 %593, %597
%599 = load i64, i64* %3
%600 = trunc i64 %599 to i16
%601 = sext i16 %600 to i32
%602 = icmp slt i32 %601, 65536
%603 = zext i1 %602 to i32
%604 = add nsw i32 %598, %603
%605 = load i64, i64* %3
%606 = trunc i64 %605 to i8
%607 = sext i8 %606 to i32
%608 = icmp slt i32 %607, 65536
%609 = zext i1 %608 to i32
%610 = add nsw i32 %604, %609
%611 = load i64, i64* %3
%612 = icmp ult i64 %611, 65536
%613 = zext i1 %612 to i32
%614 = add nsw i32 %610, %613
%615 = load i64, i64* %3
%616 = trunc i64 %615 to i32
%617 = icmp ult i32 %616, 65536
%618 = zext i1 %617 to i32
%619 = add nsw i32 %614, %618
%620 = load i64, i64* %3
%621 = trunc i64 %620 to i16
%622 = sext i16 %621 to i32
%623 = icmp slt i32 %622, 0
%624 = zext i1 %623 to i32
%625 = add nsw i32 %619, %624
%626 = load i64, i64* %3
%627 = trunc i64 %626 to i8
%628 = sext i8 %627 to i32
%629 = icmp slt i32 %628, 0
%630 = zext i1 %629 to i32
%631 = add nsw i32 %625, %630
%632 = load i64, i64* %4
%633 = icmp eq i64 524288, %632
%634 = zext i1 %633 to i32
%635 = add nsw i32 %631, %634
%636 = load i64, i64* %4
%637 = trunc i64 %636 to i32
%638 = icmp eq i32 524288, %637
%639 = zext i1 %638 to i32
%640 = add nsw i32 %635, %639
%641 = load i64, i64* %4
%642 = trunc i64 %641 to i16
%643 = zext i16 %642 to i32
%644 = icmp eq i32 524288, %643
%645 = zext i1 %644 to i32
%646 = add nsw i32 %640, %645
%647 = load i64, i64* %4
%648 = trunc i64 %647 to i8
%649 = zext i8 %648 to i32
%650 = icmp eq i32 524288, %649
%651 = zext i1 %650 to i32
%652 = add nsw i32 %646, %651
%653 = load i64, i64* %4
%654 = icmp eq i64 524288, %653
%655 = zext i1 %654 to i32
%656 = add nsw i32 %652, %655
%657 = load i64, i64* %4
%658 = icmp eq i64 524288, %657
%659 = zext i1 %658 to i32
%660 = add nsw i32 %656, %659
%661 = load i64, i64* %4
%662 = icmp eq i64 0, %661
%663 = zext i1 %662 to i32
%664 = add nsw i32 %660, %663
%665 = load i64, i64* %4
%666 = icmp eq i64 0, %665
%667 = zext i1 %666 to i32
%668 = add nsw i32 %664, %667
%669 = load i64, i64* %4
%670 = icmp eq i64 524288, %669
%671 = zext i1 %670 to i32
%672 = add nsw i32 %668, %671
%673 = load i64, i64* %4
%674 = trunc i64 %673 to i32
%675 = icmp eq i32 524288, %674
%676 = zext i1 %675 to i32
%677 = add nsw i32 %672, %676
%678 = load i64, i64* %4
%679 = trunc i64 %678 to i16
%680 = zext i16 %679 to i32
%681 = icmp eq i32 0, %680
%682 = zext i1 %681 to i32
%683 = add nsw i32 %677, %682
%684 = load i64, i64* %4
%685 = trunc i64 %684 to i8
%686 = zext i8 %685 to i32
%687 = icmp eq i32 0, %686
%688 = zext i1 %687 to i32
%689 = add nsw i32 %683, %688
%690 = load i64, i64* %4
%691 = icmp ult i64 524288, %690
%692 = zext i1 %691 to i32
%693 = add nsw i32 %689, %692
%694 = load i64, i64* %4
%695 = trunc i64 %694 to i32
%696 = icmp ult i32 524288, %695
%697 = zext i1 %696 to i32
%698 = add nsw i32 %693, %697
%699 = load i64, i64* %4
%700 = trunc i64 %699 to i16
%701 = zext i16 %700 to i32
%702 = icmp slt i32 524288, %701
%703 = zext i1 %702 to i32
%704 = add nsw i32 %698, %703
%705 = load i64, i64* %4
%706 = trunc i64 %705 to i8
%707 = zext i8 %706 to i32
%708 = icmp slt i32 524288, %707
%709 = zext i1 %708 to i32
%710 = add nsw i32 %704, %709
%711 = load i64, i64* %4
%712 = icmp ult i64 524288, %711
%713 = zext i1 %712 to i32
%714 = add nsw i32 %710, %713
%715 = load i64, i64* %4
%716 = icmp ult i64 524288, %715
%717 = zext i1 %716 to i32
%718 = add nsw i32 %714, %717
%719 = load i64, i64* %4
%720 = icmp ult i64 0, %719
%721 = zext i1 %720 to i32
%722 = add nsw i32 %718, %721
%723 = load i64, i64* %4
%724 = icmp ult i64 0, %723
%725 = zext i1 %724 to i32
%726 = add nsw i32 %722, %725
%727 = load i64, i64* %4
%728 = icmp ult i64 524288, %727
%729 = zext i1 %728 to i32
%730 = add nsw i32 %726, %729
%731 = load i64, i64* %4
%732 = trunc i64 %731 to i32
%733 = icmp ult i32 524288, %732
%734 = zext i1 %733 to i32
%735 = add nsw i32 %730, %734
%736 = load i64, i64* %4
%737 = trunc i64 %736 to i16
%738 = zext i16 %737 to i32
%739 = icmp slt i32 0, %738
%740 = zext i1 %739 to i32
%741 = add nsw i32 %735, %740
%742 = load i64, i64* %4
%743 = trunc i64 %742 to i8
%744 = zext i8 %743 to i32
%745 = icmp slt i32 0, %744
%746 = zext i1 %745 to i32
%747 = add nsw i32 %741, %746
%748 = load i64, i64* %3
%749 = icmp eq i64 %748, 524288
%750 = zext i1 %749 to i32
%751 = add nsw i32 %747, %750
%752 = load i64, i64* %3
%753 = icmp eq i64 %752, 524288
%754 = zext i1 %753 to i32
%755 = add nsw i32 %751, %754
%756 = load i64, i64* %3
%757 = icmp eq i64 %756, 0
%758 = zext i1 %757 to i32
%759 = add nsw i32 %755, %758
%760 = load i64, i64* %3
%761 = icmp eq i64 %760, 0
%762 = zext i1 %761 to i32
%763 = add nsw i32 %759, %762
%764 = load i64, i64* %3
%765 = icmp eq i64 %764, 524288
%766 = zext i1 %765 to i32
%767 = add nsw i32 %763, %766
%768 = load i64, i64* %3
%769 = trunc i64 %768 to i32
%770 = icmp eq i32 %769, 524288
%771 = zext i1 %770 to i32
%772 = add nsw i32 %767, %771
%773 = load i64, i64* %3
%774 = trunc i64 %773 to i16
%775 = sext i16 %774 to i32
%776 = icmp eq i32 %775, 524288
%777 = zext i1 %776 to i32
%778 = add nsw i32 %772, %777
%779 = load i64, i64* %3
%780 = trunc i64 %779 to i8
%781 = sext i8 %780 to i32
%782 = icmp eq i32 %781, 524288
%783 = zext i1 %782 to i32
%784 = add nsw i32 %778, %783
%785 = load i64, i64* %3
%786 = icmp eq i64 %785, 524288
%787 = zext i1 %786 to i32
%788 = add nsw i32 %784, %787
%789 = load i64, i64* %3
%790 = trunc i64 %789 to i32
%791 = icmp eq i32 %790, 524288
%792 = zext i1 %791 to i32
%793 = add nsw i32 %788, %792
%794 = load i64, i64* %3
%795 = trunc i64 %794 to i16
%796 = sext i16 %795 to i32
%797 = icmp eq i32 %796, 0
%798 = zext i1 %797 to i32
%799 = add nsw i32 %793, %798
%800 = load i64, i64* %3
%801 = trunc i64 %800 to i8
%802 = sext i8 %801 to i32
%803 = icmp eq i32 %802, 0
%804 = zext i1 %803 to i32
%805 = add nsw i32 %799, %804
%806 = load i64, i64* %3
%807 = icmp ult i64 %806, 524288
%808 = zext i1 %807 to i32
%809 = add nsw i32 %805, %808
%810 = load i64, i64* %3
%811 = icmp slt i64 %810, 524288
%812 = zext i1 %811 to i32
%813 = add nsw i32 %809, %812
%814 = load i64, i64* %3
%815 = icmp slt i64 %814, 0
%816 = zext i1 %815 to i32
%817 = add nsw i32 %813, %816
%818 = load i64, i64* %3
%819 = icmp slt i64 %818, 0
%820 = zext i1 %819 to i32
%821 = add nsw i32 %817, %820
%822 = load i64, i64* %3
%823 = icmp slt i64 %822, 524288
%824 = zext i1 %823 to i32
%825 = add nsw i32 %821, %824
%826 = load i64, i64* %3
%827 = trunc i64 %826 to i32
%828 = icmp slt i32 %827, 524288
%829 = zext i1 %828 to i32
%830 = add nsw i32 %825, %829
%831 = load i64, i64* %3
%832 = trunc i64 %831 to i16
%833 = sext i16 %832 to i32
%834 = icmp slt i32 %833, 524288
%835 = zext i1 %834 to i32
%836 = add nsw i32 %830, %835
%837 = load i64, i64* %3
%838 = trunc i64 %837 to i8
%839 = sext i8 %838 to i32
%840 = icmp slt i32 %839, 524288
%841 = zext i1 %840 to i32
%842 = add nsw i32 %836, %841
%843 = load i64, i64* %3
%844 = icmp ult i64 %843, 524288
%845 = zext i1 %844 to i32
%846 = add nsw i32 %842, %845
%847 = load i64, i64* %3
%848 = trunc i64 %847 to i32
%849 = icmp ult i32 %848, 524288
%850 = zext i1 %849 to i32
%851 = add nsw i32 %846, %850
%852 = load i64, i64* %3
%853 = trunc i64 %852 to i16
%854 = sext i16 %853 to i32
%855 = icmp slt i32 %854, 0
%856 = zext i1 %855 to i32
%857 = add nsw i32 %851, %856
%858 = load i64, i64* %3
%859 = trunc i64 %858 to i8
%860 = sext i8 %859 to i32
%861 = icmp slt i32 %860, 0
%862 = zext i1 %861 to i32
%863 = add nsw i32 %857, %862
%864 = load i64, i64* %4
%865 = load i64, i64* %3
%866 = icmp slt i64 %865, 4
%867 = zext i1 %866 to i64
%868 = select i1 %866, i32 1, i32 2
%869 = sext i32 %868 to i64
%870 = icmp ne i64 %864, %869
%871 = zext i1 %870 to i32
%872 = add nsw i32 %863, %871
%873 = add nsw i32 %872, 10
ret i32 %873
}

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