#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*/ print1(char *, ...);
double sqrt(double);
void ShowUnits() {
  print1("> Cooling Module:    ");
  if (6 == 5)
    print1(" SNEq\n");
  if (6 == 4)
    print1(" MINEq\n");
  if (6 == 6)
    print1(" TABULATED\n");
  if (6 == 7)
    print1(" H2_COOL \n");
  print1("> Normalization Units:\n\n");
  print1("  [Density]:      %8.3e (gr/cm^3), %8.3e (1/cm^3)\n",
         (1.67262171e-24), (1.67262171e-24) / 1.67262171e-24);
  print1("  [Pressure]:     %8.3e (dyne/cm^2)\n",
         (1.67262171e-24) * (1.e8) * (1.e8));
  print1("  [Velocity]:     %8.3e (cm/s)\n", (1.e8));
  print1("  [Length]:       %8.3e (cm)\n", (3.0856775807e18 * 1.e5));
  print1("  [Temperature]:  %8.3e X (p/rho*mu) (K)\n",
         ((1.e8) * (1.e8) * 1.66053886e-24 / 1.3806505e-16));
  print1("  [Time]:         %8.3e (sec), %8.3e (yrs) \n",
         (3.0856775807e18 * 1.e5) / (1.e8),
         (3.0856775807e18 * 1.e5) / (1.e8) / 86400. / 365.);
  print1("  [Mag Field]:    %8.3e (Gauss)\n",
         (1.e8) * sqrt(4.0 * 3.14159265358979 * (1.67262171e-24)));
  print1(" \n");
}


x86 assembly (clang, -O0):
<ShowUnits>:
push   %rbp
mov    %rsp,%rbp
lea    0xf1d(%rip),%rdi
mov    $0x0,%al
call   1030 <print1@plt>
lea    0xf25(%rip),%rdi
mov    $0x0,%al
call   1030 <print1@plt>
lea    0xf23(%rip),%rdi
mov    $0x0,%al
call   1030 <print1@plt>
lea    0xf2e(%rip),%rdi
movsd  0xedb(%rip),%xmm0
movsd  0xedb(%rip),%xmm1
mov    $0x2,%al
call   1030 <print1@plt>
lea    0xf43(%rip),%rdi
movsd  0xeb5(%rip),%xmm0
mov    $0x1,%al
call   1030 <print1@plt>
lea    0xf52(%rip),%rdi
movsd  0xe6f(%rip),%xmm0
mov    $0x1,%al
call   1030 <print1@plt>
lea    0xf5c(%rip),%rdi
movsd  0xe81(%rip),%xmm0
mov    $0x1,%al
call   1030 <print1@plt>
lea    0xf64(%rip),%rdi
movsd  0xe63(%rip),%xmm0
mov    $0x1,%al
call   1030 <print1@plt>
lea    0xf78(%rip),%rdi
movsd  0xe3d(%rip),%xmm0
movsd  0xe3d(%rip),%xmm1
mov    $0x2,%al
call   1030 <print1@plt>
movsd  0xe1e(%rip),%xmm0
call   1040 <sqrt@plt>
movaps %xmm0,%xmm1
movsd  0xe06(%rip),%xmm0
mulsd  %xmm1,%xmm0
lea    0xf6b(%rip),%rdi
mov    $0x1,%al
call   1030 <print1@plt>
lea    0xf5a(%rip),%rdi
mov    $0x0,%al
call   1030 <print1@plt>
pop    %rbp
ret

x86 assembly (clang, -O2):
<ShowUnits>:
push   %rax
lea    0xf30(%rip),%rdi
xor    %eax,%eax
call   1030 <print1@plt>
lea    0xf38(%rip),%rdi
xor    %eax,%eax
call   1030 <print1@plt>
lea    0xf36(%rip),%rdi
xor    %eax,%eax
call   1030 <print1@plt>
lea    0xf41(%rip),%rdi
movsd  0xeb6(%rip),%xmm0
movsd  0xeb6(%rip),%xmm1
mov    $0x2,%al
call   1030 <print1@plt>
lea    0xf56(%rip),%rdi
movsd  0xea8(%rip),%xmm0
mov    $0x1,%al
call   1030 <print1@plt>
lea    0xf65(%rip),%rdi
movsd  0xe9a(%rip),%xmm0
mov    $0x1,%al
call   1030 <print1@plt>
lea    0xf6f(%rip),%rdi
movsd  0xe8c(%rip),%xmm0
mov    $0x1,%al
call   1030 <print1@plt>
lea    0xf77(%rip),%rdi
movsd  0xe7e(%rip),%xmm0
mov    $0x1,%al
call   1030 <print1@plt>
lea    0xf8b(%rip),%rdi
movsd  0xe70(%rip),%xmm0
movsd  0xe70(%rip),%xmm1
mov    $0x2,%al
call   1030 <print1@plt>
lea    0xf9a(%rip),%rdi
movsd  0xe62(%rip),%xmm0
mov    $0x1,%al
call   1030 <print1@plt>
lea    0xf81(%rip),%rdi
xor    %eax,%eax
pop    %rcx
jmp    1030 <print1@plt>

