#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 */
unsigned long long parse(char *, char *);
int /*<<< orphan*/ printf(char *, ...);
void parse_global(char *s) {
  unsigned long long total_ops = parse(s, "Tt");
  unsigned long long errored_ops = parse(s, "Te");
  unsigned long long failed_copies = parse(s, "Cf");
  unsigned long long alloc_failed = parse(s, "Af");
  unsigned long long alloc_page_failed = parse(s, "Pf");
  unsigned long long avail_pages = parse(s, "Ta");
  unsigned long long low_on_memory = parse(s, "Lm");
  unsigned long long evicted_pgs = parse(s, "Et");
  unsigned long long evict_attempts = parse(s, "Ea");
  unsigned long long relinq_pgs = parse(s, "Rt");
  unsigned long long relinq_attempts = parse(s, "Ra");
  unsigned long long max_evicts_per_relinq = parse(s, "Rx");
  unsigned long long total_flush_pool = parse(s, "Fp");
  unsigned long long global_eph_count = parse(s, "Ec");
  unsigned long long global_eph_max = parse(s, "Em");
  unsigned long long obj_count = parse(s, "Oc");
  unsigned long long obj_max = parse(s, "Om");
  unsigned long long rtree_node_count = parse(s, "Nc");
  unsigned long long rtree_node_max = parse(s, "Nm");
  unsigned long long pgp_count = parse(s, "Pc");
  unsigned long long pgp_max = parse(s, "Pm");
  unsigned long long page_count = parse(s, "Fc");
  unsigned long long max_page_count = parse(s, "Fm");
  unsigned long long pcd_count = parse(s, "Sc");
  unsigned long long max_pcd_count = parse(s, "Sm");
  unsigned long long pcd_tot_tze_size = parse(s, "Zt");
  unsigned long long pcd_tot_csize = parse(s, "Gz");
  unsigned long long deduped_puts = parse(s, "Gd");
  unsigned long long tot_good_eph_puts = parse(s, "Ep");
  printf("total tmem ops=%llu (errors=%llu) -- tmem pages avail=%llu\n",
         total_ops, errored_ops, avail_pages);
  printf("datastructs: objs=%llu (max=%llu) pgps=%llu (max=%llu) "
         "nodes=%llu (max=%llu) pages=%llu (max=%llu) ",
         obj_count, obj_max, pgp_count, pgp_max, rtree_node_count,
         rtree_node_max, page_count, max_page_count);
  if (max_pcd_count != 0 && global_eph_count != 0 && tot_good_eph_puts != 0) {
    printf("pcds=%llu (max=%llu) ", pcd_count, max_pcd_count);
    printf("deduped: avg=%4.2f%% (curr=%4.2f%%) ",
           ((deduped_puts * 1.0) / tot_good_eph_puts) * 100,
           (1.0 - (pcd_count * 1.0) / global_eph_count) * 100);
  }
  if (pcd_count != 0) {
    if (pcd_tot_tze_size && (pcd_tot_tze_size < pcd_count * 4096))
      printf("tze savings=%4.2f%% ",
             (1.0 - (pcd_tot_tze_size * 1.0) / (pcd_count * 4096)) * 100);
    if (pcd_tot_csize && (pcd_tot_csize < pcd_count * 4096))
      printf("compression savings=%4.2f%% ",
             (1.0 - (pcd_tot_csize * 1.0) / (pcd_count * 4096)) * 100);
  }
  printf("\n");
  printf("misc: failed_copies=%llu alloc_failed=%llu alloc_page_failed=%llu "
         "low_mem=%llu evicted=%llu/%llu relinq=%llu/%llu, "
         "max_evicts_per_relinq=%llu, flush_pools=%llu, "
         "eph_count=%llu, eph_max=%llu\n",
         failed_copies, alloc_failed, alloc_page_failed, low_on_memory,
         evicted_pgs, evict_attempts, relinq_pgs, relinq_attempts,
         max_evicts_per_relinq, total_flush_pool, global_eph_count,
         global_eph_max);
}


