#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 */
typedef int uint8_t;
typedef int uint64_t;
typedef int uint32_t;
typedef int int64_t;
typedef int int32_t;

/* Variables and functions */
int /*<<< orphan*/ assert(int /*<<< orphan*/);
int clz32(int);
int clz64(int);
int ctz32(int);
int ctz64(int);
int loadX(int *, int, int);
int popcnt32(int);
int popcnt64(int);
int *toMemory(int, int);
uint64_t handleALU(uint8_t hint, uint64_t r1, uint64_t r2, uint64_t r3,
                   uint64_t ireg) {
  uint64_t res = r1;
  if (hint == 0)
    return r1;
  switch (hint) {
  case 1:
  case 6:
    assert(0);
  case 2:
    if (r1 < r2)
      return r1;
    else
      return r2;
  case 3:
    if (r2 != 0)
      return r1;
    else
      return r3;
  case 4:
    return r2 + (r1 >= ireg ? ireg : r1);
  case 7:
    if (ireg != r2)
      assert(0);
    return 0;
  case 0x45:
  case 0x50:
    return (r1 == 0) ? 1 : 0;
  case 0x46:
  case 0x51:
    return (r1 == r2) ? 1 : 0;
  case 0x47:
  case 0x52:
    return (r1 != r2) ? 1 : 0;
  case 0x48:
    return ((int32_t)r1 < (int32_t)r2) ? 1 : 0;
  case 0x49:
    return ((uint32_t)r1 < (uint32_t)r2) ? 1 : 0;
  case 0x4a:
    return ((int32_t)r1 > (int32_t)r2) ? 1 : 0;
  case 0x4b:
    return ((uint32_t)r1 > (uint32_t)r2) ? 1 : 0;
  case 0x4c:
    return ((int32_t)r1 <= (int32_t)r2) ? 1 : 0;
  case 0x4d:
    return ((uint32_t)r1 <= (uint32_t)r2) ? 1 : 0;
  case 0x4e:
    return ((int32_t)r1 >= (int32_t)r2) ? 1 : 0;
  case 0x4f:
    return ((uint32_t)r1 >= (uint32_t)r2) ? 1 : 0;
  case 0x53:
    return ((int64_t)r1 < (int64_t)r2) ? 1 : 0;
  case 0x54:
    return ((uint64_t)r1 < (uint64_t)r2) ? 1 : 0;
  case 0x55:
    return ((int64_t)r1 > (int64_t)r2) ? 1 : 0;
  case 0x56:
    return ((uint64_t)r1 > (uint64_t)r2) ? 1 : 0;
  case 0x57:
    return ((int64_t)r1 <= (int64_t)r2) ? 1 : 0;
  case 0x58:
    return ((uint64_t)r1 <= (uint64_t)r2) ? 1 : 0;
  case 0x59:
    return ((int64_t)r1 >= (int64_t)r2) ? 1 : 0;
  case 0x5a:
    return ((uint64_t)r1 >= (uint64_t)r2) ? 1 : 0;
  case 0x67:
    return clz32((uint32_t)r1);
  case 0x68:
    return ctz32((uint32_t)r1);
  case 0x69:
    return popcnt32((uint32_t)r1);
  case 0x79:
    return clz64((uint64_t)r1);
  case 0x7a:
    return ctz64((uint64_t)r1);
  case 0x7b:
    return popcnt64((uint64_t)r1);
  case 0x6a:
    return (uint32_t)r1 + (uint32_t)r2;
  case 0x7c:
    return r1 + r2;
  case 0x6b:
    return (uint32_t)r1 - (uint32_t)r2;
  case 0x7d:
    return r1 - r2;
  case 0x6c:
    return (uint32_t)r1 * (uint32_t)r2;
  case 0x7e:
    return r1 * r2;
  case 0x6d:
    return (uint64_t)((int32_t)r1 / (int32_t)r2);
  case 0x7f:
    return (uint64_t)((int64_t)r1 / (int64_t)r2);
  case 0x6e:
    return (uint32_t)r1 / (uint32_t)r2;
  case 0x80:
    return r1 / r2;
  case 0x6f:
    return (uint64_t)((int32_t)r1 % (int32_t)r2);
  case 0x81:
    return (uint64_t)((int64_t)r1 % (int64_t)r2);
  case 0x70:
    return (uint32_t)r1 % (uint32_t)r2;
  case 0x82:
    return r1 % r2;
  case 0x71:
  case 0x83:
    return r1 & r2;
  case 0x72:
  case 0x84:
    return r1 | r2;
  case 0x73:
  case 0x85:
    return r1 ^ r2;
  case 0x74:
    return (r1 << r2) & 0xffffffff;
  case 0x86:
    return r1 << r2;
  case 0x75:
    return (r1 >> r2) & 0xffffffff;
  case 0x87:
    return r1 >> r2;
  case 0x76:
    return (r1 >> r2) & 0xffffffff;
  case 0x88:
    return r1 >> r2;
  case 0x77:
    return (r1 << r2) | (r1 >> (32 - r2));
  case 0x78:
    return (r1 >> r2) | (r1 << (32 - r2));
  case 0x89:
    return (r1 << r2) | (r1 << (64 - r2));
  case 0x8a:
    return (r1 >> r2) | (r1 << (64 - r2));
  default:
    if ((hint & 0xc0) == 0xc0) {
      uint8_t *arr = toMemory(r2, r3);
      return loadX(arr, (r1 + ireg) & 0x7, hint);
    }
    return res;
  }
  return res;
}


