int *primes_less_than_500(int *n) {
  *n = 0;
  int prime[500] = {[0 ... 499] = 1};
  for (int i = 2; i < 500; i++) {
    if (prime[i]) {
      (*n)++;
      for (int j = i * i; j < 500; j += i)
        prime[j] = 0;
    }
  }
  int *arr = (int *)malloc(sizeof(int) * (*n));
  int next = 0;
  for (int i = 2; i < 500; i++) {
    if (prime[i])
      arr[next++] = i;
  }
  return arr;
}


x86 assembly (clang, -O0):
push   %rbp
mov    %rsp,%rbp
sub    $0x800,%rsp
mov    %rdi,-0x8(%rbp)
mov    -0x8(%rbp),%rax
movl   $0x0,(%rax)
lea    -0x7e0(%rbp),%rdi
lea    0xeb9(%rip),%rsi
mov    $0x7d0,%edx
call   1030 <memcpy@plt>
movl   $0x2,-0x7e4(%rbp)
cmpl   $0x1f4,-0x7e4(%rbp)
jge    11f5 <primes_less_than_500+0xd5>
movslq -0x7e4(%rbp),%rax
cmpl   $0x0,-0x7e0(%rbp,%rax,4)
je     11dc <primes_less_than_500+0xbc>
mov    -0x8(%rbp),%rax
mov    (%rax),%ecx
add    $0x1,%ecx
mov    %ecx,(%rax)
mov    -0x7e4(%rbp),%eax
imul   -0x7e4(%rbp),%eax
mov    %eax,-0x7e8(%rbp)
cmpl   $0x1f4,-0x7e8(%rbp)
jge    11d7 <primes_less_than_500+0xb7>
movslq -0x7e8(%rbp),%rax
movl   $0x0,-0x7e0(%rbp,%rax,4)
mov    -0x7e4(%rbp),%eax
add    -0x7e8(%rbp),%eax
mov    %eax,-0x7e8(%rbp)
jmp    119e <primes_less_than_500+0x7e>
jmp    11dc <primes_less_than_500+0xbc>
jmp    11e1 <primes_less_than_500+0xc1>
mov    -0x7e4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x7e4(%rbp)
jmp    115b <primes_less_than_500+0x3b>
mov    -0x8(%rbp),%rax
movslq (%rax),%rdi
shl    $0x2,%rdi
call   1040 <malloc@plt>
mov    %rax,-0x7f0(%rbp)
movl   $0x0,-0x7f4(%rbp)
movl   $0x2,-0x7f8(%rbp)
cmpl   $0x1f4,-0x7f8(%rbp)
jge    1282 <primes_less_than_500+0x162>
movslq -0x7f8(%rbp),%rax
cmpl   $0x0,-0x7e0(%rbp,%rax,4)
je     1269 <primes_less_than_500+0x149>
mov    -0x7f8(%rbp),%edx
mov    -0x7f0(%rbp),%rax
mov    -0x7f4(%rbp),%ecx
mov    %ecx,%esi
add    $0x1,%esi
mov    %esi,-0x7f4(%rbp)
movslq %ecx,%rcx
mov    %edx,(%rax,%rcx,4)
jmp    126e <primes_less_than_500+0x14e>
mov    -0x7f8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x7f8(%rbp)
jmp    1220 <primes_less_than_500+0x100>
mov    -0x7f0(%rbp),%rax
add    $0x800,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
push   %r14
push   %rbx
sub    $0x7d8,%rsp
mov    %rdi,%r14
movl   $0x0,(%rdi)
lea    0xec6(%rip),%rsi
mov    %rsp,%rdi
mov    $0x7d0,%edx
call   1030 <memcpy@plt>
mov    $0x2,%eax
mov    $0x5,%edi
xor    %r8d,%r8d
mov    $0x4,%edx
mov    $0x8,%esi
jmp    1176 <primes_less_than_500+0x56>
add    $0x1,%rax
add    %edi,%edx
add    $0x2,%rdi
add    $0x4,%rsi
cmp    $0x1f4,%rax
je     11b7 <primes_less_than_500+0x97>
cmpl   $0x0,(%rsp,%rax,4)
je     1160 <primes_less_than_500+0x40>
add    $0x1,%r8d
mov    %r8d,(%r14)
mov    %rax,%rcx
imul   %rax,%rcx
cmp    $0x1f3,%rcx
ja     1160 <primes_less_than_500+0x40>
mov    %edx,%ebx
lea    (%rsp,%rbx,4),%rcx
nopl   0x0(%rax)
movl   $0x0,(%rcx)
add    %rax,%rbx
add    %rsi,%rcx
cmp    $0x1f4,%rbx
jb     11a0 <primes_less_than_500+0x80>
jmp    1160 <primes_less_than_500+0x40>
movslq %r8d,%rdi
shl    $0x2,%rdi
call   1040 <malloc@plt>
xor    %ecx,%ecx
mov    $0x3,%edx
mov    $0x2,%esi
jmp    11f0 <primes_less_than_500+0xd0>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
add    $0x2,%rdx
add    $0x2,%esi
cmp    $0x1f5,%rdx
je     1211 <primes_less_than_500+0xf1>
cmpl   $0x0,-0x4(%rsp,%rdx,4)
je     1200 <primes_less_than_500+0xe0>
movslq %ecx,%rdi
add    $0x1,%ecx
mov    %esi,(%rax,%rdi,4)
cmpl   $0x0,(%rsp,%rdx,4)
je     11e0 <primes_less_than_500+0xc0>
movslq %ecx,%rdi
add    $0x1,%ecx
mov    %edx,(%rax,%rdi,4)
jmp    11e0 <primes_less_than_500+0xc0>
add    $0x7d8,%rsp
pop    %rbx
pop    %r14
ret

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