x86 assembly (clang, -O0):
<parse_global>:
push   %rbp
mov    %rsp,%rbp
push   %r15
push   %r14
push   %r12
push   %rbx
sub    $0x130,%rsp
mov    %rdi,-0x28(%rbp)
mov    -0x28(%rbp),%rdi
lea    0xeef(%rip),%rsi
call   1040 <parse@plt>
mov    %rax,-0x30(%rbp)
mov    -0x28(%rbp),%rdi
lea    0xede(%rip),%rsi
call   1040 <parse@plt>
mov    %rax,-0x38(%rbp)
mov    -0x28(%rbp),%rdi
lea    0xecd(%rip),%rsi
call   1040 <parse@plt>
mov    %rax,-0x40(%rbp)
mov    -0x28(%rbp),%rdi
lea    0xebc(%rip),%rsi
call   1040 <parse@plt>
mov    %rax,-0x48(%rbp)
mov    -0x28(%rbp),%rdi
lea    0xeab(%rip),%rsi
call   1040 <parse@plt>
mov    %rax,-0x50(%rbp)
mov    -0x28(%rbp),%rdi
lea    0xe9a(%rip),%rsi
call   1040 <parse@plt>
mov    %rax,-0x58(%rbp)
mov    -0x28(%rbp),%rdi
lea    0xe89(%rip),%rsi
call   1040 <parse@plt>
mov    %rax,-0x60(%rbp)
mov    -0x28(%rbp),%rdi
lea    0xe78(%rip),%rsi
call   1040 <parse@plt>
mov    %rax,-0x68(%rbp)
mov    -0x28(%rbp),%rdi
lea    0xe67(%rip),%rsi
call   1040 <parse@plt>
mov    %rax,-0x70(%rbp)
mov    -0x28(%rbp),%rdi
lea    0xe56(%rip),%rsi
call   1040 <parse@plt>
mov    %rax,-0x78(%rbp)
mov    -0x28(%rbp),%rdi
lea    0xe45(%rip),%rsi
call   1040 <parse@plt>
mov    %rax,-0x80(%rbp)
mov    -0x28(%rbp),%rdi
lea    0xe34(%rip),%rsi
call   1040 <parse@plt>
mov    %rax,-0x88(%rbp)
mov    -0x28(%rbp),%rdi
lea    0xe20(%rip),%rsi
call   1040 <parse@plt>
mov    %rax,-0x90(%rbp)
mov    -0x28(%rbp),%rdi
lea    0xe0c(%rip),%rsi
call   1040 <parse@plt>
mov    %rax,-0x98(%rbp)
mov    -0x28(%rbp),%rdi
lea    0xdf8(%rip),%rsi
call   1040 <parse@plt>
mov    %rax,-0xa0(%rbp)
mov    -0x28(%rbp),%rdi
lea    0xde4(%rip),%rsi
call   1040 <parse@plt>
mov    %rax,-0xa8(%rbp)
mov    -0x28(%rbp),%rdi
lea    0xdd0(%rip),%rsi
call   1040 <parse@plt>
mov    %rax,-0xb0(%rbp)
mov    -0x28(%rbp),%rdi
lea    0xdbc(%rip),%rsi
call   1040 <parse@plt>
mov    %rax,-0xb8(%rbp)
mov    -0x28(%rbp),%rdi
lea    0xda8(%rip),%rsi
call   1040 <parse@plt>
mov    %rax,-0xc0(%rbp)
mov    -0x28(%rbp),%rdi
lea    0xd94(%rip),%rsi
call   1040 <parse@plt>
mov    %rax,-0xc8(%rbp)
mov    -0x28(%rbp),%rdi
lea    0xd80(%rip),%rsi
call   1040 <parse@plt>
mov    %rax,-0xd0(%rbp)
mov    -0x28(%rbp),%rdi
lea    0xd6c(%rip),%rsi
call   1040 <parse@plt>
mov    %rax,-0xd8(%rbp)
mov    -0x28(%rbp),%rdi
lea    0xd58(%rip),%rsi
call   1040 <parse@plt>
mov    %rax,-0xe0(%rbp)
mov    -0x28(%rbp),%rdi
lea    0xd44(%rip),%rsi
call   1040 <parse@plt>
mov    %rax,-0xe8(%rbp)
mov    -0x28(%rbp),%rdi
lea    0xd30(%rip),%rsi
call   1040 <parse@plt>
mov    %rax,-0xf0(%rbp)
mov    -0x28(%rbp),%rdi
lea    0xd1c(%rip),%rsi
call   1040 <parse@plt>
mov    %rax,-0xf8(%rbp)
mov    -0x28(%rbp),%rdi
lea    0xd08(%rip),%rsi
call   1040 <parse@plt>
mov    %rax,-0x100(%rbp)
mov    -0x28(%rbp),%rdi
lea    0xcf4(%rip),%rsi
call   1040 <parse@plt>
mov    %rax,-0x108(%rbp)
mov    -0x28(%rbp),%rdi
lea    0xce0(%rip),%rsi
call   1040 <parse@plt>
mov    %rax,-0x110(%rbp)
mov    -0x30(%rbp),%rsi
mov    -0x38(%rbp),%rdx
mov    -0x58(%rbp),%rcx
lea    0xcc4(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0xa8(%rbp),%rsi
mov    -0xb0(%rbp),%rdx
mov    -0xc8(%rbp),%rcx
mov    -0xd0(%rbp),%r8
mov    -0xb8(%rbp),%r9
mov    -0xc0(%rbp),%r11
mov    -0xd8(%rbp),%r10
mov    -0xe0(%rbp),%rax
lea    0xcba(%rip),%rdi
mov    %r11,(%rsp)
mov    %r10,0x8(%rsp)
mov    %rax,0x10(%rsp)
mov    $0x0,%al
call   1030 <printf@plt>
cmpq   $0x0,-0xf0(%rbp)
je     1519 <parse_global+0x3f9>
cmpq   $0x0,-0x98(%rbp)
je     1519 <parse_global+0x3f9>
cmpq   $0x0,-0x110(%rbp)
je     1519 <parse_global+0x3f9>
mov    -0xe8(%rbp),%rsi
mov    -0xf0(%rbp),%rdx
lea    0xcca(%rip),%rdi
xor    %eax,%eax
call   1030 <printf@plt>
movaps 0xba5(%rip),%xmm4
movq   -0x108(%rbp),%xmm0
ff
punpckldq %xmm4,%xmm0
movapd 0xba1(%rip),%xmm3
subpd  %xmm3,%xmm0
movaps %xmm0,%xmm1
unpckhpd %xmm0,%xmm0
addsd  %xmm1,%xmm0
movq   -0x110(%rbp),%xmm1
ff
punpckldq %xmm4,%xmm1
subpd  %xmm3,%xmm1
movaps %xmm1,%xmm2
unpckhpd %xmm1,%xmm1
addsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
movsd  0xb4b(%rip),%xmm1
mulsd  %xmm1,%xmm0
movq   -0xe8(%rbp),%xmm2
ff
punpckldq %xmm4,%xmm2
subpd  %xmm3,%xmm2
movaps %xmm2,%xmm1
unpckhpd %xmm2,%xmm2
addsd  %xmm1,%xmm2
movq   -0x98(%rbp),%xmm1
ff
punpckldq %xmm4,%xmm1
subpd  %xmm3,%xmm1
movaps %xmm1,%xmm3
unpckhpd %xmm1,%xmm1
addsd  %xmm3,%xmm1
divsd  %xmm1,%xmm2
movsd  0xb0d(%rip),%xmm1
subsd  %xmm2,%xmm1
movsd  0xaf9(%rip),%xmm2
mulsd  %xmm2,%xmm1
lea    0xc2b(%rip),%rdi
mov    $0x2,%al
call   1030 <printf@plt>
cmpq   $0x0,-0xe8(%rbp)
je     166c <parse_global+0x54c>
cmpq   $0x0,-0xf8(%rbp)
je     15c7 <parse_global+0x4a7>
mov    -0xf8(%rbp),%rax
mov    -0xe8(%rbp),%rcx
shl    $0xc,%rcx
cmp    %rcx,%rax
jae    15c7 <parse_global+0x4a7>
movq   -0xf8(%rbp),%xmm1
ff
movaps 0xab1(%rip),%xmm3
punpckldq %xmm3,%xmm1
movapd 0xab5(%rip),%xmm2
subpd  %xmm2,%xmm1
movaps %xmm1,%xmm0
unpckhpd %xmm1,%xmm1
addsd  %xmm0,%xmm1
mov    -0xe8(%rbp),%rax
shl    $0xc,%rax
movq   %rax,%xmm0
punpckldq %xmm3,%xmm0
subpd  %xmm2,%xmm0
movaps %xmm0,%xmm2
unpckhpd %xmm0,%xmm0
addsd  %xmm2,%xmm0
divsd  %xmm0,%xmm1
movsd  0xa5f(%rip),%xmm0
subsd  %xmm1,%xmm0
movsd  0xa4b(%rip),%xmm1
mulsd  %xmm1,%xmm0
lea    0xba2(%rip),%rdi
mov    $0x1,%al
call   1030 <printf@plt>
cmpq   $0x0,-0x100(%rbp)
je     1667 <parse_global+0x547>
mov    -0x100(%rbp),%rax
mov    -0xe8(%rbp),%rcx
shl    $0xc,%rcx
cmp    %rcx,%rax
jae    1667 <parse_global+0x547>
movq   -0x100(%rbp),%xmm1
ff
movaps 0xa11(%rip),%xmm3
punpckldq %xmm3,%xmm1
movapd 0xa15(%rip),%xmm2
subpd  %xmm2,%xmm1
movaps %xmm1,%xmm0
unpckhpd %xmm1,%xmm1
addsd  %xmm0,%xmm1
mov    -0xe8(%rbp),%rax
shl    $0xc,%rax
movq   %rax,%xmm0
punpckldq %xmm3,%xmm0
subpd  %xmm2,%xmm0
movaps %xmm0,%xmm2
unpckhpd %xmm0,%xmm0
addsd  %xmm2,%xmm0
divsd  %xmm0,%xmm1
movsd  0x9bf(%rip),%xmm0
subsd  %xmm1,%xmm0
movsd  0x9ab(%rip),%xmm1
mulsd  %xmm1,%xmm0
lea    0xb17(%rip),%rdi
mov    $0x1,%al
call   1030 <printf@plt>
jmp    166c <parse_global+0x54c>
lea    0xa4e(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x40(%rbp),%rsi
mov    -0x48(%rbp),%rdx
mov    -0x50(%rbp),%rcx
mov    -0x60(%rbp),%r8
mov    -0x68(%rbp),%r9
mov    -0x70(%rbp),%r12
mov    -0x78(%rbp),%r15
mov    -0x80(%rbp),%r14
mov    -0x88(%rbp),%rbx
mov    -0x90(%rbp),%r11
mov    -0x98(%rbp),%r10
mov    -0xa0(%rbp),%rax
lea    0xad7(%rip),%rdi
mov    %r12,(%rsp)
mov    %r15,0x8(%rsp)
mov    %r14,0x10(%rsp)
mov    %rbx,0x18(%rsp)
mov    %r11,0x20(%rsp)
mov    %r10,0x28(%rsp)
mov    %rax,0x30(%rsp)
mov    $0x0,%al
call   1030 <printf@plt>
add    $0x130,%rsp
pop    %rbx
pop    %r12
pop    %r14
pop    %r15
pop    %rbp
ret

x86 assembly (clang, -O2):
<parse_global>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0xc8,%rsp
mov    %rdi,%r12
lea    0xee5(%rip),%rsi
call   1050 <parse@plt>
mov    %rax,0x68(%rsp)
lea    0xed7(%rip),%rsi
mov    %r12,%rdi
call   1050 <parse@plt>
mov    %rax,0x58(%rsp)
lea    0xec6(%rip),%rsi
mov    %r12,%rdi
call   1050 <parse@plt>
mov    %rax,0xc0(%rsp)
lea    0xeb2(%rip),%rsi
mov    %r12,%rdi
call   1050 <parse@plt>
mov    %rax,0xb8(%rsp)
lea    0xe9e(%rip),%rsi
mov    %r12,%rdi
call   1050 <parse@plt>
mov    %rax,0xb0(%rsp)
lea    0xe8a(%rip),%rsi
mov    %r12,%rdi
call   1050 <parse@plt>
mov    %rax,0x50(%rsp)
lea    0xe79(%rip),%rsi
mov    %r12,%rdi
call   1050 <parse@plt>
mov    %rax,0xa0(%rsp)
lea    0xe65(%rip),%rsi
mov    %r12,%rdi
call   1050 <parse@plt>
mov    %rax,0x98(%rsp)
lea    0xe51(%rip),%rsi
mov    %r12,%rdi
call   1050 <parse@plt>
mov    %rax,0xa8(%rsp)
lea    0xe3d(%rip),%rsi
mov    %r12,%rdi
call   1050 <parse@plt>
mov    %rax,0x90(%rsp)
lea    0xe29(%rip),%rsi
mov    %r12,%rdi
call   1050 <parse@plt>
mov    %rax,0x88(%rsp)
lea    0xe15(%rip),%rsi
mov    %r12,%rdi
call   1050 <parse@plt>
mov    %rax,0x80(%rsp)
lea    0xe01(%rip),%rsi
mov    %r12,%rdi
call   1050 <parse@plt>
mov    %rax,0x78(%rsp)
lea    0xdf0(%rip),%rsi
mov    %r12,%rdi
call   1050 <parse@plt>
mov    %rax,0x48(%rsp)
lea    0xddf(%rip),%rsi
mov    %r12,%rdi
call   1050 <parse@plt>
mov    %rax,0x70(%rsp)
lea    0xdce(%rip),%rsi
mov    %r12,%rdi
call   1050 <parse@plt>
mov    %rax,0x40(%rsp)
lea    0xdbd(%rip),%rsi
mov    %r12,%rdi
call   1050 <parse@plt>
mov    %rax,0x38(%rsp)
lea    0xdac(%rip),%rsi
mov    %r12,%rdi
call   1050 <parse@plt>
mov    %rax,0x30(%rsp)
lea    0xd9b(%rip),%rsi
mov    %r12,%rdi
call   1050 <parse@plt>
mov    %rax,0x28(%rsp)
lea    0xd8a(%rip),%rsi
mov    %r12,%rdi
call   1050 <parse@plt>
mov    %rax,0x20(%rsp)
lea    0xd79(%rip),%rsi
mov    %r12,%rdi
call   1050 <parse@plt>
mov    %rax,0x18(%rsp)
lea    0xd68(%rip),%rsi
mov    %r12,%rdi
call   1050 <parse@plt>
mov    %rax,%r15
lea    0xd59(%rip),%rsi
mov    %r12,%rdi
call   1050 <parse@plt>
mov    %rax,%r14
lea    0xd4a(%rip),%rsi
mov    %r12,%rdi
call   1050 <parse@plt>
mov    %rax,%rbp
lea    0xd3b(%rip),%rsi
mov    %r12,%rdi
call   1050 <parse@plt>
mov    %rax,%r13
lea    0xd2c(%rip),%rsi
mov    %r12,%rdi
call   1050 <parse@plt>
mov    %rax,0x10(%rsp)
lea    0xd1b(%rip),%rsi
mov    %r12,%rdi
call   1050 <parse@plt>
mov    %rax,0x60(%rsp)
lea    0xd0a(%rip),%rsi
mov    %r12,%rdi
call   1050 <parse@plt>
mov    %rax,0x8(%rsp)
lea    0xcf9(%rip),%rsi
mov    %r12,%rdi
call   1050 <parse@plt>
mov    %rax,%rbx
lea    0xcea(%rip),%rdi
mov    0x68(%rsp),%rsi
mov    0x58(%rsp),%rdx
mov    0x50(%rsp),%rcx
xor    %eax,%eax
call   1040 <printf@plt>
sub    $0x8,%rsp
lea    0xd05(%rip),%rdi
mov    0x48(%rsp),%rsi
mov    0x40(%rsp),%rdx
mov    0x28(%rsp),%rcx
mov    0x20(%rsp),%r8
mov    0x38(%rsp),%r9
xor    %eax,%eax
push   %r14
mov    0x58(%rsp),%r14
push   %r15
push   0x40(%rsp)
call   1040 <printf@plt>
add    $0x20,%rsp
test   %r13,%r13
je     14c4 <parse_global+0x394>
test   %r14,%r14
je     14c4 <parse_global+0x394>
test   %rbx,%rbx
je     14c4 <parse_global+0x394>
lea    0xd16(%rip),%rdi
mov    %rbp,%rsi
mov    %r13,%rdx
xor    %eax,%eax
call   1040 <printf@plt>
movsd  0x8(%rsp),%xmm3
movapd 0xbd4(%rip),%xmm1
unpcklps %xmm1,%xmm3
movapd 0xbd9(%rip),%xmm2
subpd  %xmm2,%xmm3
movapd %xmm3,%xmm0
unpckhpd %xmm3,%xmm0
addsd  %xmm3,%xmm0
movq   %rbx,%xmm3
punpckldq %xmm1,%xmm3
subpd  %xmm2,%xmm3
movapd %xmm3,%xmm4
unpckhpd %xmm3,%xmm4
addsd  %xmm3,%xmm4
divsd  %xmm4,%xmm0
movsd  0xbb4(%rip),%xmm3
mulsd  %xmm3,%xmm0
movq   %rbp,%xmm4
punpckldq %xmm1,%xmm4
subpd  %xmm2,%xmm4
movapd %xmm4,%xmm5
unpckhpd %xmm4,%xmm5
addsd  %xmm4,%xmm5
movq   %r14,%xmm4
punpckldq %xmm1,%xmm4
subpd  %xmm2,%xmm4
movapd %xmm4,%xmm1
unpckhpd %xmm4,%xmm1
addsd  %xmm4,%xmm1
divsd  %xmm1,%xmm5
movsd  0xb7a(%rip),%xmm1
subsd  %xmm5,%xmm1
mulsd  %xmm3,%xmm1
lea    0xc80(%rip),%rdi
mov    $0x2,%al
call   1040 <printf@plt>
test   %rbp,%rbp
mov    0x60(%rsp),%rbx
je     15c6 <parse_global+0x496>
mov    0x10(%rsp),%rcx
test   %rcx,%rcx
je     1550 <parse_global+0x420>
mov    %rbp,%rax
shl    $0xc,%rax
cmp    %rax,%rcx
jae    1550 <parse_global+0x420>
movq   %rcx,%xmm0
movdqa 0xb0b(%rip),%xmm1
punpckldq %xmm1,%xmm0
movapd 0xb0f(%rip),%xmm2
subpd  %xmm2,%xmm0
movapd %xmm0,%xmm3
unpckhpd %xmm0,%xmm3
addsd  %xmm0,%xmm3
movq   %rax,%xmm0
punpckldq %xmm1,%xmm0
subpd  %xmm2,%xmm0
movapd %xmm0,%xmm1
unpckhpd %xmm0,%xmm1
addsd  %xmm0,%xmm1
divsd  %xmm1,%xmm3
movsd  0xaf2(%rip),%xmm0
subsd  %xmm3,%xmm0
mulsd  0xade(%rip),%xmm0
lea    0xc19(%rip),%rdi
mov    $0x1,%al
call   1040 <printf@plt>
test   %rbx,%rbx
je     15c6 <parse_global+0x496>
shl    $0xc,%rbp
cmp    %rbp,%rbx
jae    15c6 <parse_global+0x496>
movq   %rbx,%xmm0
movdqa 0xa95(%rip),%xmm1
punpckldq %xmm1,%xmm0
movapd 0xa99(%rip),%xmm2
subpd  %xmm2,%xmm0
movapd %xmm0,%xmm3
unpckhpd %xmm0,%xmm3
addsd  %xmm0,%xmm3
movq   %rbp,%xmm0
punpckldq %xmm1,%xmm0
subpd  %xmm2,%xmm0
movapd %xmm0,%xmm1
unpckhpd %xmm0,%xmm1
addsd  %xmm0,%xmm1
divsd  %xmm1,%xmm3
movsd  0xa7c(%rip),%xmm0
subsd  %xmm3,%xmm0
mulsd  0xa68(%rip),%xmm0
lea    0xbb8(%rip),%rdi
mov    $0x1,%al
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
sub    $0x8,%rsp
lea    0xbb9(%rip),%rdi
mov    0xc8(%rsp),%rsi
mov    0xc0(%rsp),%rdx
mov    0xb8(%rsp),%rcx
mov    0xa8(%rsp),%r8
mov    0xa0(%rsp),%r9
xor    %eax,%eax
push   0x78(%rsp)
push   %r14
push   0x90(%rsp)
push   0xa0(%rsp)
push   0xb0(%rsp)
push   0xc0(%rsp)
push   0xe0(%rsp)
call   1040 <printf@plt>
add    $0x108,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
@.str = [3 x i8] c"Tt\00"
@.str.1 = [3 x i8] c"Te\00"
@.str.2 = [3 x i8] c"Cf\00"
@.str.3 = [3 x i8] c"Af\00"
@.str.4 = [3 x i8] c"Pf\00"
@.str.5 = [3 x i8] c"Ta\00"
@.str.6 = [3 x i8] c"Lm\00"
@.str.7 = [3 x i8] c"Et\00"
@.str.8 = [3 x i8] c"Ea\00"
@.str.9 = [3 x i8] c"Rt\00"
@.str.10 = [3 x i8] c"Ra\00"
@.str.11 = [3 x i8] c"Rx\00"
@.str.12 = [3 x i8] c"Fp\00"
@.str.13 = [3 x i8] c"Ec\00"
@.str.14 = [3 x i8] c"Em\00"
@.str.15 = [3 x i8] c"Oc\00"
@.str.16 = [3 x i8] c"Om\00"
@.str.17 = [3 x i8] c"Nc\00"
@.str.18 = [3 x i8] c"Nm\00"
@.str.19 = [3 x i8] c"Pc\00"
@.str.20 = [3 x i8] c"Pm\00"
@.str.21 = [3 x i8] c"Fc\00"
@.str.22 = [3 x i8] c"Fm\00"
@.str.23 = [3 x i8] c"Sc\00"
@.str.24 = [3 x i8] c"Sm\00"
@.str.25 = [3 x i8] c"Zt\00"
@.str.26 = [3 x i8] c"Gz\00"
@.str.27 = [3 x i8] c"Gd\00"
@.str.28 = [3 x i8] c"Ep\00"
@.str.29 = [60 x i8] c"total tmem ops=%llu (errors=%llu) -- tmem pages avail=%llu\0A\00"
@.str.30 = [100 x i8] c"datastructs: objs=%llu (max=%llu) pgps=%llu (max=%llu) nodes=%llu (max=%llu) pages=%llu (max=%llu) \00"
@.str.31 = [22 x i8] c"pcds=%llu (max=%llu) \00"
@.str.32 = [37 x i8] c"deduped: avg=%4.2f%% (curr=%4.2f%%) \00"
@.str.33 = [21 x i8] c"tze savings=%4.2f%% \00"
@.str.34 = [29 x i8] c"compression savings=%4.2f%% \00"
@.str.35 = [2 x i8] c"\0A\00"
@.str.36 = [191 x i8] c"misc: failed_copies=%llu alloc_failed=%llu alloc_page_failed=%llu low_mem=%llu evicted=%llu/%llu relinq=%llu/%llu, max_evicts_per_relinq=%llu, flush_pools=%llu, eph_count=%llu, eph_max=%llu\0A\00"
define void @parse_global(i8* %0) {
%2 = alloca i8*
%3 = alloca i64
%4 = alloca i64
%5 = alloca i64
%6 = alloca i64
%7 = alloca i64
%8 = alloca i64
%9 = alloca i64
%10 = alloca i64
%11 = alloca i64
%12 = alloca i64
%13 = alloca i64
%14 = alloca i64
%15 = alloca i64
%16 = alloca i64
%17 = alloca i64
%18 = alloca i64
%19 = alloca i64
%20 = alloca i64
%21 = alloca i64
%22 = alloca i64
%23 = alloca i64
%24 = alloca i64
%25 = alloca i64
%26 = alloca i64
%27 = alloca i64
%28 = alloca i64
%29 = alloca i64
%30 = alloca i64
%31 = alloca i64
store i8* %0, i8** %2
%32 = load i8*, i8** %2
%33 = call i64 @parse(i8* %32, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0))
store i64 %33, i64* %3
%34 = load i8*, i8** %2
%35 = call i64 @parse(i8* %34, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0))
store i64 %35, i64* %4
%36 = load i8*, i8** %2
%37 = call i64 @parse(i8* %36, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.2, i64 0, i64 0))
store i64 %37, i64* %5
%38 = load i8*, i8** %2
%39 = call i64 @parse(i8* %38, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.3, i64 0, i64 0))
store i64 %39, i64* %6
%40 = load i8*, i8** %2
%41 = call i64 @parse(i8* %40, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0))
store i64 %41, i64* %7
%42 = load i8*, i8** %2
%43 = call i64 @parse(i8* %42, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.5, i64 0, i64 0))
store i64 %43, i64* %8
%44 = load i8*, i8** %2
%45 = call i64 @parse(i8* %44, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.6, i64 0, i64 0))
store i64 %45, i64* %9
%46 = load i8*, i8** %2
%47 = call i64 @parse(i8* %46, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.7, i64 0, i64 0))
store i64 %47, i64* %10
%48 = load i8*, i8** %2
%49 = call i64 @parse(i8* %48, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.8, i64 0, i64 0))
store i64 %49, i64* %11
%50 = load i8*, i8** %2
%51 = call i64 @parse(i8* %50, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.9, i64 0, i64 0))
store i64 %51, i64* %12
%52 = load i8*, i8** %2
%53 = call i64 @parse(i8* %52, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.10, i64 0, i64 0))
store i64 %53, i64* %13
%54 = load i8*, i8** %2
%55 = call i64 @parse(i8* %54, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.11, i64 0, i64 0))
store i64 %55, i64* %14
%56 = load i8*, i8** %2
%57 = call i64 @parse(i8* %56, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.12, i64 0, i64 0))
store i64 %57, i64* %15
%58 = load i8*, i8** %2
%59 = call i64 @parse(i8* %58, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.13, i64 0, i64 0))
store i64 %59, i64* %16
%60 = load i8*, i8** %2
%61 = call i64 @parse(i8* %60, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.14, i64 0, i64 0))
store i64 %61, i64* %17
%62 = load i8*, i8** %2
%63 = call i64 @parse(i8* %62, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.15, i64 0, i64 0))
store i64 %63, i64* %18
%64 = load i8*, i8** %2
%65 = call i64 @parse(i8* %64, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.16, i64 0, i64 0))
store i64 %65, i64* %19
%66 = load i8*, i8** %2
%67 = call i64 @parse(i8* %66, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.17, i64 0, i64 0))
store i64 %67, i64* %20
%68 = load i8*, i8** %2
%69 = call i64 @parse(i8* %68, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.18, i64 0, i64 0))
store i64 %69, i64* %21
%70 = load i8*, i8** %2
%71 = call i64 @parse(i8* %70, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.19, i64 0, i64 0))
store i64 %71, i64* %22
%72 = load i8*, i8** %2
%73 = call i64 @parse(i8* %72, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.20, i64 0, i64 0))
store i64 %73, i64* %23
%74 = load i8*, i8** %2
%75 = call i64 @parse(i8* %74, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.21, i64 0, i64 0))
store i64 %75, i64* %24
%76 = load i8*, i8** %2
%77 = call i64 @parse(i8* %76, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.22, i64 0, i64 0))
store i64 %77, i64* %25
%78 = load i8*, i8** %2
%79 = call i64 @parse(i8* %78, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.23, i64 0, i64 0))
store i64 %79, i64* %26
%80 = load i8*, i8** %2
%81 = call i64 @parse(i8* %80, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.24, i64 0, i64 0))
store i64 %81, i64* %27
%82 = load i8*, i8** %2
%83 = call i64 @parse(i8* %82, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.25, i64 0, i64 0))
store i64 %83, i64* %28
%84 = load i8*, i8** %2
%85 = call i64 @parse(i8* %84, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.26, i64 0, i64 0))
store i64 %85, i64* %29
%86 = load i8*, i8** %2
%87 = call i64 @parse(i8* %86, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.27, i64 0, i64 0))
store i64 %87, i64* %30
%88 = load i8*, i8** %2
%89 = call i64 @parse(i8* %88, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.28, i64 0, i64 0))
store i64 %89, i64* %31
%90 = load i64, i64* %3
%91 = load i64, i64* %4
%92 = load i64, i64* %8
%93 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([60 x i8], [60 x i8]* @.str.29, i64 0, i64 0), i64 %90, i64 %91, i64 %92)
%94 = load i64, i64* %18
%95 = load i64, i64* %19
%96 = load i64, i64* %22
%97 = load i64, i64* %23
%98 = load i64, i64* %20
%99 = load i64, i64* %21
%100 = load i64, i64* %24
%101 = load i64, i64* %25
%102 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([100 x i8], [100 x i8]* @.str.30, i64 0, i64 0), i64 %94, i64 %95, i64 %96, i64 %97, i64 %98, i64 %99, i64 %100, i64 %101)
%103 = load i64, i64* %27
%104 = icmp ne i64 %103, 0
br i1 %104, label %105, label %131
105: ; preds = %1
%106 = load i64, i64* %16
%107 = icmp ne i64 %106, 0
br i1 %107, label %108, label %131
108: ; preds = %105
%109 = load i64, i64* %31
%110 = icmp ne i64 %109, 0
br i1 %110, label %111, label %131
111: ; preds = %108
%112 = load i64, i64* %26
%113 = load i64, i64* %27
%114 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.31, i64 0, i64 0), i64 %112, i64 %113)
%115 = load i64, i64* %30
%116 = uitofp i64 %115 to double
%117 = fmul double %116, 1.000000e+00
%118 = load i64, i64* %31
%119 = uitofp i64 %118 to double
%120 = fdiv double %117, %119
%121 = fmul double %120, 1.000000e+02
%122 = load i64, i64* %26
%123 = uitofp i64 %122 to double
%124 = fmul double %123, 1.000000e+00
%125 = load i64, i64* %16
%126 = uitofp i64 %125 to double
%127 = fdiv double %124, %126
%128 = fsub double 1.000000e+00, %127
%129 = fmul double %128, 1.000000e+02
%130 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.32, i64 0, i64 0), double %121, double %129)
br label %131
131: ; preds = %111, %108, %105, %1
%132 = load i64, i64* %26
%133 = icmp ne i64 %132, 0
br i1 %133, label %134, label %173
134: ; preds = %131
%135 = load i64, i64* %28
%136 = icmp ne i64 %135, 0
br i1 %136, label %137, label %153
137: ; preds = %134
%138 = load i64, i64* %28
%139 = load i64, i64* %26
%140 = mul i64 %139, 4096
%141 = icmp ult i64 %138, %140
br i1 %141, label %142, label %153
142: ; preds = %137
%143 = load i64, i64* %28
%144 = uitofp i64 %143 to double
%145 = fmul double %144, 1.000000e+00
%146 = load i64, i64* %26
%147 = mul i64 %146, 4096
%148 = uitofp i64 %147 to double
%149 = fdiv double %145, %148
%150 = fsub double 1.000000e+00, %149
%151 = fmul double %150, 1.000000e+02
%152 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.33, i64 0, i64 0), double %151)
br label %153
153: ; preds = %142, %137, %134
%154 = load i64, i64* %29
%155 = icmp ne i64 %154, 0
br i1 %155, label %156, label %172
156: ; preds = %153
%157 = load i64, i64* %29
%158 = load i64, i64* %26
%159 = mul i64 %158, 4096
%160 = icmp ult i64 %157, %159
br i1 %160, label %161, label %172
161: ; preds = %156
%162 = load i64, i64* %29
%163 = uitofp i64 %162 to double
%164 = fmul double %163, 1.000000e+00
%165 = load i64, i64* %26
%166 = mul i64 %165, 4096
%167 = uitofp i64 %166 to double
%168 = fdiv double %164, %167
%169 = fsub double 1.000000e+00, %168
%170 = fmul double %169, 1.000000e+02
%171 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([29 x i8], [29 x i8]* @.str.34, i64 0, i64 0), double %170)
br label %172
172: ; preds = %161, %156, %153
br label %173
173: ; preds = %172, %131
%174 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0))
%175 = load i64, i64* %5
%176 = load i64, i64* %6
%177 = load i64, i64* %7
%178 = load i64, i64* %9
%179 = load i64, i64* %10
%180 = load i64, i64* %11
%181 = load i64, i64* %12
%182 = load i64, i64* %13
%183 = load i64, i64* %14
%184 = load i64, i64* %15
%185 = load i64, i64* %16
%186 = load i64, i64* %17
%187 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([191 x i8], [191 x i8]* @.str.36, i64 0, i64 0), i64 %175, i64 %176, i64 %177, i64 %178, i64 %179, i64 %180, i64 %181, i64 %182, i64 %183, i64 %184, i64 %185, i64 %186)
ret void
}

