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

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
int /*<<< orphan*/ assert(int);
scalar_t__ int_hash(int *);
void test_int_hash(void) {
  int array[200];
  int i, j;
  for (i = 0; i < 200; ++i) {
    array[i] = i;
  }
  for (i = 0; i < 200; ++i) {
    for (j = i + 1; j < 200; ++j) {
      assert(int_hash(&array[i]) != int_hash(&array[j]));
    }
  }
  i = 5000;
  j = 5000;
  assert(int_hash(&i) == int_hash(&j));
}


x86 assembly (clang, -O0):
<test_int_hash>:
push   %rbp
mov    %rsp,%rbp
sub    $0x340,%rsp
movl   $0x0,-0x324(%rbp)
cmpl   $0xc8,-0x324(%rbp)
jge    116d <test_int_hash+0x4d>
mov    -0x324(%rbp),%ecx
movslq -0x324(%rbp),%rax
mov    %ecx,-0x320(%rbp,%rax,4)
mov    -0x324(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x324(%rbp)
jmp    1135 <test_int_hash+0x15>
movl   $0x0,-0x324(%rbp)
cmpl   $0xc8,-0x324(%rbp)
jge    1228 <test_int_hash+0x108>
mov    -0x324(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x328(%rbp)
cmpl   $0xc8,-0x328(%rbp)
jge    120f <test_int_hash+0xef>
movslq -0x324(%rbp),%rax
lea    -0x320(%rbp),%rdi
shl    $0x2,%rax
add    %rax,%rdi
call   1030 <int_hash@plt>
mov    %rax,-0x330(%rbp)
movslq -0x328(%rbp),%rax
lea    -0x320(%rbp),%rdi
shl    $0x2,%rax
add    %rax,%rdi
call   1030 <int_hash@plt>
mov    %rax,%rcx
mov    -0x330(%rbp),%rax
cmp    %rcx,%rax
setne  %al
and    $0x1,%al
movzbl %al,%edi
call   1040 <assert@plt>
mov    -0x328(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x328(%rbp)
jmp    1196 <test_int_hash+0x76>
jmp    1214 <test_int_hash+0xf4>
mov    -0x324(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x324(%rbp)
jmp    1177 <test_int_hash+0x57>
movl   $0x1388,-0x324(%rbp)
movl   $0x1388,-0x328(%rbp)
lea    -0x324(%rbp),%rdi
call   1030 <int_hash@plt>
mov    %rax,-0x338(%rbp)
lea    -0x328(%rbp),%rdi
call   1030 <int_hash@plt>
mov    %rax,%rcx
mov    -0x338(%rbp),%rax
cmp    %rcx,%rax
sete   %al
and    $0x1,%al
movzbl %al,%edi
call   1040 <assert@plt>
add    $0x340,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<test_int_hash>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x338,%rsp
movaps 0xec8(%rip),%xmm0
movaps %xmm0,0x10(%rsp)
movaps 0xecc(%rip),%xmm0
movaps %xmm0,0x20(%rsp)
movaps 0xed0(%rip),%xmm0
movaps %xmm0,0x30(%rsp)
movaps 0xed4(%rip),%xmm0
movaps %xmm0,0x40(%rsp)
movaps 0xed8(%rip),%xmm0
movaps %xmm0,0x50(%rsp)
movaps 0xedc(%rip),%xmm0
movaps %xmm0,0x60(%rsp)
movaps 0xee0(%rip),%xmm0
movaps %xmm0,0x70(%rsp)
movaps 0xee4(%rip),%xmm0
movaps %xmm0,0x80(%rsp)
movaps 0xee5(%rip),%xmm0
movaps %xmm0,0x90(%rsp)
movaps 0xee6(%rip),%xmm0
movaps %xmm0,0xa0(%rsp)
movaps 0xee7(%rip),%xmm0
movaps %xmm0,0xb0(%rsp)
movaps 0xee8(%rip),%xmm0
movaps %xmm0,0xc0(%rsp)
movaps 0xee9(%rip),%xmm0
movaps %xmm0,0xd0(%rsp)
movaps 0xeea(%rip),%xmm0
movaps %xmm0,0xe0(%rsp)
movaps 0xeeb(%rip),%xmm0
movaps %xmm0,0xf0(%rsp)
movaps 0xeec(%rip),%xmm0
movaps %xmm0,0x100(%rsp)
movaps 0xeed(%rip),%xmm0
movaps %xmm0,0x110(%rsp)
movaps 0xeee(%rip),%xmm0
movaps %xmm0,0x120(%rsp)
movaps 0xeef(%rip),%xmm0
movaps %xmm0,0x130(%rsp)
movaps 0xef0(%rip),%xmm0
movaps %xmm0,0x140(%rsp)
movaps 0xef1(%rip),%xmm0
movaps %xmm0,0x150(%rsp)
movaps 0xef2(%rip),%xmm0
movaps %xmm0,0x160(%rsp)
movaps 0xef3(%rip),%xmm0
movaps %xmm0,0x170(%rsp)
movaps 0xef4(%rip),%xmm0
movaps %xmm0,0x180(%rsp)
movaps 0xef5(%rip),%xmm0
movaps %xmm0,0x190(%rsp)
movaps 0xef6(%rip),%xmm0
movaps %xmm0,0x1a0(%rsp)
movaps 0xef7(%rip),%xmm0
movaps %xmm0,0x1b0(%rsp)
movaps 0xef8(%rip),%xmm0
movaps %xmm0,0x1c0(%rsp)
movaps 0xef9(%rip),%xmm0
movaps %xmm0,0x1d0(%rsp)
movaps 0xefa(%rip),%xmm0
movaps %xmm0,0x1e0(%rsp)
movaps 0xefb(%rip),%xmm0
movaps %xmm0,0x1f0(%rsp)
movaps 0xefc(%rip),%xmm0
movaps %xmm0,0x200(%rsp)
movaps 0xefd(%rip),%xmm0
movaps %xmm0,0x210(%rsp)
movaps 0xefe(%rip),%xmm0
movaps %xmm0,0x220(%rsp)
movaps 0xeff(%rip),%xmm0
movaps %xmm0,0x230(%rsp)
movaps 0xf00(%rip),%xmm0
movaps %xmm0,0x240(%rsp)
movaps 0xf01(%rip),%xmm0
movaps %xmm0,0x250(%rsp)
movaps 0xf02(%rip),%xmm0
movaps %xmm0,0x260(%rsp)
movaps 0xf03(%rip),%xmm0
movaps %xmm0,0x270(%rsp)
movaps 0xf04(%rip),%xmm0
movaps %xmm0,0x280(%rsp)
movaps 0xf05(%rip),%xmm0
movaps %xmm0,0x290(%rsp)
movaps 0xf06(%rip),%xmm0
movaps %xmm0,0x2a0(%rsp)
movaps 0xf07(%rip),%xmm0
movaps %xmm0,0x2b0(%rsp)
movaps 0xf08(%rip),%xmm0
movaps %xmm0,0x2c0(%rsp)
movaps 0xf09(%rip),%xmm0
movaps %xmm0,0x2d0(%rsp)
movaps 0xf0a(%rip),%xmm0
movaps %xmm0,0x2e0(%rsp)
movaps 0xf0b(%rip),%xmm0
movaps %xmm0,0x2f0(%rsp)
movaps 0xf0c(%rip),%xmm0
movaps %xmm0,0x300(%rsp)
movaps 0xf0d(%rip),%xmm0
movaps %xmm0,0x310(%rsp)
movaps 0xf0e(%rip),%xmm0
movaps %xmm0,0x320(%rsp)
lea    0x14(%rsp),%r12
xor    %ebp,%ebp
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
cmp    $0xc6,%ebp
ja     1490 <test_int_hash+0x370>
lea    0x1(%rbp),%eax
mov    %eax,0xc(%rsp)
mov    %ebp,%eax
lea    (%rsp,%rax,4),%r14
add    $0x10,%r14
mov    %r12,%rbx
mov    %ebp,%r13d
nop
mov    %r14,%rdi
call   1030 <int_hash@plt>
mov    %rax,%r15
mov    %rbx,%rdi
call   1030 <int_hash@plt>
xor    %edi,%edi
cmp    %rax,%r15
setne  %dil
call   1040 <assert@plt>
lea    0x2(%r13),%eax
mov    %eax,0x4(%rsp)
add    $0x1,%r13d
add    $0x4,%rbx
cmp    $0xc7,%r13d
jb     1440 <test_int_hash+0x320>
mov    0xc(%rsp),%eax
mov    %eax,0x8(%rsp)
add    $0x4,%r12
cmp    $0xc7,%ebp
mov    %eax,%ebp
jb     1420 <test_int_hash+0x300>
movl   $0x1388,0x8(%rsp)
movl   $0x1388,0x4(%rsp)
lea    0x8(%rsp),%rdi
call   1030 <int_hash@plt>
mov    %rax,%rbx
lea    0x4(%rsp),%rdi
call   1030 <int_hash@plt>
xor    %edi,%edi
cmp    %rax,%rbx
sete   %dil
call   1040 <assert@plt>
add    $0x338,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
define void @test_int_hash() {
%1 = alloca [200 x i32]
%2 = alloca i32
%3 = alloca i32
store i32 0, i32* %2
br label %4
4: ; preds = %12, %0
%5 = load i32, i32* %2
%6 = icmp slt i32 %5, 200
br i1 %6, label %7, label %15
7: ; preds = %4
%8 = load i32, i32* %2
%9 = load i32, i32* %2
%10 = sext i32 %9 to i64
%11 = getelementptr inbounds [200 x i32], [200 x i32]* %1, i64 0, i64 %10
store i32 %8, i32* %11
br label %12
12: ; preds = %7
%13 = load i32, i32* %2
%14 = add nsw i32 %13, 1
store i32 %14, i32* %2
br label %4
15: ; preds = %4
store i32 0, i32* %2
br label %16
16: ; preds = %41, %15
%17 = load i32, i32* %2
%18 = icmp slt i32 %17, 200
br i1 %18, label %19, label %44
19: ; preds = %16
%20 = load i32, i32* %2
%21 = add nsw i32 %20, 1
store i32 %21, i32* %3
br label %22
22: ; preds = %37, %19
%23 = load i32, i32* %3
%24 = icmp slt i32 %23, 200
br i1 %24, label %25, label %40
25: ; preds = %22
%26 = load i32, i32* %2
%27 = sext i32 %26 to i64
%28 = getelementptr inbounds [200 x i32], [200 x i32]* %1, i64 0, i64 %27
%29 = call i64 @int_hash(i32* %28)
%30 = load i32, i32* %3
%31 = sext i32 %30 to i64
%32 = getelementptr inbounds [200 x i32], [200 x i32]* %1, i64 0, i64 %31
%33 = call i64 @int_hash(i32* %32)
%34 = icmp ne i64 %29, %33
%35 = zext i1 %34 to i32
%36 = call i32 @assert(i32 %35)
br label %37
37: ; preds = %25
%38 = load i32, i32* %3
%39 = add nsw i32 %38, 1
store i32 %39, i32* %3
br label %22
40: ; preds = %22
br label %41
41: ; preds = %40
%42 = load i32, i32* %2
%43 = add nsw i32 %42, 1
store i32 %43, i32* %2
br label %16
44: ; preds = %16
store i32 5000, i32* %2
store i32 5000, i32* %3
%45 = call i64 @int_hash(i32* %2)
%46 = call i64 @int_hash(i32* %3)
%47 = icmp eq i64 %45, %46
%48 = zext i1 %47 to i32
%49 = call i32 @assert(i32 %48)
ret void
}

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