#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 */
typedef int /*<<< orphan*/ uint64_t;

/* Variables and functions */
unsigned long CHAR_BIT;
int DBL_DIG;
double DBL_EPSILON;
int DBL_MANT_DIG;
double DBL_MAX;
int DBL_MAX_10_EXP;
int DBL_MAX_EXP;
double DBL_MIN;
int DBL_MIN_10_EXP;
int DBL_MIN_EXP;
double DBL_TRUE_MIN;
int DECIMAL_DIG;
int FLT_DIG;
double FLT_EPSILON;
int FLT_EVAL_METHOD;
int FLT_MANT_DIG;
double FLT_MAX;
int FLT_MAX_10_EXP;
int FLT_MAX_EXP;
double FLT_MIN;
int FLT_MIN_10_EXP;
int FLT_MIN_EXP;
int FLT_RADIX;
int FLT_ROUNDS;
double FLT_TRUE_MIN;
int LDBL_DIG;
int /*<<< orphan*/ LDBL_EPSILON;
int LDBL_MANT_DIG;
int /*<<< orphan*/ LDBL_MAX;
int LDBL_MAX_10_EXP;
int LDBL_MAX_EXP;
int /*<<< orphan*/ LDBL_MIN;
int LDBL_MIN_10_EXP;
int LDBL_MIN_EXP;
int /*<<< orphan*/ LDBL_TRUE_MIN;
int atoi(char *);
int /*<<< orphan*/ printf(char *, ...);
int main(int argc, char **argv) {
  int verbose;
  verbose = argc > 1 ? atoi(argv[1]) : 0;
  printf("+---------------------+-------+-------+\n");
  printf("|               type  | bytes |  bits |\n");
  printf("+---------------------+-------+-------+\n");
  if (verbose > 0) {
    printf("| %19s | %5lu | %5lu |\n", "sizeof(char)",
           (unsigned long)sizeof(char), (unsigned long)sizeof(char) * CHAR_BIT);
    printf("| %19s | %5lu | %5lu |\n", "sizeof(short)",
           (unsigned long)sizeof(short),
           (unsigned long)sizeof(short) * CHAR_BIT);
    printf("| %19s | %5lu | %5lu |\n", "sizeof(int)",
           (unsigned long)sizeof(int), (unsigned long)sizeof(int) * CHAR_BIT);
    printf("| %19s | %5lu | %5lu |\n", "sizeof(long)",
           (unsigned long)sizeof(long), (unsigned long)sizeof(long) * CHAR_BIT);
    printf("| %19s | %5lu | %5lu |\n", "sizeof(long long)",
           (unsigned long)sizeof(long long),
           (unsigned long)sizeof(long long) * CHAR_BIT);
    printf("| %19s | %5lu | %5lu |\n", "sizeof(size_t)",
           (unsigned long)sizeof(size_t),
           (unsigned long)sizeof(size_t) * CHAR_BIT);
    printf("| %19s | %5lu | %5lu |\n", "sizeof(uint64_t)",
           (unsigned long)sizeof(uint64_t),
           (unsigned long)sizeof(uint64_t) * CHAR_BIT);
  }
  printf("| %19s | %5lu | %5lu |\n", "sizeof(float)",
         (unsigned long)sizeof(float), (unsigned long)sizeof(float) * CHAR_BIT);
  printf("| %19s | %5lu | %5lu |\n", "sizeof(double)",
         (unsigned long)sizeof(double),
         (unsigned long)sizeof(double) * CHAR_BIT);
  printf("| %19s | %5lu | %5lu |\n", "sizeof(long double)",
         (unsigned long)sizeof(long double),
         (unsigned long)sizeof(long double) * CHAR_BIT);
  printf("+---------------------+-------+-------+\n");
  printf("| Constant            |         Value |\n");
  printf("+---------------------+---------------+\n");
  printf("| %19s | %13d |\n", "FLT_ROUNDS", FLT_ROUNDS);
  printf("| %19s | %13d |\n", "FLT_EVAL_METHOD", FLT_EVAL_METHOD);
  printf("| %19s | %13d |\n", "FLT_RADIX", FLT_RADIX);
  printf("| %19s | %13d |\n", "FLT_DIG", FLT_DIG);
  printf("| %19s | %13d |\n", "DBL_DIG", DBL_DIG);
  printf("| %19s | %13d |\n", "LDBL_DIG", LDBL_DIG);
  if (verbose > 1) {
    printf("| %19s | %13.11f |\n", "FLT_EPSILON", FLT_EPSILON);
    printf("| %19s | %13.11f |\n", "DBL_EPSILON", DBL_EPSILON);
    printf("| %19s | %13.11Lf |\n", "LDBL_EPSILON", LDBL_EPSILON);
  }
  printf("| %19s | %13d |\n", "FLT_MANT_DIG", FLT_MANT_DIG);
  printf("| %19s | %13d |\n", "DBL_MANT_DIG", DBL_MANT_DIG);
  printf("| %19s | %13d |\n", "LDBL_MANT_DIG", LDBL_MANT_DIG);
  printf("| %19s | %13d |\n", "FLT_MIN_EXP", FLT_MIN_EXP);
  printf("| %19s | %13d |\n", "DBL_MIN_EXP", DBL_MIN_EXP);
  printf("| %19s | %13d |\n", "LDBL_MIN_EXP", LDBL_MIN_EXP);
  printf("| %19s | %13d |\n", "FLT_MIN_10_EXP", FLT_MIN_10_EXP);
  printf("| %19s | %13d |\n", "DBL_MIN_10_EXP", DBL_MIN_10_EXP);
  printf("| %19s | %13d |\n", "LDBL_MIN_10_EXP", LDBL_MIN_10_EXP);
  printf("| %19s | %13d |\n", "FLT_MAX_EXP", FLT_MAX_EXP);
  printf("| %19s | %13d |\n", "DBL_MAX_EXP", DBL_MAX_EXP);
  printf("| %19s | %13d |\n", "LDBL_MAX_EXP", LDBL_MAX_EXP);
  printf("| %19s | %13d |\n", "FLT_MAX_10_EXP", FLT_MAX_10_EXP);
  printf("| %19s | %13d |\n", "DBL_MAX_10_EXP", DBL_MAX_10_EXP);
  printf("| %19s | %13d |\n", "LDBL_MAX_10_EXP", LDBL_MAX_10_EXP);
  printf("| %19s | %13d |\n", "DECIMAL_DIG", DECIMAL_DIG);
  if (verbose > 1) {
    printf("%20s: %f |\n", "FLT_MIN", FLT_MIN);
    printf("%20s: %f |\n", "DBL_MIN", DBL_MIN);
    printf("%20s: %Lf |\n", "LDBL_MIN", LDBL_MIN);
    printf("%20s: %f |\n", "FLT_TRUE_MIN", FLT_TRUE_MIN);
    printf("%20s: %f |\n", "DBL_TRUE_MIN", DBL_TRUE_MIN);
    printf("%20s: %Lf |\n", "LDBL_TRUE_MIN", LDBL_TRUE_MIN);
    printf("%20s: %f |\n", "FLT_MAX", FLT_MAX);
    printf("%20s: %f |\n", "DBL_MAX", DBL_MAX);
    printf("%20s: %Lf |\n", "LDBL_MAX", LDBL_MAX);
  }
  printf("+---------------------+---------------+\n");
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x20,%rsp
movl   $0x0,-0x4(%rbp)
mov    %edi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
cmpl   $0x1,-0x8(%rbp)
jle    1155 <main+0x35>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rdi
call   1040 <atoi@plt>
mov    %eax,-0x18(%rbp)
jmp    115f <main+0x3f>
xor    %eax,%eax
mov    %eax,-0x18(%rbp)
jmp    115f <main+0x3f>
mov    -0x18(%rbp),%eax
mov    %eax,-0x14(%rbp)
lea    0xe94(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xeaf(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xe78(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
cmpl   $0x0,-0x14(%rbp)
jle    12b1 <main+0x191>
mov    0x2da8(%rip),%rax
mov    (%rax),%rcx
shl    $0x0,%rcx
lea    0xea4(%rip),%rdi
lea    0xeb5(%rip),%rsi
mov    $0x1,%edx
mov    $0x0,%al
call   1030 <printf@plt>
mov    0x2d80(%rip),%rax
mov    (%rax),%rcx
shl    $0x1,%rcx
lea    0xe7c(%rip),%rdi
lea    0xe9a(%rip),%rsi
mov    $0x2,%edx
mov    $0x0,%al
call   1030 <printf@plt>
mov    0x2d58(%rip),%rax
mov    (%rax),%rcx
shl    $0x2,%rcx
lea    0xe54(%rip),%rdi
lea    0xe80(%rip),%rsi
mov    $0x4,%edx
mov    $0x0,%al
call   1030 <printf@plt>
mov    0x2d30(%rip),%rax
mov    (%rax),%rcx
shl    $0x3,%rcx
lea    0xe2c(%rip),%rdi
lea    0xe64(%rip),%rsi
mov    $0x8,%edx
mov    $0x0,%al
call   1030 <printf@plt>
mov    0x2d08(%rip),%rax
mov    (%rax),%rcx
shl    $0x3,%rcx
lea    0xe04(%rip),%rdi
lea    0xe49(%rip),%rsi
mov    $0x8,%edx
mov    $0x0,%al
call   1030 <printf@plt>
mov    0x2ce0(%rip),%rax
mov    (%rax),%rcx
shl    $0x3,%rcx
lea    0xddc(%rip),%rdi
lea    0xe33(%rip),%rsi
mov    $0x8,%edx
mov    $0x0,%al
call   1030 <printf@plt>
mov    0x2cb8(%rip),%rax
mov    (%rax),%rcx
shl    $0x2,%rcx
lea    0xdb4(%rip),%rdi
lea    0xe1a(%rip),%rsi
mov    $0x4,%edx
mov    $0x0,%al
call   1030 <printf@plt>
mov    0x2c90(%rip),%rax
mov    (%rax),%rcx
shl    $0x2,%rcx
lea    0xd8c(%rip),%rdi
lea    0xe03(%rip),%rsi
mov    $0x4,%edx
mov    $0x0,%al
call   1030 <printf@plt>
mov    0x2c68(%rip),%rax
mov    (%rax),%rcx
shl    $0x3,%rcx
lea    0xd64(%rip),%rdi
lea    0xde9(%rip),%rsi
mov    $0x8,%edx
mov    $0x0,%al
call   1030 <printf@plt>
mov    0x2c40(%rip),%rax
mov    (%rax),%rcx
shl    $0x4,%rcx
lea    0xd3c(%rip),%rdi
lea    0xdd0(%rip),%rsi
mov    $0x10,%edx
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xcd0(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xdc3(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xdde(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    0x2c6e(%rip),%rax
mov    (%rax),%edx
lea    0xdf0(%rip),%rdi
lea    0xdfa(%rip),%rsi
mov    $0x0,%al
call   1030 <printf@plt>
mov    0x2b90(%rip),%rax
mov    (%rax),%edx
lea    0xdd2(%rip),%rdi
lea    0xde7(%rip),%rsi
mov    $0x0,%al
call   1030 <printf@plt>
mov    0x2c3a(%rip),%rax
mov    (%rax),%edx
lea    0xdb4(%rip),%rdi
lea    0xdd9(%rip),%rsi
mov    $0x0,%al
call   1030 <printf@plt>
mov    0x2c44(%rip),%rax
mov    (%rax),%edx
lea    0xd96(%rip),%rdi
lea    0xdc5(%rip),%rsi
mov    $0x0,%al
call   1030 <printf@plt>
mov    0x2bae(%rip),%rax
mov    (%rax),%edx
lea    0xd78(%rip),%rdi
lea    0xdb0(%rip),%rsi
mov    $0x0,%al
call   1030 <printf@plt>
mov    0x2b40(%rip),%rax
mov    (%rax),%edx
lea    0xd5a(%rip),%rdi
lea    0xd91(%rip),%rsi
mov    $0x0,%al
call   1030 <printf@plt>
cmpl   $0x1,-0x14(%rbp)
jle    146f <main+0x34f>
mov    0x2b38(%rip),%rax
movsd  (%rax),%xmm0
lea    0xd77(%rip),%rdi
lea    0xd84(%rip),%rsi
mov    $0x1,%al
call   1030 <printf@plt>
mov    0x2b68(%rip),%rax
movsd  (%rax),%xmm0
lea    0xd57(%rip),%rdi
lea    0xd86(%rip),%rsi
mov    $0x1,%al
call   1030 <printf@plt>
mov    0x2a70(%rip),%rax
mov    (%rax),%edx
lea    0xd59(%rip),%rdi
lea    0xd67(%rip),%rsi
mov    $0x0,%al
call   1030 <printf@plt>
mov    0x2ab2(%rip),%rax
mov    (%rax),%edx
lea    0xcd4(%rip),%rdi
lea    0xd56(%rip),%rsi
mov    $0x0,%al
call   1030 <printf@plt>
mov    0x2b14(%rip),%rax
mov    (%rax),%edx
lea    0xcb6(%rip),%rdi
lea    0xd46(%rip),%rsi
mov    $0x0,%al
call   1030 <printf@plt>
mov    0x2a3e(%rip),%rax
mov    (%rax),%edx
lea    0xc98(%rip),%rdi
lea    0xd27(%rip),%rsi
mov    $0x0,%al
call   1030 <printf@plt>
mov    0x2aa8(%rip),%rax
mov    (%rax),%edx
lea    0xc7a(%rip),%rdi
lea    0xd17(%rip),%rsi
mov    $0x0,%al
call   1030 <printf@plt>
mov    0x2ad2(%rip),%rax
mov    (%rax),%edx
lea    0xc5c(%rip),%rdi
lea    0xd06(%rip),%rsi
mov    $0x0,%al
call   1030 <printf@plt>
mov    0x29ec(%rip),%rax
mov    (%rax),%edx
lea    0xc3e(%rip),%rdi
lea    0xce7(%rip),%rsi
mov    $0x0,%al
call   1030 <printf@plt>
mov    0x2a46(%rip),%rax
mov    (%rax),%edx
lea    0xc20(%rip),%rdi
lea    0xcd6(%rip),%rsi
mov    $0x0,%al
call   1030 <printf@plt>
mov    0x2aa0(%rip),%rax
mov    (%rax),%edx
lea    0xc02(%rip),%rdi
lea    0xcc8(%rip),%rsi
mov    $0x0,%al
call   1030 <printf@plt>
mov    0x2a4a(%rip),%rax
mov    (%rax),%edx
lea    0xbe4(%rip),%rdi
lea    0xca9(%rip),%rsi
mov    $0x0,%al
call   1030 <printf@plt>
mov    0x2a04(%rip),%rax
mov    (%rax),%edx
lea    0xbc6(%rip),%rdi
lea    0xc9b(%rip),%rsi
mov    $0x0,%al
call   1030 <printf@plt>
mov    0x2a16(%rip),%rax
mov    (%rax),%edx
lea    0xba8(%rip),%rdi
lea    0xc8a(%rip),%rsi
mov    $0x0,%al
call   1030 <printf@plt>
mov    0x2978(%rip),%rax
mov    (%rax),%edx
lea    0xb8a(%rip),%rdi
lea    0xc6b(%rip),%rsi
mov    $0x0,%al
call   1030 <printf@plt>
mov    0x2922(%rip),%rax
mov    (%rax),%edx
lea    0xb6c(%rip),%rdi
lea    0xc5a(%rip),%rsi
mov    $0x0,%al
call   1030 <printf@plt>
mov    0x29e4(%rip),%rax
mov    (%rax),%edx
lea    0xb4e(%rip),%rdi
lea    0xc4c(%rip),%rsi
mov    $0x0,%al
call   1030 <printf@plt>
mov    0x2976(%rip),%rax
mov    (%rax),%edx
lea    0xb30(%rip),%rdi
lea    0xc2d(%rip),%rsi
mov    $0x0,%al
call   1030 <printf@plt>
mov    0x28d8(%rip),%rax
mov    (%rax),%edx
lea    0xb12(%rip),%rdi
lea    0xc1f(%rip),%rsi
mov    $0x0,%al
call   1030 <printf@plt>
cmpl   $0x1,-0x14(%rbp)
jle    1773 <main+0x653>
mov    0x2938(%rip),%rax
movsd  (%rax),%xmm0
lea    0xc08(%rip),%rdi
lea    0xc0d(%rip),%rsi
mov    $0x1,%al
call   1030 <printf@plt>
mov    0x2868(%rip),%rax
movsd  (%rax),%xmm0
lea    0xbe8(%rip),%rdi
lea    0xc03(%rip),%rsi
mov    $0x1,%al
call   1030 <printf@plt>
mov    0x2880(%rip),%rax
mov    (%rax),%edx
lea    0xbde(%rip),%rdi
lea    0xbe4(%rip),%rsi
mov    $0x0,%al
call   1030 <printf@plt>
mov    0x289a(%rip),%rax
movsd  (%rax),%xmm0
lea    0xbaa(%rip),%rdi
lea    0xbcd(%rip),%rsi
mov    $0x1,%al
call   1030 <printf@plt>
mov    0x27f2(%rip),%rax
movsd  (%rax),%xmm0
lea    0xb8a(%rip),%rdi
lea    0xbbb(%rip),%rsi
mov    $0x1,%al
call   1030 <printf@plt>
mov    0x281a(%rip),%rax
mov    (%rax),%edx
lea    0xb80(%rip),%rdi
lea    0xb9c(%rip),%rsi
mov    $0x0,%al
call   1030 <printf@plt>
mov    0x284c(%rip),%rax
movsd  (%rax),%xmm0
lea    0xb4c(%rip),%rdi
lea    0xb8a(%rip),%rsi
mov    $0x1,%al
call   1030 <printf@plt>
mov    0x27a4(%rip),%rax
movsd  (%rax),%xmm0
lea    0xb2c(%rip),%rdi
lea    0xb73(%rip),%rsi
mov    $0x1,%al
call   1030 <printf@plt>
mov    0x27e4(%rip),%rax
mov    (%rax),%edx
lea    0xb22(%rip),%rdi
lea    0xb54(%rip),%rsi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0x9b0(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
xor    %eax,%eax
add    $0x20,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbp
push   %r14
push   %rbx
xor    %r14d,%r14d
cmp    $0x2,%edi
jl     1148 <main+0x18>
mov    0x8(%rsi),%rdi
call   1050 <atoi@plt>
mov    %eax,%r14d
lea    0x10fe(%rip),%rbx
mov    %rbx,%rdi
call   1030 <puts@plt>
lea    0x10c7(%rip),%rdi
call   1030 <puts@plt>
mov    %rbx,%rdi
call   1030 <puts@plt>
test   %r14d,%r14d
jle    124f <main+0x11f>
mov    0x2dcd(%rip),%rbp
mov    0x0(%rbp),%rcx
lea    0xe7a(%rip),%rbx
lea    0xe8b(%rip),%rsi
mov    $0x1,%edx
mov    %rbx,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    0x0(%rbp),%rcx
add    %rcx,%rcx
lea    0xe7b(%rip),%rsi
mov    $0x2,%edx
mov    %rbx,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    0x0(%rbp),%rcx
shl    $0x2,%rcx
lea    0xe6b(%rip),%rsi
mov    $0x4,%edx
mov    %rbx,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    0x0(%rbp),%rcx
shl    $0x3,%rcx
lea    0xe59(%rip),%rsi
mov    $0x8,%edx
mov    %rbx,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    0x0(%rbp),%rcx
shl    $0x3,%rcx
lea    0xe48(%rip),%rsi
mov    $0x8,%edx
mov    %rbx,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    0x0(%rbp),%rcx
shl    $0x3,%rcx
lea    0xe3c(%rip),%rsi
mov    $0x8,%edx
mov    %rbx,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    0x0(%rbp),%rcx
shl    $0x2,%rcx
lea    0xe2d(%rip),%rsi
mov    $0x4,%edx
mov    %rbx,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    0x2cf2(%rip),%rbp
mov    0x0(%rbp),%rcx
shl    $0x2,%rcx
lea    0xd9b(%rip),%rbx
lea    0xe12(%rip),%rsi
mov    $0x4,%edx
mov    %rbx,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    0x0(%rbp),%rcx
shl    $0x3,%rcx
lea    0xe02(%rip),%rsi
mov    $0x8,%edx
mov    %rbx,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    0x0(%rbp),%rcx
shl    $0x4,%rcx
lea    0xdf3(%rip),%rsi
mov    $0x10,%edx
mov    %rbx,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
lea    0xf8f(%rip),%rdi
call   1030 <puts@plt>
lea    0xfab(%rip),%rdi
call   1030 <puts@plt>
lea    0xfc7(%rip),%rdi
call   1030 <puts@plt>
mov    0x2ce6(%rip),%rax
mov    (%rax),%edx
lea    0xdc4(%rip),%rbx
lea    0xdce(%rip),%rsi
mov    %rbx,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    0x2c05(%rip),%rax
mov    (%rax),%edx
lea    0xdbf(%rip),%rsi
mov    %rbx,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    0x2cb3(%rip),%rax
mov    (%rax),%edx
lea    0xdb5(%rip),%rsi
mov    %rbx,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    0x2cc1(%rip),%rax
mov    (%rax),%edx
lea    0xda5(%rip),%rsi
mov    %rbx,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    0x2c2f(%rip),%rax
mov    (%rax),%edx
lea    0xd94(%rip),%rsi
mov    %rbx,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    0x2bc5(%rip),%rax
mov    (%rax),%edx
lea    0xd79(%rip),%rsi
mov    %rbx,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
cmp    $0x2,%r14d
jl     13e1 <main+0x2b1>
mov    0x2bc5(%rip),%rax
movsd  (%rax),%xmm0
lea    0xd60(%rip),%rbx
lea    0xd6d(%rip),%rsi
mov    %rbx,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    0x2bf2(%rip),%rax
movsd  (%rax),%xmm0
lea    0xd73(%rip),%rsi
mov    %rbx,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    0x2afe(%rip),%rax
mov    (%rax),%edx
lea    0xd43(%rip),%rdi
lea    0xd51(%rip),%rsi
xor    %eax,%eax
call   1040 <printf@plt>
mov    0x2b40(%rip),%rax
mov    (%rax),%edx
lea    0xcbe(%rip),%rbx
lea    0xd40(%rip),%rsi
mov    %rbx,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    0x2b9f(%rip),%rax
mov    (%rax),%edx
lea    0xd34(%rip),%rsi
mov    %rbx,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    0x2acd(%rip),%rax
mov    (%rax),%edx
lea    0xd19(%rip),%rsi
mov    %rbx,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    0x2b3b(%rip),%rax
mov    (%rax),%edx
lea    0xd0d(%rip),%rsi
mov    %rbx,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    0x2b69(%rip),%rax
mov    (%rax),%edx
lea    0xd00(%rip),%rsi
mov    %rbx,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    0x2a87(%rip),%rax
mov    (%rax),%edx
lea    0xce5(%rip),%rsi
mov    %rbx,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    0x2ae5(%rip),%rax
mov    (%rax),%edx
lea    0xcd8(%rip),%rsi
mov    %rbx,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    0x2b43(%rip),%rax
mov    (%rax),%edx
lea    0xcce(%rip),%rsi
mov    %rbx,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    0x2af1(%rip),%rax
mov    (%rax),%edx
lea    0xcb3(%rip),%rsi
mov    %rbx,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    0x2aaf(%rip),%rax
mov    (%rax),%edx
lea    0xca9(%rip),%rsi
mov    %rbx,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    0x2ac5(%rip),%rax
mov    (%rax),%edx
lea    0xc9c(%rip),%rsi
mov    %rbx,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    0x2a2b(%rip),%rax
mov    (%rax),%edx
lea    0xc81(%rip),%rsi
mov    %rbx,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    0x29d9(%rip),%rax
mov    (%rax),%edx
lea    0xc74(%rip),%rsi
mov    %rbx,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    0x2a9f(%rip),%rax
mov    (%rax),%edx
lea    0xc6a(%rip),%rsi
mov    %rbx,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    0x2a35(%rip),%rax
mov    (%rax),%edx
lea    0xc4f(%rip),%rsi
mov    %rbx,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    0x299b(%rip),%rax
mov    (%rax),%edx
lea    0xc45(%rip),%rsi
mov    %rbx,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
cmp    $0x2,%r14d
jl     1696 <main+0x566>
mov    0x29ff(%rip),%rax
movsd  (%rax),%xmm0
lea    0xc2b(%rip),%rbx
lea    0xc30(%rip),%rsi
mov    %rbx,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    0x292c(%rip),%rax
movsd  (%rax),%xmm0
lea    0xc2a(%rip),%rsi
mov    %rbx,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    0x2948(%rip),%rax
mov    (%rax),%edx
lea    0xc02(%rip),%rbp
lea    0xc08(%rip),%rsi
mov    %rbp,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    0x295f(%rip),%rax
movsd  (%rax),%xmm0
lea    0xbf5(%rip),%rsi
mov    %rbx,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    0x28bb(%rip),%rax
movsd  (%rax),%xmm0
lea    0xbe7(%rip),%rsi
mov    %rbx,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    0x28e7(%rip),%rax
mov    (%rax),%edx
lea    0xbcc(%rip),%rsi
mov    %rbp,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    0x291d(%rip),%rax
movsd  (%rax),%xmm0
lea    0xbbe(%rip),%rsi
mov    %rbx,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    0x2879(%rip),%rax
movsd  (%rax),%xmm0
lea    0xbab(%rip),%rsi
mov    %rbx,%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    0x28bd(%rip),%rax
mov    (%rax),%edx
lea    0xb90(%rip),%rsi
mov    %rbp,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
lea    0xc00(%rip),%rdi
call   1030 <puts@plt>
xor    %eax,%eax
pop    %rbx
pop    %r14
pop    %rbp
ret

LLVM IR (-O0):
@.str = [41 x i8] c"+---------------------+-------+-------+\0A\00"
@.str.1 = [41 x i8] c"| type | bytes | bits |\0A\00"
@.str.2 = [24 x i8] c"| %19s | %5lu | %5lu |\0A\00"
@.str.3 = [13 x i8] c"sizeof(char)\00"
@CHAR_BIT = global i64 0
@.str.4 = [14 x i8] c"sizeof(short)\00"
@.str.5 = [12 x i8] c"sizeof(int)\00"
@.str.6 = [13 x i8] c"sizeof(long)\00"
@.str.7 = [18 x i8] c"sizeof(long long)\00"
@.str.8 = [15 x i8] c"sizeof(size_t)\00"
@.str.9 = [17 x i8] c"sizeof(uint64_t)\00"
@.str.10 = [14 x i8] c"sizeof(float)\00"
@.str.11 = [15 x i8] c"sizeof(double)\00"
@.str.12 = [20 x i8] c"sizeof(long double)\00"
@.str.13 = [41 x i8] c"| Constant | Value |\0A\00"
@.str.14 = [41 x i8] c"+---------------------+---------------+\0A\00"
@.str.15 = [17 x i8] c"| %19s | %13d |\0A\00"
@.str.16 = [11 x i8] c"FLT_ROUNDS\00"
@FLT_ROUNDS = global i32 0
@.str.17 = [16 x i8] c"FLT_EVAL_METHOD\00"
@FLT_EVAL_METHOD = global i32 0
@.str.18 = [10 x i8] c"FLT_RADIX\00"
@FLT_RADIX = global i32 0
@.str.19 = [8 x i8] c"FLT_DIG\00"
@FLT_DIG = global i32 0
@.str.20 = [8 x i8] c"DBL_DIG\00"
@DBL_DIG = global i32 0
@.str.21 = [9 x i8] c"LDBL_DIG\00"
@LDBL_DIG = global i32 0
@.str.22 = [20 x i8] c"| %19s | %13.11f |\0A\00"
@.str.23 = [12 x i8] c"FLT_EPSILON\00"
@FLT_EPSILON = global double 0.000000e+00
@.str.24 = [12 x i8] c"DBL_EPSILON\00"
@DBL_EPSILON = global double 0.000000e+00
@.str.25 = [21 x i8] c"| %19s | %13.11Lf |\0A\00"
@.str.26 = [13 x i8] c"LDBL_EPSILON\00"
@LDBL_EPSILON = global i32 0
@.str.27 = [13 x i8] c"FLT_MANT_DIG\00"
@FLT_MANT_DIG = global i32 0
@.str.28 = [13 x i8] c"DBL_MANT_DIG\00"
@DBL_MANT_DIG = global i32 0
@.str.29 = [14 x i8] c"LDBL_MANT_DIG\00"
@LDBL_MANT_DIG = global i32 0
@.str.30 = [12 x i8] c"FLT_MIN_EXP\00"
@FLT_MIN_EXP = global i32 0
@.str.31 = [12 x i8] c"DBL_MIN_EXP\00"
@DBL_MIN_EXP = global i32 0
@.str.32 = [13 x i8] c"LDBL_MIN_EXP\00"
@LDBL_MIN_EXP = global i32 0
@.str.33 = [15 x i8] c"FLT_MIN_10_EXP\00"
@FLT_MIN_10_EXP = global i32 0
@.str.34 = [15 x i8] c"DBL_MIN_10_EXP\00"
@DBL_MIN_10_EXP = global i32 0
@.str.35 = [16 x i8] c"LDBL_MIN_10_EXP\00"
@LDBL_MIN_10_EXP = global i32 0
@.str.36 = [12 x i8] c"FLT_MAX_EXP\00"
@FLT_MAX_EXP = global i32 0
@.str.37 = [12 x i8] c"DBL_MAX_EXP\00"
@DBL_MAX_EXP = global i32 0
@.str.38 = [13 x i8] c"LDBL_MAX_EXP\00"
@LDBL_MAX_EXP = global i32 0
@.str.39 = [15 x i8] c"FLT_MAX_10_EXP\00"
@FLT_MAX_10_EXP = global i32 0
@.str.40 = [15 x i8] c"DBL_MAX_10_EXP\00"
@DBL_MAX_10_EXP = global i32 0
@.str.41 = [16 x i8] c"LDBL_MAX_10_EXP\00"
@LDBL_MAX_10_EXP = global i32 0
@.str.42 = [12 x i8] c"DECIMAL_DIG\00"
@DECIMAL_DIG = global i32 0
@.str.43 = [12 x i8] c"%20s: %f |\0A\00"
@.str.44 = [8 x i8] c"FLT_MIN\00"
@FLT_MIN = global double 0.000000e+00
@.str.45 = [8 x i8] c"DBL_MIN\00"
@DBL_MIN = global double 0.000000e+00
@.str.46 = [13 x i8] c"%20s: %Lf |\0A\00"
@.str.47 = [9 x i8] c"LDBL_MIN\00"
@LDBL_MIN = global i32 0
@.str.48 = [13 x i8] c"FLT_TRUE_MIN\00"
@FLT_TRUE_MIN = global double 0.000000e+00
@.str.49 = [13 x i8] c"DBL_TRUE_MIN\00"
@DBL_TRUE_MIN = global double 0.000000e+00
@.str.50 = [14 x i8] c"LDBL_TRUE_MIN\00"
@LDBL_TRUE_MIN = global i32 0
@.str.51 = [8 x i8] c"FLT_MAX\00"
@FLT_MAX = global double 0.000000e+00
@.str.52 = [8 x i8] c"DBL_MAX\00"
@DBL_MAX = global double 0.000000e+00
@.str.53 = [9 x i8] c"LDBL_MAX\00"
@LDBL_MAX = global i32 0
define i32 @main(i32 %0, i8** %1) {
%3 = alloca i32
%4 = alloca i32
%5 = alloca i8**
%6 = alloca i32
store i32 0, i32* %3
store i32 %0, i32* %4
store i8** %1, i8*** %5
%7 = load i32, i32* %4
%8 = icmp sgt i32 %7, 1
br i1 %8, label %9, label %14
9: ; preds = %2
%10 = load i8**, i8*** %5
%11 = getelementptr inbounds i8*, i8** %10, i64 1
%12 = load i8*, i8** %11
%13 = call i32 @atoi(i8* %12)
br label %15
14: ; preds = %2
br label %15
15: ; preds = %14, %9
%16 = phi i32 [ %13, %9 ], [ 0, %14 ]
store i32 %16, i32* %6
%17 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([41 x i8], [41 x i8]* @.str, i64 0, i64 0))
%18 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([41 x i8], [41 x i8]* @.str.1, i64 0, i64 0))
%19 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([41 x i8], [41 x i8]* @.str, i64 0, i64 0))
%20 = load i32, i32* %6
%21 = icmp sgt i32 %20, 0
br i1 %21, label %22, label %44
22: ; preds = %15
%23 = load i64, i64* @CHAR_BIT
%24 = mul i64 1, %23
%25 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.3, i64 0, i64 0), i64 1, i64 %24)
%26 = load i64, i64* @CHAR_BIT
%27 = mul i64 2, %26
%28 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.4, i64 0, i64 0), i64 2, i64 %27)
%29 = load i64, i64* @CHAR_BIT
%30 = mul i64 4, %29
%31 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.5, i64 0, i64 0), i64 4, i64 %30)
%32 = load i64, i64* @CHAR_BIT
%33 = mul i64 8, %32
%34 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.6, i64 0, i64 0), i64 8, i64 %33)
%35 = load i64, i64* @CHAR_BIT
%36 = mul i64 8, %35
%37 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.7, i64 0, i64 0), i64 8, i64 %36)
%38 = load i64, i64* @CHAR_BIT
%39 = mul i64 8, %38
%40 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.8, i64 0, i64 0), i64 8, i64 %39)
%41 = load i64, i64* @CHAR_BIT
%42 = mul i64 4, %41
%43 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.9, i64 0, i64 0), i64 4, i64 %42)
br label %44
44: ; preds = %22, %15
%45 = load i64, i64* @CHAR_BIT
%46 = mul i64 4, %45
%47 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.10, i64 0, i64 0), i64 4, i64 %46)
%48 = load i64, i64* @CHAR_BIT
%49 = mul i64 8, %48
%50 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.11, i64 0, i64 0), i64 8, i64 %49)
%51 = load i64, i64* @CHAR_BIT
%52 = mul i64 16, %51
%53 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.12, i64 0, i64 0), i64 16, i64 %52)
%54 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([41 x i8], [41 x i8]* @.str, i64 0, i64 0))
%55 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([41 x i8], [41 x i8]* @.str.13, i64 0, i64 0))
%56 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([41 x i8], [41 x i8]* @.str.14, i64 0, i64 0))
%57 = load i32, i32* @FLT_ROUNDS
%58 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.15, i64 0, i64 0), i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.16, i64 0, i64 0), i32 %57)
%59 = load i32, i32* @FLT_EVAL_METHOD
%60 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.15, i64 0, i64 0), i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.17, i64 0, i64 0), i32 %59)
%61 = load i32, i32* @FLT_RADIX
%62 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.15, i64 0, i64 0), i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.18, i64 0, i64 0), i32 %61)
%63 = load i32, i32* @FLT_DIG
%64 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.15, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.19, i64 0, i64 0), i32 %63)
%65 = load i32, i32* @DBL_DIG
%66 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.15, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.20, i64 0, i64 0), i32 %65)
%67 = load i32, i32* @LDBL_DIG
%68 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.15, i64 0, i64 0), i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.21, i64 0, i64 0), i32 %67)
%69 = load i32, i32* %6
%70 = icmp sgt i32 %69, 1
br i1 %70, label %71, label %78
71: ; preds = %44
%72 = load double, double* @FLT_EPSILON
%73 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.22, i64 0, i64 0), i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.23, i64 0, i64 0), double %72)
%74 = load double, double* @DBL_EPSILON
%75 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.22, i64 0, i64 0), i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.24, i64 0, i64 0), double %74)
%76 = load i32, i32* @LDBL_EPSILON
%77 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.25, i64 0, i64 0), i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.26, i64 0, i64 0), i32 %76)
br label %78
78: ; preds = %71, %44
%79 = load i32, i32* @FLT_MANT_DIG
%80 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.15, i64 0, i64 0), i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.27, i64 0, i64 0), i32 %79)
%81 = load i32, i32* @DBL_MANT_DIG
%82 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.15, i64 0, i64 0), i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.28, i64 0, i64 0), i32 %81)
%83 = load i32, i32* @LDBL_MANT_DIG
%84 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.15, i64 0, i64 0), i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.29, i64 0, i64 0), i32 %83)
%85 = load i32, i32* @FLT_MIN_EXP
%86 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.15, i64 0, i64 0), i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.30, i64 0, i64 0), i32 %85)
%87 = load i32, i32* @DBL_MIN_EXP
%88 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.15, i64 0, i64 0), i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.31, i64 0, i64 0), i32 %87)
%89 = load i32, i32* @LDBL_MIN_EXP
%90 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.15, i64 0, i64 0), i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.32, i64 0, i64 0), i32 %89)
%91 = load i32, i32* @FLT_MIN_10_EXP
%92 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.15, i64 0, i64 0), i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.33, i64 0, i64 0), i32 %91)
%93 = load i32, i32* @DBL_MIN_10_EXP
%94 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.15, i64 0, i64 0), i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.34, i64 0, i64 0), i32 %93)
%95 = load i32, i32* @LDBL_MIN_10_EXP
%96 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.15, i64 0, i64 0), i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.35, i64 0, i64 0), i32 %95)
%97 = load i32, i32* @FLT_MAX_EXP
%98 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.15, i64 0, i64 0), i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.36, i64 0, i64 0), i32 %97)
%99 = load i32, i32* @DBL_MAX_EXP
%100 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.15, i64 0, i64 0), i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.37, i64 0, i64 0), i32 %99)
%101 = load i32, i32* @LDBL_MAX_EXP
%102 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.15, i64 0, i64 0), i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.38, i64 0, i64 0), i32 %101)
%103 = load i32, i32* @FLT_MAX_10_EXP
%104 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.15, i64 0, i64 0), i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.39, i64 0, i64 0), i32 %103)
%105 = load i32, i32* @DBL_MAX_10_EXP
%106 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.15, i64 0, i64 0), i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.40, i64 0, i64 0), i32 %105)
%107 = load i32, i32* @LDBL_MAX_10_EXP
%108 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.15, i64 0, i64 0), i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.41, i64 0, i64 0), i32 %107)
%109 = load i32, i32* @DECIMAL_DIG
%110 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.15, i64 0, i64 0), i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.42, i64 0, i64 0), i32 %109)
%111 = load i32, i32* %6
%112 = icmp sgt i32 %111, 1
br i1 %112, label %113, label %132
113: ; preds = %78
%114 = load double, double* @FLT_MIN
%115 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.43, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.44, i64 0, i64 0), double %114)
%116 = load double, double* @DBL_MIN
%117 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.43, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.45, i64 0, i64 0), double %116)
%118 = load i32, i32* @LDBL_MIN
%119 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.46, i64 0, i64 0), i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.47, i64 0, i64 0), i32 %118)
%120 = load double, double* @FLT_TRUE_MIN
%121 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.43, i64 0, i64 0), i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.48, i64 0, i64 0), double %120)
%122 = load double, double* @DBL_TRUE_MIN
%123 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.43, i64 0, i64 0), i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.49, i64 0, i64 0), double %122)
%124 = load i32, i32* @LDBL_TRUE_MIN
%125 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.46, i64 0, i64 0), i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.50, i64 0, i64 0), i32 %124)
%126 = load double, double* @FLT_MAX
%127 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.43, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.51, i64 0, i64 0), double %126)
%128 = load double, double* @DBL_MAX
%129 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.43, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.52, i64 0, i64 0), double %128)
%130 = load i32, i32* @LDBL_MAX
%131 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.46, i64 0, i64 0), i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.53, i64 0, i64 0), i32 %130)
br label %132
132: ; preds = %113, %78
%133 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([41 x i8], [41 x i8]* @.str.14, i64 0, i64 0))
ret i32 0
}