LLVM IR (-O0):
@.str = [22 x i8] c"> Cooling Module: \00"
@.str.1 = [12 x i8] c" TABULATED\0A\00"
@.str.2 = [25 x i8] c"> Normalization Units:\0A\0A\00"
@.str.3 = [51 x i8] c" [Density]: %8.3e (gr/cm^3), %8.3e (1/cm^3)\0A\00"
@.str.4 = [37 x i8] c" [Pressure]: %8.3e (dyne/cm^2)\0A\00"
@.str.5 = [32 x i8] c" [Velocity]: %8.3e (cm/s)\0A\00"
@.str.6 = [30 x i8] c" [Length]: %8.3e (cm)\0A\00"
@.str.7 = [42 x i8] c" [Temperature]: %8.3e X (p/rho*mu) (K)\0A\00"
@.str.8 = [45 x i8] c" [Time]: %8.3e (sec), %8.3e (yrs) \0A\00"
@.str.9 = [33 x i8] c" [Mag Field]: %8.3e (Gauss)\0A\00"
@.str.10 = [3 x i8] c" \0A\00"
define void @ShowUnits() {
%1 = call i32 (i8*, ...) @print1(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str, i64 0, i64 0))
%2 = call i32 (i8*, ...) @print1(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0))
%3 = call i32 (i8*, ...) @print1(i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.2, i64 0, i64 0))
%4 = call i32 (i8*, ...) @print1(i8* getelementptr inbounds ([51 x i8], [51 x i8]* @.str.3, i64 0, i64 0), double 0x3B002D35F512CD1C, double 1.000000e+00)
%5 = call i32 (i8*, ...) @print1(i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.4, i64 0, i64 0), double 0x3E51F5AAE4654048)
%6 = call i32 (i8*, ...) @print1(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.5, i64 0, i64 0), double 1.000000e+08)
%7 = call i32 (i8*, ...) @print1(i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.6, i64 0, i64 0), double 0x44D055DF77BBA768)
%8 = call i32 (i8*, ...) @print1(i8* getelementptr inbounds ([42 x i8], [42 x i8]* @.str.7, i64 0, i64 0), double 0x419CACD54578CE8F)
%9 = call i32 (i8*, ...) @print1(i8* getelementptr inbounds ([45 x i8], [45 x i8]* @.str.8, i64 0, i64 0), double 0x4325ECD0982D92C0, double 0x4197540EC8DA12F7)
%10 = call double @sqrt(double 0x3B3968FFA8A794D6)
%11 = fmul double 1.000000e+08, %10
%12 = call i32 (i8*, ...) @print1(i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str.9, i64 0, i64 0), double %11)
%13 = call i32 (i8*, ...) @print1(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.10, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@.str = [22 x i8] c"> Cooling Module: \00"
@.str.1 = [12 x i8] c" TABULATED\0A\00"
@.str.2 = [25 x i8] c"> Normalization Units:\0A\0A\00"
@.str.3 = [51 x i8] c" [Density]: %8.3e (gr/cm^3), %8.3e (1/cm^3)\0A\00"
@.str.4 = [37 x i8] c" [Pressure]: %8.3e (dyne/cm^2)\0A\00"
@.str.5 = [32 x i8] c" [Velocity]: %8.3e (cm/s)\0A\00"
@.str.6 = [30 x i8] c" [Length]: %8.3e (cm)\0A\00"
@.str.7 = [42 x i8] c" [Temperature]: %8.3e X (p/rho*mu) (K)\0A\00"
@.str.8 = [45 x i8] c" [Time]: %8.3e (sec), %8.3e (yrs) \0A\00"
@.str.9 = [33 x i8] c" [Mag Field]: %8.3e (Gauss)\0A\00"
@.str.10 = [3 x i8] c" \0A\00"
define void @ShowUnits() {
%1 = tail call i32 (i8*, ...) @print1(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str, i64 0, i64 0))
%2 = tail call i32 (i8*, ...) @print1(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0))
%3 = tail call i32 (i8*, ...) @print1(i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.2, i64 0, i64 0))
%4 = tail call i32 (i8*, ...) @print1(i8* getelementptr inbounds ([51 x i8], [51 x i8]* @.str.3, i64 0, i64 0), double 0x3B002D35F512CD1C, double 1.000000e+00)
%5 = tail call i32 (i8*, ...) @print1(i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.4, i64 0, i64 0), double 0x3E51F5AAE4654048)
%6 = tail call i32 (i8*, ...) @print1(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.5, i64 0, i64 0), double 1.000000e+08)
%7 = tail call i32 (i8*, ...) @print1(i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.6, i64 0, i64 0), double 0x44D055DF77BBA768)
%8 = tail call i32 (i8*, ...) @print1(i8* getelementptr inbounds ([42 x i8], [42 x i8]* @.str.7, i64 0, i64 0), double 0x419CACD54578CE8F)
%9 = tail call i32 (i8*, ...) @print1(i8* getelementptr inbounds ([45 x i8], [45 x i8]* @.str.8, i64 0, i64 0), double 0x4325ECD0982D92C0, double 0x4197540EC8DA12F7)
%10 = tail call i32 (i8*, ...) @print1(i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str.9, i64 0, i64 0), double 0x3F3E0BB958A54D11)
%11 = tail call i32 (i8*, ...) @print1(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.10, i64 0, i64 0))
ret void
}