#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*/ DBL_DIG;
int DBL_EPSILON;
double DBL_MAX;
double DBL_MIN;
int /*<<< orphan*/ FLT_DIG;
int FLT_EPSILON;
double FLT_MAX;
double FLT_MIN;
int /*<<< orphan*/ INT_MAX;
int INT_MIN;
int /*<<< orphan*/ LDBL_DIG;
int LDBL_EPSILON;
double LDBL_MAX;
double LDBL_MIN;
int /*<<< orphan*/ LLONG_MAX;
int /*<<< orphan*/ LLONG_MIN;
int /*<<< orphan*/ LONG_MAX;
int /*<<< orphan*/ LONG_MIN;
int /*<<< orphan*/ SHRT_MAX;
int SHRT_MIN;
int /*<<< orphan*/ printf(char *, ...);
int main() {
  int max_l = 21;
  printf("|    TYP      |       MINIMUM       |       MAXIMUM       |      "
         "ZIARNO     |      PRECYZJA    |      WE/WY     |\n");
  printf("|-------------|---------------------|---------------------|----------"
         "-------|------------------|----------------|\n");
  printf("|SHORT        |%*i|%*i|                 |                  |       "
         "%%i       |\n",
         max_l, SHRT_MIN, max_l, SHRT_MAX);
  printf("|INTEGER      |%*i|%*i|                 |                  |       "
         "%%i       |\n",
         max_l, INT_MIN, max_l, INT_MAX);
  printf("|LONG         |%21li|%21li|                 |                  |     "
         "  %%li      |\n",
         LONG_MIN, LONG_MAX);
  printf("|LONG LONG    |%21lli|%21lli|                 |                  |   "
         "    %%lli     |\n",
         LLONG_MIN, LLONG_MAX);
  printf("|FLOAT        |%21e|%21e|%17le|%18d|   %%f lub %%e    |\n", FLT_MIN,
         FLT_MAX, FLT_EPSILON, FLT_DIG);
  printf("|DOUBLE       |%21e|%21e|%17le|%18d|  %%lf lub %%le   |\n", DBL_MIN,
         DBL_MAX, DBL_EPSILON, DBL_DIG);
  printf("|LONG DOUBLE  |%21Le|%21Le|%17Le|%18d|   %%Lf lub %%Le  |\n",
         LDBL_MIN, LDBL_MAX, LDBL_EPSILON, LDBL_DIG);
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
movl   $0x15,-0x4(%rbp)
lea    0xeda(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xf3f(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x4(%rbp),%esi
mov    0x2e2b(%rip),%rax
mov    (%rax),%edx
mov    -0x4(%rbp),%ecx
mov    0x2e17(%rip),%rax
mov    (%rax),%r8d
lea    0xf8b(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x4(%rbp),%esi
mov    0x2e4c(%rip),%rax
mov    (%rax),%edx
mov    -0x4(%rbp),%ecx
mov    0x2e58(%rip),%rax
mov    (%rax),%r8d
lea    0xfb4(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    0x2e38(%rip),%rax
mov    (%rax),%esi
mov    0x2de7(%rip),%rax
mov    (%rax),%edx
lea    0xfe4(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    0x2de8(%rip),%rax
mov    (%rax),%esi
mov    0x2df7(%rip),%rax
mov    (%rax),%edx
lea    0x1018(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    0x2e08(%rip),%rax
movsd  (%rax),%xmm0
mov    0x2dcd(%rip),%rax
movsd  (%rax),%xmm1
mov    0x2daa(%rip),%rax
mov    (%rax),%esi
mov    0x2e09(%rip),%rax
mov    (%rax),%edx
lea    0x1038(%rip),%rdi
mov    $0x2,%al
call   1030 <printf@plt>
mov    0x2d52(%rip),%rax
movsd  (%rax),%xmm0
mov    0x2d3f(%rip),%rax
movsd  (%rax),%xmm1
mov    0x2dc4(%rip),%rax
mov    (%rax),%esi
mov    0x2d9b(%rip),%rax
mov    (%rax),%edx
lea    0x103b(%rip),%rdi
mov    $0x2,%al
call   1030 <printf@plt>
mov    0x2d24(%rip),%rax
movsd  (%rax),%xmm0
mov    0x2d41(%rip),%rax
movsd  (%rax),%xmm1
mov    0x2cee(%rip),%rax
mov    (%rax),%esi
mov    0x2d1d(%rip),%rax
mov    (%rax),%edx
lea    0x103e(%rip),%rdi
mov    $0x2,%al
call   1030 <printf@plt>
xor    %eax,%eax
add    $0x10,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rax
lea    0x10cf(%rip),%rdi
call   1030 <puts@plt>
lea    0x1135(%rip),%rdi
call   1030 <puts@plt>
mov    0x2e30(%rip),%rax
mov    (%rax),%edx
mov    0x2e1f(%rip),%rax
mov    (%rax),%r8d
lea    0xead(%rip),%rdi
mov    $0x15,%esi
mov    $0x15,%ecx
xor    %eax,%eax
call   1040 <printf@plt>
mov    0x2e4d(%rip),%rax
mov    (%rax),%edx
mov    0x2e5c(%rip),%rax
mov    (%rax),%r8d
lea    0xed2(%rip),%rdi
mov    $0x15,%esi
mov    $0x15,%ecx
xor    %eax,%eax
call   1040 <printf@plt>
mov    0x2e32(%rip),%rax
mov    (%rax),%esi
mov    0x2de1(%rip),%rax
mov    (%rax),%edx
lea    0xef8(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    0x2de2(%rip),%rax
mov    (%rax),%esi
mov    0x2df1(%rip),%rax
mov    (%rax),%edx
lea    0xf2c(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    0x2e02(%rip),%rax
movsd  (%rax),%xmm0
mov    0x2dc7(%rip),%rax
movsd  (%rax),%xmm1
mov    0x2da4(%rip),%rax
mov    (%rax),%esi
mov    0x2e03(%rip),%rax
mov    (%rax),%edx
lea    0xf4c(%rip),%rdi
mov    $0x2,%al
call   1040 <printf@plt>
mov    0x2d4c(%rip),%rax
movsd  (%rax),%xmm0
mov    0x2d39(%rip),%rax
movsd  (%rax),%xmm1
mov    0x2dbe(%rip),%rax
mov    (%rax),%esi
mov    0x2d95(%rip),%rax
mov    (%rax),%edx
lea    0xf4f(%rip),%rdi
mov    $0x2,%al
call   1040 <printf@plt>
mov    0x2d1e(%rip),%rax
movsd  (%rax),%xmm0
mov    0x2d3b(%rip),%rax
movsd  (%rax),%xmm1
mov    0x2ce8(%rip),%rax
mov    (%rax),%esi
mov    0x2d17(%rip),%rax
mov    (%rax),%edx
lea    0xf52(%rip),%rdi
mov    $0x2,%al
call   1040 <printf@plt>
xor    %eax,%eax
pop    %rcx
ret

LLVM IR (-O0):
@.str = [115 x i8] c"| TYP | MINIMUM | MAXIMUM | ZIARNO | PRECYZJA | WE/WY |\0A\00"
@.str.1 = [115 x i8] c"|-------------|---------------------|---------------------|-----------------|------------------|----------------|\0A\00"
@.str.2 = [80 x i8] c"|SHORT |%*i|%*i| | | %%i |\0A\00"
@SHRT_MIN = global i32 0
@SHRT_MAX = global i32 0
@.str.3 = [80 x i8] c"|INTEGER |%*i|%*i| | | %%i |\0A\00"
@INT_MIN = global i32 0
@INT_MAX = global i32 0
@.str.4 = [84 x i8] c"|LONG |%21li|%21li| | | %%li |\0A\00"
@LONG_MIN = global i32 0
@LONG_MAX = global i32 0
@.str.5 = [86 x i8] c"|LONG LONG |%21lli|%21lli| | | %%lli |\0A\00"
@LLONG_MIN = global i32 0
@LLONG_MAX = global i32 0
@.str.6 = [57 x i8] c"|FLOAT |%21e|%21e|%17le|%18d| %%f lub %%e |\0A\00"
@FLT_MIN = global double 0.000000e+00
@FLT_MAX = global double 0.000000e+00
@FLT_EPSILON = global i32 0
@FLT_DIG = global i32 0
@.str.7 = [57 x i8] c"|DOUBLE |%21e|%21e|%17le|%18d| %%lf lub %%le |\0A\00"
@DBL_MIN = global double 0.000000e+00
@DBL_MAX = global double 0.000000e+00
@DBL_EPSILON = global i32 0
@DBL_DIG = global i32 0
@.str.8 = [59 x i8] c"|LONG DOUBLE |%21Le|%21Le|%17Le|%18d| %%Lf lub %%Le |\0A\00"
@LDBL_MIN = global double 0.000000e+00
@LDBL_MAX = global double 0.000000e+00
@LDBL_EPSILON = global i32 0
@LDBL_DIG = global i32 0
define i32 @main() {
%1 = alloca i32
store i32 21, i32* %1
%2 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([115 x i8], [115 x i8]* @.str, i64 0, i64 0))
%3 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([115 x i8], [115 x i8]* @.str.1, i64 0, i64 0))
%4 = load i32, i32* %1
%5 = load i32, i32* @SHRT_MIN
%6 = load i32, i32* %1
%7 = load i32, i32* @SHRT_MAX
%8 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.2, i64 0, i64 0), i32 %4, i32 %5, i32 %6, i32 %7)
%9 = load i32, i32* %1
%10 = load i32, i32* @INT_MIN
%11 = load i32, i32* %1
%12 = load i32, i32* @INT_MAX
%13 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.3, i64 0, i64 0), i32 %9, i32 %10, i32 %11, i32 %12)
%14 = load i32, i32* @LONG_MIN
%15 = load i32, i32* @LONG_MAX
%16 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([84 x i8], [84 x i8]* @.str.4, i64 0, i64 0), i32 %14, i32 %15)
%17 = load i32, i32* @LLONG_MIN
%18 = load i32, i32* @LLONG_MAX
%19 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([86 x i8], [86 x i8]* @.str.5, i64 0, i64 0), i32 %17, i32 %18)
%20 = load double, double* @FLT_MIN
%21 = load double, double* @FLT_MAX
%22 = load i32, i32* @FLT_EPSILON
%23 = load i32, i32* @FLT_DIG
%24 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([57 x i8], [57 x i8]* @.str.6, i64 0, i64 0), double %20, double %21, i32 %22, i32 %23)
%25 = load double, double* @DBL_MIN
%26 = load double, double* @DBL_MAX
%27 = load i32, i32* @DBL_EPSILON
%28 = load i32, i32* @DBL_DIG
%29 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([57 x i8], [57 x i8]* @.str.7, i64 0, i64 0), double %25, double %26, i32 %27, i32 %28)
%30 = load double, double* @LDBL_MIN
%31 = load double, double* @LDBL_MAX
%32 = load i32, i32* @LDBL_EPSILON
%33 = load i32, i32* @LDBL_DIG
%34 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([59 x i8], [59 x i8]* @.str.8, i64 0, i64 0), double %30, double %31, i32 %32, i32 %33)
ret i32 0
}

