#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*/ printf(char *, int);
int main() {
  int num1, num2, v1, v2;
  num1 = 5;
  num2 = 6;
  v1 = 7;
  v2 = 8;
  printf("%d\n", num1 + num2);
  printf("%d\n", v1 + v2);
  printf("%d\n", v1 + v2);
  printf("%d\n", v1 + num1);
  printf("%d\n", num1 - v2);
  printf("%d\n", v1 * v2);
  printf("%d\n", num1 + num2);
  printf("%d\n", v1 + v2);
  printf("%d\n", v1 + v2);
  printf("%d\n", v1 + num1);
  printf("%d\n", num1 - v2);
  printf("%d\n", v1 * v2);
  printf("%d\n", num1 + num2);
  printf("%d\n", v1 + v2);
  printf("%d\n", v1 + v2);
  printf("%d\n", v1 + num1);
  printf("%d\n", num1 - v2);
  printf("%d\n", v1 * v2);
  printf("%d\n", num1 + num2);
  printf("%d\n", v1 + v2);
  printf("%d\n", v1 + v2);
  printf("%d\n", v1 + num1);
  printf("%d\n", num1 - v2);
  printf("%d\n", v1 * v2);
  printf("%d\n", num1 + num2);
  printf("%d\n", v1 + v2);
  printf("%d\n", v1 + v2);
  printf("%d\n", v1 + num1);
  printf("%d\n", num1 - v2);
  printf("%d\n", v1 * v2);
  printf("%d\n", num1 + num2);
  printf("%d\n", v1 + v2);
  printf("%d\n", v1 + v2);
  printf("%d\n", v1 + num1);
  printf("%d\n", num1 - v2);
  printf("%d\n", v1 * v2);
  printf("%d\n", num1 + num2);
  printf("%d\n", v1 + v2);
  printf("%d\n", v1 + v2);
  printf("%d\n", v1 + num1);
  printf("%d\n", num1 - v2);
  printf("%d\n", v1 * v2);
  printf("%d\n", num1 + num2);
  printf("%d\n", v1 + v2);
  printf("%d\n", v1 + v2);
  printf("%d\n", v1 + num1);
  printf("%d\n", num1 - v2);
  printf("%d\n", v1 * v2);
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x20,%rsp
movl   $0x0,-0x4(%rbp)
movl   $0x5,-0x8(%rbp)
movl   $0x6,-0xc(%rbp)
movl   $0x7,-0x10(%rbp)
movl   $0x8,-0x14(%rbp)
mov    -0x8(%rbp),%esi
add    -0xc(%rbp),%esi
lea    0xeb8(%rip),%rdi
call   1030 <printf@plt>
mov    -0x10(%rbp),%esi
add    -0x14(%rbp),%esi
lea    0xea6(%rip),%rdi
call   1030 <printf@plt>
mov    -0x10(%rbp),%esi
add    -0x14(%rbp),%esi
lea    0xe94(%rip),%rdi
call   1030 <printf@plt>
mov    -0x10(%rbp),%esi
add    -0x8(%rbp),%esi
lea    0xe82(%rip),%rdi
call   1030 <printf@plt>
mov    -0x8(%rbp),%esi
sub    -0x14(%rbp),%esi
lea    0xe70(%rip),%rdi
call   1030 <printf@plt>
mov    -0x10(%rbp),%esi
imul   -0x14(%rbp),%esi
lea    0xe5d(%rip),%rdi
call   1030 <printf@plt>
mov    -0x8(%rbp),%esi
add    -0xc(%rbp),%esi
lea    0xe4b(%rip),%rdi
call   1030 <printf@plt>
mov    -0x10(%rbp),%esi
add    -0x14(%rbp),%esi
lea    0xe39(%rip),%rdi
call   1030 <printf@plt>
mov    -0x10(%rbp),%esi
add    -0x14(%rbp),%esi
lea    0xe27(%rip),%rdi
call   1030 <printf@plt>
mov    -0x10(%rbp),%esi
add    -0x8(%rbp),%esi
lea    0xe15(%rip),%rdi
call   1030 <printf@plt>
mov    -0x8(%rbp),%esi
sub    -0x14(%rbp),%esi
lea    0xe03(%rip),%rdi
call   1030 <printf@plt>
mov    -0x10(%rbp),%esi
imul   -0x14(%rbp),%esi
lea    0xdf0(%rip),%rdi
call   1030 <printf@plt>
mov    -0x8(%rbp),%esi
add    -0xc(%rbp),%esi
lea    0xdde(%rip),%rdi
call   1030 <printf@plt>
mov    -0x10(%rbp),%esi
add    -0x14(%rbp),%esi
lea    0xdcc(%rip),%rdi
call   1030 <printf@plt>
mov    -0x10(%rbp),%esi
add    -0x14(%rbp),%esi
lea    0xdba(%rip),%rdi
call   1030 <printf@plt>
mov    -0x10(%rbp),%esi
add    -0x8(%rbp),%esi
lea    0xda8(%rip),%rdi
call   1030 <printf@plt>
mov    -0x8(%rbp),%esi
sub    -0x14(%rbp),%esi
lea    0xd96(%rip),%rdi
call   1030 <printf@plt>
mov    -0x10(%rbp),%esi
imul   -0x14(%rbp),%esi
lea    0xd83(%rip),%rdi
call   1030 <printf@plt>
mov    -0x8(%rbp),%esi
add    -0xc(%rbp),%esi
lea    0xd71(%rip),%rdi
call   1030 <printf@plt>
mov    -0x10(%rbp),%esi
add    -0x14(%rbp),%esi
lea    0xd5f(%rip),%rdi
call   1030 <printf@plt>
mov    -0x10(%rbp),%esi
add    -0x14(%rbp),%esi
lea    0xd4d(%rip),%rdi
call   1030 <printf@plt>
mov    -0x10(%rbp),%esi
add    -0x8(%rbp),%esi
lea    0xd3b(%rip),%rdi
call   1030 <printf@plt>
mov    -0x8(%rbp),%esi
sub    -0x14(%rbp),%esi
lea    0xd29(%rip),%rdi
call   1030 <printf@plt>
mov    -0x10(%rbp),%esi
imul   -0x14(%rbp),%esi
lea    0xd16(%rip),%rdi
call   1030 <printf@plt>
mov    -0x8(%rbp),%esi
add    -0xc(%rbp),%esi
lea    0xd04(%rip),%rdi
call   1030 <printf@plt>
mov    -0x10(%rbp),%esi
add    -0x14(%rbp),%esi
lea    0xcf2(%rip),%rdi
call   1030 <printf@plt>
mov    -0x10(%rbp),%esi
add    -0x14(%rbp),%esi
lea    0xce0(%rip),%rdi
call   1030 <printf@plt>
mov    -0x10(%rbp),%esi
add    -0x8(%rbp),%esi
lea    0xcce(%rip),%rdi
call   1030 <printf@plt>
mov    -0x8(%rbp),%esi
sub    -0x14(%rbp),%esi
lea    0xcbc(%rip),%rdi
call   1030 <printf@plt>
mov    -0x10(%rbp),%esi
imul   -0x14(%rbp),%esi
lea    0xca9(%rip),%rdi
call   1030 <printf@plt>
mov    -0x8(%rbp),%esi
add    -0xc(%rbp),%esi
lea    0xc97(%rip),%rdi
call   1030 <printf@plt>
mov    -0x10(%rbp),%esi
add    -0x14(%rbp),%esi
lea    0xc85(%rip),%rdi
call   1030 <printf@plt>
mov    -0x10(%rbp),%esi
add    -0x14(%rbp),%esi
lea    0xc73(%rip),%rdi
call   1030 <printf@plt>
mov    -0x10(%rbp),%esi
add    -0x8(%rbp),%esi
lea    0xc61(%rip),%rdi
call   1030 <printf@plt>
mov    -0x8(%rbp),%esi
sub    -0x14(%rbp),%esi
lea    0xc4f(%rip),%rdi
call   1030 <printf@plt>
mov    -0x10(%rbp),%esi
imul   -0x14(%rbp),%esi
lea    0xc3c(%rip),%rdi
call   1030 <printf@plt>
mov    -0x8(%rbp),%esi
add    -0xc(%rbp),%esi
lea    0xc2a(%rip),%rdi
call   1030 <printf@plt>
mov    -0x10(%rbp),%esi
add    -0x14(%rbp),%esi
lea    0xc18(%rip),%rdi
call   1030 <printf@plt>
mov    -0x10(%rbp),%esi
add    -0x14(%rbp),%esi
lea    0xc06(%rip),%rdi
call   1030 <printf@plt>
mov    -0x10(%rbp),%esi
add    -0x8(%rbp),%esi
lea    0xbf4(%rip),%rdi
call   1030 <printf@plt>
mov    -0x8(%rbp),%esi
sub    -0x14(%rbp),%esi
lea    0xbe2(%rip),%rdi
call   1030 <printf@plt>
mov    -0x10(%rbp),%esi
imul   -0x14(%rbp),%esi
lea    0xbcf(%rip),%rdi
call   1030 <printf@plt>
mov    -0x8(%rbp),%esi
add    -0xc(%rbp),%esi
lea    0xbbd(%rip),%rdi
call   1030 <printf@plt>
mov    -0x10(%rbp),%esi
add    -0x14(%rbp),%esi
lea    0xbab(%rip),%rdi
call   1030 <printf@plt>
mov    -0x10(%rbp),%esi
add    -0x14(%rbp),%esi
lea    0xb99(%rip),%rdi
call   1030 <printf@plt>
mov    -0x10(%rbp),%esi
add    -0x8(%rbp),%esi
lea    0xb87(%rip),%rdi
call   1030 <printf@plt>
mov    -0x8(%rbp),%esi
sub    -0x14(%rbp),%esi
lea    0xb75(%rip),%rdi
call   1030 <printf@plt>
mov    -0x10(%rbp),%esi
imul   -0x14(%rbp),%esi
lea    0xb62(%rip),%rdi
call   1030 <printf@plt>
xor    %eax,%eax
add    $0x20,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbx
lea    0xee8(%rip),%rbx
mov    %rbx,%rdi
mov    $0xb,%esi
call   1030 <printf@plt>
mov    %rbx,%rdi
mov    $0xf,%esi
call   1030 <printf@plt>
mov    %rbx,%rdi
mov    $0xf,%esi
call   1030 <printf@plt>
mov    %rbx,%rdi
mov    $0xc,%esi
call   1030 <printf@plt>
mov    %rbx,%rdi
mov    $0xfffffffd,%esi
call   1030 <printf@plt>
mov    %rbx,%rdi
mov    $0x38,%esi
call   1030 <printf@plt>
mov    %rbx,%rdi
mov    $0xb,%esi
call   1030 <printf@plt>
mov    %rbx,%rdi
mov    $0xf,%esi
call   1030 <printf@plt>
mov    %rbx,%rdi
mov    $0xf,%esi
call   1030 <printf@plt>
mov    %rbx,%rdi
mov    $0xc,%esi
call   1030 <printf@plt>
mov    %rbx,%rdi
mov    $0xfffffffd,%esi
call   1030 <printf@plt>
mov    %rbx,%rdi
mov    $0x38,%esi
call   1030 <printf@plt>
mov    %rbx,%rdi
mov    $0xb,%esi
call   1030 <printf@plt>
mov    %rbx,%rdi
mov    $0xf,%esi
call   1030 <printf@plt>
mov    %rbx,%rdi
mov    $0xf,%esi
call   1030 <printf@plt>
mov    %rbx,%rdi
mov    $0xc,%esi
call   1030 <printf@plt>
mov    %rbx,%rdi
mov    $0xfffffffd,%esi
call   1030 <printf@plt>
mov    %rbx,%rdi
mov    $0x38,%esi
call   1030 <printf@plt>
mov    %rbx,%rdi
mov    $0xb,%esi
call   1030 <printf@plt>
mov    %rbx,%rdi
mov    $0xf,%esi
call   1030 <printf@plt>
mov    %rbx,%rdi
mov    $0xf,%esi
call   1030 <printf@plt>
mov    %rbx,%rdi
mov    $0xc,%esi
call   1030 <printf@plt>
mov    %rbx,%rdi
mov    $0xfffffffd,%esi
call   1030 <printf@plt>
mov    %rbx,%rdi
mov    $0x38,%esi
call   1030 <printf@plt>
mov    %rbx,%rdi
mov    $0xb,%esi
call   1030 <printf@plt>
mov    %rbx,%rdi
mov    $0xf,%esi
call   1030 <printf@plt>
mov    %rbx,%rdi
mov    $0xf,%esi
call   1030 <printf@plt>
mov    %rbx,%rdi
mov    $0xc,%esi
call   1030 <printf@plt>
mov    %rbx,%rdi
mov    $0xfffffffd,%esi
call   1030 <printf@plt>
mov    %rbx,%rdi
mov    $0x38,%esi
call   1030 <printf@plt>
mov    %rbx,%rdi
mov    $0xb,%esi
call   1030 <printf@plt>
mov    %rbx,%rdi
mov    $0xf,%esi
call   1030 <printf@plt>
mov    %rbx,%rdi
mov    $0xf,%esi
call   1030 <printf@plt>
mov    %rbx,%rdi
mov    $0xc,%esi
call   1030 <printf@plt>
mov    %rbx,%rdi
mov    $0xfffffffd,%esi
call   1030 <printf@plt>
mov    %rbx,%rdi
mov    $0x38,%esi
call   1030 <printf@plt>
mov    %rbx,%rdi
mov    $0xb,%esi
call   1030 <printf@plt>
mov    %rbx,%rdi
mov    $0xf,%esi
call   1030 <printf@plt>
mov    %rbx,%rdi
mov    $0xf,%esi
call   1030 <printf@plt>
mov    %rbx,%rdi
mov    $0xc,%esi
call   1030 <printf@plt>
mov    %rbx,%rdi
mov    $0xfffffffd,%esi
call   1030 <printf@plt>
mov    %rbx,%rdi
mov    $0x38,%esi
call   1030 <printf@plt>
mov    %rbx,%rdi
mov    $0xb,%esi
call   1030 <printf@plt>
mov    %rbx,%rdi
mov    $0xf,%esi
call   1030 <printf@plt>
mov    %rbx,%rdi
mov    $0xf,%esi
call   1030 <printf@plt>
mov    %rbx,%rdi
mov    $0xc,%esi
call   1030 <printf@plt>
mov    %rbx,%rdi
mov    $0xfffffffd,%esi
call   1030 <printf@plt>
mov    %rbx,%rdi
mov    $0x38,%esi
call   1030 <printf@plt>
xor    %eax,%eax
pop    %rbx
ret

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

LLVM IR (-O2):
@.str = [4 x i8] c"%d\0A\00"
define i32 @main() {
%1 = tail call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 11)
%2 = tail call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 15)
%3 = tail call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 15)
%4 = tail call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 12)
%5 = tail call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 -3)
%6 = tail call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 56)
%7 = tail call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 11)
%8 = tail call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 15)
%9 = tail call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 15)
%10 = tail call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 12)
%11 = tail call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 -3)
%12 = tail call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 56)
%13 = tail call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 11)
%14 = tail call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 15)
%15 = tail call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 15)
%16 = tail call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 12)
%17 = tail call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 -3)
%18 = tail call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 56)
%19 = tail call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 11)
%20 = tail call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 15)
%21 = tail call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 15)
%22 = tail call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 12)
%23 = tail call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 -3)
%24 = tail call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 56)
%25 = tail call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 11)
%26 = tail call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 15)
%27 = tail call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 15)
%28 = tail call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 12)
%29 = tail call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 -3)
%30 = tail call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 56)
%31 = tail call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 11)
%32 = tail call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 15)
%33 = tail call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 15)
%34 = tail call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 12)
%35 = tail call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 -3)
%36 = tail call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 56)
%37 = tail call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 11)
%38 = tail call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 15)
%39 = tail call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 15)
%40 = tail call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 12)
%41 = tail call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 -3)
%42 = tail call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 56)
%43 = tail call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 11)
%44 = tail call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 15)
%45 = tail call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 15)
%46 = tail call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 12)
%47 = tail call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 -3)
%48 = tail call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 56)
ret i32 0
}