#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 include_this_var) {
  auto char *multi = "a multi";
  char *include_this = "not_this_though";
  long butThisIs = 32;
  long butThisIsIncluded = 14;
  int var_a = 32;
  int var_b;
  int var_c;
  int var_d;
  int var_e;
  int var_f;
  int var_g;
  int var_h;
  int var_i;
  int var_j;
  int var_k;
  int var_l;
  int var_m;
  int var_n;
  int var_o;
  int var_p;
  int var_q;
  int var_r;
  int var_s;
  int var_t;
  int var_u;
  int var_v;
  int var_w;
  int var_x;
  int var_y;
  int var_z;
  int var_aa = 0;
  int var_bb;
  int var_cc;
  int var_dd;
  int var_ee;
  int var_ff;
  int var_gg;
  int var_hh;
  int var_ii;
  int var_jj;
  int var_kk;
  int var_ll;
  int var_mm;
  int var_nn;
  int var_oo;
  int var_pp;
  int var_qq;
  int var_rr;
  int var_ss;
  int var_tt;
  int var_uu;
  int var_vv;
  int var_ww;
  int var_xx;
  int var_yy;
  int var_zz;
  int var_aaa = 0;
  int var_bbb;
  int var_ccc;
  int var_ddd;
  int var_eee;
  int var_fff;
  int var_ggg;
  int var_hhh;
  int var_iii;
  int var_jjj;
  int var_kkk;
  int var_lll;
  int var_mmm;
  int var_nnn;
  int var_ooo;
  int var_ppp;
  int var_qqq;
  int var_rrr;
  int var_sss;
  int var_ttt;
  int var_uuu;
  int var_vvv;
  int var_www;
  int var_xxx;
  int var_yyy;
  int var_zzz;
  int var_aaaa = 0;
  int var_bbbb;
  int var_cccc;
  int var_dddd;
  int var_eeee;
  int var_ffff;
  int var_gggg;
  int var_hhhh;
  int var_iiii;
  int var_jjjj;
  int var_kkkk;
  int var_llll;
  int var_mmmm;
  int var_nnnn;
  int var_oooo;
  int var_pppp;
  int var_qqqq;
  int var_rrrr;
  int var_ssss;
  int var_tttt;
  int var_uuuu;
  int var_vvvv;
  int var_wwww;
  int var_xxxx;
  int var_yyyy;
  int var_zzzz;
  printf("output: %d\n", var_a);
  return butThisIs;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x1d0,%rsp
movl   $0x0,-0x4(%rbp)
mov    %edi,-0x8(%rbp)
lea    0xed4(%rip),%rax
mov    %rax,-0x10(%rbp)
lea    0xed1(%rip),%rax
mov    %rax,-0x18(%rbp)
movq   $0x20,-0x20(%rbp)
movq   $0xe,-0x28(%rbp)
movl   $0x20,-0x2c(%rbp)
movl   $0x0,-0x94(%rbp)
movl   $0x0,-0xfc(%rbp)
movl   $0x0,-0x164(%rbp)
mov    -0x2c(%rbp),%esi
lea    0xe9e(%rip),%rdi
call   1030 <printf@plt>
mov    -0x20(%rbp),%rax
add    $0x1d0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rax
lea    0xee8(%rip),%rdi
mov    $0x20,%esi
call   1030 <printf@plt>
mov    $0x20,%eax
pop    %rcx
ret

LLVM IR (-O0):
@.str = [8 x i8] c"a multi\00"
@.str.1 = [16 x i8] c"not_this_though\00"
@.str.2 = [12 x i8] c"output: %d\0A\00"
define i32 @main(i32 %0) {
%2 = alloca i32
%3 = alloca i32
%4 = alloca i8*
%5 = alloca i8*
%6 = alloca i64
%7 = alloca i64
%8 = alloca i32
%9 = alloca i32
%10 = alloca i32
%11 = alloca i32
%12 = alloca i32
%13 = alloca i32
%14 = alloca i32
%15 = alloca i32
%16 = alloca i32
%17 = alloca i32
%18 = alloca i32
%19 = alloca i32
%20 = alloca i32
%21 = alloca i32
%22 = alloca i32
%23 = alloca i32
%24 = alloca i32
%25 = alloca i32
%26 = alloca i32
%27 = alloca i32
%28 = alloca i32
%29 = alloca i32
%30 = alloca i32
%31 = alloca i32
%32 = alloca i32
%33 = alloca i32
%34 = alloca i32
%35 = alloca i32
%36 = alloca i32
%37 = alloca i32
%38 = alloca i32
%39 = alloca i32
%40 = alloca i32
%41 = alloca i32
%42 = alloca i32
%43 = alloca i32
%44 = alloca i32
%45 = alloca i32
%46 = alloca i32
%47 = alloca i32
%48 = alloca i32
%49 = alloca i32
%50 = alloca i32
%51 = alloca i32
%52 = alloca i32
%53 = alloca i32
%54 = alloca i32
%55 = alloca i32
%56 = alloca i32
%57 = alloca i32
%58 = alloca i32
%59 = alloca i32
%60 = alloca i32
%61 = alloca i32
%62 = alloca i32
%63 = alloca i32
%64 = alloca i32
%65 = alloca i32
%66 = alloca i32
%67 = alloca i32
%68 = alloca i32
%69 = alloca i32
%70 = alloca i32
%71 = alloca i32
%72 = alloca i32
%73 = alloca i32
%74 = alloca i32
%75 = alloca i32
%76 = alloca i32
%77 = alloca i32
%78 = alloca i32
%79 = alloca i32
%80 = alloca i32
%81 = alloca i32
%82 = alloca i32
%83 = alloca i32
%84 = alloca i32
%85 = alloca i32
%86 = alloca i32
%87 = alloca i32
%88 = alloca i32
%89 = alloca i32
%90 = alloca i32
%91 = alloca i32
%92 = alloca i32
%93 = alloca i32
%94 = alloca i32
%95 = alloca i32
%96 = alloca i32
%97 = alloca i32
%98 = alloca i32
%99 = alloca i32
%100 = alloca i32
%101 = alloca i32
%102 = alloca i32
%103 = alloca i32
%104 = alloca i32
%105 = alloca i32
%106 = alloca i32
%107 = alloca i32
%108 = alloca i32
%109 = alloca i32
%110 = alloca i32
%111 = alloca i32
store i32 0, i32* %2
store i32 %0, i32* %3
store i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str, i64 0, i64 0), i8** %4
store i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.1, i64 0, i64 0), i8** %5
store i64 32, i64* %6
store i64 14, i64* %7
store i32 32, i32* %8
store i32 0, i32* %34
store i32 0, i32* %60
store i32 0, i32* %86
%112 = load i32, i32* %8
%113 = call i32 @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.2, i64 0, i64 0), i32 %112)
%114 = load i64, i64* %6
%115 = trunc i64 %114 to i32
ret i32 %115
}

LLVM IR (-O2):
@.str.2 = [12 x i8] c"output: %d\0A\00"
define i32 @main(i32 %0) {
%2 = tail call i32 @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.2, i64 0, i64 0), i32 32)
ret i32 32
}