LLVM IR (-O2):
@.str.2 = [80 x i8] c"|SHORT |%*i|%*i| | | %%i |\0A\00"
@SHRT_MIN = global i32 0
@SHRT_MAX = global i32 0
@.str.3 = [80 x i8] c"|INTEGER |%*i|%*i| | | %%i |\0A\00"
@INT_MIN = global i32 0
@INT_MAX = global i32 0
@.str.4 = [84 x i8] c"|LONG |%21li|%21li| | | %%li |\0A\00"
@LONG_MIN = global i32 0
@LONG_MAX = global i32 0
@.str.5 = [86 x i8] c"|LONG LONG |%21lli|%21lli| | | %%lli |\0A\00"
@LLONG_MIN = global i32 0
@LLONG_MAX = global i32 0
@.str.6 = [57 x i8] c"|FLOAT |%21e|%21e|%17le|%18d| %%f lub %%e |\0A\00"
@FLT_MIN = global double 0.000000e+00
@FLT_MAX = global double 0.000000e+00
@FLT_EPSILON = global i32 0
@FLT_DIG = global i32 0
@.str.7 = [57 x i8] c"|DOUBLE |%21e|%21e|%17le|%18d| %%lf lub %%le |\0A\00"
@DBL_MIN = global double 0.000000e+00
@DBL_MAX = global double 0.000000e+00
@DBL_EPSILON = global i32 0
@DBL_DIG = global i32 0
@.str.8 = [59 x i8] c"|LONG DOUBLE |%21Le|%21Le|%17Le|%18d| %%Lf lub %%Le |\0A\00"
@LDBL_MIN = global double 0.000000e+00
@LDBL_MAX = global double 0.000000e+00
@LDBL_EPSILON = global i32 0
@LDBL_DIG = global i32 0
@str = [114 x i8] c"| TYP | MINIMUM | MAXIMUM | ZIARNO | PRECYZJA | WE/WY |\00"
@str.9 = [114 x i8] c"|-------------|---------------------|---------------------|-----------------|------------------|----------------|\00"
define i32 @main() {
%1 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([114 x i8], [114 x i8]* @str, i64 0, i64 0))
%2 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([114 x i8], [114 x i8]* @str.9, i64 0, i64 0))
%3 = load i32, i32* @SHRT_MIN
%4 = load i32, i32* @SHRT_MAX
%5 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([80 x i8], [80 x i8]* @.str.2, i64 0, i64 0), i32 21, i32 %3, i32 21, i32 %4)
%6 = load i32, i32* @INT_MIN
%7 = load i32, i32* @INT_MAX
%8 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([80 x i8], [80 x i8]* @.str.3, i64 0, i64 0), i32 21, i32 %6, i32 21, i32 %7)
%9 = load i32, i32* @LONG_MIN
%10 = load i32, i32* @LONG_MAX
%11 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([84 x i8], [84 x i8]* @.str.4, i64 0, i64 0), i32 %9, i32 %10)
%12 = load i32, i32* @LLONG_MIN
%13 = load i32, i32* @LLONG_MAX
%14 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([86 x i8], [86 x i8]* @.str.5, i64 0, i64 0), i32 %12, i32 %13)
%15 = load double, double* @FLT_MIN
%16 = load double, double* @FLT_MAX
%17 = load i32, i32* @FLT_EPSILON
%18 = load i32, i32* @FLT_DIG
%19 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([57 x i8], [57 x i8]* @.str.6, i64 0, i64 0), double %15, double %16, i32 %17, i32 %18)
%20 = load double, double* @DBL_MIN
%21 = load double, double* @DBL_MAX
%22 = load i32, i32* @DBL_EPSILON
%23 = load i32, i32* @DBL_DIG
%24 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([57 x i8], [57 x i8]* @.str.7, i64 0, i64 0), double %20, double %21, i32 %22, i32 %23)
%25 = load double, double* @LDBL_MIN
%26 = load double, double* @LDBL_MAX
%27 = load i32, i32* @LDBL_EPSILON
%28 = load i32, i32* @LDBL_DIG
%29 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([59 x i8], [59 x i8]* @.str.8, i64 0, i64 0), double %25, double %26, i32 %27, i32 %28)
ret i32 0
}