#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*/ marker1();
int main() {
  char C, *pC, **ppC, ***pppC, ****ppppC, *****pppppC, ******ppppppC;
  unsigned char UC, *pUC;
  short S, *pS;
  unsigned short US, *pUS;
  int I, *pI;
  unsigned int UI, *pUI;
  long L, *pL;
  unsigned long UL, *pUL;
  float F, *pF;
  double D, *pD;
  C = 'A';
  UC = 21;
  S = -14;
  US = 7;
  I = 102;
  UI = 1002;
  L = -234;
  UL = 234;
  F = 1.25E10;
  D = -1.375E-123;
  pC = &C;
  ppC = &pC;
  pppC = &ppC;
  ppppC = &pppC;
  pppppC = &ppppC;
  ppppppC = &pppppC;
  pUC = &UC;
  pS = &S;
  pUS = &US;
  pI = &I;
  pUI = &UI;
  pL = &L;
  pUL = &UL;
  pF = &F;
  pD = &D;
  marker1();
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0xd0,%rsp
movl   $0x0,-0x4(%rbp)
movb   $0x41,-0x5(%rbp)
movb   $0x15,-0x39(%rbp)
movw   $0xfff2,-0x4a(%rbp)
movw   $0x7,-0x5a(%rbp)
movl   $0x66,-0x6c(%rbp)
movl   $0x3ea,-0x7c(%rbp)
movq   $0xffffffffffffff16,-0x90(%rbp)
16 ff ff ff
movq   $0xea,-0xa0(%rbp)
movss  0xea6(%rip),%xmm0
movss  %xmm0,-0xac(%rbp)
ff
movsd  0xe8e(%rip),%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
lea    -0x5(%rbp),%rax
mov    %rax,-0x10(%rbp)
lea    -0x10(%rbp),%rax
mov    %rax,-0x18(%rbp)
lea    -0x18(%rbp),%rax
mov    %rax,-0x20(%rbp)
lea    -0x20(%rbp),%rax
mov    %rax,-0x28(%rbp)
lea    -0x28(%rbp),%rax
mov    %rax,-0x30(%rbp)
lea    -0x30(%rbp),%rax
mov    %rax,-0x38(%rbp)
lea    -0x39(%rbp),%rax
mov    %rax,-0x48(%rbp)
lea    -0x4a(%rbp),%rax
mov    %rax,-0x58(%rbp)
lea    -0x5a(%rbp),%rax
mov    %rax,-0x68(%rbp)
lea    -0x6c(%rbp),%rax
mov    %rax,-0x78(%rbp)
lea    -0x7c(%rbp),%rax
mov    %rax,-0x88(%rbp)
lea    -0x90(%rbp),%rax
mov    %rax,-0x98(%rbp)
lea    -0xa0(%rbp),%rax
mov    %rax,-0xa8(%rbp)
lea    -0xac(%rbp),%rax
mov    %rax,-0xb8(%rbp)
lea    -0xc0(%rbp),%rax
mov    %rax,-0xc8(%rbp)
mov    $0x0,%al
call   1030 <marker1@plt>
xor    %eax,%eax
add    $0xd0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rax
xor    %eax,%eax
call   1030 <marker1@plt>
xor    %eax,%eax
pop    %rcx
ret

LLVM IR (-O0):
define i32 @main() {
%1 = alloca i32
%2 = alloca i8
%3 = alloca i8*
%4 = alloca i8**
%5 = alloca i8***
%6 = alloca i8****
%7 = alloca i8*****
%8 = alloca i8******
%9 = alloca i8
%10 = alloca i8*
%11 = alloca i16
%12 = alloca i16*
%13 = alloca i16
%14 = alloca i16*
%15 = alloca i32
%16 = alloca i32*
%17 = alloca i32
%18 = alloca i32*
%19 = alloca i64
%20 = alloca i64*
%21 = alloca i64
%22 = alloca i64*
%23 = alloca float
%24 = alloca float*
%25 = alloca double
%26 = alloca double*
store i32 0, i32* %1
store i8 65, i8* %2
store i8 21, i8* %9
store i16 -14, i16* %11
store i16 7, i16* %13
store i32 102, i32* %15
store i32 1002, i32* %17
store i64 -234, i64* %19
store i64 234, i64* %21
store float 0x42074876E0000000, float* %23
store double -1.375000e-123, double* %25
store i8* %2, i8** %3
store i8** %3, i8*** %4
store i8*** %4, i8**** %5
store i8**** %5, i8***** %6
store i8***** %6, i8****** %7
store i8****** %7, i8******* %8
store i8* %9, i8** %10
store i16* %11, i16** %12
store i16* %13, i16** %14
store i32* %15, i32** %16
store i32* %17, i32** %18
store i64* %19, i64** %20
store i64* %21, i64** %22
store float* %23, float** %24
store double* %25, double** %26
%27 = call i32 (...) @marker1()
ret i32 0
}

LLVM IR (-O2):
define i32 @main() {
%1 = tail call i32 (...) @marker1()
ret i32 0
}