#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 PDQ_CreateClosed(char *, int, double, double);
int PDQ_CreateNode(char *, int, int);
double PDQ_GetThruput(int, char *);
double PDQ_GetUtilization(char *, char *, int);
int /*<<< orphan*/ PDQ_Init(char *);
int /*<<< orphan*/ PDQ_SetDemand(char *, char *, double);
int /*<<< orphan*/ PDQ_SetTUnit(char *);
int /*<<< orphan*/ PDQ_SetWUnit(char *);
int /*<<< orphan*/ PDQ_Solve(int);
int /*<<< orphan*/ printf(char *, ...);
int main() {
  void namex();
  int intwt();
  void itoa();
  char cname[10];
  char wname[10];
  int i;
  double Prhit = (0.85 * 0.95);
  double Pwhit = ((1 - 0.85) * 0.95 * (1 - 0.0526)) +
                 ((1 - 0.85) * (1 - 0.95) * (1 - 0.35));
  double Prdop = 0.85 * (1 - 0.95);
  double Pwbop = (1 - 0.85) * (1 - 0.95) * 0.35;
  double Pwthr = (1 - 0.85);
  double Pinvl = (1 - 0.85) * 0.95 * 0.0526;
  double Nrwht = 0.8075 * 15;
  double Nrdop = 0.0850 * 15;
  double Nwthr = 0.15 * 15;
  double Nwbop = 0.0003 * 15 * 100;
  double Ninvl = 0.015 * 15;
  double Srdop = (20.0);
  double Swthr = (25.0);
  double Swbop = (20.0);
  double Wrwht;
  double Wrdop;
  double Wwthr;
  double Wwbop;
  double Winvl;
  double Zrwht = 2.5;
  double Zrdop = 2.5;
  double Zwbop = 2.5;
  double Zinvl = 2.5;
  double Zwthr = 2.5;
  double Xcpu = 0.0;
  double Pcpu = 0.0;
  double Ubrd = 0.0;
  double Ubwr = 0.0;
  double Ubin = 0.0;
  double Ucht = 0.0;
  double Ucrd = 0.0;
  double Ucwr = 0.0;
  double Ucin = 0.0;
  int nodes;
  int streams;
  char *model = "ABC Model";
  PDQ_Init(model);
  PDQ_SetWUnit("Reqs");
  PDQ_SetTUnit("Cycs");
  nodes = PDQ_CreateNode("MBus", 4, 8);
  for (i = 0; i < 15; i++) {
    namex(i, "L2C", cname);
    nodes = PDQ_CreateNode(cname, 4, 8);
  }
  for (i = 0; i < intwt(Nrwht, &Wrwht); i++) {
    namex(i, "RWhit", wname);
    streams = PDQ_CreateClosed(wname, 11, Nrwht, Zrwht);
    namex(i, "L2C", cname);
    PDQ_SetDemand(cname, wname, 1.0);
    PDQ_SetDemand("MBus", wname, 0.0);
  }
  for (i = 0; i < intwt(Nrdop, &Wrdop); i++) {
    namex(i, "Read", wname);
    streams = PDQ_CreateClosed(wname, 11, Nrdop, Zrdop);
    namex(i, "L2C", cname);
    PDQ_SetDemand(cname, wname, 1.0);
    PDQ_SetDemand("MBus", wname, Srdop);
  }
  if (1) {
    for (i = 0; i < intwt(Nwbop, &Wwbop); i++) {
      namex(i, "Write", wname);
      streams = PDQ_CreateClosed(wname, 11, Nwbop, Zwbop);
      namex(i, "L2C", cname);
      PDQ_SetDemand(cname, wname, 1.0);
      PDQ_SetDemand("MBus", wname, Swbop);
    }
  } else {
    for (i = 0; i < intwt(Nwthr, &Wwthr); i++) {
      namex(i, "Write", wname);
      streams = PDQ_CreateClosed(wname, 11, Nwthr, Zwthr);
      namex(i, "L2C", cname);
      PDQ_SetDemand(cname, wname, 1.0);
      PDQ_SetDemand("MBus", wname, Swthr);
    }
  }
  if (1) {
    for (i = 0; i < intwt(Ninvl, &Winvl); i++) {
      namex(i, "Inval", wname);
      streams = PDQ_CreateClosed(wname, 11, Ninvl, Zinvl);
      namex(i, "L2C", cname);
      PDQ_SetDemand(cname, wname, 1.0);
      PDQ_SetDemand("MBus", wname, 1.0);
    }
  }
  PDQ_Solve(15);
  for (i = 0; i < intwt(Nrdop, &Wrdop); i++) {
    namex(i, "Read", wname);
    Ubrd += PDQ_GetUtilization("MBus", wname, 11);
  }
  Ubrd *= Wrdop;
  if (1) {
    for (i = 0; i < intwt(Nwbop, &Wwbop); i++) {
      namex(i, "Write", wname);
      Ubwr += PDQ_GetUtilization("MBus", wname, 11);
    }
    Ubwr *= Wwbop;
    for (i = 0; i < intwt(Ninvl, &Winvl); i++) {
      namex(i, "Inval", wname);
      Ubin += PDQ_GetUtilization("MBus", wname, 11);
    }
    Ubin *= Winvl;
  } else {
    for (i = 0; i < intwt(Nwthr, &Wwthr); i++) {
      namex(i, "Write", wname);
      Ubwr += PDQ_GetUtilization("MBus", wname, 11);
    }
    Ubwr *= Wwthr;
  }
  i = 0;
  namex(i, "L2C", cname);
  namex(i, "RWhit", wname);
  Xcpu = PDQ_GetThruput(11, wname) * Wrwht;
  Pcpu += Xcpu * Zrwht;
  Ucht = PDQ_GetUtilization(cname, wname, 11) * Wrwht;
  namex(i, "Read", wname);
  Xcpu = PDQ_GetThruput(11, wname) * Wrdop;
  Pcpu += Xcpu * Zrdop;
  Ucrd = PDQ_GetUtilization(cname, wname, 11) * Wrdop;
  Pcpu *= 1.88;
  if (1) {
    namex(i, "Write", wname);
    Ucwr = PDQ_GetUtilization(cname, wname, 11) * Wwbop;
    namex(i, "Inval", wname);
    Ucin = PDQ_GetUtilization(cname, wname, 11) * Winvl;
  } else {
    namex(i, "Write", wname);
    Ucwr = PDQ_GetUtilization(cname, wname, 11) * Wwthr;
  }
  printf("\n**** %s Results ****\n", model);
  printf("PDQ nodes: %d  PDQ streams: %d\n", nodes, streams);
  printf("Memory Mode: %s\n", 1 ? "WriteBack" : "WriteThru");
  printf("Ncpu:  %2d\n", 15);
  printf("Nrwht: %5.2f (N:%2d  W:%5.2f)\n", Nrwht, intwt(Nrwht, &Wrwht), Wrwht);
  printf("Nrdop: %5.2f (N:%2d  W:%5.2f)\n", Nrdop, intwt(Nrdop, &Wrdop), Wrdop);
  if (1) {
    printf("Nwbop: %5.2f (N:%2d  W:%5.2f)\n", Nwbop, intwt(Nwbop, &Wwbop),
           Wwbop);
    printf("Ninvl: %5.2f (N:%2d  W:%5.2f)\n", Ninvl, intwt(Ninvl, &Winvl),
           Winvl);
  } else {
    printf("Nwthr: %5.2f (N:%2d  W:%5.2f)\n", Nwthr, intwt(Nwthr, &Wwthr),
           Wwthr);
  }
  printf("\n");
  printf("Hit Ratio:   %5.2f %%\n", 0.95 * 100.0);
  printf("Read Miss:   %5.2f %%\n", 0.85 * (1 - 0.95) * 100.0);
  printf("WriteMiss:   %5.2f %%\n", (1 - 0.85) * (1 - 0.95) * 100.0);
  printf("Ucpu:        %5.2f %%\n", Pcpu * 100.0 / 15);
  printf("Pcpu:        %5.2f\n", Pcpu);
  printf("\n");
  printf("Ubus[reads]: %5.2f %%\n", Ubrd * 100.0);
  printf("Ubus[write]: %5.2f %%\n", Ubwr * 100.0);
  printf("Ubus[inval]: %5.2f %%\n", Ubin * 100.0);
  printf("Ubus[total]: %5.2f %%\n", (Ubrd + Ubwr + Ubin) * 100.0);
  printf("\n");
  printf("Uca%d[hits]:  %5.2f %%\n", i, Ucht * 100.0);
  printf("Uca%d[reads]: %5.2f %%\n", i, Ucrd * 100.0);
  printf("Uca%d[write]: %5.2f %%\n", i, Ucwr * 100.0);
  printf("Uca%d[inval]: %5.2f %%\n", i, Ucin * 100.0);
  printf("Uca%d[total]: %5.2f %%\n", i, (Ucht + Ucrd + Ucwr + Ucin) * 100.0);
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x180,%rsp
movl   $0x0,-0x4(%rbp)
movsd  0xe8e(%rip),%xmm0
movsd  %xmm0,-0x28(%rbp)
movsd  0xe79(%rip),%xmm0
movsd  %xmm0,-0x30(%rbp)
movsd  0xe64(%rip),%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  0xe4f(%rip),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  0xe3a(%rip),%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  0xe25(%rip),%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  0xe10(%rip),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  0xdfb(%rip),%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  0xde6(%rip),%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  0xdd1(%rip),%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  0xdbc(%rip),%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  0xd9f(%rip),%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  0xd9a(%rip),%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  0xd82(%rip),%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  0xd6a(%rip),%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  0xd5a(%rip),%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  0xd4a(%rip),%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  0xd3a(%rip),%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  0xd2a(%rip),%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x108(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x110(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
lea    0xd60(%rip),%rax
mov    %rax,-0x138(%rbp)
mov    -0x138(%rbp),%rdi
call   10d0 <PDQ_Init@plt>
lea    0xd50(%rip),%rdi
call   10e0 <PDQ_SetWUnit@plt>
lea    0xd49(%rip),%rdi
call   10a0 <PDQ_SetTUnit@plt>
lea    0xd42(%rip),%rdi
mov    $0x4,%esi
mov    $0x8,%edx
call   1030 <PDQ_CreateNode@plt>
mov    %eax,-0x12c(%rbp)
movl   $0x0,-0x1c(%rbp)
cmpl   $0xf,-0x1c(%rbp)
jge    13dc <main+0x21c>
mov    -0x1c(%rbp),%edi
lea    -0xe(%rbp),%rdx
lea    0xd13(%rip),%rsi
mov    $0x0,%al
call   1070 <namex@plt>
lea    -0xe(%rbp),%rdi
mov    $0x4,%esi
mov    $0x8,%edx
call   1030 <PDQ_CreateNode@plt>
mov    %eax,-0x12c(%rbp)
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    1396 <main+0x1d6>
movl   $0x0,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
mov    %eax,-0x13c(%rbp)
movsd  -0x58(%rbp),%xmm0
lea    -0x98(%rbp),%rdi
mov    $0x1,%al
call   1090 <intwt@plt>
mov    %eax,%ecx
mov    -0x13c(%rbp),%eax
cmp    %ecx,%eax
jge    1490 <main+0x2d0>
mov    -0x1c(%rbp),%edi
lea    -0x18(%rbp),%rdx
lea    0xca8(%rip),%rsi
mov    $0x0,%al
call   1070 <namex@plt>
lea    -0x18(%rbp),%rdi
movsd  -0x58(%rbp),%xmm0
movsd  -0xc0(%rbp),%xmm1
ff
mov    $0xb,%esi
call   1080 <PDQ_CreateClosed@plt>
mov    %eax,-0x130(%rbp)
mov    -0x1c(%rbp),%edi
lea    -0xe(%rbp),%rdx
lea    0xc6e(%rip),%rsi
mov    $0x0,%al
call   1070 <namex@plt>
lea    -0xe(%rbp),%rdi
lea    -0x18(%rbp),%rsi
movsd  0xc36(%rip),%xmm0
call   1040 <PDQ_SetDemand@plt>
lea    -0x18(%rbp),%rsi
lea    0xc42(%rip),%rdi
xorps  %xmm0,%xmm0
call   1040 <PDQ_SetDemand@plt>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    13e3 <main+0x223>
movl   $0x0,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
mov    %eax,-0x140(%rbp)
movsd  -0x60(%rbp),%xmm0
lea    -0xa0(%rbp),%rdi
mov    $0x1,%al
call   1090 <intwt@plt>
mov    %eax,%ecx
mov    -0x140(%rbp),%eax
cmp    %ecx,%eax
jge    1546 <main+0x386>
mov    -0x1c(%rbp),%edi
lea    -0x18(%rbp),%rdx
lea    0xbfa(%rip),%rsi
mov    $0x0,%al
call   1070 <namex@plt>
lea    -0x18(%rbp),%rdi
movsd  -0x60(%rbp),%xmm0
movsd  -0xc8(%rbp),%xmm1
ff
mov    $0xb,%esi
call   1080 <PDQ_CreateClosed@plt>
mov    %eax,-0x130(%rbp)
mov    -0x1c(%rbp),%edi
lea    -0xe(%rbp),%rdx
lea    0xbba(%rip),%rsi
mov    $0x0,%al
call   1070 <namex@plt>
lea    -0xe(%rbp),%rdi
lea    -0x18(%rbp),%rsi
movsd  0xb82(%rip),%xmm0
call   1040 <PDQ_SetDemand@plt>
lea    -0x18(%rbp),%rsi
movsd  -0x80(%rbp),%xmm0
lea    0xb89(%rip),%rdi
call   1040 <PDQ_SetDemand@plt>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    1497 <main+0x2d7>
movl   $0x0,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
mov    %eax,-0x144(%rbp)
movsd  -0x70(%rbp),%xmm0
lea    -0xb0(%rbp),%rdi
mov    $0x1,%al
call   1090 <intwt@plt>
mov    %eax,%ecx
mov    -0x144(%rbp),%eax
cmp    %ecx,%eax
jge    15ff <main+0x43f>
mov    -0x1c(%rbp),%edi
lea    -0x18(%rbp),%rdx
lea    0xb49(%rip),%rsi
mov    $0x0,%al
call   1070 <namex@plt>
lea    -0x18(%rbp),%rdi
movsd  -0x70(%rbp),%xmm0
movsd  -0xd0(%rbp),%xmm1
ff
mov    $0xb,%esi
call   1080 <PDQ_CreateClosed@plt>
mov    %eax,-0x130(%rbp)
mov    -0x1c(%rbp),%edi
lea    -0xe(%rbp),%rdx
lea    0xb04(%rip),%rsi
mov    $0x0,%al
call   1070 <namex@plt>
lea    -0xe(%rbp),%rdi
lea    -0x18(%rbp),%rsi
movsd  0xacc(%rip),%xmm0
call   1040 <PDQ_SetDemand@plt>
lea    -0x18(%rbp),%rsi
movsd  -0x90(%rbp),%xmm0
ff
lea    0xad0(%rip),%rdi
call   1040 <PDQ_SetDemand@plt>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    154d <main+0x38d>
movl   $0x0,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
mov    %eax,-0x148(%rbp)
movsd  -0x78(%rbp),%xmm0
lea    -0xb8(%rbp),%rdi
mov    $0x1,%al
call   1090 <intwt@plt>
mov    %eax,%ecx
mov    -0x148(%rbp),%eax
cmp    %ecx,%eax
jge    16b8 <main+0x4f8>
mov    -0x1c(%rbp),%edi
lea    -0x18(%rbp),%rdx
lea    0xa96(%rip),%rsi
mov    $0x0,%al
call   1070 <namex@plt>
lea    -0x18(%rbp),%rdi
movsd  -0x78(%rbp),%xmm0
movsd  -0xd8(%rbp),%xmm1
ff
mov    $0xb,%esi
call   1080 <PDQ_CreateClosed@plt>
mov    %eax,-0x130(%rbp)
mov    -0x1c(%rbp),%edi
lea    -0xe(%rbp),%rdx
lea    0xa4b(%rip),%rsi
mov    $0x0,%al
call   1070 <namex@plt>
lea    -0xe(%rbp),%rdi
lea    -0x18(%rbp),%rsi
movsd  0xa13(%rip),%xmm0
call   1040 <PDQ_SetDemand@plt>
lea    -0x18(%rbp),%rsi
lea    0xa1f(%rip),%rdi
movsd  0x9fb(%rip),%xmm0
call   1040 <PDQ_SetDemand@plt>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    1606 <main+0x446>
mov    $0xf,%edi
call   1050 <PDQ_Solve@plt>
movl   $0x0,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
mov    %eax,-0x14c(%rbp)
movsd  -0x60(%rbp),%xmm0
lea    -0xa0(%rbp),%rdi
mov    $0x1,%al
call   1090 <intwt@plt>
mov    %eax,%ecx
mov    -0x14c(%rbp),%eax
cmp    %ecx,%eax
jge    173d <main+0x57d>
mov    -0x1c(%rbp),%edi
lea    -0x18(%rbp),%rdx
lea    0x9c8(%rip),%rsi
mov    $0x0,%al
call   1070 <namex@plt>
lea    -0x18(%rbp),%rsi
lea    0x9a7(%rip),%rdi
mov    $0xb,%edx
call   10b0 <PDQ_GetUtilization@plt>
addsd  -0xf8(%rbp),%xmm0
ff
movsd  %xmm0,-0xf8(%rbp)
ff
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    16c9 <main+0x509>
movsd  -0xa0(%rbp),%xmm0
ff
mulsd  -0xf8(%rbp),%xmm0
ff
movsd  %xmm0,-0xf8(%rbp)
ff
movl   $0x0,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
mov    %eax,-0x150(%rbp)
movsd  -0x70(%rbp),%xmm0
lea    -0xb0(%rbp),%rdi
mov    $0x1,%al
call   1090 <intwt@plt>
mov    %eax,%ecx
mov    -0x150(%rbp),%eax
cmp    %ecx,%eax
jge    17d0 <main+0x610>
mov    -0x1c(%rbp),%edi
lea    -0x18(%rbp),%rdx
lea    0x93a(%rip),%rsi
mov    $0x0,%al
call   1070 <namex@plt>
lea    -0x18(%rbp),%rsi
lea    0x914(%rip),%rdi
mov    $0xb,%edx
call   10b0 <PDQ_GetUtilization@plt>
addsd  -0x100(%rbp),%xmm0
ff
movsd  %xmm0,-0x100(%rbp)
ff
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    175c <main+0x59c>
movsd  -0xb0(%rbp),%xmm0
ff
mulsd  -0x100(%rbp),%xmm0
ff
movsd  %xmm0,-0x100(%rbp)
ff
movl   $0x0,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
mov    %eax,-0x154(%rbp)
movsd  -0x78(%rbp),%xmm0
lea    -0xb8(%rbp),%rdi
mov    $0x1,%al
call   1090 <intwt@plt>
mov    %eax,%ecx
mov    -0x154(%rbp),%eax
cmp    %ecx,%eax
jge    1863 <main+0x6a3>
mov    -0x1c(%rbp),%edi
lea    -0x18(%rbp),%rdx
lea    0x8ad(%rip),%rsi
mov    $0x0,%al
call   1070 <namex@plt>
lea    -0x18(%rbp),%rsi
lea    0x881(%rip),%rdi
mov    $0xb,%edx
call   10b0 <PDQ_GetUtilization@plt>
addsd  -0x108(%rbp),%xmm0
ff
movsd  %xmm0,-0x108(%rbp)
ff
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    17ef <main+0x62f>
movsd  -0xb8(%rbp),%xmm0
ff
mulsd  -0x108(%rbp),%xmm0
ff
movsd  %xmm0,-0x108(%rbp)
ff
movl   $0x0,-0x1c(%rbp)
mov    -0x1c(%rbp),%edi
lea    -0xe(%rbp),%rdx
lea    0x831(%rip),%rsi
mov    $0x0,%al
call   1070 <namex@plt>
mov    -0x1c(%rbp),%edi
lea    -0x18(%rbp),%rdx
lea    0x820(%rip),%rsi
mov    $0x0,%al
call   1070 <namex@plt>
lea    -0x18(%rbp),%rsi
mov    $0xb,%edi
call   10c0 <PDQ_GetThruput@plt>
mulsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0xe8(%rbp),%xmm0
ff
movsd  -0xc0(%rbp),%xmm2
ff
movsd  -0xf0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
lea    -0xe(%rbp),%rdi
lea    -0x18(%rbp),%rsi
mov    $0xb,%edx
call   10b0 <PDQ_GetUtilization@plt>
mulsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0x110(%rbp)
ff
mov    -0x1c(%rbp),%edi
lea    -0x18(%rbp),%rdx
lea    0x7a9(%rip),%rsi
mov    $0x0,%al
call   1070 <namex@plt>
lea    -0x18(%rbp),%rsi
mov    $0xb,%edi
call   10c0 <PDQ_GetThruput@plt>
mulsd  -0xa0(%rbp),%xmm0
ff
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0xe8(%rbp),%xmm0
ff
movsd  -0xc8(%rbp),%xmm2
ff
movsd  -0xf0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
lea    -0xe(%rbp),%rdi
lea    -0x18(%rbp),%rsi
mov    $0xb,%edx
call   10b0 <PDQ_GetUtilization@plt>
mulsd  -0xa0(%rbp),%xmm0
ff
movsd  %xmm0,-0x118(%rbp)
ff
movsd  0x6ff(%rip),%xmm0
mulsd  -0xf0(%rbp),%xmm0
ff
movsd  %xmm0,-0xf0(%rbp)
ff
mov    -0x1c(%rbp),%edi
lea    -0x18(%rbp),%rdx
lea    0x719(%rip),%rsi
mov    $0x0,%al
call   1070 <namex@plt>
lea    -0xe(%rbp),%rdi
lea    -0x18(%rbp),%rsi
mov    $0xb,%edx
call   10b0 <PDQ_GetUtilization@plt>
mulsd  -0xb0(%rbp),%xmm0
ff
movsd  %xmm0,-0x120(%rbp)
ff
mov    -0x1c(%rbp),%edi
lea    -0x18(%rbp),%rdx
lea    0x6e8(%rip),%rsi
mov    $0x0,%al
call   1070 <namex@plt>
lea    -0xe(%rbp),%rdi
lea    -0x18(%rbp),%rsi
mov    $0xb,%edx
call   10b0 <PDQ_GetUtilization@plt>
mulsd  -0xb8(%rbp),%xmm0
ff
movsd  %xmm0,-0x128(%rbp)
ff
mov    -0x138(%rbp),%rsi
lea    0x6b7(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
mov    -0x12c(%rbp),%esi
mov    -0x130(%rbp),%edx
lea    0x6b4(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x6c6(%rip),%rdi
lea    0x6d0(%rip),%rsi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x6cc(%rip),%rdi
mov    $0xf,%esi
mov    $0x0,%al
call   1060 <printf@plt>
movsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0x178(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
lea    -0x98(%rbp),%rdi
mov    $0x1,%al
call   1090 <intwt@plt>
movsd  -0x178(%rbp),%xmm0
ff
mov    %eax,%esi
movsd  -0x98(%rbp),%xmm1
ff
lea    0x693(%rip),%rdi
mov    $0x2,%al
call   1060 <printf@plt>
movsd  -0x60(%rbp),%xmm0
movsd  %xmm0,-0x170(%rbp)
ff
movsd  -0x60(%rbp),%xmm0
lea    -0xa0(%rbp),%rdi
mov    $0x1,%al
call   1090 <intwt@plt>
movsd  -0x170(%rbp),%xmm0
ff
mov    %eax,%esi
movsd  -0xa0(%rbp),%xmm1
ff
lea    0x672(%rip),%rdi
mov    $0x2,%al
call   1060 <printf@plt>
movsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
movsd  -0x70(%rbp),%xmm0
lea    -0xb0(%rbp),%rdi
mov    $0x1,%al
call   1090 <intwt@plt>
movsd  -0x168(%rbp),%xmm0
ff
mov    %eax,%esi
movsd  -0xb0(%rbp),%xmm1
ff
lea    0x651(%rip),%rdi
mov    $0x2,%al
call   1060 <printf@plt>
movsd  -0x78(%rbp),%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
movsd  -0x78(%rbp),%xmm0
lea    -0xb8(%rbp),%rdi
mov    $0x1,%al
call   1090 <intwt@plt>
movsd  -0x160(%rbp),%xmm0
ff
mov    %eax,%esi
movsd  -0xb8(%rbp),%xmm1
ff
lea    0x630(%rip),%rdi
mov    $0x2,%al
call   1060 <printf@plt>
lea    0x69b(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x633(%rip),%rdi
movsd  0x505(%rip),%xmm0
mov    $0x1,%al
call   1060 <printf@plt>
lea    0x634(%rip),%rdi
movsd  0x4e7(%rip),%xmm0
mov    $0x1,%al
call   1060 <printf@plt>
lea    0x635(%rip),%rdi
movsd  0x4c9(%rip),%xmm0
mov    $0x1,%al
call   1060 <printf@plt>
movsd  0x4aa(%rip),%xmm0
mulsd  -0xf0(%rbp),%xmm0
ff
movsd  0x4a2(%rip),%xmm1
divsd  %xmm1,%xmm0
lea    0x61a(%rip),%rdi
mov    $0x1,%al
call   1060 <printf@plt>
movsd  -0xf0(%rbp),%xmm0
ff
lea    0x61b(%rip),%rdi
mov    $0x1,%al
call   1060 <printf@plt>
lea    0x60b(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
movsd  0x45c(%rip),%xmm0
mulsd  -0xf8(%rbp),%xmm0
ff
lea    0x603(%rip),%rdi
mov    $0x1,%al
call   1060 <printf@plt>
movsd  0x43e(%rip),%xmm0
mulsd  -0x100(%rbp),%xmm0
ff
lea    0x5fc(%rip),%rdi
mov    $0x1,%al
call   1060 <printf@plt>
movsd  0x420(%rip),%xmm0
mulsd  -0x108(%rbp),%xmm0
ff
lea    0x5f5(%rip),%rdi
mov    $0x1,%al
call   1060 <printf@plt>
movsd  -0xf8(%rbp),%xmm0
ff
addsd  -0x100(%rbp),%xmm0
ff
addsd  -0x108(%rbp),%xmm0
ff
movsd  0x3ea(%rip),%xmm1
mulsd  %xmm1,%xmm0
lea    0x5da(%rip),%rdi
mov    $0x1,%al
call   1060 <printf@plt>
lea    0x571(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
mov    -0x1c(%rbp),%esi
movsd  0x3bf(%rip),%xmm0
mulsd  -0x110(%rbp),%xmm0
ff
lea    0x5c2(%rip),%rdi
mov    $0x1,%al
call   1060 <printf@plt>
mov    -0x1c(%rbp),%esi
movsd  0x39e(%rip),%xmm0
mulsd  -0x118(%rbp),%xmm0
ff
lea    0x5b9(%rip),%rdi
mov    $0x1,%al
call   1060 <printf@plt>
mov    -0x1c(%rbp),%esi
movsd  0x37d(%rip),%xmm0
mulsd  -0x120(%rbp),%xmm0
ff
lea    0x5b0(%rip),%rdi
mov    $0x1,%al
call   1060 <printf@plt>
mov    -0x1c(%rbp),%esi
movsd  0x35c(%rip),%xmm0
mulsd  -0x128(%rbp),%xmm0
ff
lea    0x5a7(%rip),%rdi
mov    $0x1,%al
call   1060 <printf@plt>
mov    -0x1c(%rbp),%esi
movsd  -0x110(%rbp),%xmm0
ff
addsd  -0x118(%rbp),%xmm0
ff
addsd  -0x120(%rbp),%xmm0
ff
addsd  -0x128(%rbp),%xmm0
ff
movsd  0x31b(%rip),%xmm1
mulsd  %xmm1,%xmm0
lea    0x582(%rip),%rdi
mov    $0x1,%al
call   1060 <printf@plt>
xor    %eax,%eax
add    $0x180,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x88,%rsp
lea    0xe88(%rip),%rdi
call   10e0 <PDQ_Init@plt>
lea    0xe86(%rip),%rdi
call   10f0 <PDQ_SetWUnit@plt>
lea    0xe7f(%rip),%rdi
call   10b0 <PDQ_SetTUnit@plt>
lea    0xe78(%rip),%rdi
mov    $0x4,%esi
mov    $0x8,%edx
call   1040 <PDQ_CreateNode@plt>
lea    0xe67(%rip),%rbp
lea    0x5a(%rsp),%rbx
xor    %edi,%edi
mov    %rbp,%rsi
mov    %rbx,%rdx
xor    %eax,%eax
call   1080 <namex@plt>
mov    %rbx,%rdi
mov    $0x4,%esi
mov    $0x8,%edx
call   1040 <PDQ_CreateNode@plt>
mov    $0x1,%edi
mov    %rbp,%rsi
mov    %rbx,%rdx
xor    %eax,%eax
call   1080 <namex@plt>
mov    %rbx,%rdi
mov    $0x4,%esi
mov    $0x8,%edx
call   1040 <PDQ_CreateNode@plt>
mov    $0x2,%edi
mov    %rbp,%rsi
mov    %rbx,%rdx
xor    %eax,%eax
call   1080 <namex@plt>
mov    %rbx,%rdi
mov    $0x4,%esi
mov    $0x8,%edx
call   1040 <PDQ_CreateNode@plt>
mov    $0x3,%edi
mov    %rbp,%rsi
mov    %rbx,%rdx
xor    %eax,%eax
call   1080 <namex@plt>
mov    %rbx,%rdi
mov    $0x4,%esi
mov    $0x8,%edx
call   1040 <PDQ_CreateNode@plt>
mov    $0x4,%edi
mov    %rbp,%rsi
mov    %rbx,%rdx
xor    %eax,%eax
call   1080 <namex@plt>
mov    %rbx,%rdi
mov    $0x4,%esi
mov    $0x8,%edx
call   1040 <PDQ_CreateNode@plt>
mov    $0x5,%edi
mov    %rbp,%rsi
mov    %rbx,%rdx
xor    %eax,%eax
call   1080 <namex@plt>
mov    %rbx,%rdi
mov    $0x4,%esi
mov    $0x8,%edx
call   1040 <PDQ_CreateNode@plt>
mov    $0x6,%edi
mov    %rbp,%rsi
mov    %rbx,%rdx
xor    %eax,%eax
call   1080 <namex@plt>
mov    %rbx,%rdi
mov    $0x4,%esi
mov    $0x8,%edx
call   1040 <PDQ_CreateNode@plt>
mov    $0x7,%edi
mov    %rbp,%rsi
mov    %rbx,%rdx
xor    %eax,%eax
call   1080 <namex@plt>
mov    %rbx,%rdi
mov    $0x4,%esi
mov    $0x8,%edx
call   1040 <PDQ_CreateNode@plt>
mov    $0x8,%edi
mov    %rbp,%rsi
mov    %rbx,%rdx
xor    %eax,%eax
call   1080 <namex@plt>
mov    %rbx,%rdi
mov    $0x4,%esi
mov    $0x8,%edx
call   1040 <PDQ_CreateNode@plt>
mov    $0x9,%edi
mov    %rbp,%rsi
mov    %rbx,%rdx
xor    %eax,%eax
call   1080 <namex@plt>
mov    %rbx,%rdi
mov    $0x4,%esi
mov    $0x8,%edx
call   1040 <PDQ_CreateNode@plt>
mov    $0xa,%edi
mov    %rbp,%rsi
mov    %rbx,%rdx
xor    %eax,%eax
call   1080 <namex@plt>
mov    %rbx,%rdi
mov    $0x4,%esi
mov    $0x8,%edx
call   1040 <PDQ_CreateNode@plt>
mov    $0xb,%edi
mov    %rbp,%rsi
mov    %rbx,%rdx
xor    %eax,%eax
call   1080 <namex@plt>
mov    %rbx,%rdi
mov    $0x4,%esi
mov    $0x8,%edx
call   1040 <PDQ_CreateNode@plt>
mov    $0xc,%edi
mov    %rbp,%rsi
mov    %rbx,%rdx
xor    %eax,%eax
call   1080 <namex@plt>
mov    %rbx,%rdi
mov    $0x4,%esi
mov    $0x8,%edx
call   1040 <PDQ_CreateNode@plt>
mov    $0xd,%edi
mov    %rbp,%rsi
mov    %rbx,%rdx
xor    %eax,%eax
call   1080 <namex@plt>
mov    %rbx,%rdi
mov    $0x4,%esi
mov    $0x8,%edx
call   1040 <PDQ_CreateNode@plt>
mov    $0xe,%edi
mov    %rbp,%rsi
mov    %rbx,%rdx
xor    %eax,%eax
call   1080 <namex@plt>
mov    %rbx,%rdi
mov    $0x4,%esi
mov    $0x8,%edx
call   1040 <PDQ_CreateNode@plt>
mov    %eax,0x64(%rsp)
movsd  0xbb4(%rip),%xmm0
lea    0x50(%rsp),%rdi
mov    $0x1,%al
call   10a0 <intwt@plt>
test   %eax,%eax
jle    1509 <main+0x339>
lea    0x46(%rsp),%rbx
lea    0x5a(%rsp),%r13
lea    0xc13(%rip),%r14
lea    0x50(%rsp),%r15
xor    %r12d,%r12d
nopl   0x0(%rax)
mov    %r12d,%edi
lea    0xc03(%rip),%rsi
mov    %rbx,%rdx
xor    %eax,%eax
call   1080 <namex@plt>
mov    %rbx,%rdi
mov    $0xb,%esi
movsd  0xb5c(%rip),%xmm0
movsd  0xb5c(%rip),%xmm1
call   1090 <PDQ_CreateClosed@plt>
mov    %eax,%ebp
mov    %r12d,%edi
lea    0xbcc(%rip),%rsi
mov    %r13,%rdx
xor    %eax,%eax
call   1080 <namex@plt>
mov    %r13,%rdi
mov    %rbx,%rsi
movsd  0xb3b(%rip),%xmm0
call   1050 <PDQ_SetDemand@plt>
xorps  %xmm0,%xmm0
mov    %r14,%rdi
mov    %rbx,%rsi
call   1050 <PDQ_SetDemand@plt>
add    $0x1,%r12d
movsd  0xb0c(%rip),%xmm0
mov    %r15,%rdi
mov    $0x1,%al
call   10a0 <intwt@plt>
cmp    %eax,%r12d
jl     1480 <main+0x2b0>
jmp    1509 <main+0x339>
movsd  0xb07(%rip),%xmm0
lea    0x8(%rsp),%rdi
mov    $0x1,%al
call   10a0 <intwt@plt>
test   %eax,%eax
jle    15cc <main+0x3fc>
lea    0x46(%rsp),%rbx
lea    0x5a(%rsp),%r13
lea    0xb4e(%rip),%r14
lea    0x8(%rsp),%r15
xor    %r12d,%r12d
xchg   %ax,%ax
mov    %r12d,%edi
lea    0xb49(%rip),%rsi
mov    %rbx,%rdx
xor    %eax,%eax
call   1080 <namex@plt>
mov    %rbx,%rdi
mov    $0xb,%esi
movsd  0xab4(%rip),%xmm0
movsd  0xa9c(%rip),%xmm1
call   1090 <PDQ_CreateClosed@plt>
mov    %eax,%ebp
mov    %r12d,%edi
lea    0xb0c(%rip),%rsi
mov    %r13,%rdx
xor    %eax,%eax
call   1080 <namex@plt>
mov    %r13,%rdi
mov    %rbx,%rsi
movsd  0xa7b(%rip),%xmm0
call   1050 <PDQ_SetDemand@plt>
mov    %r14,%rdi
mov    %rbx,%rsi
movsd  0xa78(%rip),%xmm0
call   1050 <PDQ_SetDemand@plt>
add    $0x1,%r12d
movsd  0xa5f(%rip),%xmm0
mov    %r15,%rdi
mov    $0x1,%al
call   10a0 <intwt@plt>
cmp    %eax,%r12d
jl     1540 <main+0x370>
movsd  0xa54(%rip),%xmm0
lea    0x30(%rsp),%rdi
mov    $0x1,%al
call   10a0 <intwt@plt>
test   %eax,%eax
jle    169c <main+0x4cc>
lea    0x46(%rsp),%rbx
lea    0x5a(%rsp),%r13
lea    0xa8b(%rip),%r14
lea    0x30(%rsp),%r15
xor    %r12d,%r12d
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
mov    %r12d,%edi
lea    0xa7e(%rip),%rsi
mov    %rbx,%rdx
xor    %eax,%eax
call   1080 <namex@plt>
mov    %rbx,%rdi
mov    $0xb,%esi
movsd  0x9f4(%rip),%xmm0
movsd  0x9cc(%rip),%xmm1
call   1090 <PDQ_CreateClosed@plt>
mov    %eax,%ebp
mov    %r12d,%edi
lea    0xa3c(%rip),%rsi
mov    %r13,%rdx
xor    %eax,%eax
call   1080 <namex@plt>
mov    %r13,%rdi
mov    %rbx,%rsi
movsd  0x9ab(%rip),%xmm0
call   1050 <PDQ_SetDemand@plt>
mov    %r14,%rdi
mov    %rbx,%rsi
movsd  0x9a8(%rip),%xmm0
call   1050 <PDQ_SetDemand@plt>
add    $0x1,%r12d
movsd  0x99f(%rip),%xmm0
mov    %r15,%rdi
mov    $0x1,%al
call   10a0 <intwt@plt>
cmp    %eax,%r12d
jl     1610 <main+0x440>
movsd  0x98c(%rip),%xmm0
lea    0x28(%rsp),%rdi
mov    $0x1,%al
call   10a0 <intwt@plt>
test   %eax,%eax
jle    176c <main+0x59c>
lea    0x46(%rsp),%rbx
lea    0x5a(%rsp),%r13
lea    0x9bb(%rip),%r14
lea    0x28(%rsp),%r15
xor    %r12d,%r12d
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
mov    %r12d,%edi
lea    0x9b4(%rip),%rsi
mov    %rbx,%rdx
xor    %eax,%eax
call   1080 <namex@plt>
mov    %rbx,%rdi
mov    $0xb,%esi
movsd  0x92c(%rip),%xmm0
movsd  0x8fc(%rip),%xmm1
call   1090 <PDQ_CreateClosed@plt>
mov    %eax,%ebp
mov    %r12d,%edi
lea    0x96c(%rip),%rsi
mov    %r13,%rdx
xor    %eax,%eax
call   1080 <namex@plt>
mov    %r13,%rdi
mov    %rbx,%rsi
movsd  0x8db(%rip),%xmm0
call   1050 <PDQ_SetDemand@plt>
mov    %r14,%rdi
mov    %rbx,%rsi
movsd  0x8c8(%rip),%xmm0
call   1050 <PDQ_SetDemand@plt>
add    $0x1,%r12d
movsd  0x8d7(%rip),%xmm0
mov    %r15,%rdi
mov    $0x1,%al
call   10a0 <intwt@plt>
cmp    %eax,%r12d
jl     16e0 <main+0x510>
mov    $0xf,%edi
call   1060 <PDQ_Solve@plt>
movsd  0x89a(%rip),%xmm0
lea    0x8(%rsp),%rdi
mov    $0x1,%al
call   10a0 <intwt@plt>
xorpd  %xmm0,%xmm0
movsd  %xmm0,0x20(%rsp)
test   %eax,%eax
jle    1808 <main+0x638>
xorpd  %xmm0,%xmm0
movsd  %xmm0,0x20(%rsp)
lea    0x8ea(%rip),%r14
lea    0x46(%rsp),%r13
lea    0x8cf(%rip),%r15
lea    0x8(%rsp),%r12
xor    %ebx,%ebx
nopl   0x0(%rax)
mov    %ebx,%edi
mov    %r14,%rsi
mov    %r13,%rdx
xor    %eax,%eax
call   1080 <namex@plt>
mov    %r15,%rdi
mov    %r13,%rsi
mov    $0xb,%edx
call   10c0 <PDQ_GetUtilization@plt>
movsd  0x20(%rsp),%xmm1
addsd  %xmm0,%xmm1
movsd  %xmm1,0x20(%rsp)
add    $0x1,%ebx
movsd  0x81e(%rip),%xmm0
mov    %r12,%rdi
mov    $0x1,%al
call   10a0 <intwt@plt>
cmp    %eax,%ebx
jl     17c0 <main+0x5f0>
movsd  0x20(%rsp),%xmm0
mulsd  0x8(%rsp),%xmm0
movsd  %xmm0,0x20(%rsp)
movsd  0x806(%rip),%xmm0
lea    0x30(%rsp),%rdi
mov    $0x1,%al
call   10a0 <intwt@plt>
test   %eax,%eax
xorpd  %xmm0,%xmm0
movsd  %xmm0,0x18(%rsp)
jle    18a8 <main+0x6d8>
xorpd  %xmm0,%xmm0
movsd  %xmm0,0x18(%rsp)
lea    0x84b(%rip),%r14
lea    0x46(%rsp),%r13
lea    0x82b(%rip),%r15
lea    0x30(%rsp),%r12
xor    %ebx,%ebx
mov    %ebx,%edi
mov    %r14,%rsi
mov    %r13,%rdx
xor    %eax,%eax
call   1080 <namex@plt>
mov    %r15,%rdi
mov    %r13,%rsi
mov    $0xb,%edx
call   10c0 <PDQ_GetUtilization@plt>
movsd  0x18(%rsp),%xmm1
addsd  %xmm0,%xmm1
movsd  %xmm1,0x18(%rsp)
add    $0x1,%ebx
movsd  0x78e(%rip),%xmm0
mov    %r12,%rdi
mov    $0x1,%al
call   10a0 <intwt@plt>
cmp    %eax,%ebx
jl     1860 <main+0x690>
movsd  0x18(%rsp),%xmm0
mulsd  0x30(%rsp),%xmm0
movsd  %xmm0,0x18(%rsp)
movsd  0x76e(%rip),%xmm0
lea    0x28(%rsp),%rdi
mov    $0x1,%al
call   10a0 <intwt@plt>
xorpd  %xmm0,%xmm0
movsd  %xmm0,0x10(%rsp)
test   %eax,%eax
jle    1948 <main+0x778>
xorpd  %xmm0,%xmm0
movsd  %xmm0,0x10(%rsp)
lea    0x7b1(%rip),%r14
lea    0x46(%rsp),%r13
lea    0x78b(%rip),%r15
lea    0x28(%rsp),%r12
xor    %ebx,%ebx
mov    %ebx,%edi
mov    %r14,%rsi
mov    %r13,%rdx
xor    %eax,%eax
call   1080 <namex@plt>
mov    %r15,%rdi
mov    %r13,%rsi
mov    $0xb,%edx
call   10c0 <PDQ_GetUtilization@plt>
movsd  0x10(%rsp),%xmm1
addsd  %xmm0,%xmm1
movsd  %xmm1,0x10(%rsp)
add    $0x1,%ebx
movsd  0x6f6(%rip),%xmm0
mov    %r12,%rdi
mov    $0x1,%al
call   10a0 <intwt@plt>
cmp    %eax,%ebx
jl     1900 <main+0x730>
movsd  0x10(%rsp),%xmm0
mulsd  0x28(%rsp),%xmm0
movsd  %xmm0,0x10(%rsp)
lea    0x728(%rip),%rsi
lea    0x5a(%rsp),%r15
xor    %edi,%edi
mov    %r15,%rdx
xor    %eax,%eax
call   1080 <namex@plt>
lea    0x714(%rip),%rsi
lea    0x46(%rsp),%rbx
xor    %edi,%edi
mov    %rbx,%rdx
xor    %eax,%eax
call   1080 <namex@plt>
mov    $0xb,%edi
mov    %rbx,%rsi
call   10d0 <PDQ_GetThruput@plt>
mulsd  0x50(%rsp),%xmm0
mulsd  0x663(%rip),%xmm0
addsd  0x6bb(%rip),%xmm0
movsd  %xmm0,0x38(%rsp)
mov    %r15,%rdi
mov    %rbx,%rsi
mov    $0xb,%edx
call   10c0 <PDQ_GetUtilization@plt>
mulsd  0x50(%rsp),%xmm0
movsd  %xmm0,0x80(%rsp)
lea    0x6ba(%rip),%rsi
xor    %edi,%edi
mov    %rbx,%rdx
xor    %eax,%eax
call   1080 <namex@plt>
mov    $0xb,%edi
mov    %rbx,%rsi
call   10d0 <PDQ_GetThruput@plt>
mulsd  0x8(%rsp),%xmm0
mulsd  0x608(%rip),%xmm0
addsd  0x38(%rsp),%xmm0
movsd  %xmm0,0x38(%rsp)
mov    %r15,%rdi
mov    %rbx,%rsi
mov    $0xb,%edx
call   10c0 <PDQ_GetUtilization@plt>
mulsd  0x8(%rsp),%xmm0
movsd  %xmm0,0x78(%rsp)
movsd  0x38(%rsp),%xmm0
mulsd  0x602(%rip),%xmm0
movsd  %xmm0,0x38(%rsp)
lea    0x655(%rip),%rsi
xor    %edi,%edi
mov    %rbx,%rdx
xor    %eax,%eax
call   1080 <namex@plt>
mov    %r15,%rdi
mov    %rbx,%rsi
mov    $0xb,%edx
call   10c0 <PDQ_GetUtilization@plt>
mulsd  0x30(%rsp),%xmm0
movsd  %xmm0,0x70(%rsp)
lea    0x62c(%rip),%rsi
xor    %edi,%edi
mov    %rbx,%rdx
xor    %eax,%eax
call   1080 <namex@plt>
mov    %r15,%rdi
mov    %rbx,%rsi
mov    $0xb,%edx
call   10c0 <PDQ_GetUtilization@plt>
mulsd  0x28(%rsp),%xmm0
movsd  %xmm0,0x68(%rsp)
lea    0x603(%rip),%rdi
lea    0x5c8(%rip),%rsi
xor    %eax,%eax
call   1070 <printf@plt>
lea    0x605(%rip),%rdi
mov    0x64(%rsp),%esi
mov    %ebp,%edx
xor    %eax,%eax
call   1070 <printf@plt>
lea    0x611(%rip),%rdi
lea    0x61b(%rip),%rsi
xor    %eax,%eax
call   1070 <printf@plt>
lea    0x617(%rip),%rdi
mov    $0xf,%esi
xor    %eax,%eax
call   1070 <printf@plt>
movsd  0x50d(%rip),%xmm0
lea    0x50(%rsp),%rdi
mov    $0x1,%al
call   10a0 <intwt@plt>
movsd  0x50(%rsp),%xmm1
lea    0x5f6(%rip),%rdi
movsd  0x4ec(%rip),%xmm0
mov    %eax,%esi
mov    $0x2,%al
call   1070 <printf@plt>
movsd  0x4f3(%rip),%xmm0
lea    0x8(%rsp),%rdi
mov    $0x1,%al
call   10a0 <intwt@plt>
movsd  0x8(%rsp),%xmm1
lea    0x5e3(%rip),%rdi
movsd  0x4d2(%rip),%xmm0
mov    %eax,%esi
mov    $0x2,%al
call   1070 <printf@plt>
movsd  0x4d1(%rip),%xmm0
lea    0x30(%rsp),%rdi
mov    $0x1,%al
call   10a0 <intwt@plt>
movsd  0x30(%rsp),%xmm1
lea    0x5d0(%rip),%rdi
movsd  0x4b0(%rip),%xmm0
mov    %eax,%esi
mov    $0x2,%al
call   1070 <printf@plt>
movsd  0x4a7(%rip),%xmm0
lea    0x28(%rsp),%rdi
mov    $0x1,%al
call   10a0 <intwt@plt>
movsd  0x28(%rsp),%xmm1
lea    0x5bd(%rip),%rdi
movsd  0x486(%rip),%xmm0
mov    %eax,%esi
mov    $0x2,%al
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0x5ba(%rip),%rdi
movsd  0x474(%rip),%xmm0
mov    $0x1,%al
call   1070 <printf@plt>
lea    0x5bb(%rip),%rdi
movsd  0x466(%rip),%xmm0
mov    $0x1,%al
call   1070 <printf@plt>
lea    0x5bc(%rip),%rdi
movsd  0x458(%rip),%xmm0
mov    $0x1,%al
call   1070 <printf@plt>
movsd  0x38(%rsp),%xmm0
mulsd  0x44b(%rip),%xmm0
divsd  0x44b(%rip),%xmm0
lea    0x5a7(%rip),%rdi
mov    $0x1,%al
call   1070 <printf@plt>
lea    0x5b0(%rip),%rdi
movsd  0x38(%rsp),%xmm0
mov    $0x1,%al
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movsd  0x20(%rsp),%xmm0
mulsd  0x409(%rip),%xmm0
lea    0x598(%rip),%rdi
mov    $0x1,%al
call   1070 <printf@plt>
movsd  0x18(%rsp),%xmm0
mulsd  0x3ed(%rip),%xmm0
lea    0x593(%rip),%rdi
mov    $0x1,%al
call   1070 <printf@plt>
movsd  0x10(%rsp),%xmm0
mulsd  0x3d1(%rip),%xmm0
lea    0x58e(%rip),%rdi
mov    $0x1,%al
call   1070 <printf@plt>
movsd  0x20(%rsp),%xmm0
addsd  0x18(%rsp),%xmm0
addsd  0x10(%rsp),%xmm0
mulsd  0x3a9(%rip),%xmm0
lea    0x57d(%rip),%rdi
mov    $0x1,%al
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movsd  0x80(%rsp),%xmm0
mulsd  0x380(%rip),%xmm0
lea    0x56b(%rip),%rdi
xor    %esi,%esi
mov    $0x1,%al
call   1070 <printf@plt>
movsd  0x78(%rsp),%xmm0
mulsd  0x362(%rip),%xmm0
lea    0x565(%rip),%rdi
xor    %esi,%esi
mov    $0x1,%al
call   1070 <printf@plt>
movsd  0x70(%rsp),%xmm0
mulsd  0x344(%rip),%xmm0
lea    0x55f(%rip),%rdi
xor    %esi,%esi
mov    $0x1,%al
call   1070 <printf@plt>
movsd  0x68(%rsp),%xmm0
mulsd  0x326(%rip),%xmm0
lea    0x559(%rip),%rdi
xor    %esi,%esi
mov    $0x1,%al
call   1070 <printf@plt>
movsd  0x78(%rsp),%xmm0
addsd  0x80(%rsp),%xmm0
addsd  0x70(%rsp),%xmm0
addsd  0x68(%rsp),%xmm0
mulsd  0x2f3(%rip),%xmm0
lea    0x53e(%rip),%rdi
xor    %esi,%esi
mov    $0x1,%al
call   1070 <printf@plt>
xor    %eax,%eax
add    $0x88,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
@.str = [10 x i8] c"ABC Model\00"
@.str.1 = [5 x i8] c"Reqs\00"
@.str.2 = [5 x i8] c"Cycs\00"
@.str.3 = [5 x i8] c"MBus\00"
@.str.4 = [4 x i8] c"L2C\00"
@.str.5 = [6 x i8] c"RWhit\00"
@.str.6 = [5 x i8] c"Read\00"
@.str.7 = [6 x i8] c"Write\00"
@.str.8 = [6 x i8] c"Inval\00"
@.str.9 = [23 x i8] c"\0A**** %s Results ****\0A\00"
@.str.10 = [32 x i8] c"PDQ nodes: %d PDQ streams: %d\0A\00"
@.str.11 = [17 x i8] c"Memory Mode: %s\0A\00"
@.str.12 = [10 x i8] c"WriteBack\00"
@.str.13 = [12 x i8] c"Ncpu: %2d\0A\00"
@.str.14 = [31 x i8] c"Nrwht: %5.2f (N:%2d W:%5.2f)\0A\00"
@.str.15 = [31 x i8] c"Nrdop: %5.2f (N:%2d W:%5.2f)\0A\00"
@.str.16 = [31 x i8] c"Nwbop: %5.2f (N:%2d W:%5.2f)\0A\00"
@.str.17 = [31 x i8] c"Ninvl: %5.2f (N:%2d W:%5.2f)\0A\00"
@.str.18 = [2 x i8] c"\0A\00"
@.str.19 = [23 x i8] c"Hit Ratio: %5.2f %%\0A\00"
@.str.20 = [23 x i8] c"Read Miss: %5.2f %%\0A\00"
@.str.21 = [23 x i8] c"WriteMiss: %5.2f %%\0A\00"
@.str.22 = [23 x i8] c"Ucpu: %5.2f %%\0A\00"
@.str.23 = [20 x i8] c"Pcpu: %5.2f\0A\00"
@.str.24 = [23 x i8] c"Ubus[reads]: %5.2f %%\0A\00"
@.str.25 = [23 x i8] c"Ubus[write]: %5.2f %%\0A\00"
@.str.26 = [23 x i8] c"Ubus[inval]: %5.2f %%\0A\00"
@.str.27 = [23 x i8] c"Ubus[total]: %5.2f %%\0A\00"
@.str.28 = [24 x i8] c"Uca%d[hits]: %5.2f %%\0A\00"
@.str.29 = [24 x i8] c"Uca%d[reads]: %5.2f %%\0A\00"
@.str.30 = [24 x i8] c"Uca%d[write]: %5.2f %%\0A\00"
@.str.31 = [24 x i8] c"Uca%d[inval]: %5.2f %%\0A\00"
@.str.32 = [24 x i8] c"Uca%d[total]: %5.2f %%\0A\00"
define i32 @main() {
%1 = alloca i32
%2 = alloca [10 x i8]
%3 = alloca [10 x i8]
%4 = alloca i32
%5 = alloca double
%6 = alloca double
%7 = alloca double
%8 = alloca double
%9 = alloca double
%10 = alloca double
%11 = alloca double
%12 = alloca double
%13 = alloca double
%14 = alloca double
%15 = alloca double
%16 = alloca double
%17 = alloca double
%18 = alloca double
%19 = alloca double
%20 = alloca double
%21 = alloca double
%22 = alloca double
%23 = alloca double
%24 = alloca double
%25 = alloca double
%26 = alloca double
%27 = alloca double
%28 = alloca double
%29 = alloca double
%30 = alloca double
%31 = alloca double
%32 = alloca double
%33 = alloca double
%34 = alloca double
%35 = alloca double
%36 = alloca double
%37 = alloca double
%38 = alloca i32
%39 = alloca i32
%40 = alloca i8*
store i32 0, i32* %1
store double 8.075000e-01, double* %5
store double 0x3FC1E7924AF0BF1C, double* %6
store double 0x3FA5C28F5C28F5C8, double* %7
store double 0x3F65810624DD2F20, double* %8
store double 0x3FC3333333333334, double* %9
store double 0x3F7EB399F5DFEB8F, double* %10
store double 1.211250e+01, double* %11
store double 0x3FF4666666666667, double* %12
store double 2.250000e+00, double* %13
store double 0x3FDCCCCCCCCCCCCC, double* %14
store double 0x3FCCCCCCCCCCCCCC, double* %15
store double 2.000000e+01, double* %16
store double 2.500000e+01, double* %17
store double 2.000000e+01, double* %18
store double 2.500000e+00, double* %24
store double 2.500000e+00, double* %25
store double 2.500000e+00, double* %26
store double 2.500000e+00, double* %27
store double 2.500000e+00, double* %28
store double 0.000000e+00, double* %29
store double 0.000000e+00, double* %30
store double 0.000000e+00, double* %31
store double 0.000000e+00, double* %32
store double 0.000000e+00, double* %33
store double 0.000000e+00, double* %34
store double 0.000000e+00, double* %35
store double 0.000000e+00, double* %36
store double 0.000000e+00, double* %37
store i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str, i64 0, i64 0), i8** %40
%41 = load i8*, i8** %40
%42 = call i32 @PDQ_Init(i8* %41)
%43 = call i32 @PDQ_SetWUnit(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.1, i64 0, i64 0))
%44 = call i32 @PDQ_SetTUnit(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.2, i64 0, i64 0))
%45 = call i32 @PDQ_CreateNode(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.3, i64 0, i64 0), i32 4, i32 8)
store i32 %45, i32* %38
store i32 0, i32* %4
br label %46
46: ; preds = %54, %0
%47 = load i32, i32* %4
%48 = icmp slt i32 %47, 15
br i1 %48, label %49, label %57
49: ; preds = %46
%50 = load i32, i32* %4
%51 = getelementptr inbounds [10 x i8], [10 x i8]* %2, i64 0, i64 0
%52 = getelementptr inbounds [10 x i8], [10 x i8]* %2, i64 0, i64 0
%53 = call i32 @PDQ_CreateNode(i8* %52, i32 4, i32 8)
store i32 %53, i32* %38
br label %54
54: ; preds = %49
%55 = load i32, i32* %4
%56 = add nsw i32 %55, 1
store i32 %56, i32* %4
br label %46
57: ; preds = %46
store i32 0, i32* %4
br label %58
58: ; preds = %77, %57
%59 = load i32, i32* %4
%60 = load double, double* %11
%61 = call i32 (double, double*, ...) bitcast (i32 (...)* @intwt to i32 (double, double*, ...)*)(double %60, double* %19)
%62 = icmp slt i32 %59, %61
br i1 %62, label %63, label %80
63: ; preds = %58
%64 = load i32, i32* %4
%65 = getelementptr inbounds [10 x i8], [10 x i8]* %3, i64 0, i64 0
%66 = getelementptr inbounds [10 x i8], [10 x i8]* %3, i64 0, i64 0
%67 = load double, double* %11
%68 = load double, double* %24
%69 = call i32 @PDQ_CreateClosed(i8* %66, i32 11, double %67, double %68)
store i32 %69, i32* %39
%70 = load i32, i32* %4
%71 = getelementptr inbounds [10 x i8], [10 x i8]* %2, i64 0, i64 0
%72 = getelementptr inbounds [10 x i8], [10 x i8]* %2, i64 0, i64 0
%73 = getelementptr inbounds [10 x i8], [10 x i8]* %3, i64 0, i64 0
%74 = call i32 @PDQ_SetDemand(i8* %72, i8* %73, double 1.000000e+00)
%75 = getelementptr inbounds [10 x i8], [10 x i8]* %3, i64 0, i64 0
%76 = call i32 @PDQ_SetDemand(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.3, i64 0, i64 0), i8* %75, double 0.000000e+00)
br label %77
77: ; preds = %63
%78 = load i32, i32* %4
%79 = add nsw i32 %78, 1
store i32 %79, i32* %4
br label %58
80: ; preds = %58
store i32 0, i32* %4
br label %81
81: ; preds = %101, %80
%82 = load i32, i32* %4
%83 = load double, double* %12
%84 = call i32 (double, double*, ...) bitcast (i32 (...)* @intwt to i32 (double, double*, ...)*)(double %83, double* %20)
%85 = icmp slt i32 %82, %84
br i1 %85, label %86, label %104
86: ; preds = %81
%87 = load i32, i32* %4
%88 = getelementptr inbounds [10 x i8], [10 x i8]* %3, i64 0, i64 0
%89 = getelementptr inbounds [10 x i8], [10 x i8]* %3, i64 0, i64 0
%90 = load double, double* %12
%91 = load double, double* %25
%92 = call i32 @PDQ_CreateClosed(i8* %89, i32 11, double %90, double %91)
store i32 %92, i32* %39
%93 = load i32, i32* %4
%94 = getelementptr inbounds [10 x i8], [10 x i8]* %2, i64 0, i64 0
%95 = getelementptr inbounds [10 x i8], [10 x i8]* %2, i64 0, i64 0
%96 = getelementptr inbounds [10 x i8], [10 x i8]* %3, i64 0, i64 0
%97 = call i32 @PDQ_SetDemand(i8* %95, i8* %96, double 1.000000e+00)
%98 = getelementptr inbounds [10 x i8], [10 x i8]* %3, i64 0, i64 0
%99 = load double, double* %16
%100 = call i32 @PDQ_SetDemand(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.3, i64 0, i64 0), i8* %98, double %99)
br label %101
101: ; preds = %86
%102 = load i32, i32* %4
%103 = add nsw i32 %102, 1
store i32 %103, i32* %4
br label %81
104: ; preds = %81
store i32 0, i32* %4
br label %105
105: ; preds = %125, %104
%106 = load i32, i32* %4
%107 = load double, double* %14
%108 = call i32 (double, double*, ...) bitcast (i32 (...)* @intwt to i32 (double, double*, ...)*)(double %107, double* %22)
%109 = icmp slt i32 %106, %108
br i1 %109, label %110, label %128
110: ; preds = %105
%111 = load i32, i32* %4
%112 = getelementptr inbounds [10 x i8], [10 x i8]* %3, i64 0, i64 0
%113 = getelementptr inbounds [10 x i8], [10 x i8]* %3, i64 0, i64 0
%114 = load double, double* %14
%115 = load double, double* %26
%116 = call i32 @PDQ_CreateClosed(i8* %113, i32 11, double %114, double %115)
store i32 %116, i32* %39
%117 = load i32, i32* %4
%118 = getelementptr inbounds [10 x i8], [10 x i8]* %2, i64 0, i64 0
%119 = getelementptr inbounds [10 x i8], [10 x i8]* %2, i64 0, i64 0
%120 = getelementptr inbounds [10 x i8], [10 x i8]* %3, i64 0, i64 0
%121 = call i32 @PDQ_SetDemand(i8* %119, i8* %120, double 1.000000e+00)
%122 = getelementptr inbounds [10 x i8], [10 x i8]* %3, i64 0, i64 0
%123 = load double, double* %18
%124 = call i32 @PDQ_SetDemand(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.3, i64 0, i64 0), i8* %122, double %123)
br label %125
125: ; preds = %110
%126 = load i32, i32* %4
%127 = add nsw i32 %126, 1
store i32 %127, i32* %4
br label %105
128: ; preds = %105
store i32 0, i32* %4
br label %129
129: ; preds = %148, %128
%130 = load i32, i32* %4
%131 = load double, double* %15
%132 = call i32 (double, double*, ...) bitcast (i32 (...)* @intwt to i32 (double, double*, ...)*)(double %131, double* %23)
%133 = icmp slt i32 %130, %132
br i1 %133, label %134, label %151
134: ; preds = %129
%135 = load i32, i32* %4
%136 = getelementptr inbounds [10 x i8], [10 x i8]* %3, i64 0, i64 0
%137 = getelementptr inbounds [10 x i8], [10 x i8]* %3, i64 0, i64 0
%138 = load double, double* %15
%139 = load double, double* %27
%140 = call i32 @PDQ_CreateClosed(i8* %137, i32 11, double %138, double %139)
store i32 %140, i32* %39
%141 = load i32, i32* %4
%142 = getelementptr inbounds [10 x i8], [10 x i8]* %2, i64 0, i64 0
%143 = getelementptr inbounds [10 x i8], [10 x i8]* %2, i64 0, i64 0
%144 = getelementptr inbounds [10 x i8], [10 x i8]* %3, i64 0, i64 0
%145 = call i32 @PDQ_SetDemand(i8* %143, i8* %144, double 1.000000e+00)
%146 = getelementptr inbounds [10 x i8], [10 x i8]* %3, i64 0, i64 0
%147 = call i32 @PDQ_SetDemand(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.3, i64 0, i64 0), i8* %146, double 1.000000e+00)
br label %148
148: ; preds = %134
%149 = load i32, i32* %4
%150 = add nsw i32 %149, 1
store i32 %150, i32* %4
br label %129
151: ; preds = %129
%152 = call i32 @PDQ_Solve(i32 15)
store i32 0, i32* %4
br label %153
153: ; preds = %165, %151
%154 = load i32, i32* %4
%155 = load double, double* %12
%156 = call i32 (double, double*, ...) bitcast (i32 (...)* @intwt to i32 (double, double*, ...)*)(double %155, double* %20)
%157 = icmp slt i32 %154, %156
br i1 %157, label %158, label %168
158: ; preds = %153
%159 = load i32, i32* %4
%160 = getelementptr inbounds [10 x i8], [10 x i8]* %3, i64 0, i64 0
%161 = getelementptr inbounds [10 x i8], [10 x i8]* %3, i64 0, i64 0
%162 = call double @PDQ_GetUtilization(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.3, i64 0, i64 0), i8* %161, i32 11)
%163 = load double, double* %31
%164 = fadd double %163, %162
store double %164, double* %31
br label %165
165: ; preds = %158
%166 = load i32, i32* %4
%167 = add nsw i32 %166, 1
store i32 %167, i32* %4
br label %153
168: ; preds = %153
%169 = load double, double* %20
%170 = load double, double* %31
%171 = fmul double %170, %169
store double %171, double* %31
store i32 0, i32* %4
br label %172
172: ; preds = %184, %168
%173 = load i32, i32* %4
%174 = load double, double* %14
%175 = call i32 (double, double*, ...) bitcast (i32 (...)* @intwt to i32 (double, double*, ...)*)(double %174, double* %22)
%176 = icmp slt i32 %173, %175
br i1 %176, label %177, label %187
177: ; preds = %172
%178 = load i32, i32* %4
%179 = getelementptr inbounds [10 x i8], [10 x i8]* %3, i64 0, i64 0
%180 = getelementptr inbounds [10 x i8], [10 x i8]* %3, i64 0, i64 0
%181 = call double @PDQ_GetUtilization(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.3, i64 0, i64 0), i8* %180, i32 11)
%182 = load double, double* %32
%183 = fadd double %182, %181
store double %183, double* %32
br label %184
184: ; preds = %177
%185 = load i32, i32* %4
%186 = add nsw i32 %185, 1
store i32 %186, i32* %4
br label %172
187: ; preds = %172
%188 = load double, double* %22
%189 = load double, double* %32
%190 = fmul double %189, %188
store double %190, double* %32
store i32 0, i32* %4
br label %191
191: ; preds = %203, %187
%192 = load i32, i32* %4
%193 = load double, double* %15
%194 = call i32 (double, double*, ...) bitcast (i32 (...)* @intwt to i32 (double, double*, ...)*)(double %193, double* %23)
%195 = icmp slt i32 %192, %194
br i1 %195, label %196, label %206
196: ; preds = %191
%197 = load i32, i32* %4
%198 = getelementptr inbounds [10 x i8], [10 x i8]* %3, i64 0, i64 0
%199 = getelementptr inbounds [10 x i8], [10 x i8]* %3, i64 0, i64 0
%200 = call double @PDQ_GetUtilization(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.3, i64 0, i64 0), i8* %199, i32 11)
%201 = load double, double* %33
%202 = fadd double %201, %200
store double %202, double* %33
br label %203
203: ; preds = %196
%204 = load i32, i32* %4
%205 = add nsw i32 %204, 1
store i32 %205, i32* %4
br label %191
206: ; preds = %191
%207 = load double, double* %23
%208 = load double, double* %33
%209 = fmul double %208, %207
store double %209, double* %33
store i32 0, i32* %4
%210 = load i32, i32* %4
%211 = getelementptr inbounds [10 x i8], [10 x i8]* %2, i64 0, i64 0
%212 = load i32, i32* %4
%213 = getelementptr inbounds [10 x i8], [10 x i8]* %3, i64 0, i64 0
%214 = getelementptr inbounds [10 x i8], [10 x i8]* %3, i64 0, i64 0
%215 = call double @PDQ_GetThruput(i32 11, i8* %214)
%216 = load double, double* %19
%217 = fmul double %215, %216
store double %217, double* %29
%218 = load double, double* %29
%219 = load double, double* %24
%220 = load double, double* %30
%221 = call double @llvm.fmuladd.f64(double %218, double %219, double %220)
store double %221, double* %30
%222 = getelementptr inbounds [10 x i8], [10 x i8]* %2, i64 0, i64 0
%223 = getelementptr inbounds [10 x i8], [10 x i8]* %3, i64 0, i64 0
%224 = call double @PDQ_GetUtilization(i8* %222, i8* %223, i32 11)
%225 = load double, double* %19
%226 = fmul double %224, %225
store double %226, double* %34
%227 = load i32, i32* %4
%228 = getelementptr inbounds [10 x i8], [10 x i8]* %3, i64 0, i64 0
%229 = getelementptr inbounds [10 x i8], [10 x i8]* %3, i64 0, i64 0
%230 = call double @PDQ_GetThruput(i32 11, i8* %229)
%231 = load double, double* %20
%232 = fmul double %230, %231
store double %232, double* %29
%233 = load double, double* %29
%234 = load double, double* %25
%235 = load double, double* %30
%236 = call double @llvm.fmuladd.f64(double %233, double %234, double %235)
store double %236, double* %30
%237 = getelementptr inbounds [10 x i8], [10 x i8]* %2, i64 0, i64 0
%238 = getelementptr inbounds [10 x i8], [10 x i8]* %3, i64 0, i64 0
%239 = call double @PDQ_GetUtilization(i8* %237, i8* %238, i32 11)
%240 = load double, double* %20
%241 = fmul double %239, %240
store double %241, double* %35
%242 = load double, double* %30
%243 = fmul double %242, 1.880000e+00
store double %243, double* %30
%244 = load i32, i32* %4
%245 = getelementptr inbounds [10 x i8], [10 x i8]* %3, i64 0, i64 0
%246 = getelementptr inbounds [10 x i8], [10 x i8]* %2, i64 0, i64 0
%247 = getelementptr inbounds [10 x i8], [10 x i8]* %3, i64 0, i64 0
%248 = call double @PDQ_GetUtilization(i8* %246, i8* %247, i32 11)
%249 = load double, double* %22
%250 = fmul double %248, %249
store double %250, double* %36
%251 = load i32, i32* %4
%252 = getelementptr inbounds [10 x i8], [10 x i8]* %3, i64 0, i64 0
%253 = getelementptr inbounds [10 x i8], [10 x i8]* %2, i64 0, i64 0
%254 = getelementptr inbounds [10 x i8], [10 x i8]* %3, i64 0, i64 0
%255 = call double @PDQ_GetUtilization(i8* %253, i8* %254, i32 11)
%256 = load double, double* %23
%257 = fmul double %255, %256
store double %257, double* %37
%258 = load i8*, i8** %40
%259 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.9, i64 0, i64 0), i8* %258)
%260 = load i32, i32* %38
%261 = load i32, i32* %39
%262 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.10, i64 0, i64 0), i32 %260, i32 %261)
%263 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.11, i64 0, i64 0), i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.12, i64 0, i64 0))
%264 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.13, i64 0, i64 0), i32 15)
%265 = load double, double* %11
%266 = load double, double* %11
%267 = call i32 (double, double*, ...) bitcast (i32 (...)* @intwt to i32 (double, double*, ...)*)(double %266, double* %19)
%268 = load double, double* %19
%269 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str.14, i64 0, i64 0), double %265, i32 %267, double %268)
%270 = load double, double* %12
%271 = load double, double* %12
%272 = call i32 (double, double*, ...) bitcast (i32 (...)* @intwt to i32 (double, double*, ...)*)(double %271, double* %20)
%273 = load double, double* %20
%274 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str.15, i64 0, i64 0), double %270, i32 %272, double %273)
%275 = load double, double* %14
%276 = load double, double* %14
%277 = call i32 (double, double*, ...) bitcast (i32 (...)* @intwt to i32 (double, double*, ...)*)(double %276, double* %22)
%278 = load double, double* %22
%279 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str.16, i64 0, i64 0), double %275, i32 %277, double %278)
%280 = load double, double* %15
%281 = load double, double* %15
%282 = call i32 (double, double*, ...) bitcast (i32 (...)* @intwt to i32 (double, double*, ...)*)(double %281, double* %23)
%283 = load double, double* %23
%284 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str.17, i64 0, i64 0), double %280, i32 %282, double %283)
%285 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.18, i64 0, i64 0))
%286 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.19, i64 0, i64 0), double 9.500000e+01)
%287 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.20, i64 0, i64 0), double 0x4011000000000004)
%288 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.21, i64 0, i64 0), double 0x3FE8000000000007)
%289 = load double, double* %30
%290 = fmul double %289, 1.000000e+02
%291 = fdiv double %290, 1.500000e+01
%292 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.22, i64 0, i64 0), double %291)
%293 = load double, double* %30
%294 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.23, i64 0, i64 0), double %293)
%295 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.18, i64 0, i64 0))
%296 = load double, double* %31
%297 = fmul double %296, 1.000000e+02
%298 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.24, i64 0, i64 0), double %297)
%299 = load double, double* %32
%300 = fmul double %299, 1.000000e+02
%301 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.25, i64 0, i64 0), double %300)
%302 = load double, double* %33
%303 = fmul double %302, 1.000000e+02
%304 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.26, i64 0, i64 0), double %303)
%305 = load double, double* %31
%306 = load double, double* %32
%307 = fadd double %305, %306
%308 = load double, double* %33
%309 = fadd double %307, %308
%310 = fmul double %309, 1.000000e+02
%311 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.27, i64 0, i64 0), double %310)
%312 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.18, i64 0, i64 0))
%313 = load i32, i32* %4
%314 = load double, double* %34
%315 = fmul double %314, 1.000000e+02
%316 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.28, i64 0, i64 0), i32 %313, double %315)
%317 = load i32, i32* %4
%318 = load double, double* %35
%319 = fmul double %318, 1.000000e+02
%320 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.29, i64 0, i64 0), i32 %317, double %319)
%321 = load i32, i32* %4
%322 = load double, double* %36
%323 = fmul double %322, 1.000000e+02
%324 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.30, i64 0, i64 0), i32 %321, double %323)
%325 = load i32, i32* %4
%326 = load double, double* %37
%327 = fmul double %326, 1.000000e+02
%328 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.31, i64 0, i64 0), i32 %325, double %327)
%329 = load i32, i32* %4
%330 = load double, double* %34
%331 = load double, double* %35
%332 = fadd double %330, %331
%333 = load double, double* %36
%334 = fadd double %332, %333
%335 = load double, double* %37
%336 = fadd double %334, %335
%337 = fmul double %336, 1.000000e+02
%338 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.32, i64 0, i64 0), i32 %329, double %337)
ret i32 0
}