LLVM IR (-O2):
@.str = [3 x i8] c"Tt\00"
@.str.1 = [3 x i8] c"Te\00"
@.str.2 = [3 x i8] c"Cf\00"
@.str.3 = [3 x i8] c"Af\00"
@.str.4 = [3 x i8] c"Pf\00"
@.str.5 = [3 x i8] c"Ta\00"
@.str.6 = [3 x i8] c"Lm\00"
@.str.7 = [3 x i8] c"Et\00"
@.str.8 = [3 x i8] c"Ea\00"
@.str.9 = [3 x i8] c"Rt\00"
@.str.10 = [3 x i8] c"Ra\00"
@.str.11 = [3 x i8] c"Rx\00"
@.str.12 = [3 x i8] c"Fp\00"
@.str.13 = [3 x i8] c"Ec\00"
@.str.14 = [3 x i8] c"Em\00"
@.str.15 = [3 x i8] c"Oc\00"
@.str.16 = [3 x i8] c"Om\00"
@.str.17 = [3 x i8] c"Nc\00"
@.str.18 = [3 x i8] c"Nm\00"
@.str.19 = [3 x i8] c"Pc\00"
@.str.20 = [3 x i8] c"Pm\00"
@.str.21 = [3 x i8] c"Fc\00"
@.str.22 = [3 x i8] c"Fm\00"
@.str.23 = [3 x i8] c"Sc\00"
@.str.24 = [3 x i8] c"Sm\00"
@.str.25 = [3 x i8] c"Zt\00"
@.str.26 = [3 x i8] c"Gz\00"
@.str.27 = [3 x i8] c"Gd\00"
@.str.28 = [3 x i8] c"Ep\00"
@.str.29 = [60 x i8] c"total tmem ops=%llu (errors=%llu) -- tmem pages avail=%llu\0A\00"
@.str.30 = [100 x i8] c"datastructs: objs=%llu (max=%llu) pgps=%llu (max=%llu) nodes=%llu (max=%llu) pages=%llu (max=%llu) \00"
@.str.31 = [22 x i8] c"pcds=%llu (max=%llu) \00"
@.str.32 = [37 x i8] c"deduped: avg=%4.2f%% (curr=%4.2f%%) \00"
@.str.33 = [21 x i8] c"tze savings=%4.2f%% \00"
@.str.34 = [29 x i8] c"compression savings=%4.2f%% \00"
@.str.36 = [191 x i8] c"misc: failed_copies=%llu alloc_failed=%llu alloc_page_failed=%llu low_mem=%llu evicted=%llu/%llu relinq=%llu/%llu, max_evicts_per_relinq=%llu, flush_pools=%llu, eph_count=%llu, eph_max=%llu\0A\00"
define void @parse_global(i8* %0) {
%2 = tail call i64 @parse(i8* %0, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0))
%3 = tail call i64 @parse(i8* %0, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0))
%4 = tail call i64 @parse(i8* %0, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.2, i64 0, i64 0))
%5 = tail call i64 @parse(i8* %0, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.3, i64 0, i64 0))
%6 = tail call i64 @parse(i8* %0, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0))
%7 = tail call i64 @parse(i8* %0, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.5, i64 0, i64 0))
%8 = tail call i64 @parse(i8* %0, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.6, i64 0, i64 0))
%9 = tail call i64 @parse(i8* %0, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.7, i64 0, i64 0))
%10 = tail call i64 @parse(i8* %0, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.8, i64 0, i64 0))
%11 = tail call i64 @parse(i8* %0, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.9, i64 0, i64 0))
%12 = tail call i64 @parse(i8* %0, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.10, i64 0, i64 0))
%13 = tail call i64 @parse(i8* %0, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.11, i64 0, i64 0))
%14 = tail call i64 @parse(i8* %0, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.12, i64 0, i64 0))
%15 = tail call i64 @parse(i8* %0, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.13, i64 0, i64 0))
%16 = tail call i64 @parse(i8* %0, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.14, i64 0, i64 0))
%17 = tail call i64 @parse(i8* %0, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.15, i64 0, i64 0))
%18 = tail call i64 @parse(i8* %0, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.16, i64 0, i64 0))
%19 = tail call i64 @parse(i8* %0, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.17, i64 0, i64 0))
%20 = tail call i64 @parse(i8* %0, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.18, i64 0, i64 0))
%21 = tail call i64 @parse(i8* %0, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.19, i64 0, i64 0))
%22 = tail call i64 @parse(i8* %0, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.20, i64 0, i64 0))
%23 = tail call i64 @parse(i8* %0, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.21, i64 0, i64 0))
%24 = tail call i64 @parse(i8* %0, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.22, i64 0, i64 0))
%25 = tail call i64 @parse(i8* %0, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.23, i64 0, i64 0))
%26 = tail call i64 @parse(i8* %0, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.24, i64 0, i64 0))
%27 = tail call i64 @parse(i8* %0, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.25, i64 0, i64 0))
%28 = tail call i64 @parse(i8* %0, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.26, i64 0, i64 0))
%29 = tail call i64 @parse(i8* %0, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.27, i64 0, i64 0))
%30 = tail call i64 @parse(i8* %0, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.28, i64 0, i64 0))
%31 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([60 x i8], [60 x i8]* @.str.29, i64 0, i64 0), i64 %2, i64 %3, i64 %7)
%32 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([100 x i8], [100 x i8]* @.str.30, i64 0, i64 0), i64 %17, i64 %18, i64 %21, i64 %22, i64 %19, i64 %20, i64 %23, i64 %24)
%33 = icmp ne i64 %26, 0
%34 = icmp ne i64 %15, 0
%35 = select i1 %33, i1 %34, i1 false
%36 = icmp ne i64 %30, 0
%37 = select i1 %35, i1 %36, i1 false
br i1 %37, label %38, label %50
38: ; preds = %1
%39 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([22 x i8], [22 x i8]* @.str.31, i64 0, i64 0), i64 %25, i64 %26)
%40 = uitofp i64 %29 to double
%41 = uitofp i64 %30 to double
%42 = fdiv double %40, %41
%43 = fmul double %42, 1.000000e+02
%44 = uitofp i64 %25 to double
%45 = uitofp i64 %15 to double
%46 = fdiv double %44, %45
%47 = fsub double 1.000000e+00, %46
%48 = fmul double %47, 1.000000e+02
%49 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([37 x i8], [37 x i8]* @.str.32, i64 0, i64 0), double %43, double %48)
br label %50
50: ; preds = %38, %1
%51 = icmp eq i64 %25, 0
br i1 %51, label %76, label %52
52: ; preds = %50
%53 = icmp eq i64 %27, 0
br i1 %53, label %64, label %54
54: ; preds = %52
%55 = shl i64 %25, 12
%56 = icmp ult i64 %27, %55
br i1 %56, label %57, label %64
57: ; preds = %54
%58 = uitofp i64 %27 to double
%59 = uitofp i64 %55 to double
%60 = fdiv double %58, %59
%61 = fsub double 1.000000e+00, %60
%62 = fmul double %61, 1.000000e+02
%63 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([21 x i8], [21 x i8]* @.str.33, i64 0, i64 0), double %62)
br label %64
64: ; preds = %57, %54, %52
%65 = icmp eq i64 %28, 0
br i1 %65, label %76, label %66
66: ; preds = %64
%67 = shl i64 %25, 12
%68 = icmp ult i64 %28, %67
br i1 %68, label %69, label %76
69: ; preds = %66
%70 = uitofp i64 %28 to double
%71 = uitofp i64 %67 to double
%72 = fdiv double %70, %71
%73 = fsub double 1.000000e+00, %72
%74 = fmul double %73, 1.000000e+02
%75 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([29 x i8], [29 x i8]* @.str.34, i64 0, i64 0), double %74)
br label %76
76: ; preds = %64, %66, %69, %50
%77 = tail call i32 @putchar(i32 10)
%78 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([191 x i8], [191 x i8]* @.str.36, i64 0, i64 0), i64 %4, i64 %5, i64 %6, i64 %8, i64 %9, i64 %10, i64 %11, i64 %12, i64 %13, i64 %14, i64 %15, i64 %16)
ret void
}