LLVM IR (-O2):
@__const.primes_less_than_500.prime = [500 x i32] [i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1]
define noalias i32* @primes_less_than_500(i32* nocapture %0) {
%2 = alloca [500 x i32]
store i32 0, i32* %0
%3 = bitcast [500 x i32]* %2 to i8*
br label %9
4: ; preds = %28
%5 = sext i32 %29 to i64
%6 = shl nsw i64 %5, 2
%7 = tail call i8* @malloc(i64 %6)
%8 = bitcast i8* %7 to i32*
br label %36
9: ; preds = %1, %28
%10 = phi i32 [ 0, %1 ], [ %29, %28 ]
%11 = phi i64 [ 5, %1 ], [ %31, %28 ]
%12 = phi i64 [ 2, %1 ], [ %30, %28 ]
%13 = phi i32 [ 4, %1 ], [ %33, %28 ]
%14 = getelementptr inbounds [500 x i32], [500 x i32]* %2, i64 0, i64 %12
%15 = load i32, i32* %14
%16 = icmp eq i32 %15, 0
br i1 %16, label %28, label %17
17: ; preds = %9
%18 = add nsw i32 %10, 1
store i32 %18, i32* %0
%19 = mul nuw nsw i64 %12, %12
%20 = icmp ult i64 %19, 500
br i1 %20, label %21, label %28
21: ; preds = %17
%22 = zext i32 %13 to i64
br label %23
23: ; preds = %21, %23
%24 = phi i64 [ %26, %23 ], [ %22, %21 ]
%25 = getelementptr inbounds [500 x i32], [500 x i32]* %2, i64 0, i64 %24
store i32 0, i32* %25
%26 = add nuw nsw i64 %24, %12
%27 = icmp ult i64 %26, 500
br i1 %27, label %23, label %28
28: ; preds = %23, %17, %9
%29 = phi i32 [ %18, %17 ], [ %10, %9 ], [ %18, %23 ]
%30 = add nuw nsw i64 %12, 1
%31 = add nuw nsw i64 %11, 2
%32 = trunc i64 %11 to i32
%33 = add i32 %13, %32
%34 = icmp eq i64 %30, 500
br i1 %34, label %4, label %9
35: ; preds = %58
ret i32* %8
36: ; preds = %58, %4
%37 = phi i64 [ 2, %4 ], [ %60, %58 ]
%38 = phi i32 [ 0, %4 ], [ %59, %58 ]
%39 = getelementptr inbounds [500 x i32], [500 x i32]* %2, i64 0, i64 %37
%40 = load i32, i32* %39
%41 = icmp eq i32 %40, 0
br i1 %41, label %47, label %42
42: ; preds = %36
%43 = add nsw i32 %38, 1
%44 = sext i32 %38 to i64
%45 = getelementptr inbounds i32, i32* %8, i64 %44
%46 = trunc i64 %37 to i32
store i32 %46, i32* %45
br label %47
47: ; preds = %36, %42
%48 = phi i32 [ %43, %42 ], [ %38, %36 ]
%49 = or i64 %37, 1
%50 = getelementptr inbounds [500 x i32], [500 x i32]* %2, i64 0, i64 %49
%51 = load i32, i32* %50
%52 = icmp eq i32 %51, 0
br i1 %52, label %58, label %53
53: ; preds = %47
%54 = add nsw i32 %48, 1
%55 = sext i32 %48 to i64
%56 = getelementptr inbounds i32, i32* %8, i64 %55
%57 = trunc i64 %49 to i32
store i32 %57, i32* %56
br label %58
58: ; preds = %53, %47
%59 = phi i32 [ %54, %53 ], [ %48, %47 ]
%60 = add nuw nsw i64 %37, 2
%61 = icmp eq i64 %60, 500
br i1 %61, label %35, label %36
}