x86 assembly (clang, -O0):
<handleALU>:
push   %rbp
mov    %rsp,%rbp
sub    $0x40,%rsp
mov    %edi,-0x8(%rbp)
mov    %esi,-0xc(%rbp)
mov    %edx,-0x10(%rbp)
mov    %ecx,-0x14(%rbp)
mov    %r8d,-0x18(%rbp)
mov    -0xc(%rbp),%eax
mov    %eax,-0x1c(%rbp)
cmpl   $0x0,-0x8(%rbp)
jne    11c3 <handleALU+0x33>
mov    -0xc(%rbp),%eax
mov    %eax,-0x4(%rbp)
jmp    16ff <handleALU+0x56f>
mov    -0x8(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,%ecx
mov    %rcx,-0x30(%rbp)
sub    $0x89,%eax
ja     16ba <handleALU+0x52a>
mov    -0x30(%rbp),%rax
lea    0xe1b(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
xor    %edi,%edi
call   1060 <assert@plt>
mov    -0xc(%rbp),%eax
cmp    -0x10(%rbp),%eax
jge    120c <handleALU+0x7c>
mov    -0xc(%rbp),%eax
mov    %eax,-0x4(%rbp)
jmp    16ff <handleALU+0x56f>
mov    -0x10(%rbp),%eax
mov    %eax,-0x4(%rbp)
jmp    16ff <handleALU+0x56f>
cmpl   $0x0,-0x10(%rbp)
je     122c <handleALU+0x9c>
mov    -0xc(%rbp),%eax
mov    %eax,-0x4(%rbp)
jmp    16ff <handleALU+0x56f>
mov    -0x14(%rbp),%eax
mov    %eax,-0x4(%rbp)
jmp    16ff <handleALU+0x56f>
mov    -0x10(%rbp),%eax
mov    %eax,-0x34(%rbp)
mov    -0xc(%rbp),%eax
cmp    -0x18(%rbp),%eax
jl     1254 <handleALU+0xc4>
mov    -0x18(%rbp),%eax
mov    %eax,-0x38(%rbp)
jmp    125a <handleALU+0xca>
mov    -0xc(%rbp),%eax
mov    %eax,-0x38(%rbp)
mov    -0x34(%rbp),%eax
mov    -0x38(%rbp),%ecx
add    %ecx,%eax
mov    %eax,-0x4(%rbp)
jmp    16ff <handleALU+0x56f>
mov    -0x18(%rbp),%eax
cmp    -0x10(%rbp),%eax
je     127d <handleALU+0xed>
xor    %edi,%edi
call   1060 <assert@plt>
movl   $0x0,-0x4(%rbp)
jmp    16ff <handleALU+0x56f>
mov    -0xc(%rbp),%edx
xor    %eax,%eax
mov    $0x1,%ecx
cmp    $0x0,%edx
cmove  %ecx,%eax
mov    %eax,-0x4(%rbp)
jmp    16ff <handleALU+0x56f>
mov    -0xc(%rbp),%edx
mov    -0x10(%rbp),%esi
xor    %eax,%eax
mov    $0x1,%ecx
cmp    %esi,%edx
cmove  %ecx,%eax
mov    %eax,-0x4(%rbp)
jmp    16ff <handleALU+0x56f>
mov    -0xc(%rbp),%edx
mov    -0x10(%rbp),%esi
xor    %eax,%eax
mov    $0x1,%ecx
cmp    %esi,%edx
cmovne %ecx,%eax
mov    %eax,-0x4(%rbp)
jmp    16ff <handleALU+0x56f>
mov    -0xc(%rbp),%edx
mov    -0x10(%rbp),%esi
xor    %eax,%eax
mov    $0x1,%ecx
cmp    %esi,%edx
cmovl  %ecx,%eax
mov    %eax,-0x4(%rbp)
jmp    16ff <handleALU+0x56f>
mov    -0xc(%rbp),%edx
mov    -0x10(%rbp),%esi
xor    %eax,%eax
mov    $0x1,%ecx
cmp    %esi,%edx
cmovl  %ecx,%eax
mov    %eax,-0x4(%rbp)
jmp    16ff <handleALU+0x56f>
mov    -0xc(%rbp),%edx
mov    -0x10(%rbp),%esi
xor    %eax,%eax
mov    $0x1,%ecx
cmp    %esi,%edx
cmovg  %ecx,%eax
mov    %eax,-0x4(%rbp)
jmp    16ff <handleALU+0x56f>
mov    -0xc(%rbp),%edx
mov    -0x10(%rbp),%esi
xor    %eax,%eax
mov    $0x1,%ecx
cmp    %esi,%edx
cmovg  %ecx,%eax
mov    %eax,-0x4(%rbp)
jmp    16ff <handleALU+0x56f>
mov    -0xc(%rbp),%edx
mov    -0x10(%rbp),%esi
xor    %eax,%eax
mov    $0x1,%ecx
cmp    %esi,%edx
cmovle %ecx,%eax
mov    %eax,-0x4(%rbp)
jmp    16ff <handleALU+0x56f>
mov    -0xc(%rbp),%edx
mov    -0x10(%rbp),%esi
xor    %eax,%eax
mov    $0x1,%ecx
cmp    %esi,%edx
cmovle %ecx,%eax
mov    %eax,-0x4(%rbp)
jmp    16ff <handleALU+0x56f>
mov    -0xc(%rbp),%edx
mov    -0x10(%rbp),%esi
xor    %eax,%eax
mov    $0x1,%ecx
cmp    %esi,%edx
cmovge %ecx,%eax
mov    %eax,-0x4(%rbp)
jmp    16ff <handleALU+0x56f>
mov    -0xc(%rbp),%edx
mov    -0x10(%rbp),%esi
xor    %eax,%eax
mov    $0x1,%ecx
cmp    %esi,%edx
cmovge %ecx,%eax
mov    %eax,-0x4(%rbp)
jmp    16ff <handleALU+0x56f>
mov    -0xc(%rbp),%edx
mov    -0x10(%rbp),%esi
xor    %eax,%eax
mov    $0x1,%ecx
cmp    %esi,%edx
cmovl  %ecx,%eax
mov    %eax,-0x4(%rbp)
jmp    16ff <handleALU+0x56f>
mov    -0xc(%rbp),%edx
mov    -0x10(%rbp),%esi
xor    %eax,%eax
mov    $0x1,%ecx
cmp    %esi,%edx
cmovl  %ecx,%eax
mov    %eax,-0x4(%rbp)
jmp    16ff <handleALU+0x56f>
mov    -0xc(%rbp),%edx
mov    -0x10(%rbp),%esi
xor    %eax,%eax
mov    $0x1,%ecx
cmp    %esi,%edx
cmovg  %ecx,%eax
mov    %eax,-0x4(%rbp)
jmp    16ff <handleALU+0x56f>
mov    -0xc(%rbp),%edx
mov    -0x10(%rbp),%esi
xor    %eax,%eax
mov    $0x1,%ecx
cmp    %esi,%edx
cmovg  %ecx,%eax
mov    %eax,-0x4(%rbp)
jmp    16ff <handleALU+0x56f>
mov    -0xc(%rbp),%edx
mov    -0x10(%rbp),%esi
xor    %eax,%eax
mov    $0x1,%ecx
cmp    %esi,%edx
cmovle %ecx,%eax
mov    %eax,-0x4(%rbp)
jmp    16ff <handleALU+0x56f>
mov    -0xc(%rbp),%edx
mov    -0x10(%rbp),%esi
xor    %eax,%eax
mov    $0x1,%ecx
cmp    %esi,%edx
cmovle %ecx,%eax
mov    %eax,-0x4(%rbp)
jmp    16ff <handleALU+0x56f>
mov    -0xc(%rbp),%edx
mov    -0x10(%rbp),%esi
xor    %eax,%eax
mov    $0x1,%ecx
cmp    %esi,%edx
cmovge %ecx,%eax
mov    %eax,-0x4(%rbp)
jmp    16ff <handleALU+0x56f>
mov    -0xc(%rbp),%edx
mov    -0x10(%rbp),%esi
xor    %eax,%eax
mov    $0x1,%ecx
cmp    %esi,%edx
cmovge %ecx,%eax
mov    %eax,-0x4(%rbp)
jmp    16ff <handleALU+0x56f>
mov    -0xc(%rbp),%edi
call   10a0 <clz32@plt>
mov    %eax,-0x4(%rbp)
jmp    16ff <handleALU+0x56f>
mov    -0xc(%rbp),%edi
call   1070 <ctz32@plt>
mov    %eax,-0x4(%rbp)
jmp    16ff <handleALU+0x56f>
mov    -0xc(%rbp),%edi
call   10b0 <popcnt32@plt>
mov    %eax,-0x4(%rbp)
jmp    16ff <handleALU+0x56f>
mov    -0xc(%rbp),%edi
call   1080 <clz64@plt>
mov    %eax,-0x4(%rbp)
jmp    16ff <handleALU+0x56f>
mov    -0xc(%rbp),%edi
call   1090 <ctz64@plt>
mov    %eax,-0x4(%rbp)
jmp    16ff <handleALU+0x56f>
mov    -0xc(%rbp),%edi
call   1030 <popcnt64@plt>
mov    %eax,-0x4(%rbp)
jmp    16ff <handleALU+0x56f>
mov    -0xc(%rbp),%eax
add    -0x10(%rbp),%eax
mov    %eax,-0x4(%rbp)
jmp    16ff <handleALU+0x56f>
mov    -0xc(%rbp),%eax
add    -0x10(%rbp),%eax
mov    %eax,-0x4(%rbp)
jmp    16ff <handleALU+0x56f>
mov    -0xc(%rbp),%eax
sub    -0x10(%rbp),%eax
mov    %eax,-0x4(%rbp)
jmp    16ff <handleALU+0x56f>
mov    -0xc(%rbp),%eax
sub    -0x10(%rbp),%eax
mov    %eax,-0x4(%rbp)
jmp    16ff <handleALU+0x56f>
mov    -0xc(%rbp),%eax
imul   -0x10(%rbp),%eax
mov    %eax,-0x4(%rbp)
jmp    16ff <handleALU+0x56f>
mov    -0xc(%rbp),%eax
imul   -0x10(%rbp),%eax
mov    %eax,-0x4(%rbp)
jmp    16ff <handleALU+0x56f>
mov    -0xc(%rbp),%eax
cltd
idivl  -0x10(%rbp)
mov    %eax,-0x4(%rbp)
jmp    16ff <handleALU+0x56f>
mov    -0xc(%rbp),%eax
cltd
idivl  -0x10(%rbp)
mov    %eax,-0x4(%rbp)
jmp    16ff <handleALU+0x56f>
mov    -0xc(%rbp),%eax
cltd
idivl  -0x10(%rbp)
mov    %eax,-0x4(%rbp)
jmp    16ff <handleALU+0x56f>
mov    -0xc(%rbp),%eax
cltd
idivl  -0x10(%rbp)
mov    %eax,-0x4(%rbp)
jmp    16ff <handleALU+0x56f>
mov    -0xc(%rbp),%eax
cltd
idivl  -0x10(%rbp)
mov    %edx,-0x4(%rbp)
jmp    16ff <handleALU+0x56f>
mov    -0xc(%rbp),%eax
cltd
idivl  -0x10(%rbp)
mov    %edx,-0x4(%rbp)
jmp    16ff <handleALU+0x56f>
mov    -0xc(%rbp),%eax
cltd
idivl  -0x10(%rbp)
mov    %edx,-0x4(%rbp)
jmp    16ff <handleALU+0x56f>
mov    -0xc(%rbp),%eax
cltd
idivl  -0x10(%rbp)
mov    %edx,-0x4(%rbp)
jmp    16ff <handleALU+0x56f>
mov    -0xc(%rbp),%eax
and    -0x10(%rbp),%eax
mov    %eax,-0x4(%rbp)
jmp    16ff <handleALU+0x56f>
mov    -0xc(%rbp),%eax
or     -0x10(%rbp),%eax
mov    %eax,-0x4(%rbp)
jmp    16ff <handleALU+0x56f>
mov    -0xc(%rbp),%eax
xor    -0x10(%rbp),%eax
mov    %eax,-0x4(%rbp)
jmp    16ff <handleALU+0x56f>
mov    -0xc(%rbp),%eax
mov    -0x10(%rbp),%ecx
shl    %cl,%eax
and    $0xffffffff,%eax
mov    %eax,-0x4(%rbp)
jmp    16ff <handleALU+0x56f>
mov    -0xc(%rbp),%eax
mov    -0x10(%rbp),%ecx
shl    %cl,%eax
mov    %eax,-0x4(%rbp)
jmp    16ff <handleALU+0x56f>
mov    -0xc(%rbp),%eax
mov    -0x10(%rbp),%ecx
sar    %cl,%eax
and    $0xffffffff,%eax
mov    %eax,-0x4(%rbp)
jmp    16ff <handleALU+0x56f>
mov    -0xc(%rbp),%eax
mov    -0x10(%rbp),%ecx
sar    %cl,%eax
mov    %eax,-0x4(%rbp)
jmp    16ff <handleALU+0x56f>
mov    -0xc(%rbp),%eax
mov    -0x10(%rbp),%ecx
sar    %cl,%eax
and    $0xffffffff,%eax
mov    %eax,-0x4(%rbp)
jmp    16ff <handleALU+0x56f>
mov    -0xc(%rbp),%eax
mov    -0x10(%rbp),%ecx
sar    %cl,%eax
mov    %eax,-0x4(%rbp)
jmp    16ff <handleALU+0x56f>
mov    -0xc(%rbp),%eax
mov    -0x10(%rbp),%ecx
shl    %cl,%eax
mov    -0xc(%rbp),%edx
mov    $0x20,%ecx
sub    -0x10(%rbp),%ecx
sar    %cl,%edx
mov    %edx,%ecx
or     %ecx,%eax
mov    %eax,-0x4(%rbp)
jmp    16ff <handleALU+0x56f>
mov    -0xc(%rbp),%eax
mov    -0x10(%rbp),%ecx
sar    %cl,%eax
mov    -0xc(%rbp),%edx
mov    $0x20,%ecx
sub    -0x10(%rbp),%ecx
shl    %cl,%edx
mov    %edx,%ecx
or     %ecx,%eax
mov    %eax,-0x4(%rbp)
jmp    16ff <handleALU+0x56f>
mov    -0xc(%rbp),%eax
mov    -0x10(%rbp),%ecx
shl    %cl,%eax
mov    -0xc(%rbp),%edx
mov    $0x40,%ecx
sub    -0x10(%rbp),%ecx
shl    %cl,%edx
mov    %edx,%ecx
or     %ecx,%eax
mov    %eax,-0x4(%rbp)
jmp    16ff <handleALU+0x56f>
mov    -0xc(%rbp),%eax
mov    -0x10(%rbp),%ecx
sar    %cl,%eax
mov    -0xc(%rbp),%edx
mov    $0x40,%ecx
sub    -0x10(%rbp),%ecx
shl    %cl,%edx
mov    %edx,%ecx
or     %ecx,%eax
mov    %eax,-0x4(%rbp)
jmp    16ff <handleALU+0x56f>
mov    -0x8(%rbp),%eax
and    $0xc0,%eax
cmp    $0xc0,%eax
jne    16f9 <handleALU+0x569>
mov    -0x10(%rbp),%edi
mov    -0x14(%rbp),%esi
call   1040 <toMemory@plt>
mov    %rax,-0x28(%rbp)
mov    -0x28(%rbp),%rdi
mov    -0xc(%rbp),%esi
add    -0x18(%rbp),%esi
and    $0x7,%esi
mov    -0x8(%rbp),%edx
call   1050 <loadX@plt>
mov    %eax,-0x4(%rbp)
jmp    16ff <handleALU+0x56f>
mov    -0x1c(%rbp),%eax
mov    %eax,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0x40,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<handleALU>:
push   %rbp
push   %r15
push   %r14
push   %rbx
push   %rax
mov    %esi,%r15d
test   %edi,%edi
je     1380 <handleALU+0x1f0>
mov    %r8d,%ebx
mov    %edx,%r14d
mov    %edi,%ebp
lea    -0x1(%rbp),%eax
cmp    $0x89,%eax
ja     138e <handleALU+0x1fe>
lea    0xe41(%rip),%rdx
movslq (%rdx,%rax,4),%rax
add    %rdx,%rax
jmp    *%rax
xor    %eax,%eax
cmp    %r14d,%r15d
setl   %al
mov    %eax,%r15d
jmp    1380 <handleALU+0x1f0>
xor    %eax,%eax
cmp    %r14d,%r15d
setg   %al
mov    %eax,%r15d
jmp    1380 <handleALU+0x1f0>
xor    %eax,%eax
cmp    %r14d,%r15d
setle  %al
mov    %eax,%r15d
jmp    1380 <handleALU+0x1f0>
xor    %eax,%eax
cmp    %r14d,%r15d
setge  %al
mov    %eax,%r15d
jmp    1380 <handleALU+0x1f0>
mov    %r15d,%eax
cltd
idiv   %r14d
mov    %eax,%r15d
jmp    1380 <handleALU+0x1f0>
mov    %r15d,%eax
cltd
idiv   %r14d
mov    %edx,%r15d
jmp    1380 <handleALU+0x1f0>
mov    %r14d,%ecx
sar    %cl,%r15d
jmp    1380 <handleALU+0x1f0>
xor    %edi,%edi
call   1060 <assert@plt>
cmp    %r14d,%r15d
cmovge %r14d,%r15d
jmp    1380 <handleALU+0x1f0>
xor    %eax,%eax
test   %r15d,%r15d
jmp    1250 <handleALU+0xc0>
xor    %eax,%eax
cmp    %r14d,%r15d
sete   %al
mov    %eax,%r15d
jmp    1380 <handleALU+0x1f0>
xor    %eax,%eax
cmp    %r14d,%r15d
setne  %al
mov    %eax,%r15d
jmp    1380 <handleALU+0x1f0>
and    %r14d,%r15d
jmp    1380 <handleALU+0x1f0>
or     %r14d,%r15d
jmp    1380 <handleALU+0x1f0>
xor    %r14d,%r15d
jmp    1380 <handleALU+0x1f0>
mov    %r15d,%eax
mov    %r14d,%ecx
sar    %cl,%eax
jmp    1374 <handleALU+0x1e4>
add    %r14d,%r15d
jmp    1380 <handleALU+0x1f0>
sub    %r14d,%r15d
jmp    1380 <handleALU+0x1f0>
imul   %r14d,%r15d
jmp    1380 <handleALU+0x1f0>
mov    %r14d,%ecx
shl    %cl,%r15d
jmp    1380 <handleALU+0x1f0>
test   %r14d,%r14d
cmove  %ecx,%r15d
jmp    1380 <handleALU+0x1f0>
cmp    %ebx,%r15d
cmovl  %r15d,%ebx
add    %r14d,%ebx
mov    %ebx,%r15d
jmp    1380 <handleALU+0x1f0>
xor    %r15d,%r15d
cmp    %r14d,%ebx
je     1380 <handleALU+0x1f0>
xor    %r15d,%r15d
xor    %edi,%edi
call   1060 <assert@plt>
jmp    1380 <handleALU+0x1f0>
mov    %r15d,%edi
add    $0x8,%rsp
pop    %rbx
pop    %r14
pop    %r15
pop    %rbp
jmp    10a0 <clz32@plt>
mov    %r15d,%edi
add    $0x8,%rsp
pop    %rbx
pop    %r14
pop    %r15
pop    %rbp
jmp    1070 <ctz32@plt>
mov    %r15d,%edi
add    $0x8,%rsp
pop    %rbx
pop    %r14
pop    %r15
pop    %rbp
jmp    10b0 <popcnt32@plt>
mov    %r15d,%eax
mov    %r14d,%ecx
shl    %cl,%eax
neg    %r14b
mov    %r14d,%ecx
sar    %cl,%r15d
jmp    137d <handleALU+0x1ed>
mov    %r15d,%edi
add    $0x8,%rsp
pop    %rbx
pop    %r14
pop    %r15
pop    %rbp
jmp    1080 <clz64@plt>
mov    %r15d,%edi
add    $0x8,%rsp
pop    %rbx
pop    %r14
pop    %r15
pop    %rbp
jmp    1090 <ctz64@plt>
mov    %r15d,%edi
add    $0x8,%rsp
pop    %rbx
pop    %r14
pop    %r15
pop    %rbp
jmp    1030 <popcnt64@plt>
mov    %r15d,%eax
mov    %r14d,%ecx
shl    %cl,%eax
neg    %r14b
mov    %r14d,%ecx
shl    %cl,%r15d
or     %eax,%r15d
mov    %r15d,%eax
add    $0x8,%rsp
pop    %rbx
pop    %r14
pop    %r15
pop    %rbp
ret
mov    %ebp,%eax
not    %eax
test   $0xc0,%al
jne    1380 <handleALU+0x1f0>
mov    %r14d,%edi
mov    %ecx,%esi
call   1040 <toMemory@plt>
add    %r15d,%ebx
and    $0x7,%ebx
mov    %rax,%rdi
mov    %ebx,%esi
mov    %ebp,%edx
add    $0x8,%rsp
pop    %rbx
pop    %r14
pop    %r15
pop    %rbp
jmp    1050 <loadX@plt>

LLVM IR (-O0):
define i32 @handleALU(i32 %0, i32 %1, i32 %2, i32 %3, i32 %4) {
%6 = alloca i32
%7 = alloca i32
%8 = alloca i32
%9 = alloca i32
%10 = alloca i32
%11 = alloca i32
%12 = alloca i32
%13 = alloca i32*
store i32 %0, i32* %7
store i32 %1, i32* %8
store i32 %2, i32* %9
store i32 %3, i32* %10
store i32 %4, i32* %11
%14 = load i32, i32* %8
store i32 %14, i32* %12
%15 = load i32, i32* %7
%16 = icmp eq i32 %15, 0
br i1 %16, label %17, label %19
17: ; preds = %5
%18 = load i32, i32* %8
store i32 %18, i32* %6
br label %336
19: ; preds = %5
%20 = load i32, i32* %7
switch i32 %20, label %319 [
i32 1, label %21
i32 6, label %21
i32 2, label %23
i32 3, label %31
i32 4, label %38
i32 7, label %50
i32 69, label %57
i32 80, label %57
i32 70, label %62
i32 81, label %62
i32 71, label %68
i32 82, label %68
i32 72, label %74
i32 73, label %80
i32 74, label %86
i32 75, label %92
i32 76, label %98
i32 77, label %104
i32 78, label %110
i32 79, label %116
i32 83, label %122
i32 84, label %128
i32 85, label %134
i32 86, label %140
i32 87, label %146
i32 88, label %152
i32 89, label %158
i32 90, label %164
i32 103, label %170
i32 104, label %173
i32 105, label %176
i32 121, label %179
i32 122, label %182
i32 123, label %185
i32 106, label %188
i32 124, label %192
i32 107, label %196
i32 125, label %200
i32 108, label %204
i32 126, label %208
i32 109, label %212
i32 127, label %216
i32 110, label %220
i32 128, label %224
i32 111, label %228
i32 129, label %232
i32 112, label %236
i32 130, label %240
i32 113, label %244
i32 131, label %244
i32 114, label %248
i32 132, label %248
i32 115, label %252
i32 133, label %252
i32 116, label %256
i32 134, label %261
i32 117, label %265
i32 135, label %270
i32 118, label %274
i32 136, label %279
i32 119, label %283
i32 120, label %292
i32 137, label %301
i32 138, label %310
]
21: ; preds = %19, %19
%22 = call i32 @assert(i32 0)
br label %23
23: ; preds = %19, %21
%24 = load i32, i32* %8
%25 = load i32, i32* %9
%26 = icmp slt i32 %24, %25
br i1 %26, label %27, label %29
27: ; preds = %23
%28 = load i32, i32* %8
store i32 %28, i32* %6
br label %336
29: ; preds = %23
%30 = load i32, i32* %9
store i32 %30, i32* %6
br label %336
31: ; preds = %19
%32 = load i32, i32* %9
%33 = icmp ne i32 %32, 0
br i1 %33, label %34, label %36
34: ; preds = %31
%35 = load i32, i32* %8
store i32 %35, i32* %6
br label %336
36: ; preds = %31
%37 = load i32, i32* %10
store i32 %37, i32* %6
br label %336
38: ; preds = %19
%39 = load i32, i32* %9
%40 = load i32, i32* %8
%41 = load i32, i32* %11
%42 = icmp sge i32 %40, %41
br i1 %42, label %43, label %45
43: ; preds = %38
%44 = load i32, i32* %11
br label %47
45: ; preds = %38
%46 = load i32, i32* %8
br label %47
47: ; preds = %45, %43
%48 = phi i32 [ %44, %43 ], [ %46, %45 ]
%49 = add nsw i32 %39, %48
store i32 %49, i32* %6
br label %336
50: ; preds = %19
%51 = load i32, i32* %11
%52 = load i32, i32* %9
%53 = icmp ne i32 %51, %52
br i1 %53, label %54, label %56
54: ; preds = %50
%55 = call i32 @assert(i32 0)
br label %56
56: ; preds = %54, %50
store i32 0, i32* %6
br label %336
57: ; preds = %19, %19
%58 = load i32, i32* %8
%59 = icmp eq i32 %58, 0
%60 = zext i1 %59 to i64
%61 = select i1 %59, i32 1, i32 0
store i32 %61, i32* %6
br label %336
62: ; preds = %19, %19
%63 = load i32, i32* %8
%64 = load i32, i32* %9
%65 = icmp eq i32 %63, %64
%66 = zext i1 %65 to i64
%67 = select i1 %65, i32 1, i32 0
store i32 %67, i32* %6
br label %336
68: ; preds = %19, %19
%69 = load i32, i32* %8
%70 = load i32, i32* %9
%71 = icmp ne i32 %69, %70
%72 = zext i1 %71 to i64
%73 = select i1 %71, i32 1, i32 0
store i32 %73, i32* %6
br label %336
74: ; preds = %19
%75 = load i32, i32* %8
%76 = load i32, i32* %9
%77 = icmp slt i32 %75, %76
%78 = zext i1 %77 to i64
%79 = select i1 %77, i32 1, i32 0
store i32 %79, i32* %6
br label %336
80: ; preds = %19
%81 = load i32, i32* %8
%82 = load i32, i32* %9
%83 = icmp slt i32 %81, %82
%84 = zext i1 %83 to i64
%85 = select i1 %83, i32 1, i32 0
store i32 %85, i32* %6
br label %336
86: ; preds = %19
%87 = load i32, i32* %8
%88 = load i32, i32* %9
%89 = icmp sgt i32 %87, %88
%90 = zext i1 %89 to i64
%91 = select i1 %89, i32 1, i32 0
store i32 %91, i32* %6
br label %336
92: ; preds = %19
%93 = load i32, i32* %8
%94 = load i32, i32* %9
%95 = icmp sgt i32 %93, %94
%96 = zext i1 %95 to i64
%97 = select i1 %95, i32 1, i32 0
store i32 %97, i32* %6
br label %336
98: ; preds = %19
%99 = load i32, i32* %8
%100 = load i32, i32* %9
%101 = icmp sle i32 %99, %100
%102 = zext i1 %101 to i64
%103 = select i1 %101, i32 1, i32 0
store i32 %103, i32* %6
br label %336
104: ; preds = %19
%105 = load i32, i32* %8
%106 = load i32, i32* %9
%107 = icmp sle i32 %105, %106
%108 = zext i1 %107 to i64
%109 = select i1 %107, i32 1, i32 0
store i32 %109, i32* %6
br label %336
110: ; preds = %19
%111 = load i32, i32* %8
%112 = load i32, i32* %9
%113 = icmp sge i32 %111, %112
%114 = zext i1 %113 to i64
%115 = select i1 %113, i32 1, i32 0
store i32 %115, i32* %6
br label %336
116: ; preds = %19
%117 = load i32, i32* %8
%118 = load i32, i32* %9
%119 = icmp sge i32 %117, %118
%120 = zext i1 %119 to i64
%121 = select i1 %119, i32 1, i32 0
store i32 %121, i32* %6
br label %336
122: ; preds = %19
%123 = load i32, i32* %8
%124 = load i32, i32* %9
%125 = icmp slt i32 %123, %124
%126 = zext i1 %125 to i64
%127 = select i1 %125, i32 1, i32 0
store i32 %127, i32* %6
br label %336
128: ; preds = %19
%129 = load i32, i32* %8
%130 = load i32, i32* %9
%131 = icmp slt i32 %129, %130
%132 = zext i1 %131 to i64
%133 = select i1 %131, i32 1, i32 0
store i32 %133, i32* %6
br label %336
134: ; preds = %19
%135 = load i32, i32* %8
%136 = load i32, i32* %9
%137 = icmp sgt i32 %135, %136
%138 = zext i1 %137 to i64
%139 = select i1 %137, i32 1, i32 0
store i32 %139, i32* %6
br label %336
140: ; preds = %19
%141 = load i32, i32* %8
%142 = load i32, i32* %9
%143 = icmp sgt i32 %141, %142
%144 = zext i1 %143 to i64
%145 = select i1 %143, i32 1, i32 0
store i32 %145, i32* %6
br label %336
146: ; preds = %19
%147 = load i32, i32* %8
%148 = load i32, i32* %9
%149 = icmp sle i32 %147, %148
%150 = zext i1 %149 to i64
%151 = select i1 %149, i32 1, i32 0
store i32 %151, i32* %6
br label %336
152: ; preds = %19
%153 = load i32, i32* %8
%154 = load i32, i32* %9
%155 = icmp sle i32 %153, %154
%156 = zext i1 %155 to i64
%157 = select i1 %155, i32 1, i32 0
store i32 %157, i32* %6
br label %336
158: ; preds = %19
%159 = load i32, i32* %8
%160 = load i32, i32* %9
%161 = icmp sge i32 %159, %160
%162 = zext i1 %161 to i64
%163 = select i1 %161, i32 1, i32 0
store i32 %163, i32* %6
br label %336
164: ; preds = %19
%165 = load i32, i32* %8
%166 = load i32, i32* %9
%167 = icmp sge i32 %165, %166
%168 = zext i1 %167 to i64
%169 = select i1 %167, i32 1, i32 0
store i32 %169, i32* %6
br label %336
170: ; preds = %19
%171 = load i32, i32* %8
%172 = call i32 @clz32(i32 %171)
store i32 %172, i32* %6
br label %336
173: ; preds = %19
%174 = load i32, i32* %8
%175 = call i32 @ctz32(i32 %174)
store i32 %175, i32* %6
br label %336
176: ; preds = %19
%177 = load i32, i32* %8
%178 = call i32 @popcnt32(i32 %177)
store i32 %178, i32* %6
br label %336
179: ; preds = %19
%180 = load i32, i32* %8
%181 = call i32 @clz64(i32 %180)
store i32 %181, i32* %6
br label %336
182: ; preds = %19
%183 = load i32, i32* %8
%184 = call i32 @ctz64(i32 %183)
store i32 %184, i32* %6
br label %336
185: ; preds = %19
%186 = load i32, i32* %8
%187 = call i32 @popcnt64(i32 %186)
store i32 %187, i32* %6
br label %336
188: ; preds = %19
%189 = load i32, i32* %8
%190 = load i32, i32* %9
%191 = add nsw i32 %189, %190
store i32 %191, i32* %6
br label %336
192: ; preds = %19
%193 = load i32, i32* %8
%194 = load i32, i32* %9
%195 = add nsw i32 %193, %194
store i32 %195, i32* %6
br label %336
196: ; preds = %19
%197 = load i32, i32* %8
%198 = load i32, i32* %9
%199 = sub nsw i32 %197, %198
store i32 %199, i32* %6
br label %336
200: ; preds = %19
%201 = load i32, i32* %8
%202 = load i32, i32* %9
%203 = sub nsw i32 %201, %202
store i32 %203, i32* %6
br label %336
204: ; preds = %19
%205 = load i32, i32* %8
%206 = load i32, i32* %9
%207 = mul nsw i32 %205, %206
store i32 %207, i32* %6
br label %336
208: ; preds = %19
%209 = load i32, i32* %8
%210 = load i32, i32* %9
%211 = mul nsw i32 %209, %210
store i32 %211, i32* %6
br label %336
212: ; preds = %19
%213 = load i32, i32* %8
%214 = load i32, i32* %9
%215 = sdiv i32 %213, %214
store i32 %215, i32* %6
br label %336
216: ; preds = %19
%217 = load i32, i32* %8
%218 = load i32, i32* %9
%219 = sdiv i32 %217, %218
store i32 %219, i32* %6
br label %336
220: ; preds = %19
%221 = load i32, i32* %8
%222 = load i32, i32* %9
%223 = sdiv i32 %221, %222
store i32 %223, i32* %6
br label %336
224: ; preds = %19
%225 = load i32, i32* %8
%226 = load i32, i32* %9
%227 = sdiv i32 %225, %226
store i32 %227, i32* %6
br label %336
228: ; preds = %19
%229 = load i32, i32* %8
%230 = load i32, i32* %9
%231 = srem i32 %229, %230
store i32 %231, i32* %6
br label %336
232: ; preds = %19
%233 = load i32, i32* %8
%234 = load i32, i32* %9
%235 = srem i32 %233, %234
store i32 %235, i32* %6
br label %336
236: ; preds = %19
%237 = load i32, i32* %8
%238 = load i32, i32* %9
%239 = srem i32 %237, %238
store i32 %239, i32* %6
br label %336
240: ; preds = %19
%241 = load i32, i32* %8
%242 = load i32, i32* %9
%243 = srem i32 %241, %242
store i32 %243, i32* %6
br label %336
244: ; preds = %19, %19
%245 = load i32, i32* %8
%246 = load i32, i32* %9
%247 = and i32 %245, %246
store i32 %247, i32* %6
br label %336
248: ; preds = %19, %19
%249 = load i32, i32* %8
%250 = load i32, i32* %9
%251 = or i32 %249, %250
store i32 %251, i32* %6
br label %336
252: ; preds = %19, %19
%253 = load i32, i32* %8
%254 = load i32, i32* %9
%255 = xor i32 %253, %254
store i32 %255, i32* %6
br label %336
256: ; preds = %19
%257 = load i32, i32* %8
%258 = load i32, i32* %9
%259 = shl i32 %257, %258
%260 = and i32 %259, -1
store i32 %260, i32* %6
br label %336
261: ; preds = %19
%262 = load i32, i32* %8
%263 = load i32, i32* %9
%264 = shl i32 %262, %263
store i32 %264, i32* %6
br label %336
265: ; preds = %19
%266 = load i32, i32* %8
%267 = load i32, i32* %9
%268 = ashr i32 %266, %267
%269 = and i32 %268, -1
store i32 %269, i32* %6
br label %336
270: ; preds = %19
%271 = load i32, i32* %8
%272 = load i32, i32* %9
%273 = ashr i32 %271, %272
store i32 %273, i32* %6
br label %336
274: ; preds = %19
%275 = load i32, i32* %8
%276 = load i32, i32* %9
%277 = ashr i32 %275, %276
%278 = and i32 %277, -1
store i32 %278, i32* %6
br label %336
279: ; preds = %19
%280 = load i32, i32* %8
%281 = load i32, i32* %9
%282 = ashr i32 %280, %281
store i32 %282, i32* %6
br label %336
283: ; preds = %19
%284 = load i32, i32* %8
%285 = load i32, i32* %9
%286 = shl i32 %284, %285
%287 = load i32, i32* %8
%288 = load i32, i32* %9
%289 = sub nsw i32 32, %288
%290 = ashr i32 %287, %289
%291 = or i32 %286, %290
store i32 %291, i32* %6
br label %336
292: ; preds = %19
%293 = load i32, i32* %8
%294 = load i32, i32* %9
%295 = ashr i32 %293, %294
%296 = load i32, i32* %8
%297 = load i32, i32* %9
%298 = sub nsw i32 32, %297
%299 = shl i32 %296, %298
%300 = or i32 %295, %299
store i32 %300, i32* %6
br label %336
301: ; preds = %19
%302 = load i32, i32* %8
%303 = load i32, i32* %9
%304 = shl i32 %302, %303
%305 = load i32, i32* %8
%306 = load i32, i32* %9
%307 = sub nsw i32 64, %306
%308 = shl i32 %305, %307
%309 = or i32 %304, %308
store i32 %309, i32* %6
br label %336
310: ; preds = %19
%311 = load i32, i32* %8
%312 = load i32, i32* %9
%313 = ashr i32 %311, %312
%314 = load i32, i32* %8
%315 = load i32, i32* %9
%316 = sub nsw i32 64, %315
%317 = shl i32 %314, %316
%318 = or i32 %313, %317
store i32 %318, i32* %6
br label %336
319: ; preds = %19
%320 = load i32, i32* %7
%321 = and i32 %320, 192
%322 = icmp eq i32 %321, 192
br i1 %322, label %323, label %334
323: ; preds = %319
%324 = load i32, i32* %9
%325 = load i32, i32* %10
%326 = call i32* @toMemory(i32 %324, i32 %325)
store i32* %326, i32** %13
%327 = load i32*, i32** %13
%328 = load i32, i32* %8
%329 = load i32, i32* %11
%330 = add nsw i32 %328, %329
%331 = and i32 %330, 7
%332 = load i32, i32* %7
%333 = call i32 @loadX(i32* %327, i32 %331, i32 %332)
store i32 %333, i32* %6
br label %336
334: ; preds = %319
%335 = load i32, i32* %12
store i32 %335, i32* %6
br label %336
336: ; preds = %334, %323, %310, %301, %292, %283, %279, %274, %270, %265, %261, %256, %252, %248, %244, %240, %236, %232, %228, %224, %220, %216, %212, %208, %204, %200, %196, %192, %188, %185, %182, %179, %176, %173, %170, %164, %158, %152, %146, %140, %134, %128, %122, %116, %110, %104, %98, %92, %86, %80, %74, %68, %62, %57, %56, %47, %36, %34, %29, %27, %17
%337 = load i32, i32* %6
ret i32 %337
}

LLVM IR (-O2):
define i32 @handleALU(i32 %0, i32 %1, i32 %2, i32 %3, i32 %4) {
%6 = icmp eq i32 %0, 0
br i1 %6, label %167, label %7
7: ; preds = %5
switch i32 %0, label %159 [
i32 1, label %8
i32 6, label %8
i32 2, label %10
i32 3, label %13
i32 4, label %16
i32 7, label %20
i32 69, label %24
i32 80, label %24
i32 70, label %27
i32 81, label %27
i32 71, label %30
i32 82, label %30
i32 72, label %33
i32 73, label %36
i32 74, label %39
i32 75, label %42
i32 76, label %45
i32 77, label %48
i32 78, label %51
i32 79, label %54
i32 83, label %57
i32 84, label %60
i32 85, label %63
i32 86, label %66
i32 87, label %69
i32 88, label %72
i32 89, label %75
i32 90, label %78
i32 103, label %81
i32 104, label %83
i32 105, label %85
i32 121, label %87
i32 122, label %89
i32 123, label %91
i32 106, label %93
i32 124, label %95
i32 107, label %97
i32 125, label %99
i32 108, label %101
i32 126, label %103
i32 109, label %105
i32 127, label %107
i32 110, label %109
i32 128, label %111
i32 111, label %113
i32 129, label %115
i32 112, label %117
i32 130, label %119
i32 113, label %121
i32 131, label %121
i32 114, label %123
i32 132, label %123
i32 115, label %125
i32 133, label %125
i32 116, label %127
i32 134, label %129
i32 117, label %131
i32 135, label %133
i32 118, label %135
i32 136, label %137
i32 119, label %139
i32 120, label %144
i32 137, label %149
i32 138, label %154
]
8: ; preds = %7, %7
%9 = tail call i32 @assert(i32 0)
br label %10
10: ; preds = %7, %8
%11 = icmp slt i32 %1, %2
%12 = select i1 %11, i32 %1, i32 %2
br label %167
13: ; preds = %7
%14 = icmp eq i32 %2, 0
%15 = select i1 %14, i32 %3, i32 %1
br label %167
16: ; preds = %7
%17 = icmp slt i32 %1, %4
%18 = select i1 %17, i32 %1, i32 %4
%19 = add nsw i32 %18, %2
br label %167
20: ; preds = %7
%21 = icmp eq i32 %4, %2
br i1 %21, label %167, label %22
22: ; preds = %20
%23 = tail call i32 @assert(i32 0)
br label %167
24: ; preds = %7, %7
%25 = icmp eq i32 %1, 0
%26 = zext i1 %25 to i32
br label %167
27: ; preds = %7, %7
%28 = icmp eq i32 %1, %2
%29 = zext i1 %28 to i32
br label %167
30: ; preds = %7, %7
%31 = icmp ne i32 %1, %2
%32 = zext i1 %31 to i32
br label %167
33: ; preds = %7
%34 = icmp slt i32 %1, %2
%35 = zext i1 %34 to i32
br label %167
36: ; preds = %7
%37 = icmp slt i32 %1, %2
%38 = zext i1 %37 to i32
br label %167
39: ; preds = %7
%40 = icmp sgt i32 %1, %2
%41 = zext i1 %40 to i32
br label %167
42: ; preds = %7
%43 = icmp sgt i32 %1, %2
%44 = zext i1 %43 to i32
br label %167
45: ; preds = %7
%46 = icmp sle i32 %1, %2
%47 = zext i1 %46 to i32
br label %167
48: ; preds = %7
%49 = icmp sle i32 %1, %2
%50 = zext i1 %49 to i32
br label %167
51: ; preds = %7
%52 = icmp sge i32 %1, %2
%53 = zext i1 %52 to i32
br label %167
54: ; preds = %7
%55 = icmp sge i32 %1, %2
%56 = zext i1 %55 to i32
br label %167
57: ; preds = %7
%58 = icmp slt i32 %1, %2
%59 = zext i1 %58 to i32
br label %167
60: ; preds = %7
%61 = icmp slt i32 %1, %2
%62 = zext i1 %61 to i32
br label %167
63: ; preds = %7
%64 = icmp sgt i32 %1, %2
%65 = zext i1 %64 to i32
br label %167
66: ; preds = %7
%67 = icmp sgt i32 %1, %2
%68 = zext i1 %67 to i32
br label %167
69: ; preds = %7
%70 = icmp sle i32 %1, %2
%71 = zext i1 %70 to i32
br label %167
72: ; preds = %7
%73 = icmp sle i32 %1, %2
%74 = zext i1 %73 to i32
br label %167
75: ; preds = %7
%76 = icmp sge i32 %1, %2
%77 = zext i1 %76 to i32
br label %167
78: ; preds = %7
%79 = icmp sge i32 %1, %2
%80 = zext i1 %79 to i32
br label %167
81: ; preds = %7
%82 = tail call i32 @clz32(i32 %1)
br label %167
83: ; preds = %7
%84 = tail call i32 @ctz32(i32 %1)
br label %167
85: ; preds = %7
%86 = tail call i32 @popcnt32(i32 %1)
br label %167
87: ; preds = %7
%88 = tail call i32 @clz64(i32 %1)
br label %167
89: ; preds = %7
%90 = tail call i32 @ctz64(i32 %1)
br label %167
91: ; preds = %7
%92 = tail call i32 @popcnt64(i32 %1)
br label %167
93: ; preds = %7
%94 = add nsw i32 %2, %1
br label %167
95: ; preds = %7
%96 = add nsw i32 %2, %1
br label %167
97: ; preds = %7
%98 = sub nsw i32 %1, %2
br label %167
99: ; preds = %7
%100 = sub nsw i32 %1, %2
br label %167
101: ; preds = %7
%102 = mul nsw i32 %2, %1
br label %167
103: ; preds = %7
%104 = mul nsw i32 %2, %1
br label %167
105: ; preds = %7
%106 = sdiv i32 %1, %2
br label %167
107: ; preds = %7
%108 = sdiv i32 %1, %2
br label %167
109: ; preds = %7
%110 = sdiv i32 %1, %2
br label %167
111: ; preds = %7
%112 = sdiv i32 %1, %2
br label %167
113: ; preds = %7
%114 = srem i32 %1, %2
br label %167
115: ; preds = %7
%116 = srem i32 %1, %2
br label %167
117: ; preds = %7
%118 = srem i32 %1, %2
br label %167
119: ; preds = %7
%120 = srem i32 %1, %2
br label %167
121: ; preds = %7, %7
%122 = and i32 %2, %1
br label %167
123: ; preds = %7, %7
%124 = or i32 %2, %1
br label %167
125: ; preds = %7, %7
%126 = xor i32 %2, %1
br label %167
127: ; preds = %7
%128 = shl i32 %1, %2
br label %167
129: ; preds = %7
%130 = shl i32 %1, %2
br label %167
131: ; preds = %7
%132 = ashr i32 %1, %2
br label %167
133: ; preds = %7
%134 = ashr i32 %1, %2
br label %167
135: ; preds = %7
%136 = ashr i32 %1, %2
br label %167
137: ; preds = %7
%138 = ashr i32 %1, %2
br label %167
139: ; preds = %7
%140 = shl i32 %1, %2
%141 = sub nsw i32 32, %2
%142 = ashr i32 %1, %141
%143 = or i32 %142, %140
br label %167
144: ; preds = %7
%145 = ashr i32 %1, %2
%146 = sub nsw i32 32, %2
%147 = shl i32 %1, %146
%148 = or i32 %147, %145
br label %167
149: ; preds = %7
%150 = shl i32 %1, %2
%151 = sub nsw i32 64, %2
%152 = shl i32 %1, %151
%153 = or i32 %152, %150
br label %167
154: ; preds = %7
%155 = ashr i32 %1, %2
%156 = sub nsw i32 64, %2
%157 = shl i32 %1, %156
%158 = or i32 %157, %155
br label %167
159: ; preds = %7
%160 = and i32 %0, 192
%161 = icmp eq i32 %160, 192
br i1 %161, label %162, label %167
162: ; preds = %159
%163 = tail call i32* @toMemory(i32 %2, i32 %3)
%164 = add nsw i32 %4, %1
%165 = and i32 %164, 7
%166 = tail call i32 @loadX(i32* %163, i32 %165, i32 %0)
br label %167
167: ; preds = %159, %20, %22, %13, %10, %5, %162, %154, %149, %144, %139, %137, %135, %133, %131, %129, %127, %125, %123, %121, %119, %117, %115, %113, %111, %109, %107, %105, %103, %101, %99, %97, %95, %93, %91, %89, %87, %85, %83, %81, %78, %75, %72, %69, %66, %63, %60, %57, %54, %51, %48, %45, %42, %39, %36, %33, %30, %27, %24, %16
%168 = phi i32 [ %166, %162 ], [ %158, %154 ], [ %153, %149 ], [ %148, %144 ], [ %143, %139 ], [ %138, %137 ], [ %136, %135 ], [ %134, %133 ], [ %132, %131 ], [ %130, %129 ], [ %128, %127 ], [ %126, %125 ], [ %124, %123 ], [ %122, %121 ], [ %120, %119 ], [ %118, %117 ], [ %116, %115 ], [ %114, %113 ], [ %112, %111 ], [ %110, %109 ], [ %108, %107 ], [ %106, %105 ], [ %104, %103 ], [ %102, %101 ], [ %100, %99 ], [ %98, %97 ], [ %96, %95 ], [ %94, %93 ], [ %92, %91 ], [ %90, %89 ], [ %88, %87 ], [ %86, %85 ], [ %84, %83 ], [ %82, %81 ], [ %80, %78 ], [ %77, %75 ], [ %74, %72 ], [ %71, %69 ], [ %68, %66 ], [ %65, %63 ], [ %62, %60 ], [ %59, %57 ], [ %56, %54 ], [ %53, %51 ], [ %50, %48 ], [ %47, %45 ], [ %44, %42 ], [ %41, %39 ], [ %38, %36 ], [ %35, %33 ], [ %32, %30 ], [ %29, %27 ], [ %26, %24 ], [ %19, %16 ], [ %1, %5 ], [ %12, %10 ], [ %15, %13 ], [ 0, %22 ], [ 0, %20 ], [ %1, %159 ]
ret i32 %168
}