LLVM IR (-O2):
@.str = [10 x i8] c"ABC Model\00"
@.str.1 = [5 x i8] c"Reqs\00"
@.str.2 = [5 x i8] c"Cycs\00"
@.str.3 = [5 x i8] c"MBus\00"
@.str.4 = [4 x i8] c"L2C\00"
@.str.5 = [6 x i8] c"RWhit\00"
@.str.6 = [5 x i8] c"Read\00"
@.str.7 = [6 x i8] c"Write\00"
@.str.8 = [6 x i8] c"Inval\00"
@.str.9 = [23 x i8] c"\0A**** %s Results ****\0A\00"
@.str.10 = [32 x i8] c"PDQ nodes: %d PDQ streams: %d\0A\00"
@.str.11 = [17 x i8] c"Memory Mode: %s\0A\00"
@.str.12 = [10 x i8] c"WriteBack\00"
@.str.13 = [12 x i8] c"Ncpu: %2d\0A\00"
@.str.14 = [31 x i8] c"Nrwht: %5.2f (N:%2d W:%5.2f)\0A\00"
@.str.15 = [31 x i8] c"Nrdop: %5.2f (N:%2d W:%5.2f)\0A\00"
@.str.16 = [31 x i8] c"Nwbop: %5.2f (N:%2d W:%5.2f)\0A\00"
@.str.17 = [31 x i8] c"Ninvl: %5.2f (N:%2d W:%5.2f)\0A\00"
@.str.19 = [23 x i8] c"Hit Ratio: %5.2f %%\0A\00"
@.str.20 = [23 x i8] c"Read Miss: %5.2f %%\0A\00"
@.str.21 = [23 x i8] c"WriteMiss: %5.2f %%\0A\00"
@.str.22 = [23 x i8] c"Ucpu: %5.2f %%\0A\00"
@.str.23 = [20 x i8] c"Pcpu: %5.2f\0A\00"
@.str.24 = [23 x i8] c"Ubus[reads]: %5.2f %%\0A\00"
@.str.25 = [23 x i8] c"Ubus[write]: %5.2f %%\0A\00"
@.str.26 = [23 x i8] c"Ubus[inval]: %5.2f %%\0A\00"
@.str.27 = [23 x i8] c"Ubus[total]: %5.2f %%\0A\00"
@.str.28 = [24 x i8] c"Uca%d[hits]: %5.2f %%\0A\00"
@.str.29 = [24 x i8] c"Uca%d[reads]: %5.2f %%\0A\00"
@.str.30 = [24 x i8] c"Uca%d[write]: %5.2f %%\0A\00"
@.str.31 = [24 x i8] c"Uca%d[inval]: %5.2f %%\0A\00"
@.str.32 = [24 x i8] c"Uca%d[total]: %5.2f %%\0A\00"
define i32 @main() {
%1 = alloca [10 x i8]
%2 = alloca [10 x i8]
%3 = alloca double
%4 = alloca double
%5 = alloca double
%6 = alloca double
%7 = getelementptr inbounds [10 x i8], [10 x i8]* %1, i64 0, i64 0
%8 = getelementptr inbounds [10 x i8], [10 x i8]* %2, i64 0, i64 0
%9 = bitcast double* %3 to i8*
%10 = bitcast double* %4 to i8*
%11 = bitcast double* %5 to i8*
%12 = bitcast double* %6 to i8*
%13 = tail call i32 @PDQ_Init(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str, i64 0, i64 0))
%14 = tail call i32 @PDQ_SetWUnit(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.1, i64 0, i64 0))
%15 = tail call i32 @PDQ_SetTUnit(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.2, i64 0, i64 0))
%16 = tail call i32 @PDQ_CreateNode(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.3, i64 0, i64 0), i32 4, i32 8)
%17 = call i32 @PDQ_CreateNode(i8* %7, i32 4, i32 8)
%18 = call i32 @PDQ_CreateNode(i8* %7, i32 4, i32 8)
%19 = call i32 @PDQ_CreateNode(i8* %7, i32 4, i32 8)
%20 = call i32 @PDQ_CreateNode(i8* %7, i32 4, i32 8)
%21 = call i32 @PDQ_CreateNode(i8* %7, i32 4, i32 8)
%22 = call i32 @PDQ_CreateNode(i8* %7, i32 4, i32 8)
%23 = call i32 @PDQ_CreateNode(i8* %7, i32 4, i32 8)
%24 = call i32 @PDQ_CreateNode(i8* %7, i32 4, i32 8)
%25 = call i32 @PDQ_CreateNode(i8* %7, i32 4, i32 8)
%26 = call i32 @PDQ_CreateNode(i8* %7, i32 4, i32 8)
%27 = call i32 @PDQ_CreateNode(i8* %7, i32 4, i32 8)
%28 = call i32 @PDQ_CreateNode(i8* %7, i32 4, i32 8)
%29 = call i32 @PDQ_CreateNode(i8* %7, i32 4, i32 8)
%30 = call i32 @PDQ_CreateNode(i8* %7, i32 4, i32 8)
%31 = call i32 @PDQ_CreateNode(i8* %7, i32 4, i32 8)
%32 = call i32 (double, double*, ...) bitcast (i32 (...)* @intwt to i32 (double, double*, ...)*)(double 1.211250e+01, double* %3)
%33 = icmp sgt i32 %32, 0
br i1 %33, label %38, label %34
34: ; preds = %38, %0
%35 = phi i32 [ undef, %0 ], [ %40, %38 ]
%36 = call i32 (double, double*, ...) bitcast (i32 (...)* @intwt to i32 (double, double*, ...)*)(double 0x3FF4666666666667, double* %4)
%37 = icmp sgt i32 %36, 0
br i1 %37, label %50, label %46
38: ; preds = %0, %38
%39 = phi i32 [ %43, %38 ], [ 0, %0 ]
%40 = call i32 @PDQ_CreateClosed(i8* %8, i32 11, double 1.211250e+01, double 2.500000e+00)
%41 = call i32 @PDQ_SetDemand(i8* %7, i8* %8, double 1.000000e+00)
%42 = call i32 @PDQ_SetDemand(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.3, i64 0, i64 0), i8* %8, double 0.000000e+00)
%43 = add nuw nsw i32 %39, 1
%44 = call i32 (double, double*, ...) bitcast (i32 (...)* @intwt to i32 (double, double*, ...)*)(double 1.211250e+01, double* %3)
%45 = icmp slt i32 %43, %44
br i1 %45, label %38, label %34
46: ; preds = %50, %34
%47 = phi i32 [ %35, %34 ], [ %52, %50 ]
%48 = call i32 (double, double*, ...) bitcast (i32 (...)* @intwt to i32 (double, double*, ...)*)(double 0x3FDCCCCCCCCCCCCC, double* %5)
%49 = icmp sgt i32 %48, 0
br i1 %49, label %62, label %58
50: ; preds = %34, %50
%51 = phi i32 [ %55, %50 ], [ 0, %34 ]
%52 = call i32 @PDQ_CreateClosed(i8* %8, i32 11, double 0x3FF4666666666667, double 2.500000e+00)
%53 = call i32 @PDQ_SetDemand(i8* %7, i8* %8, double 1.000000e+00)
%54 = call i32 @PDQ_SetDemand(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.3, i64 0, i64 0), i8* %8, double 2.000000e+01)
%55 = add nuw nsw i32 %51, 1
%56 = call i32 (double, double*, ...) bitcast (i32 (...)* @intwt to i32 (double, double*, ...)*)(double 0x3FF4666666666667, double* %4)
%57 = icmp slt i32 %55, %56
br i1 %57, label %50, label %46
58: ; preds = %62, %46
%59 = phi i32 [ %47, %46 ], [ %64, %62 ]
%60 = call i32 (double, double*, ...) bitcast (i32 (...)* @intwt to i32 (double, double*, ...)*)(double 0x3FCCCCCCCCCCCCCC, double* %6)
%61 = icmp sgt i32 %60, 0
br i1 %61, label %70, label %78
62: ; preds = %46, %62
%63 = phi i32 [ %67, %62 ], [ 0, %46 ]
%64 = call i32 @PDQ_CreateClosed(i8* %8, i32 11, double 0x3FDCCCCCCCCCCCCC, double 2.500000e+00)
%65 = call i32 @PDQ_SetDemand(i8* %7, i8* %8, double 1.000000e+00)
%66 = call i32 @PDQ_SetDemand(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.3, i64 0, i64 0), i8* %8, double 2.000000e+01)
%67 = add nuw nsw i32 %63, 1
%68 = call i32 (double, double*, ...) bitcast (i32 (...)* @intwt to i32 (double, double*, ...)*)(double 0x3FDCCCCCCCCCCCCC, double* %5)
%69 = icmp slt i32 %67, %68
br i1 %69, label %62, label %58
70: ; preds = %58, %70
%71 = phi i32 [ %75, %70 ], [ 0, %58 ]
%72 = call i32 @PDQ_CreateClosed(i8* %8, i32 11, double 0x3FCCCCCCCCCCCCCC, double 2.500000e+00)
%73 = call i32 @PDQ_SetDemand(i8* %7, i8* %8, double 1.000000e+00)
%74 = call i32 @PDQ_SetDemand(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.3, i64 0, i64 0), i8* %8, double 1.000000e+00)
%75 = add nuw nsw i32 %71, 1
%76 = call i32 (double, double*, ...) bitcast (i32 (...)* @intwt to i32 (double, double*, ...)*)(double 0x3FCCCCCCCCCCCCCC, double* %6)
%77 = icmp slt i32 %75, %76
br i1 %77, label %70, label %78
78: ; preds = %70, %58
%79 = phi i32 [ %59, %58 ], [ %72, %70 ]
%80 = call i32 @PDQ_Solve(i32 15)
%81 = call i32 (double, double*, ...) bitcast (i32 (...)* @intwt to i32 (double, double*, ...)*)(double 0x3FF4666666666667, double* %4)
%82 = icmp sgt i32 %81, 0
br i1 %82, label %83, label %91
83: ; preds = %78, %83
%84 = phi i32 [ %88, %83 ], [ 0, %78 ]
%85 = phi double [ %87, %83 ], [ 0.000000e+00, %78 ]
%86 = call double @PDQ_GetUtilization(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.3, i64 0, i64 0), i8* %8, i32 11)
%87 = fadd double %85, %86
%88 = add nuw nsw i32 %84, 1
%89 = call i32 (double, double*, ...) bitcast (i32 (...)* @intwt to i32 (double, double*, ...)*)(double 0x3FF4666666666667, double* %4)
%90 = icmp slt i32 %88, %89
br i1 %90, label %83, label %91
91: ; preds = %83, %78
%92 = phi double [ 0.000000e+00, %78 ], [ %87, %83 ]
%93 = load double, double* %4
%94 = fmul double %92, %93
%95 = call i32 (double, double*, ...) bitcast (i32 (...)* @intwt to i32 (double, double*, ...)*)(double 0x3FDCCCCCCCCCCCCC, double* %5)
%96 = icmp sgt i32 %95, 0
br i1 %96, label %97, label %105
97: ; preds = %91, %97
%98 = phi i32 [ %102, %97 ], [ 0, %91 ]
%99 = phi double [ %101, %97 ], [ 0.000000e+00, %91 ]
%100 = call double @PDQ_GetUtilization(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.3, i64 0, i64 0), i8* %8, i32 11)
%101 = fadd double %99, %100
%102 = add nuw nsw i32 %98, 1
%103 = call i32 (double, double*, ...) bitcast (i32 (...)* @intwt to i32 (double, double*, ...)*)(double 0x3FDCCCCCCCCCCCCC, double* %5)
%104 = icmp slt i32 %102, %103
br i1 %104, label %97, label %105
105: ; preds = %97, %91
%106 = phi double [ 0.000000e+00, %91 ], [ %101, %97 ]
%107 = load double, double* %5
%108 = fmul double %106, %107
%109 = call i32 (double, double*, ...) bitcast (i32 (...)* @intwt to i32 (double, double*, ...)*)(double 0x3FCCCCCCCCCCCCCC, double* %6)
%110 = icmp sgt i32 %109, 0
br i1 %110, label %111, label %119
111: ; preds = %105, %111
%112 = phi i32 [ %116, %111 ], [ 0, %105 ]
%113 = phi double [ %115, %111 ], [ 0.000000e+00, %105 ]
%114 = call double @PDQ_GetUtilization(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.3, i64 0, i64 0), i8* %8, i32 11)
%115 = fadd double %113, %114
%116 = add nuw nsw i32 %112, 1
%117 = call i32 (double, double*, ...) bitcast (i32 (...)* @intwt to i32 (double, double*, ...)*)(double 0x3FCCCCCCCCCCCCCC, double* %6)
%118 = icmp slt i32 %116, %117
br i1 %118, label %111, label %119
119: ; preds = %111, %105
%120 = phi double [ 0.000000e+00, %105 ], [ %115, %111 ]
%121 = load double, double* %6
%122 = fmul double %120, %121
%123 = call double @PDQ_GetThruput(i32 11, i8* %8)
%124 = load double, double* %3
%125 = fmul double %123, %124
%126 = call double @llvm.fmuladd.f64(double %125, double 2.500000e+00, double 0.000000e+00)
%127 = call double @PDQ_GetUtilization(i8* %7, i8* %8, i32 11)
%128 = load double, double* %3
%129 = fmul double %127, %128
%130 = call double @PDQ_GetThruput(i32 11, i8* %8)
%131 = load double, double* %4
%132 = fmul double %130, %131
%133 = call double @llvm.fmuladd.f64(double %132, double 2.500000e+00, double %126)
%134 = call double @PDQ_GetUtilization(i8* %7, i8* %8, i32 11)
%135 = load double, double* %4
%136 = fmul double %134, %135
%137 = fmul double %133, 1.880000e+00
%138 = call double @PDQ_GetUtilization(i8* %7, i8* %8, i32 11)
%139 = load double, double* %5
%140 = fmul double %138, %139
%141 = call double @PDQ_GetUtilization(i8* %7, i8* %8, i32 11)
%142 = load double, double* %6
%143 = fmul double %141, %142
%144 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([23 x i8], [23 x i8]* @.str.9, i64 0, i64 0), i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str, i64 0, i64 0))
%145 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([32 x i8], [32 x i8]* @.str.10, i64 0, i64 0), i32 %31, i32 %79)
%146 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([17 x i8], [17 x i8]* @.str.11, i64 0, i64 0), i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.12, i64 0, i64 0))
%147 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([12 x i8], [12 x i8]* @.str.13, i64 0, i64 0), i32 15)
%148 = call i32 (double, double*, ...) bitcast (i32 (...)* @intwt to i32 (double, double*, ...)*)(double 1.211250e+01, double* %3)
%149 = load double, double* %3
%150 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([31 x i8], [31 x i8]* @.str.14, i64 0, i64 0), double 1.211250e+01, i32 %148, double %149)
%151 = call i32 (double, double*, ...) bitcast (i32 (...)* @intwt to i32 (double, double*, ...)*)(double 0x3FF4666666666667, double* %4)
%152 = load double, double* %4
%153 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([31 x i8], [31 x i8]* @.str.15, i64 0, i64 0), double 0x3FF4666666666667, i32 %151, double %152)
%154 = call i32 (double, double*, ...) bitcast (i32 (...)* @intwt to i32 (double, double*, ...)*)(double 0x3FDCCCCCCCCCCCCC, double* %5)
%155 = load double, double* %5
%156 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([31 x i8], [31 x i8]* @.str.16, i64 0, i64 0), double 0x3FDCCCCCCCCCCCCC, i32 %154, double %155)
%157 = call i32 (double, double*, ...) bitcast (i32 (...)* @intwt to i32 (double, double*, ...)*)(double 0x3FCCCCCCCCCCCCCC, double* %6)
%158 = load double, double* %6
%159 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([31 x i8], [31 x i8]* @.str.17, i64 0, i64 0), double 0x3FCCCCCCCCCCCCCC, i32 %157, double %158)
%160 = call i32 @putchar(i32 10)
%161 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([23 x i8], [23 x i8]* @.str.19, i64 0, i64 0), double 9.500000e+01)
%162 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([23 x i8], [23 x i8]* @.str.20, i64 0, i64 0), double 0x4011000000000004)
%163 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([23 x i8], [23 x i8]* @.str.21, i64 0, i64 0), double 0x3FE8000000000007)
%164 = fmul double %137, 1.000000e+02
%165 = fdiv double %164, 1.500000e+01
%166 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([23 x i8], [23 x i8]* @.str.22, i64 0, i64 0), double %165)
%167 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([20 x i8], [20 x i8]* @.str.23, i64 0, i64 0), double %137)
%168 = call i32 @putchar(i32 10)
%169 = fmul double %94, 1.000000e+02
%170 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([23 x i8], [23 x i8]* @.str.24, i64 0, i64 0), double %169)
%171 = fmul double %108, 1.000000e+02
%172 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([23 x i8], [23 x i8]* @.str.25, i64 0, i64 0), double %171)
%173 = fmul double %122, 1.000000e+02
%174 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([23 x i8], [23 x i8]* @.str.26, i64 0, i64 0), double %173)
%175 = fadd double %94, %108
%176 = fadd double %175, %122
%177 = fmul double %176, 1.000000e+02
%178 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([23 x i8], [23 x i8]* @.str.27, i64 0, i64 0), double %177)
%179 = call i32 @putchar(i32 10)
%180 = fmul double %129, 1.000000e+02
%181 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([24 x i8], [24 x i8]* @.str.28, i64 0, i64 0), i32 0, double %180)
%182 = fmul double %136, 1.000000e+02
%183 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([24 x i8], [24 x i8]* @.str.29, i64 0, i64 0), i32 0, double %182)
%184 = fmul double %140, 1.000000e+02
%185 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([24 x i8], [24 x i8]* @.str.30, i64 0, i64 0), i32 0, double %184)
%186 = fmul double %143, 1.000000e+02
%187 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([24 x i8], [24 x i8]* @.str.31, i64 0, i64 0), i32 0, double %186)
%188 = fadd double %129, %136
%189 = fadd double %188, %140
%190 = fadd double %189, %143
%191 = fmul double %190, 1.000000e+02
%192 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([24 x i8], [24 x i8]* @.str.32, i64 0, i64 0), i32 0, double %191)
ret i32 0
}