int parameter_init(int *PassiveSet, int *NotGood, int *Ninf, int *P, int K,
                   int N, double *X) {
  int k, i, all = 1;
  for (k = 0; k < K; k++) {
    for (i = 0; i < N; i++) {
      PassiveSet[k * N + i] = X[k * N + i] > 0;
      all = all && X[k * N + i] == 0;
    }
  }
  for (i = 0; i < N; i++)
    NotGood[i] = 1;
  for (i = 0; i < N; i++) {
    P[i] = 3;
    Ninf[i] = K + 1;
  }
  return all;
}


x86 assembly (clang, -O0):
<parameter_init>:
push   %rbp
mov    %rsp,%rbp
mov    0x10(%rbp),%rax
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
mov    %rcx,-0x20(%rbp)
mov    %r8d,-0x24(%rbp)
mov    %r9d,-0x28(%rbp)
movl   $0x1,-0x34(%rbp)
movl   $0x0,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
cmp    -0x24(%rbp),%eax
jge    11e9 <parameter_init+0xe9>
movl   $0x0,-0x30(%rbp)
mov    -0x30(%rbp),%eax
cmp    -0x28(%rbp),%eax
jge    11d6 <parameter_init+0xd6>
mov    0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
imul   -0x28(%rbp),%ecx
add    -0x30(%rbp),%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
seta   %al
and    $0x1,%al
movzbl %al,%edx
mov    -0x8(%rbp),%rax
mov    -0x2c(%rbp),%ecx
imul   -0x28(%rbp),%ecx
add    -0x30(%rbp),%ecx
movslq %ecx,%rcx
mov    %edx,(%rax,%rcx,4)
xor    %eax,%eax
cmpl   $0x0,-0x34(%rbp)
mov    %al,-0x35(%rbp)
je     11bd <parameter_init+0xbd>
mov    0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
imul   -0x28(%rbp),%ecx
add    -0x30(%rbp),%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
sete   %al
setnp  %cl
and    %cl,%al
mov    %al,-0x35(%rbp)
mov    -0x35(%rbp),%al
and    $0x1,%al
movzbl %al,%eax
mov    %eax,-0x34(%rbp)
mov    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
jmp    1141 <parameter_init+0x41>
jmp    11db <parameter_init+0xdb>
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
jmp    112e <parameter_init+0x2e>
movl   $0x0,-0x30(%rbp)
mov    -0x30(%rbp),%eax
cmp    -0x28(%rbp),%eax
jge    1219 <parameter_init+0x119>
mov    -0x10(%rbp),%rax
movslq -0x30(%rbp),%rcx
movl   $0x1,(%rax,%rcx,4)
mov    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
jmp    11f0 <parameter_init+0xf0>
movl   $0x0,-0x30(%rbp)
mov    -0x30(%rbp),%eax
cmp    -0x28(%rbp),%eax
jge    125a <parameter_init+0x15a>
mov    -0x20(%rbp),%rax
movslq -0x30(%rbp),%rcx
movl   $0x3,(%rax,%rcx,4)
mov    -0x24(%rbp),%edx
add    $0x1,%edx
mov    -0x18(%rbp),%rax
movslq -0x30(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
jmp    1220 <parameter_init+0x120>
mov    -0x34(%rbp),%eax
pop    %rbp
ret

x86 assembly (clang, -O2):
<parameter_init>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
mov    %rcx,-0x18(%rsp)
mov    %rdx,-0x20(%rsp)
mov    %r9d,%ecx
test   %r8d,%r8d
mov    %r8d,-0x24(%rsp)
jle    123b <parameter_init+0x13b>
mov    0x38(%rsp),%rdx
movslq %r9d,%rax
mov    %r8d,%r15d
mov    %ecx,%r12d
and    $0xfffffffe,%r12d
mov    %rdi,-0x10(%rsp)
lea    0x4(%rdi),%r8
lea    0x0(,%rax,4),%r13
lea    0x8(%rdx),%rbp
mov    %rax,%rdx
lea    0x0(,%rax,8),%r11
mov    $0x1,%eax
xor    %r14d,%r14d
xorpd  %xmm0,%xmm0
mov    %rcx,-0x8(%rsp)
jmp    1183 <parameter_init+0x83>
nopw   0x0(%rax,%rax,1)
add    $0x1,%r14
add    %r13,%r8
add    %r11,%rbp
cmp    %r15,%r14
je     1240 <parameter_init+0x140>
test   %r9d,%r9d
jle    1170 <parameter_init+0x70>
xor    %edi,%edi
cmp    $0x1,%r9d
je     11ea <parameter_init+0xea>
movsd  -0x8(%rbp,%rdi,8),%xmm1
xor    %r10d,%r10d
ucomisd %xmm0,%xmm1
seta   %r10b
mov    %r10d,-0x4(%r8,%rdi,4)
test   %eax,%eax
setne  %r10b
ucomisd %xmm1,%xmm0
setnp  %bl
sete   %al
and    %bl,%al
and    %r10b,%al
movsd  0x0(%rbp,%rdi,8),%xmm1
xor    %ebx,%ebx
ucomisd %xmm0,%xmm1
seta   %bl
ucomisd %xmm1,%xmm0
mov    %ebx,(%r8,%rdi,4)
setnp  %r10b
sete   %bl
and    %r10b,%bl
and    %al,%bl
movzbl %bl,%eax
add    $0x2,%rdi
cmp    %rdi,%r12
jne    1190 <parameter_init+0x90>
mov    -0x8(%rsp),%rcx
test   $0x1,%cl
je     1170 <parameter_init+0x70>
mov    %r14,%rbx
imul   %rdx,%rbx
add    %rbx,%rdi
mov    0x38(%rsp),%rbx
movsd  (%rbx,%rdi,8),%xmm1
xor    %ebx,%ebx
ucomisd %xmm0,%xmm1
seta   %bl
mov    -0x10(%rsp),%r10
mov    %ebx,(%r10,%rdi,4)
test   %eax,%eax
setne  %dil
ucomisd %xmm1,%xmm0
setnp  %bl
sete   %al
and    %bl,%al
and    %dil,%al
movzbl %al,%eax
jmp    1170 <parameter_init+0x70>
mov    $0x1,%eax
test   %r9d,%r9d
mov    -0x24(%rsp),%r8d
mov    -0x18(%rsp),%r10
mov    -0x20(%rsp),%rdx
jle    1548 <parameter_init+0x448>
cmp    $0x8,%r9d
jae    1265 <parameter_init+0x165>
xor    %edi,%edi
jmp    1360 <parameter_init+0x260>
mov    %ecx,%edi
and    $0xfffffff8,%edi
lea    -0x8(%rdi),%rbx
mov    %rbx,%rbp
shr    $0x3,%rbp
add    $0x1,%rbp
mov    %ebp,%r11d
and    $0x7,%r11d
cmp    $0x38,%rbx
jae    128d <parameter_init+0x18d>
xor    %ebx,%ebx
jmp    1325 <parameter_init+0x225>
and    $0xfffffffffffffff8,%rbp
xor    %ebx,%ebx
movapd 0xd65(%rip),%xmm0
nopl   0x0(%rax,%rax,1)
movupd %xmm0,(%rsi,%rbx,4)
movupd %xmm0,0x10(%rsi,%rbx,4)
movupd %xmm0,0x20(%rsi,%rbx,4)
movupd %xmm0,0x30(%rsi,%rbx,4)
movupd %xmm0,0x40(%rsi,%rbx,4)
movupd %xmm0,0x50(%rsi,%rbx,4)
movupd %xmm0,0x60(%rsi,%rbx,4)
movupd %xmm0,0x70(%rsi,%rbx,4)
movupd %xmm0,0x80(%rsi,%rbx,4)
movupd %xmm0,0x90(%rsi,%rbx,4)
movupd %xmm0,0xa0(%rsi,%rbx,4)
movupd %xmm0,0xb0(%rsi,%rbx,4)
movupd %xmm0,0xc0(%rsi,%rbx,4)
movupd %xmm0,0xd0(%rsi,%rbx,4)
movupd %xmm0,0xe0(%rsi,%rbx,4)
movupd %xmm0,0xf0(%rsi,%rbx,4)
add    $0x40,%rbx
add    $0xfffffffffffffff8,%rbp
jne    12a0 <parameter_init+0x1a0>
test   %r11,%r11
je     1354 <parameter_init+0x254>
lea    (%rsi,%rbx,4),%rbx
add    $0x10,%rbx
shl    $0x5,%r11
xor    %ebp,%ebp
movapd 0xcc0(%rip),%xmm0
movupd %xmm0,-0x10(%rbx,%rbp,1)
movupd %xmm0,(%rbx,%rbp,1)
add    $0x20,%rbp
cmp    %rbp,%r11
jne    1340 <parameter_init+0x240>
cmp    %rcx,%rdi
je     1370 <parameter_init+0x270>
nopl   0x0(%rax)
movl   $0x1,(%rsi,%rdi,4)
add    $0x1,%rdi
cmp    %rdi,%rcx
jne    1360 <parameter_init+0x260>
test   %r9d,%r9d
jle    1548 <parameter_init+0x448>
add    $0x1,%r8d
cmp    $0x8,%r9d
jb     139d <parameter_init+0x29d>
lea    (%rdx,%rcx,4),%rsi
cmp    %r10,%rsi
jbe    1424 <parameter_init+0x324>
lea    (%r10,%rcx,4),%rsi
cmp    %rdx,%rsi
jbe    1424 <parameter_init+0x324>
xor    %esi,%esi
mov    %rsi,%rdi
not    %rdi
add    %rcx,%rdi
mov    %rcx,%rbp
and    $0x3,%rbp
je     13d6 <parameter_init+0x2d6>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
movl   $0x3,(%r10,%rsi,4)
mov    %r8d,(%rdx,%rsi,4)
add    $0x1,%rsi
add    $0xffffffffffffffff,%rbp
jne    13c0 <parameter_init+0x2c0>
cmp    $0x3,%rdi
jb     1548 <parameter_init+0x448>
movl   $0x3,(%r10,%rsi,4)
mov    %r8d,(%rdx,%rsi,4)
movl   $0x3,0x4(%r10,%rsi,4)
mov    %r8d,0x4(%rdx,%rsi,4)
movl   $0x3,0x8(%r10,%rsi,4)
mov    %r8d,0x8(%rdx,%rsi,4)
movl   $0x3,0xc(%r10,%rsi,4)
mov    %r8d,0xc(%rdx,%rsi,4)
add    $0x4,%rsi
cmp    %rsi,%rcx
jne    13e0 <parameter_init+0x2e0>
jmp    1548 <parameter_init+0x448>
mov    %ecx,%esi
and    $0xfffffff8,%esi
movd   %r8d,%xmm0
pshufd $0x0,%xmm0,%xmm0
lea    -0x8(%rsi),%rbp
mov    %rbp,%rdi
shr    $0x3,%rdi
add    $0x1,%rdi
mov    %edi,%r9d
and    $0x3,%r9d
cmp    $0x18,%rbp
jae    1456 <parameter_init+0x356>
xor    %ebx,%ebx
jmp    14f0 <parameter_init+0x3f0>
movabs $0x3ffffffffffffff8,%rbp
ff ff 3f
or     $0x4,%rbp
and    %rbp,%rdi
xor    %ebx,%ebx
movapd 0xb9f(%rip),%xmm1
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
movupd %xmm1,(%r10,%rbx,4)
movupd %xmm1,0x10(%r10,%rbx,4)
movdqu %xmm0,(%rdx,%rbx,4)
movdqu %xmm0,0x10(%rdx,%rbx,4)
movupd %xmm1,0x20(%r10,%rbx,4)
movupd %xmm1,0x30(%r10,%rbx,4)
movdqu %xmm0,0x20(%rdx,%rbx,4)
movdqu %xmm0,0x30(%rdx,%rbx,4)
movupd %xmm1,0x40(%r10,%rbx,4)
movupd %xmm1,0x50(%r10,%rbx,4)
movdqu %xmm0,0x40(%rdx,%rbx,4)
movdqu %xmm0,0x50(%rdx,%rbx,4)
movupd %xmm1,0x60(%r10,%rbx,4)
movupd %xmm1,0x70(%r10,%rbx,4)
movdqu %xmm0,0x60(%rdx,%rbx,4)
movdqu %xmm0,0x70(%rdx,%rbx,4)
add    $0x20,%rbx
add    $0xfffffffffffffffc,%rdi
jne    1480 <parameter_init+0x380>
test   %r9,%r9
je     153f <parameter_init+0x43f>
lea    (%rdx,%rbx,4),%rdi
add    $0x10,%rdi
lea    (%r10,%rbx,4),%rbx
add    $0x10,%rbx
shl    $0x5,%r9
xor    %ebp,%ebp
movapd 0xafd(%rip),%xmm1
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
movupd %xmm1,-0x10(%rbx,%rbp,1)
movupd %xmm1,(%rbx,%rbp,1)
movdqu %xmm0,-0x10(%rdi,%rbp,1)
movdqu %xmm0,(%rdi,%rbp,1)
add    $0x20,%rbp
cmp    %rbp,%r9
jne    1520 <parameter_init+0x420>
cmp    %rcx,%rsi
jne    139f <parameter_init+0x29f>
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
define i32 @parameter_init(i32* %0, i32* %1, i32* %2, i32* %3, i32 %4, i32 %5, double* %6) {
%8 = alloca i32*
%9 = alloca i32*
%10 = alloca i32*
%11 = alloca i32*
%12 = alloca i32
%13 = alloca i32
%14 = alloca double*
%15 = alloca i32
%16 = alloca i32
%17 = alloca i32
store i32* %0, i32** %8
store i32* %1, i32** %9
store i32* %2, i32** %10
store i32* %3, i32** %11
store i32 %4, i32* %12
store i32 %5, i32* %13
store double* %6, double** %14
store i32 1, i32* %17
store i32 0, i32* %15
br label %18
18: ; preds = %67, %7
%19 = load i32, i32* %15
%20 = load i32, i32* %12
%21 = icmp slt i32 %19, %20
br i1 %21, label %22, label %70
22: ; preds = %18
store i32 0, i32* %16
br label %23
23: ; preds = %63, %22
%24 = load i32, i32* %16
%25 = load i32, i32* %13
%26 = icmp slt i32 %24, %25
br i1 %26, label %27, label %66
27: ; preds = %23
%28 = load double*, double** %14
%29 = load i32, i32* %15
%30 = load i32, i32* %13
%31 = mul nsw i32 %29, %30
%32 = load i32, i32* %16
%33 = add nsw i32 %31, %32
%34 = sext i32 %33 to i64
%35 = getelementptr inbounds double, double* %28, i64 %34
%36 = load double, double* %35
%37 = fcmp ogt double %36, 0.000000e+00
%38 = zext i1 %37 to i32
%39 = load i32*, i32** %8
%40 = load i32, i32* %15
%41 = load i32, i32* %13
%42 = mul nsw i32 %40, %41
%43 = load i32, i32* %16
%44 = add nsw i32 %42, %43
%45 = sext i32 %44 to i64
%46 = getelementptr inbounds i32, i32* %39, i64 %45
store i32 %38, i32* %46
%47 = load i32, i32* %17
%48 = icmp ne i32 %47, 0
br i1 %48, label %49, label %60
49: ; preds = %27
%50 = load double*, double** %14
%51 = load i32, i32* %15
%52 = load i32, i32* %13
%53 = mul nsw i32 %51, %52
%54 = load i32, i32* %16
%55 = add nsw i32 %53, %54
%56 = sext i32 %55 to i64
%57 = getelementptr inbounds double, double* %50, i64 %56
%58 = load double, double* %57
%59 = fcmp oeq double %58, 0.000000e+00
br label %60
60: ; preds = %49, %27
%61 = phi i1 [ false, %27 ], [ %59, %49 ]
%62 = zext i1 %61 to i32
store i32 %62, i32* %17
br label %63
63: ; preds = %60
%64 = load i32, i32* %16
%65 = add nsw i32 %64, 1
store i32 %65, i32* %16
br label %23
66: ; preds = %23
br label %67
67: ; preds = %66
%68 = load i32, i32* %15
%69 = add nsw i32 %68, 1
store i32 %69, i32* %15
br label %18
70: ; preds = %18
store i32 0, i32* %16
br label %71
71: ; preds = %80, %70
%72 = load i32, i32* %16
%73 = load i32, i32* %13
%74 = icmp slt i32 %72, %73
br i1 %74, label %75, label %83
75: ; preds = %71
%76 = load i32*, i32** %9
%77 = load i32, i32* %16
%78 = sext i32 %77 to i64
%79 = getelementptr inbounds i32, i32* %76, i64 %78
store i32 1, i32* %79
br label %80
80: ; preds = %75
%81 = load i32, i32* %16
%82 = add nsw i32 %81, 1
store i32 %82, i32* %16
br label %71
83: ; preds = %71
store i32 0, i32* %16
br label %84
84: ; preds = %99, %83
%85 = load i32, i32* %16
%86 = load i32, i32* %13
%87 = icmp slt i32 %85, %86
br i1 %87, label %88, label %102
88: ; preds = %84
%89 = load i32*, i32** %11
%90 = load i32, i32* %16
%91 = sext i32 %90 to i64
%92 = getelementptr inbounds i32, i32* %89, i64 %91
store i32 3, i32* %92
%93 = load i32, i32* %12
%94 = add nsw i32 %93, 1
%95 = load i32*, i32** %10
%96 = load i32, i32* %16
%97 = sext i32 %96 to i64
%98 = getelementptr inbounds i32, i32* %95, i64 %97
store i32 %94, i32* %98
br label %99
99: ; preds = %88
%100 = load i32, i32* %16
%101 = add nsw i32 %100, 1
store i32 %101, i32* %16
br label %84
102: ; preds = %84
%103 = load i32, i32* %17
ret i32 %103
}

LLVM IR (-O2):
define i32 @parameter_init(i32* nocapture writeonly %0, i32* nocapture writeonly %1, i32* nocapture writeonly %2, i32* nocapture writeonly %3, i32 %4, i32 %5, double* nocapture %6) {
%8 = icmp sgt i32 %4, 0
br i1 %8, label %9, label %23
9: ; preds = %7
%10 = icmp sgt i32 %5, 0
%11 = sext i32 %5 to i64
%12 = zext i32 %4 to i64
%13 = zext i32 %5 to i64
%14 = and i64 %13, 1
%15 = icmp eq i32 %5, 1
%16 = and i64 %13, 4294967294
%17 = icmp eq i64 %14, 0
br label %18
18: ; preds = %9, %141
%19 = phi i64 [ 0, %9 ], [ %143, %141 ]
%20 = phi i32 [ 1, %9 ], [ %142, %141 ]
br i1 %10, label %21, label %141
21: ; preds = %18
%22 = mul nsw i64 %19, %11
br i1 %15, label %126, label %100
23: ; preds = %141, %7
%24 = phi i32 [ 1, %7 ], [ %142, %141 ]
%25 = icmp sgt i32 %5, 0
br i1 %25, label %26, label %266
26: ; preds = %23
%27 = zext i32 %5 to i64
%28 = icmp ult i32 %5, 8
br i1 %28, label %98, label %29
29: ; preds = %26
%30 = and i64 %27, 4294967288
%31 = add nsw i64 %30, -8
%32 = lshr exact i64 %31, 3
%33 = add nuw nsw i64 %32, 1
%34 = and i64 %33, 7
%35 = icmp ult i64 %31, 56
br i1 %35, label %83, label %36
36: ; preds = %29
%37 = and i64 %33, 4611686018427387896
br label %38
38: ; preds = %38, %36
%39 = phi i64 [ 0, %36 ], [ %80, %38 ]
%40 = phi i64 [ 0, %36 ], [ %81, %38 ]
%41 = getelementptr inbounds i32, i32* %1, i64 %39
%42 = bitcast i32* %41 to <4 x i32>*
store <4 x i32> <i32 1, i32 1, i32 1, i32 1>, <4 x i32>* %42
%43 = getelementptr inbounds i32, i32* %41, i64 4
%44 = bitcast i32* %43 to <4 x i32>*
store <4 x i32> <i32 1, i32 1, i32 1, i32 1>, <4 x i32>* %44
%45 = or i64 %39, 8
%46 = getelementptr inbounds i32, i32* %1, i64 %45
%47 = bitcast i32* %46 to <4 x i32>*
store <4 x i32> <i32 1, i32 1, i32 1, i32 1>, <4 x i32>* %47
%48 = getelementptr inbounds i32, i32* %46, i64 4
%49 = bitcast i32* %48 to <4 x i32>*
store <4 x i32> <i32 1, i32 1, i32 1, i32 1>, <4 x i32>* %49
%50 = or i64 %39, 16
%51 = getelementptr inbounds i32, i32* %1, i64 %50
%52 = bitcast i32* %51 to <4 x i32>*
store <4 x i32> <i32 1, i32 1, i32 1, i32 1>, <4 x i32>* %52
%53 = getelementptr inbounds i32, i32* %51, i64 4
%54 = bitcast i32* %53 to <4 x i32>*
store <4 x i32> <i32 1, i32 1, i32 1, i32 1>, <4 x i32>* %54
%55 = or i64 %39, 24
%56 = getelementptr inbounds i32, i32* %1, i64 %55
%57 = bitcast i32* %56 to <4 x i32>*
store <4 x i32> <i32 1, i32 1, i32 1, i32 1>, <4 x i32>* %57
%58 = getelementptr inbounds i32, i32* %56, i64 4
%59 = bitcast i32* %58 to <4 x i32>*
store <4 x i32> <i32 1, i32 1, i32 1, i32 1>, <4 x i32>* %59
%60 = or i64 %39, 32
%61 = getelementptr inbounds i32, i32* %1, i64 %60
%62 = bitcast i32* %61 to <4 x i32>*
store <4 x i32> <i32 1, i32 1, i32 1, i32 1>, <4 x i32>* %62
%63 = getelementptr inbounds i32, i32* %61, i64 4
%64 = bitcast i32* %63 to <4 x i32>*
store <4 x i32> <i32 1, i32 1, i32 1, i32 1>, <4 x i32>* %64
%65 = or i64 %39, 40
%66 = getelementptr inbounds i32, i32* %1, i64 %65
%67 = bitcast i32* %66 to <4 x i32>*
store <4 x i32> <i32 1, i32 1, i32 1, i32 1>, <4 x i32>* %67
%68 = getelementptr inbounds i32, i32* %66, i64 4
%69 = bitcast i32* %68 to <4 x i32>*
store <4 x i32> <i32 1, i32 1, i32 1, i32 1>, <4 x i32>* %69
%70 = or i64 %39, 48
%71 = getelementptr inbounds i32, i32* %1, i64 %70
%72 = bitcast i32* %71 to <4 x i32>*
store <4 x i32> <i32 1, i32 1, i32 1, i32 1>, <4 x i32>* %72
%73 = getelementptr inbounds i32, i32* %71, i64 4
%74 = bitcast i32* %73 to <4 x i32>*
store <4 x i32> <i32 1, i32 1, i32 1, i32 1>, <4 x i32>* %74
%75 = or i64 %39, 56
%76 = getelementptr inbounds i32, i32* %1, i64 %75
%77 = bitcast i32* %76 to <4 x i32>*
store <4 x i32> <i32 1, i32 1, i32 1, i32 1>, <4 x i32>* %77
%78 = getelementptr inbounds i32, i32* %76, i64 4
%79 = bitcast i32* %78 to <4 x i32>*
store <4 x i32> <i32 1, i32 1, i32 1, i32 1>, <4 x i32>* %79
%80 = add nuw i64 %39, 64
%81 = add nuw i64 %40, 8
%82 = icmp eq i64 %81, %37
br i1 %82, label %83, label %38
83: ; preds = %38, %29
%84 = phi i64 [ 0, %29 ], [ %80, %38 ]
%85 = icmp eq i64 %34, 0
br i1 %85, label %96, label %86
86: ; preds = %83, %86
%87 = phi i64 [ %93, %86 ], [ %84, %83 ]
%88 = phi i64 [ %94, %86 ], [ 0, %83 ]
%89 = getelementptr inbounds i32, i32* %1, i64 %87
%90 = bitcast i32* %89 to <4 x i32>*
store <4 x i32> <i32 1, i32 1, i32 1, i32 1>, <4 x i32>* %90
%91 = getelementptr inbounds i32, i32* %89, i64 4
%92 = bitcast i32* %91 to <4 x i32>*
store <4 x i32> <i32 1, i32 1, i32 1, i32 1>, <4 x i32>* %92
%93 = add nuw i64 %87, 8
%94 = add i64 %88, 1
%95 = icmp eq i64 %94, %34
br i1 %95, label %96, label %86
96: ; preds = %86, %83
%97 = icmp eq i64 %30, %27
br i1 %97, label %145, label %98
98: ; preds = %26, %96
%99 = phi i64 [ 0, %26 ], [ %30, %96 ]
br label %246
100: ; preds = %21, %100
%101 = phi i64 [ %123, %100 ], [ 0, %21 ]
%102 = phi i32 [ %122, %100 ], [ %20, %21 ]
%103 = phi i64 [ %124, %100 ], [ 0, %21 ]
%104 = add nsw i64 %101, %22
%105 = getelementptr inbounds double, double* %6, i64 %104
%106 = load double, double* %105
%107 = fcmp ogt double %106, 0.000000e+00
%108 = zext i1 %107 to i32
%109 = getelementptr inbounds i32, i32* %0, i64 %104
store i32 %108, i32* %109
%110 = icmp ne i32 %102, 0
%111 = fcmp oeq double %106, 0.000000e+00
%112 = select i1 %110, i1 %111, i1 false
%113 = or i64 %101, 1
%114 = add nsw i64 %113, %22
%115 = getelementptr inbounds double, double* %6, i64 %114
%116 = load double, double* %115
%117 = fcmp ogt double %116, 0.000000e+00
%118 = zext i1 %117 to i32
%119 = getelementptr inbounds i32, i32* %0, i64 %114
store i32 %118, i32* %119
%120 = fcmp oeq double %116, 0.000000e+00
%121 = select i1 %112, i1 %120, i1 false
%122 = zext i1 %121 to i32
%123 = add nuw nsw i64 %101, 2
%124 = add i64 %103, 2
%125 = icmp eq i64 %124, %16
br i1 %125, label %126, label %100
126: ; preds = %100, %21
%127 = phi i32 [ undef, %21 ], [ %122, %100 ]
%128 = phi i64 [ 0, %21 ], [ %123, %100 ]
%129 = phi i32 [ %20, %21 ], [ %122, %100 ]
br i1 %17, label %141, label %130
130: ; preds = %126
%131 = add nsw i64 %128, %22
%132 = getelementptr inbounds double, double* %6, i64 %131
%133 = load double, double* %132
%134 = fcmp ogt double %133, 0.000000e+00
%135 = zext i1 %134 to i32
%136 = getelementptr inbounds i32, i32* %0, i64 %131
store i32 %135, i32* %136
%137 = icmp ne i32 %129, 0
%138 = fcmp oeq double %133, 0.000000e+00
%139 = select i1 %137, i1 %138, i1 false
%140 = zext i1 %139 to i32
br label %141
141: ; preds = %130, %126, %18
%142 = phi i32 [ %20, %18 ], [ %127, %126 ], [ %140, %130 ]
%143 = add nuw nsw i64 %19, 1
%144 = icmp eq i64 %143, %12
br i1 %144, label %23, label %18
145: ; preds = %246, %96
br i1 %25, label %146, label %266
146: ; preds = %145
%147 = add nsw i32 %4, 1
%148 = zext i32 %5 to i64
%149 = icmp ult i32 %5, 8
br i1 %149, label %229, label %150
150: ; preds = %146
%151 = getelementptr i32, i32* %3, i64 %27
%152 = getelementptr i32, i32* %2, i64 %27
%153 = icmp ugt i32* %152, %3
%154 = icmp ugt i32* %151, %2
%155 = and i1 %153, %154
br i1 %155, label %229, label %156
156: ; preds = %150
%157 = and i64 %27, 4294967288
%158 = insertelement <4 x i32> poison, i32 %147, i64 0
%159 = shufflevector <4 x i32> %158, <4 x i32> poison, <4 x i32> zeroinitializer
%160 = insertelement <4 x i32> poison, i32 %147, i64 0
%161 = shufflevector <4 x i32> %160, <4 x i32> poison, <4 x i32> zeroinitializer
%162 = add nsw i64 %157, -8
%163 = lshr exact i64 %162, 3
%164 = add nuw nsw i64 %163, 1
%165 = and i64 %164, 3
%166 = icmp ult i64 %162, 24
br i1 %166, label %210, label %167
167: ; preds = %156
%168 = and i64 %164, 4611686018427387900
br label %169
169: ; preds = %169, %167
%170 = phi i64 [ 0, %167 ], [ %207, %169 ]
%171 = phi i64 [ 0, %167 ], [ %208, %169 ]
%172 = getelementptr inbounds i32, i32* %3, i64 %170
%173 = bitcast i32* %172 to <4 x i32>*
store <4 x i32> <i32 3, i32 3, i32 3, i32 3>, <4 x i32>* %173
%174 = getelementptr inbounds i32, i32* %172, i64 4
%175 = bitcast i32* %174 to <4 x i32>*
store <4 x i32> <i32 3, i32 3, i32 3, i32 3>, <4 x i32>* %175
%176 = getelementptr inbounds i32, i32* %2, i64 %170
%177 = bitcast i32* %176 to <4 x i32>*
store <4 x i32> %159, <4 x i32>* %177
%178 = getelementptr inbounds i32, i32* %176, i64 4
%179 = bitcast i32* %178 to <4 x i32>*
store <4 x i32> %161, <4 x i32>* %179
%180 = or i64 %170, 8
%181 = getelementptr inbounds i32, i32* %3, i64 %180
%182 = bitcast i32* %181 to <4 x i32>*
store <4 x i32> <i32 3, i32 3, i32 3, i32 3>, <4 x i32>* %182
%183 = getelementptr inbounds i32, i32* %181, i64 4
%184 = bitcast i32* %183 to <4 x i32>*
store <4 x i32> <i32 3, i32 3, i32 3, i32 3>, <4 x i32>* %184
%185 = getelementptr inbounds i32, i32* %2, i64 %180
%186 = bitcast i32* %185 to <4 x i32>*
store <4 x i32> %159, <4 x i32>* %186
%187 = getelementptr inbounds i32, i32* %185, i64 4
%188 = bitcast i32* %187 to <4 x i32>*
store <4 x i32> %161, <4 x i32>* %188
%189 = or i64 %170, 16
%190 = getelementptr inbounds i32, i32* %3, i64 %189
%191 = bitcast i32* %190 to <4 x i32>*
store <4 x i32> <i32 3, i32 3, i32 3, i32 3>, <4 x i32>* %191
%192 = getelementptr inbounds i32, i32* %190, i64 4
%193 = bitcast i32* %192 to <4 x i32>*
store <4 x i32> <i32 3, i32 3, i32 3, i32 3>, <4 x i32>* %193
%194 = getelementptr inbounds i32, i32* %2, i64 %189
%195 = bitcast i32* %194 to <4 x i32>*
store <4 x i32> %159, <4 x i32>* %195
%196 = getelementptr inbounds i32, i32* %194, i64 4
%197 = bitcast i32* %196 to <4 x i32>*
store <4 x i32> %161, <4 x i32>* %197
%198 = or i64 %170, 24
%199 = getelementptr inbounds i32, i32* %3, i64 %198
%200 = bitcast i32* %199 to <4 x i32>*
store <4 x i32> <i32 3, i32 3, i32 3, i32 3>, <4 x i32>* %200
%201 = getelementptr inbounds i32, i32* %199, i64 4
%202 = bitcast i32* %201 to <4 x i32>*
store <4 x i32> <i32 3, i32 3, i32 3, i32 3>, <4 x i32>* %202
%203 = getelementptr inbounds i32, i32* %2, i64 %198
%204 = bitcast i32* %203 to <4 x i32>*
store <4 x i32> %159, <4 x i32>* %204
%205 = getelementptr inbounds i32, i32* %203, i64 4
%206 = bitcast i32* %205 to <4 x i32>*
store <4 x i32> %161, <4 x i32>* %206
%207 = add nuw i64 %170, 32
%208 = add i64 %171, 4
%209 = icmp eq i64 %208, %168
br i1 %209, label %210, label %169
210: ; preds = %169, %156
%211 = phi i64 [ 0, %156 ], [ %207, %169 ]
%212 = icmp eq i64 %165, 0
br i1 %212, label %227, label %213
213: ; preds = %210, %213
%214 = phi i64 [ %224, %213 ], [ %211, %210 ]
%215 = phi i64 [ %225, %213 ], [ 0, %210 ]
%216 = getelementptr inbounds i32, i32* %3, i64 %214
%217 = bitcast i32* %216 to <4 x i32>*
store <4 x i32> <i32 3, i32 3, i32 3, i32 3>, <4 x i32>* %217
%218 = getelementptr inbounds i32, i32* %216, i64 4
%219 = bitcast i32* %218 to <4 x i32>*
store <4 x i32> <i32 3, i32 3, i32 3, i32 3>, <4 x i32>* %219
%220 = getelementptr inbounds i32, i32* %2, i64 %214
%221 = bitcast i32* %220 to <4 x i32>*
store <4 x i32> %159, <4 x i32>* %221
%222 = getelementptr inbounds i32, i32* %220, i64 4
%223 = bitcast i32* %222 to <4 x i32>*
store <4 x i32> %161, <4 x i32>* %223
%224 = add nuw i64 %214, 8
%225 = add i64 %215, 1
%226 = icmp eq i64 %225, %165
br i1 %226, label %227, label %213
227: ; preds = %213, %210
%228 = icmp eq i64 %157, %27
br i1 %228, label %266, label %229
229: ; preds = %150, %146, %227
%230 = phi i64 [ 0, %150 ], [ 0, %146 ], [ %157, %227 ]
%231 = xor i64 %230, -1
%232 = add nsw i64 %231, %27
%233 = and i64 %27, 3
%234 = icmp eq i64 %233, 0
br i1 %234, label %243, label %235
235: ; preds = %229, %235
%236 = phi i64 [ %240, %235 ], [ %230, %229 ]
%237 = phi i64 [ %241, %235 ], [ 0, %229 ]
%238 = getelementptr inbounds i32, i32* %3, i64 %236
store i32 3, i32* %238
%239 = getelementptr inbounds i32, i32* %2, i64 %236
store i32 %147, i32* %239
%240 = add nuw nsw i64 %236, 1
%241 = add i64 %237, 1
%242 = icmp eq i64 %241, %233
br i1 %242, label %243, label %235
243: ; preds = %235, %229
%244 = phi i64 [ %230, %229 ], [ %240, %235 ]
%245 = icmp ult i64 %232, 3
br i1 %245, label %266, label %251
246: ; preds = %98, %246
%247 = phi i64 [ %249, %246 ], [ %99, %98 ]
%248 = getelementptr inbounds i32, i32* %1, i64 %247
store i32 1, i32* %248
%249 = add nuw nsw i64 %247, 1
%250 = icmp eq i64 %249, %27
br i1 %250, label %145, label %246
251: ; preds = %243, %251
%252 = phi i64 [ %264, %251 ], [ %244, %243 ]
%253 = getelementptr inbounds i32, i32* %3, i64 %252
store i32 3, i32* %253
%254 = getelementptr inbounds i32, i32* %2, i64 %252
store i32 %147, i32* %254
%255 = add nuw nsw i64 %252, 1
%256 = getelementptr inbounds i32, i32* %3, i64 %255
store i32 3, i32* %256
%257 = getelementptr inbounds i32, i32* %2, i64 %255
store i32 %147, i32* %257
%258 = add nuw nsw i64 %252, 2
%259 = getelementptr inbounds i32, i32* %3, i64 %258
store i32 3, i32* %259
%260 = getelementptr inbounds i32, i32* %2, i64 %258
store i32 %147, i32* %260
%261 = add nuw nsw i64 %252, 3
%262 = getelementptr inbounds i32, i32* %3, i64 %261
store i32 3, i32* %262
%263 = getelementptr inbounds i32, i32* %2, i64 %261
store i32 %147, i32* %263
%264 = add nuw nsw i64 %252, 4
%265 = icmp eq i64 %264, %148
br i1 %265, label %266, label %251
266: ; preds = %243, %251, %227, %23, %145
ret i32 %24
}