int main(void) {
  char longNum[] = {"73167176531330624919225119674426574742355349194934"
                    "96983520312774506326239578318016984801869478851843"
                    "85861560789112949495459501737958331952853208805511"
                    "12540698747158523863050715693290963295227443043557"
                    "66896648950445244523161731856403098711121722383113"
                    "62229893423380308135336276614282806444486645238749"
                    "30358907296290491560440772390713810515859307960866"
                    "70172427121883998797908792274921901699720888093776"
                    "65727333001053367881220235421809751254540594752243"
                    "52584907711670556013604839586446706324415722155397"
                    "53697817977846174064955149290862569321978468622482"
                    "83972241375657056057490261407972968652414535100474"
                    "82166370484403199890008895243450658541227588666881"
                    "16427171479924442928230863465674813919123162824586"
                    "17866458359124566529476545682848912883142607690042"
                    "24219022671055626321111109370544217506941658960408"
                    "07198403850962455444362981230987879927244284909188"
                    "84580156166097919133875499200524063689912560717606"
                    "05886116467109405077541002256983155200055935729725"
                    "71636269561882670428252483600823257530420752963450"};
  int myRange = 13;
  int size = strlen(longNum) - myRange + 1;
  int prod;
  int resultArr[988];
  int biggest = 0;
  for (int i = 0; i < size; i++) {
    prod = 1;
    for (int j = i; j < myRange + i; j++) {
      prod *= (int)longNum[j];
      if (j == myRange + i - 1) {
        resultArr[i] = prod;
      }
    }
  }
  for (int k = 0; k < 988; k++) {
    if (resultArr[k] >= biggest) {
      biggest = resultArr[k];
    }
  }
  printf("Your biggest value is %d\n", biggest);
  system("PAUSE");
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x1380,%rsp
movl   $0x0,-0x4(%rbp)
lea    -0x3f0(%rbp),%rdi
lea    0xea0(%rip),%rsi
mov    $0x3e9,%edx
call   1060 <memcpy@plt>
movl   $0xd,-0x3f4(%rbp)
lea    -0x3f0(%rbp),%rdi
call   1030 <strlen@plt>
movslq -0x3f4(%rbp),%rcx
sub    %rcx,%rax
add    $0x1,%rax
mov    %eax,-0x3f8(%rbp)
movl   $0x0,-0x1374(%rbp)
movl   $0x0,-0x1378(%rbp)
mov    -0x1378(%rbp),%eax
cmp    -0x3f8(%rbp),%eax
jge    1269 <main+0x129>
movl   $0x1,-0x3fc(%rbp)
mov    -0x1378(%rbp),%eax
mov    %eax,-0x137c(%rbp)
mov    -0x137c(%rbp),%eax
mov    -0x3f4(%rbp),%ecx
add    -0x1378(%rbp),%ecx
cmp    %ecx,%eax
jge    1250 <main+0x110>
movslq -0x137c(%rbp),%rax
movsbl -0x3f0(%rbp,%rax,1),%eax
ff
imul   -0x3fc(%rbp),%eax
mov    %eax,-0x3fc(%rbp)
mov    -0x137c(%rbp),%eax
mov    -0x3f4(%rbp),%ecx
add    -0x1378(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jne    1237 <main+0xf7>
mov    -0x3fc(%rbp),%ecx
movslq -0x1378(%rbp),%rax
mov    %ecx,-0x1370(%rbp,%rax,4)
jmp    123c <main+0xfc>
mov    -0x137c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x137c(%rbp)
jmp    11d0 <main+0x90>
jmp    1255 <main+0x115>
mov    -0x1378(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1378(%rbp)
jmp    11a8 <main+0x68>
movl   $0x0,-0x1380(%rbp)
cmpl   $0x3dc,-0x1380(%rbp)
jge    12ca <main+0x18a>
movslq -0x1380(%rbp),%rax
mov    -0x1370(%rbp,%rax,4),%eax
cmp    -0x1374(%rbp),%eax
jl     12b1 <main+0x171>
movslq -0x1380(%rbp),%rax
mov    -0x1370(%rbp,%rax,4),%eax
mov    %eax,-0x1374(%rbp)
jmp    12b6 <main+0x176>
mov    -0x1380(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1380(%rbp)
jmp    1273 <main+0x133>
mov    -0x1374(%rbp),%esi
lea    0x1112(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
lea    0x111e(%rip),%rdi
mov    $0x0,%al
call   1040 <system@plt>
xor    %eax,%eax
add    $0x1380,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
sub    $0xf78,%rsp
movdqa 0xed1(%rip),%xmm5
xor    %eax,%eax
lea    0xee8(%rip),%rcx
movdqa 0xed0(%rip),%xmm0
pxor   %xmm1,%xmm1
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
movd   0x1(%rax,%rcx,1),%xmm2
movdqa %xmm0,%xmm3
pandn  %xmm5,%xmm3
punpcklbw %xmm2,%xmm4
movdqa %xmm2,%xmm5
pand   %xmm0,%xmm2
por    %xmm3,%xmm2
punpcklbw %xmm2,%xmm2
pshuflw $0x93,%xmm2,%xmm2
psraw  $0x8,%xmm2
psraw  $0x8,%xmm4
pmullw %xmm2,%xmm4
punpcklwd %xmm4,%xmm4
movd   0x2(%rax,%rcx,1),%xmm2
punpcklbw %xmm2,%xmm2
psraw  $0x8,%xmm2
punpcklwd %xmm1,%xmm2
pmaddwd %xmm4,%xmm2
movd   0x3(%rax,%rcx,1),%xmm3
punpcklbw %xmm3,%xmm3
punpcklwd %xmm3,%xmm3
psrad  $0x18,%xmm3
pshufd $0xf5,%xmm2,%xmm4
pshufd $0xf5,%xmm3,%xmm6
pmuludq %xmm4,%xmm6
pmuludq %xmm2,%xmm3
movd   0x4(%rax,%rcx,1),%xmm2
punpcklbw %xmm2,%xmm2
punpcklwd %xmm2,%xmm2
psrad  $0x18,%xmm2
pmuludq %xmm2,%xmm3
pshufd $0xf5,%xmm2,%xmm2
pmuludq %xmm6,%xmm2
movd   0x5(%rax,%rcx,1),%xmm4
punpcklbw %xmm4,%xmm4
punpcklwd %xmm4,%xmm4
psrad  $0x18,%xmm4
pshufd $0xf5,%xmm4,%xmm6
pmuludq %xmm2,%xmm6
pmuludq %xmm3,%xmm4
movd   0x6(%rax,%rcx,1),%xmm2
punpcklbw %xmm2,%xmm2
punpcklwd %xmm2,%xmm2
psrad  $0x18,%xmm2
pmuludq %xmm2,%xmm4
pshufd $0xf5,%xmm2,%xmm2
pmuludq %xmm6,%xmm2
movd   0x7(%rax,%rcx,1),%xmm3
punpcklbw %xmm3,%xmm3
punpcklwd %xmm3,%xmm3
psrad  $0x18,%xmm3
pshufd $0xf5,%xmm3,%xmm6
pmuludq %xmm2,%xmm6
pmuludq %xmm4,%xmm3
movd   0x8(%rax,%rcx,1),%xmm2
punpcklbw %xmm2,%xmm2
punpcklwd %xmm2,%xmm2
psrad  $0x18,%xmm2
pmuludq %xmm2,%xmm3
pshufd $0xf5,%xmm2,%xmm2
pmuludq %xmm6,%xmm2
movd   0x9(%rax,%rcx,1),%xmm4
punpcklbw %xmm4,%xmm4
punpcklwd %xmm4,%xmm4
psrad  $0x18,%xmm4
pshufd $0xf5,%xmm4,%xmm6
pmuludq %xmm2,%xmm6
pmuludq %xmm3,%xmm4
movd   0xa(%rax,%rcx,1),%xmm2
punpcklbw %xmm2,%xmm2
punpcklwd %xmm2,%xmm2
psrad  $0x18,%xmm2
pmuludq %xmm2,%xmm4
pshufd $0xf5,%xmm2,%xmm2
pmuludq %xmm6,%xmm2
movd   0xb(%rax,%rcx,1),%xmm3
punpcklbw %xmm3,%xmm3
punpcklwd %xmm3,%xmm3
psrad  $0x18,%xmm3
pshufd $0xf5,%xmm3,%xmm6
pmuludq %xmm2,%xmm6
pmuludq %xmm4,%xmm3
movd   0xc(%rax,%rcx,1),%xmm2
punpcklbw %xmm2,%xmm2
punpcklwd %xmm2,%xmm2
psrad  $0x18,%xmm2
pmuludq %xmm2,%xmm3
pshufd $0xe8,%xmm3,%xmm3
pshufd $0xf5,%xmm2,%xmm2
pmuludq %xmm6,%xmm2
pshufd $0xe8,%xmm2,%xmm2
punpckldq %xmm2,%xmm3
movdqa %xmm3,(%rsp,%rax,4)
add    $0x4,%rax
cmp    $0x3dc,%rax
jne    1150 <main+0x30>
pxor   %xmm0,%xmm0
mov    $0x14,%eax
pxor   %xmm1,%xmm1
cs nopw 0x0(%rax,%rax,1)
nop
movdqa -0x50(%rsp,%rax,4),%xmm2
movdqa -0x40(%rsp,%rax,4),%xmm3
movdqa -0x30(%rsp,%rax,4),%xmm4
movdqa -0x20(%rsp,%rax,4),%xmm5
movdqa %xmm2,%xmm6
pcmpgtd %xmm0,%xmm6
pand   %xmm6,%xmm2
pandn  %xmm0,%xmm6
por    %xmm2,%xmm6
movdqa %xmm3,%xmm0
pcmpgtd %xmm1,%xmm0
pand   %xmm0,%xmm3
pandn  %xmm1,%xmm0
por    %xmm3,%xmm0
movdqa %xmm4,%xmm1
pcmpgtd %xmm6,%xmm1
pand   %xmm1,%xmm4
pandn  %xmm6,%xmm1
por    %xmm4,%xmm1
movdqa %xmm5,%xmm2
pcmpgtd %xmm0,%xmm2
pand   %xmm2,%xmm5
pandn  %xmm0,%xmm2
por    %xmm5,%xmm2
movdqa -0x10(%rsp,%rax,4),%xmm3
movdqa (%rsp,%rax,4),%xmm4
movdqa %xmm3,%xmm0
pcmpgtd %xmm1,%xmm0
pand   %xmm0,%xmm3
pandn  %xmm1,%xmm0
por    %xmm3,%xmm0
movdqa %xmm4,%xmm1
pcmpgtd %xmm2,%xmm1
pand   %xmm1,%xmm4
pandn  %xmm2,%xmm1
por    %xmm4,%xmm1
add    $0x18,%rax
cmp    $0x3ec,%rax
jne    1320 <main+0x200>
movdqa %xmm0,%xmm2
pcmpgtd %xmm1,%xmm2
pand   %xmm2,%xmm0
pandn  %xmm1,%xmm2
por    %xmm0,%xmm2
pshufd $0xee,%xmm2,%xmm0
movdqa %xmm2,%xmm1
pcmpgtd %xmm0,%xmm1
pand   %xmm1,%xmm2
pandn  %xmm0,%xmm1
por    %xmm2,%xmm1
pshufd $0x55,%xmm1,%xmm0
movdqa %xmm1,%xmm2
pcmpgtd %xmm0,%xmm2
pand   %xmm2,%xmm1
pandn  %xmm0,%xmm2
por    %xmm1,%xmm2
movd   %xmm2,%eax
mov    0xf60(%rsp),%esi
cmp    %eax,%esi
cmovl  %eax,%esi
mov    0xf64(%rsp),%eax
cmp    %esi,%eax
cmovge %eax,%esi
mov    0xf68(%rsp),%eax
cmp    %esi,%eax
cmovge %eax,%esi
mov    0xf6c(%rsp),%eax
cmp    %esi,%eax
cmovge %eax,%esi
lea    0xfbd(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
lea    0xfc9(%rip),%rdi
xor    %eax,%eax
call   1030 <system@plt>
xor    %eax,%eax
add    $0xf78,%rsp
ret

LLVM IR (-O0):
@__const.main.longNum = [1001 x i8] c"7316717653133062491922511967442657474235534919493496983520312774506326239578318016984801869478851843858615607891129494954595017379583319528532088055111254069874715852386305071569329096329522744304355766896648950445244523161731856403098711121722383113622298934233803081353362766142828064444866452387493035890729629049156044077239071381051585930796086670172427121883998797908792274921901699720888093776657273330010533678812202354218097512545405947522435258490771167055601360483958644670632441572215539753697817977846174064955149290862569321978468622482839722413756570560574902614079729686524145351004748216637048440319989000889524345065854122758866688116427171479924442928230863465674813919123162824586178664583591245665294765456828489128831426076900422421902267105562632111110937054421750694165896040807198403850962455444362981230987879927244284909188845801561660979191338754992005240636899125607176060588611646710940507754100225698315520005593572972571636269561882670428252483600823257530420752963450\00"
@.str = [26 x i8] c"Your biggest value is %d\0A\00"
@.str.1 = [6 x i8] c"PAUSE\00"
define i32 @main() {
%1 = alloca i32
%2 = alloca [1001 x i8]
%3 = alloca i32
%4 = alloca i32
%5 = alloca i32
%6 = alloca [988 x i32]
%7 = alloca i32
%8 = alloca i32
%9 = alloca i32
%10 = alloca i32
store i32 0, i32* %1
%11 = bitcast [1001 x i8]* %2 to i8*
store i32 13, i32* %3
%12 = getelementptr inbounds [1001 x i8], [1001 x i8]* %2, i64 0, i64 0
%13 = call i64 @strlen(i8* %12)
%14 = load i32, i32* %3
%15 = sext i32 %14 to i64
%16 = sub i64 %13, %15
%17 = add i64 %16, 1
%18 = trunc i64 %17 to i32
store i32 %18, i32* %4
store i32 0, i32* %7
store i32 0, i32* %8
br label %19
19: ; preds = %55, %0
%20 = load i32, i32* %8
%21 = load i32, i32* %4
%22 = icmp slt i32 %20, %21
br i1 %22, label %23, label %58
23: ; preds = %19
store i32 1, i32* %5
%24 = load i32, i32* %8
store i32 %24, i32* %9
br label %25
25: ; preds = %51, %23
%26 = load i32, i32* %9
%27 = load i32, i32* %3
%28 = load i32, i32* %8
%29 = add nsw i32 %27, %28
%30 = icmp slt i32 %26, %29
br i1 %30, label %31, label %54
31: ; preds = %25
%32 = load i32, i32* %9
%33 = sext i32 %32 to i64
%34 = getelementptr inbounds [1001 x i8], [1001 x i8]* %2, i64 0, i64 %33
%35 = load i8, i8* %34
%36 = sext i8 %35 to i32
%37 = load i32, i32* %5
%38 = mul nsw i32 %37, %36
store i32 %38, i32* %5
%39 = load i32, i32* %9
%40 = load i32, i32* %3
%41 = load i32, i32* %8
%42 = add nsw i32 %40, %41
%43 = sub nsw i32 %42, 1
%44 = icmp eq i32 %39, %43
br i1 %44, label %45, label %50
45: ; preds = %31
%46 = load i32, i32* %5
%47 = load i32, i32* %8
%48 = sext i32 %47 to i64
%49 = getelementptr inbounds [988 x i32], [988 x i32]* %6, i64 0, i64 %48
store i32 %46, i32* %49
br label %50
50: ; preds = %45, %31
br label %51
51: ; preds = %50
%52 = load i32, i32* %9
%53 = add nsw i32 %52, 1
store i32 %53, i32* %9
br label %25
54: ; preds = %25
br label %55
55: ; preds = %54
%56 = load i32, i32* %8
%57 = add nsw i32 %56, 1
store i32 %57, i32* %8
br label %19
58: ; preds = %19
store i32 0, i32* %10
br label %59
59: ; preds = %75, %58
%60 = load i32, i32* %10
%61 = icmp slt i32 %60, 988
br i1 %61, label %62, label %78
62: ; preds = %59
%63 = load i32, i32* %10
%64 = sext i32 %63 to i64
%65 = getelementptr inbounds [988 x i32], [988 x i32]* %6, i64 0, i64 %64
%66 = load i32, i32* %65
%67 = load i32, i32* %7
%68 = icmp sge i32 %66, %67
br i1 %68, label %69, label %74
69: ; preds = %62
%70 = load i32, i32* %10
%71 = sext i32 %70 to i64
%72 = getelementptr inbounds [988 x i32], [988 x i32]* %6, i64 0, i64 %71
%73 = load i32, i32* %72
store i32 %73, i32* %7
br label %74
74: ; preds = %69, %62
br label %75
75: ; preds = %74
%76 = load i32, i32* %10
%77 = add nsw i32 %76, 1
store i32 %77, i32* %10
br label %59
78: ; preds = %59
%79 = load i32, i32* %7
%80 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str, i64 0, i64 0), i32 %79)
%81 = call i32 (i8*, ...) bitcast (i32 (...)* @system to i32 (i8*, ...)*)(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.1, i64 0, i64 0))
ret i32 0
}

LLVM IR (-O2):
@__const.main.longNum = [1001 x i8] c"7316717653133062491922511967442657474235534919493496983520312774506326239578318016984801869478851843858615607891129494954595017379583319528532088055111254069874715852386305071569329096329522744304355766896648950445244523161731856403098711121722383113622298934233803081353362766142828064444866452387493035890729629049156044077239071381051585930796086670172427121883998797908792274921901699720888093776657273330010533678812202354218097512545405947522435258490771167055601360483958644670632441572215539753697817977846174064955149290862569321978468622482839722413756570560574902614079729686524145351004748216637048440319989000889524345065854122758866688116427171479924442928230863465674813919123162824586178664583591245665294765456828489128831426076900422421902267105562632111110937054421750694165896040807198403850962455444362981230987879927244284909188845801561660979191338754992005240636899125607176060588611646710940507754100225698315520005593572972571636269561882670428252483600823257530420752963450\00"
@.str = [26 x i8] c"Your biggest value is %d\0A\00"
@.str.1 = [6 x i8] c"PAUSE\00"
define i32 @main() {
%1 = alloca [988 x i32]
%2 = bitcast [988 x i32]* %1 to i8*
br label %3
3: ; preds = %3, %0
%4 = phi i64 [ 0, %0 ], [ %82, %3 ]
%5 = phi <4 x i8> [ <i8 poison, i8 poison, i8 poison, i8 55>, %0 ], [ %10, %3 ]
%6 = getelementptr inbounds [988 x i32], [988 x i32]* %1, i64 0, i64 %4
%7 = or i64 %4, 1
%8 = getelementptr inbounds [1001 x i8], [1001 x i8]* @__const.main.longNum, i64 0, i64 %7
%9 = bitcast i8* %8 to <4 x i8>*
%10 = load <4 x i8>, <4 x i8>* %9
%11 = shufflevector <4 x i8> %5, <4 x i8> %10, <4 x i32> <i32 3, i32 4, i32 5, i32 6>
%12 = sext <4 x i8> %11 to <4 x i32>
%13 = sext <4 x i8> %10 to <4 x i32>
%14 = mul nsw <4 x i32> %12, %13
%15 = or i64 %4, 2
%16 = getelementptr inbounds [1001 x i8], [1001 x i8]* @__const.main.longNum, i64 0, i64 %15
%17 = bitcast i8* %16 to <4 x i8>*
%18 = load <4 x i8>, <4 x i8>* %17
%19 = sext <4 x i8> %18 to <4 x i32>
%20 = mul nsw <4 x i32> %14, %19
%21 = or i64 %4, 3
%22 = getelementptr inbounds [1001 x i8], [1001 x i8]* @__const.main.longNum, i64 0, i64 %21
%23 = bitcast i8* %22 to <4 x i8>*
%24 = load <4 x i8>, <4 x i8>* %23
%25 = sext <4 x i8> %24 to <4 x i32>
%26 = mul nsw <4 x i32> %20, %25
%27 = add nuw nsw i64 %4, 4
%28 = getelementptr inbounds [1001 x i8], [1001 x i8]* @__const.main.longNum, i64 0, i64 %27
%29 = bitcast i8* %28 to <4 x i8>*
%30 = load <4 x i8>, <4 x i8>* %29
%31 = sext <4 x i8> %30 to <4 x i32>
%32 = mul nsw <4 x i32> %26, %31
%33 = add nuw nsw i64 %4, 5
%34 = getelementptr inbounds [1001 x i8], [1001 x i8]* @__const.main.longNum, i64 0, i64 %33
%35 = bitcast i8* %34 to <4 x i8>*
%36 = load <4 x i8>, <4 x i8>* %35
%37 = sext <4 x i8> %36 to <4 x i32>
%38 = mul nsw <4 x i32> %32, %37
%39 = add nuw nsw i64 %4, 6
%40 = getelementptr inbounds [1001 x i8], [1001 x i8]* @__const.main.longNum, i64 0, i64 %39
%41 = bitcast i8* %40 to <4 x i8>*
%42 = load <4 x i8>, <4 x i8>* %41
%43 = sext <4 x i8> %42 to <4 x i32>
%44 = mul nsw <4 x i32> %38, %43
%45 = add nuw nsw i64 %4, 7
%46 = getelementptr inbounds [1001 x i8], [1001 x i8]* @__const.main.longNum, i64 0, i64 %45
%47 = bitcast i8* %46 to <4 x i8>*
%48 = load <4 x i8>, <4 x i8>* %47
%49 = sext <4 x i8> %48 to <4 x i32>
%50 = mul nsw <4 x i32> %44, %49
%51 = add nuw nsw i64 %4, 8
%52 = getelementptr inbounds [1001 x i8], [1001 x i8]* @__const.main.longNum, i64 0, i64 %51
%53 = bitcast i8* %52 to <4 x i8>*
%54 = load <4 x i8>, <4 x i8>* %53
%55 = sext <4 x i8> %54 to <4 x i32>
%56 = mul nsw <4 x i32> %50, %55
%57 = add nuw nsw i64 %4, 9
%58 = getelementptr inbounds [1001 x i8], [1001 x i8]* @__const.main.longNum, i64 0, i64 %57
%59 = bitcast i8* %58 to <4 x i8>*
%60 = load <4 x i8>, <4 x i8>* %59
%61 = sext <4 x i8> %60 to <4 x i32>
%62 = mul nsw <4 x i32> %56, %61
%63 = add nuw nsw i64 %4, 10
%64 = getelementptr inbounds [1001 x i8], [1001 x i8]* @__const.main.longNum, i64 0, i64 %63
%65 = bitcast i8* %64 to <4 x i8>*
%66 = load <4 x i8>, <4 x i8>* %65
%67 = sext <4 x i8> %66 to <4 x i32>
%68 = mul nsw <4 x i32> %62, %67
%69 = add nuw nsw i64 %4, 11
%70 = getelementptr inbounds [1001 x i8], [1001 x i8]* @__const.main.longNum, i64 0, i64 %69
%71 = bitcast i8* %70 to <4 x i8>*
%72 = load <4 x i8>, <4 x i8>* %71
%73 = sext <4 x i8> %72 to <4 x i32>
%74 = mul nsw <4 x i32> %68, %73
%75 = add nuw nsw i64 %4, 12
%76 = getelementptr inbounds [1001 x i8], [1001 x i8]* @__const.main.longNum, i64 0, i64 %75
%77 = bitcast i8* %76 to <4 x i8>*
%78 = load <4 x i8>, <4 x i8>* %77
%79 = sext <4 x i8> %78 to <4 x i32>
%80 = mul nsw <4 x i32> %74, %79
%81 = bitcast i32* %6 to <4 x i32>*
store <4 x i32> %80, <4 x i32>* %81
%82 = add nuw i64 %4, 4
%83 = icmp eq i64 %82, 988
br i1 %83, label %84, label %3
84: ; preds = %3, %84
%85 = phi i64 [ %120, %84 ], [ 0, %3 ]
%86 = phi <4 x i32> [ %118, %84 ], [ zeroinitializer, %3 ]
%87 = phi <4 x i32> [ %119, %84 ], [ zeroinitializer, %3 ]
%88 = getelementptr inbounds [988 x i32], [988 x i32]* %1, i64 0, i64 %85
%89 = bitcast i32* %88 to <4 x i32>*
%90 = load <4 x i32>, <4 x i32>* %89
%91 = getelementptr inbounds i32, i32* %88, i64 4
%92 = bitcast i32* %91 to <4 x i32>*
%93 = load <4 x i32>, <4 x i32>* %92
%94 = icmp slt <4 x i32> %90, %86
%95 = icmp slt <4 x i32> %93, %87
%96 = select <4 x i1> %94, <4 x i32> %86, <4 x i32> %90
%97 = select <4 x i1> %95, <4 x i32> %87, <4 x i32> %93
%98 = add nuw nsw i64 %85, 8
%99 = getelementptr inbounds [988 x i32], [988 x i32]* %1, i64 0, i64 %98
%100 = bitcast i32* %99 to <4 x i32>*
%101 = load <4 x i32>, <4 x i32>* %100
%102 = getelementptr inbounds i32, i32* %99, i64 4
%103 = bitcast i32* %102 to <4 x i32>*
%104 = load <4 x i32>, <4 x i32>* %103
%105 = icmp slt <4 x i32> %101, %96
%106 = icmp slt <4 x i32> %104, %97
%107 = select <4 x i1> %105, <4 x i32> %96, <4 x i32> %101
%108 = select <4 x i1> %106, <4 x i32> %97, <4 x i32> %104
%109 = add nuw nsw i64 %85, 16
%110 = getelementptr inbounds [988 x i32], [988 x i32]* %1, i64 0, i64 %109
%111 = bitcast i32* %110 to <4 x i32>*
%112 = load <4 x i32>, <4 x i32>* %111
%113 = getelementptr inbounds i32, i32* %110, i64 4
%114 = bitcast i32* %113 to <4 x i32>*
%115 = load <4 x i32>, <4 x i32>* %114
%116 = icmp slt <4 x i32> %112, %107
%117 = icmp slt <4 x i32> %115, %108
%118 = select <4 x i1> %116, <4 x i32> %107, <4 x i32> %112
%119 = select <4 x i1> %117, <4 x i32> %108, <4 x i32> %115
%120 = add nuw nsw i64 %85, 24
%121 = icmp eq i64 %120, 984
br i1 %121, label %122, label %84
122: ; preds = %84
%123 = icmp sgt <4 x i32> %118, %119
%124 = select <4 x i1> %123, <4 x i32> %118, <4 x i32> %119
%125 = call i32 @llvm.vector.reduce.smax.v4i32(<4 x i32> %124)
%126 = getelementptr inbounds [988 x i32], [988 x i32]* %1, i64 0, i64 984
%127 = load i32, i32* %126
%128 = icmp slt i32 %127, %125
%129 = select i1 %128, i32 %125, i32 %127
%130 = getelementptr inbounds [988 x i32], [988 x i32]* %1, i64 0, i64 985
%131 = load i32, i32* %130
%132 = icmp slt i32 %131, %129
%133 = select i1 %132, i32 %129, i32 %131
%134 = getelementptr inbounds [988 x i32], [988 x i32]* %1, i64 0, i64 986
%135 = load i32, i32* %134
%136 = icmp slt i32 %135, %133
%137 = select i1 %136, i32 %133, i32 %135
%138 = getelementptr inbounds [988 x i32], [988 x i32]* %1, i64 0, i64 987
%139 = load i32, i32* %138
%140 = icmp slt i32 %139, %137
%141 = select i1 %140, i32 %137, i32 %139
%142 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([26 x i8], [26 x i8]* @.str, i64 0, i64 0), i32 %141)
%143 = tail call i32 (i8*, ...) bitcast (i32 (...)* @system to i32 (i8*, ...)*)(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.1, i64 0, i64 0))
ret i32 0
}