LLVM IR (-O2):
@.str.2 = [24 x i8] c"| %19s | %5lu | %5lu |\0A\00"
@.str.3 = [13 x i8] c"sizeof(char)\00"
@CHAR_BIT = global i64 0
@.str.4 = [14 x i8] c"sizeof(short)\00"
@.str.5 = [12 x i8] c"sizeof(int)\00"
@.str.6 = [13 x i8] c"sizeof(long)\00"
@.str.7 = [18 x i8] c"sizeof(long long)\00"
@.str.8 = [15 x i8] c"sizeof(size_t)\00"
@.str.9 = [17 x i8] c"sizeof(uint64_t)\00"
@.str.10 = [14 x i8] c"sizeof(float)\00"
@.str.11 = [15 x i8] c"sizeof(double)\00"
@.str.12 = [20 x i8] c"sizeof(long double)\00"
@.str.15 = [17 x i8] c"| %19s | %13d |\0A\00"
@.str.16 = [11 x i8] c"FLT_ROUNDS\00"
@FLT_ROUNDS = global i32 0
@.str.17 = [16 x i8] c"FLT_EVAL_METHOD\00"
@FLT_EVAL_METHOD = global i32 0
@.str.18 = [10 x i8] c"FLT_RADIX\00"
@FLT_RADIX = global i32 0
@.str.19 = [8 x i8] c"FLT_DIG\00"
@FLT_DIG = global i32 0
@.str.20 = [8 x i8] c"DBL_DIG\00"
@DBL_DIG = global i32 0
@.str.21 = [9 x i8] c"LDBL_DIG\00"
@LDBL_DIG = global i32 0
@.str.22 = [20 x i8] c"| %19s | %13.11f |\0A\00"
@.str.23 = [12 x i8] c"FLT_EPSILON\00"
@FLT_EPSILON = global double 0.000000e+00
@.str.24 = [12 x i8] c"DBL_EPSILON\00"
@DBL_EPSILON = global double 0.000000e+00
@.str.25 = [21 x i8] c"| %19s | %13.11Lf |\0A\00"
@.str.26 = [13 x i8] c"LDBL_EPSILON\00"
@LDBL_EPSILON = global i32 0
@.str.27 = [13 x i8] c"FLT_MANT_DIG\00"
@FLT_MANT_DIG = global i32 0
@.str.28 = [13 x i8] c"DBL_MANT_DIG\00"
@DBL_MANT_DIG = global i32 0
@.str.29 = [14 x i8] c"LDBL_MANT_DIG\00"
@LDBL_MANT_DIG = global i32 0
@.str.30 = [12 x i8] c"FLT_MIN_EXP\00"
@FLT_MIN_EXP = global i32 0
@.str.31 = [12 x i8] c"DBL_MIN_EXP\00"
@DBL_MIN_EXP = global i32 0
@.str.32 = [13 x i8] c"LDBL_MIN_EXP\00"
@LDBL_MIN_EXP = global i32 0
@.str.33 = [15 x i8] c"FLT_MIN_10_EXP\00"
@FLT_MIN_10_EXP = global i32 0
@.str.34 = [15 x i8] c"DBL_MIN_10_EXP\00"
@DBL_MIN_10_EXP = global i32 0
@.str.35 = [16 x i8] c"LDBL_MIN_10_EXP\00"
@LDBL_MIN_10_EXP = global i32 0
@.str.36 = [12 x i8] c"FLT_MAX_EXP\00"
@FLT_MAX_EXP = global i32 0
@.str.37 = [12 x i8] c"DBL_MAX_EXP\00"
@DBL_MAX_EXP = global i32 0
@.str.38 = [13 x i8] c"LDBL_MAX_EXP\00"
@LDBL_MAX_EXP = global i32 0
@.str.39 = [15 x i8] c"FLT_MAX_10_EXP\00"
@FLT_MAX_10_EXP = global i32 0
@.str.40 = [15 x i8] c"DBL_MAX_10_EXP\00"
@DBL_MAX_10_EXP = global i32 0
@.str.41 = [16 x i8] c"LDBL_MAX_10_EXP\00"
@LDBL_MAX_10_EXP = global i32 0
@.str.42 = [12 x i8] c"DECIMAL_DIG\00"
@DECIMAL_DIG = global i32 0
@.str.43 = [12 x i8] c"%20s: %f |\0A\00"
@.str.44 = [8 x i8] c"FLT_MIN\00"
@FLT_MIN = global double 0.000000e+00
@.str.45 = [8 x i8] c"DBL_MIN\00"
@DBL_MIN = global double 0.000000e+00
@.str.46 = [13 x i8] c"%20s: %Lf |\0A\00"
@.str.47 = [9 x i8] c"LDBL_MIN\00"
@LDBL_MIN = global i32 0
@.str.48 = [13 x i8] c"FLT_TRUE_MIN\00"
@FLT_TRUE_MIN = global double 0.000000e+00
@.str.49 = [13 x i8] c"DBL_TRUE_MIN\00"
@DBL_TRUE_MIN = global double 0.000000e+00
@.str.50 = [14 x i8] c"LDBL_TRUE_MIN\00"
@LDBL_TRUE_MIN = global i32 0
@.str.51 = [8 x i8] c"FLT_MAX\00"
@FLT_MAX = global double 0.000000e+00
@.str.52 = [8 x i8] c"DBL_MAX\00"
@DBL_MAX = global double 0.000000e+00
@.str.53 = [9 x i8] c"LDBL_MAX\00"
@LDBL_MAX = global i32 0
@str.54 = [40 x i8] c"| type | bytes | bits |\00"
@str.56 = [40 x i8] c"+---------------------+-------+-------+\00"
@str.57 = [40 x i8] c"| Constant | Value |\00"
@str.59 = [40 x i8] c"+---------------------+---------------+\00"
define i32 @main(i32 %0, i8** nocapture %1) {
%3 = icmp sgt i32 %0, 1
br i1 %3, label %4, label %8
4: ; preds = %2
%5 = getelementptr inbounds i8*, i8** %1, i64 1
%6 = load i8*, i8** %5
%7 = tail call i32 @atoi(i8* %6)
br label %8
8: ; preds = %2, %4
%9 = phi i32 [ %7, %4 ], [ 0, %2 ]
%10 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([40 x i8], [40 x i8]* @str.56, i64 0, i64 0))
%11 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([40 x i8], [40 x i8]* @str.54, i64 0, i64 0))
%12 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([40 x i8], [40 x i8]* @str.56, i64 0, i64 0))
%13 = icmp sgt i32 %9, 0
br i1 %13, label %14, label %35
14: ; preds = %8
%15 = load i64, i64* @CHAR_BIT
%16 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([24 x i8], [24 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.3, i64 0, i64 0), i64 1, i64 %15)
%17 = load i64, i64* @CHAR_BIT
%18 = shl i64 %17, 1
%19 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([24 x i8], [24 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.4, i64 0, i64 0), i64 2, i64 %18)
%20 = load i64, i64* @CHAR_BIT
%21 = shl i64 %20, 2
%22 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([24 x i8], [24 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.5, i64 0, i64 0), i64 4, i64 %21)
%23 = load i64, i64* @CHAR_BIT
%24 = shl i64 %23, 3
%25 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([24 x i8], [24 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.6, i64 0, i64 0), i64 8, i64 %24)
%26 = load i64, i64* @CHAR_BIT
%27 = shl i64 %26, 3
%28 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([24 x i8], [24 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.7, i64 0, i64 0), i64 8, i64 %27)
%29 = load i64, i64* @CHAR_BIT
%30 = shl i64 %29, 3
%31 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([24 x i8], [24 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.8, i64 0, i64 0), i64 8, i64 %30)
%32 = load i64, i64* @CHAR_BIT
%33 = shl i64 %32, 2
%34 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([24 x i8], [24 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.9, i64 0, i64 0), i64 4, i64 %33)
br label %35
35: ; preds = %14, %8
%36 = load i64, i64* @CHAR_BIT
%37 = shl i64 %36, 2
%38 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([24 x i8], [24 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.10, i64 0, i64 0), i64 4, i64 %37)
%39 = load i64, i64* @CHAR_BIT
%40 = shl i64 %39, 3
%41 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([24 x i8], [24 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.11, i64 0, i64 0), i64 8, i64 %40)
%42 = load i64, i64* @CHAR_BIT
%43 = shl i64 %42, 4
%44 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([24 x i8], [24 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.12, i64 0, i64 0), i64 16, i64 %43)
%45 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([40 x i8], [40 x i8]* @str.56, i64 0, i64 0))
%46 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([40 x i8], [40 x i8]* @str.57, i64 0, i64 0))
%47 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([40 x i8], [40 x i8]* @str.59, i64 0, i64 0))
%48 = load i32, i32* @FLT_ROUNDS
%49 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([17 x i8], [17 x i8]* @.str.15, i64 0, i64 0), i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.16, i64 0, i64 0), i32 %48)
%50 = load i32, i32* @FLT_EVAL_METHOD
%51 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([17 x i8], [17 x i8]* @.str.15, i64 0, i64 0), i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.17, i64 0, i64 0), i32 %50)
%52 = load i32, i32* @FLT_RADIX
%53 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([17 x i8], [17 x i8]* @.str.15, i64 0, i64 0), i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.18, i64 0, i64 0), i32 %52)
%54 = load i32, i32* @FLT_DIG
%55 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([17 x i8], [17 x i8]* @.str.15, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.19, i64 0, i64 0), i32 %54)
%56 = load i32, i32* @DBL_DIG
%57 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([17 x i8], [17 x i8]* @.str.15, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.20, i64 0, i64 0), i32 %56)
%58 = load i32, i32* @LDBL_DIG
%59 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([17 x i8], [17 x i8]* @.str.15, i64 0, i64 0), i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.21, i64 0, i64 0), i32 %58)
%60 = icmp sgt i32 %9, 1
br i1 %60, label %61, label %68
61: ; preds = %35
%62 = load double, double* @FLT_EPSILON
%63 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([20 x i8], [20 x i8]* @.str.22, i64 0, i64 0), i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.23, i64 0, i64 0), double %62)
%64 = load double, double* @DBL_EPSILON
%65 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([20 x i8], [20 x i8]* @.str.22, i64 0, i64 0), i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.24, i64 0, i64 0), double %64)
%66 = load i32, i32* @LDBL_EPSILON
%67 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([21 x i8], [21 x i8]* @.str.25, i64 0, i64 0), i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.26, i64 0, i64 0), i32 %66)
br label %68
68: ; preds = %61, %35
%69 = load i32, i32* @FLT_MANT_DIG
%70 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([17 x i8], [17 x i8]* @.str.15, i64 0, i64 0), i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.27, i64 0, i64 0), i32 %69)
%71 = load i32, i32* @DBL_MANT_DIG
%72 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([17 x i8], [17 x i8]* @.str.15, i64 0, i64 0), i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.28, i64 0, i64 0), i32 %71)
%73 = load i32, i32* @LDBL_MANT_DIG
%74 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([17 x i8], [17 x i8]* @.str.15, i64 0, i64 0), i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.29, i64 0, i64 0), i32 %73)
%75 = load i32, i32* @FLT_MIN_EXP
%76 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([17 x i8], [17 x i8]* @.str.15, i64 0, i64 0), i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.30, i64 0, i64 0), i32 %75)
%77 = load i32, i32* @DBL_MIN_EXP
%78 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([17 x i8], [17 x i8]* @.str.15, i64 0, i64 0), i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.31, i64 0, i64 0), i32 %77)
%79 = load i32, i32* @LDBL_MIN_EXP
%80 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([17 x i8], [17 x i8]* @.str.15, i64 0, i64 0), i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.32, i64 0, i64 0), i32 %79)
%81 = load i32, i32* @FLT_MIN_10_EXP
%82 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([17 x i8], [17 x i8]* @.str.15, i64 0, i64 0), i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.33, i64 0, i64 0), i32 %81)
%83 = load i32, i32* @DBL_MIN_10_EXP
%84 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([17 x i8], [17 x i8]* @.str.15, i64 0, i64 0), i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.34, i64 0, i64 0), i32 %83)
%85 = load i32, i32* @LDBL_MIN_10_EXP
%86 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([17 x i8], [17 x i8]* @.str.15, i64 0, i64 0), i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.35, i64 0, i64 0), i32 %85)
%87 = load i32, i32* @FLT_MAX_EXP
%88 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([17 x i8], [17 x i8]* @.str.15, i64 0, i64 0), i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.36, i64 0, i64 0), i32 %87)
%89 = load i32, i32* @DBL_MAX_EXP
%90 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([17 x i8], [17 x i8]* @.str.15, i64 0, i64 0), i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.37, i64 0, i64 0), i32 %89)
%91 = load i32, i32* @LDBL_MAX_EXP
%92 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([17 x i8], [17 x i8]* @.str.15, i64 0, i64 0), i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.38, i64 0, i64 0), i32 %91)
%93 = load i32, i32* @FLT_MAX_10_EXP
%94 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([17 x i8], [17 x i8]* @.str.15, i64 0, i64 0), i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.39, i64 0, i64 0), i32 %93)
%95 = load i32, i32* @DBL_MAX_10_EXP
%96 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([17 x i8], [17 x i8]* @.str.15, i64 0, i64 0), i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.40, i64 0, i64 0), i32 %95)
%97 = load i32, i32* @LDBL_MAX_10_EXP
%98 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([17 x i8], [17 x i8]* @.str.15, i64 0, i64 0), i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.41, i64 0, i64 0), i32 %97)
%99 = load i32, i32* @DECIMAL_DIG
%100 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([17 x i8], [17 x i8]* @.str.15, i64 0, i64 0), i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.42, i64 0, i64 0), i32 %99)
br i1 %60, label %101, label %120
101: ; preds = %68
%102 = load double, double* @FLT_MIN
%103 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([12 x i8], [12 x i8]* @.str.43, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.44, i64 0, i64 0), double %102)
%104 = load double, double* @DBL_MIN
%105 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([12 x i8], [12 x i8]* @.str.43, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.45, i64 0, i64 0), double %104)
%106 = load i32, i32* @LDBL_MIN
%107 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([13 x i8], [13 x i8]* @.str.46, i64 0, i64 0), i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.47, i64 0, i64 0), i32 %106)
%108 = load double, double* @FLT_TRUE_MIN
%109 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([12 x i8], [12 x i8]* @.str.43, i64 0, i64 0), i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.48, i64 0, i64 0), double %108)
%110 = load double, double* @DBL_TRUE_MIN
%111 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([12 x i8], [12 x i8]* @.str.43, i64 0, i64 0), i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.49, i64 0, i64 0), double %110)
%112 = load i32, i32* @LDBL_TRUE_MIN
%113 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([13 x i8], [13 x i8]* @.str.46, i64 0, i64 0), i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.50, i64 0, i64 0), i32 %112)
%114 = load double, double* @FLT_MAX
%115 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([12 x i8], [12 x i8]* @.str.43, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.51, i64 0, i64 0), double %114)
%116 = load double, double* @DBL_MAX
%117 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([12 x i8], [12 x i8]* @.str.43, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.52, i64 0, i64 0), double %116)
%118 = load i32, i32* @LDBL_MAX
%119 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([13 x i8], [13 x i8]* @.str.46, i64 0, i64 0), i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.53, i64 0, i64 0), i32 %118)
br label %120
120: ; preds = %101, %68
%121 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([40 x i8], [40 x i8]* @str.59, i64 0, i64 0))
ret i32 0
}