#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */
typedef int /*<<< orphan*/ xs;

/* Variables and functions */
double drand48();
double erand48(unsigned short *);
long jrand48(unsigned short *);
int /*<<< orphan*/ lcong48(unsigned short *);
long lrand48();
int /*<<< orphan*/ memcpy(unsigned short *, unsigned short *, int);
long mrand48();
long nrand48(unsigned short *);
int /*<<< orphan*/ printf(char *, int, int, ...);
int /*<<< orphan*/ puts(char *);
unsigned short *seed48(unsigned short *);
int /*<<< orphan*/ srand48(int);
int main(void) {
  unsigned short int xs[3] = {0x0001, 0x0012, 0x0123};
  unsigned short int lxs[7];
  unsigned short int *xsp;
  int result = 0;
  long int l;
  double d;
  double e;
  srand48(0x98765432);
  xsp = seed48(xs);
  if (xsp[0] != 0x330e || xsp[1] != 0x5432 || xsp[2] != 0x9876) {
    puts("srand48(0x98765432) didn't set correct value");
    printf("  expected: { %04hx, %04hx, %04hx }\n", 0x330e, 0x5432, 0x9876);
    printf("  seen:     { %04hx, %04hx, %04hx }\n", xsp[0], xsp[1], xsp[2]);
    result = 1;
  }
  memcpy(xs, xsp, sizeof(xs));
  (void)seed48(xs);
  l = lrand48();
  if (l != 0x2fed1413l) {
    printf("lrand48() in line %d failed: expected %lx, seen %lx\n", 42 - 4,
           0x2fed1413l, l);
    result = 1;
  }
  l = mrand48();
  if (l != -0x5d73effdl) {
    printf("mrand48() in line %d failed: expected %lx, seen %lx\n", 50 - 4,
           -0x5d73effdl, l);
    result = 1;
  }
  l = lrand48();
  if (l != 0x585fcfb7l) {
    printf("lrand48() in line %d failed: expected %lx, seen %lx\n", 58 - 4,
           0x585fcfb7l, l);
    result = 1;
  }
  l = mrand48();
  if (l != -0x61770b8cl) {
    printf("mrand48() in line %d failed: expected %lx, seen %lx\n", 66 - 4,
           -0x61770b8cl, l);
    result = 1;
  }
  xs[0] = 0x1234;
  xs[1] = 0x5678;
  xs[2] = 0x9012;
  xsp = seed48(xs);
  if (xsp[0] != 0x62f2 || xsp[1] != 0xf474 || xsp[2] != 0x9e88) {
    puts("seed48() did not install the values correctly");
    printf("  expected: { %04hx, %04hx, %04hx }\n", 0x62f2, 0xf474, 0x9e88);
    printf("  seen:     { %04hx, %04hx, %04hx }\n", xsp[0], xsp[1], xsp[2]);
    result = 1;
  }
  l = lrand48();
  if (l != 0x017e48b5l) {
    printf("lrand48() in line %d failed: expected %lx, seen %lx\n", 90 - 4,
           0x017e48b5l, l);
    result = 1;
  }
  l = mrand48();
  if (l != -0x1485e05dl) {
    printf("mrand48() in line %d failed: expected %lx, seen %lx\n", 98 - 4,
           -0x1485e05dl, l);
    result = 1;
  }
  l = lrand48();
  if (l != 0x6b6a3f95l) {
    printf("lrand48() in line %d failed: expected %lx, seen %lx\n", 106 - 4,
           0x6b6a3f95l, l);
    result = 1;
  }
  l = mrand48();
  if (l != 0x175c0d6fl) {
    printf("mrand48() in line %d failed: expected %lx, seen %lx\n", 114 - 4,
           0x175c0d6fl, l);
    result = 1;
  }
  lxs[0] = 0x4567;
  lxs[1] = 0x6789;
  lxs[2] = 0x8901;
  lxs[3] = 0x0123;
  lxs[4] = 0x2345;
  lxs[5] = 0x1111;
  lxs[6] = 0x2222;
  lcong48(lxs);
  l = lrand48();
  if (l != 0x6df63d66l) {
    printf("lrand48() in line %d failed: expected %lx, seen %lx\n", 133 - 4,
           0x6df63d66l, l);
    result = 1;
  }
  l = mrand48();
  if (l != 0x2f92c8e1l) {
    printf("mrand48() in line %d failed: expected %lx, seen %lx\n", 141 - 4,
           0x2f92c8e1l, l);
    result = 1;
  }
  l = lrand48();
  if (l != 0x3b4869ffl) {
    printf("lrand48() in line %d failed: expected %lx, seen %lx\n", 149 - 4,
           0x3b4869ffl, l);
    result = 1;
  }
  l = mrand48();
  if (l != 0x5cd4cc3el) {
    printf("mrand48() in line %d failed: expected %lx, seen %lx\n", 157 - 4,
           0x5cd4cc3el, l);
    result = 1;
  }
  srand48(0x98765432);
  l = lrand48();
  if (l != 0x2fed1413l) {
    printf("lrand48() in line %d failed: expected %lx, seen %lx\n", 169 - 4,
           0x2fed1413l, l);
    result = 1;
  }
  l = mrand48();
  if (l != -0x5d73effdl) {
    printf("mrand48() in line %d failed: expected %lx, seen %lx\n", 177 - 4,
           -0x5d73effdl, l);
    result = 1;
  }
  l = lrand48();
  if (l != 0x585fcfb7l) {
    printf("lrand48() in line %d failed: expected %lx, seen %lx\n", 185 - 4,
           0x585fcfb7l, l);
    result = 1;
  }
  l = mrand48();
  if (l != -0x61770b8cl) {
    printf("mrand48() in line %d failed: expected %lx, seen %lx\n", 193 - 4,
           -0x61770b8cl, l);
    result = 1;
  }
  lcong48(lxs);
  l = lrand48();
  if (l != 0x6df63d66l) {
    printf("lrand48() in line %d failed: expected %lx, seen %lx\n", 205 - 4,
           0x6df63d66l, l);
    result = 1;
  }
  xs[0] = 0x1234;
  xs[1] = 0x5678;
  xs[2] = 0x9012;
  xsp = seed48(xs);
  if (xsp[0] != 0x0637 || xsp[1] != 0x7acd || xsp[2] != 0xdbec) {
    puts("seed48() did not install the values correctly");
    printf("  expected: { %04hx, %04hx, %04hx }\n", 0x0637, 0x7acd, 0xdbec);
    printf("  seen:     { %04hx, %04hx, %04hx }\n", xsp[0], xsp[1], xsp[2]);
    result = 1;
  }
  l = lrand48();
  if (l != 0x017e48b5l) {
    printf("lrand48() in line %d failed: expected %lx, seen %lx\n", 229 - 4,
           0x017e48b5l, l);
    result = 1;
  }
  l = mrand48();
  if (l != -0x1485e05dl) {
    printf("mrand48() in line %d failed: expected %lx, seen %lx\n", 237 - 4,
           -0x1485e05dl, l);
    result = 1;
  }
  l = lrand48();
  if (l != 0x6b6a3f95l) {
    printf("lrand48() in line %d failed: expected %lx, seen %lx\n", 245 - 4,
           0x6b6a3f95l, l);
    result = 1;
  }
  l = mrand48();
  if (l != 0x175c0d6fl) {
    printf("mrand48() in line %d failed: expected %lx, seen %lx\n", 253 - 4,
           0x175c0d6fl, l);
    result = 1;
  }
  d = drand48();
  if (d != 0.0908832261858485424) {
    printf("drand48() in line %d failed: expected %.*g, seen %.*g\n", 262 - 4,
           21, 0.0908832261858485424, 21, d);
    result = 1;
  }
  d = drand48();
  if (d != 0.943149381730059133133) {
    printf("drand48() in line %d failed: expected %.*g, seen %.*g\n", 271 - 4,
           21, 0.943149381730059133133, 21, d);
    result = 1;
  }
  xs[0] = 0x3849;
  xs[1] = 0x5061;
  xs[2] = 0x7283;
  l = nrand48(xs);
  if (l != 0x1efe61a1l) {
    printf("nrand48() in line %d failed: expected %lx, seen %lx\n", 285 - 4,
           0x1efe61a1l, l);
    result = 1;
  }
  l = jrand48(xs);
  if (l != -0xa973860l) {
    printf("jrand48() in line %d failed: expected %lx, seen %lx\n", 293 - 4,
           -0xa973860l, l);
    result = 1;
  }
  l = nrand48(xs);
  if (l != 0x2a5e57fel) {
    printf("nrand48() in line %d failed: expected %lx, seen %lx\n", 301 - 4,
           0x2a5e57fel, l);
    result = 1;
  }
  l = jrand48(xs);
  if (l != 0x71a779a8l) {
    printf("jrand48() in line %d failed: expected %lx, seen %lx\n", 309 - 4,
           0x71a779a8l, l);
    result = 1;
  }
  lcong48(lxs);
  l = nrand48(xs);
  if (l != 0x32beee9fl) {
    printf("nrand48() in line %d failed: expected %lx, seen %lx\n", 320 - 4,
           0x32beee9fl, l);
    result = 1;
  }
  l = jrand48(xs);
  if (l != 0x7bddf3bal) {
    printf("jrand48() in line %d failed: expected %lx, seen %lx\n", 328 - 4,
           0x7bddf3bal, l);
    result = 1;
  }
  l = nrand48(xs);
  if (l != 0x85bdf28l) {
    printf("nrand48() in line %d failed: expected %lx, seen %lx\n", 336 - 4,
           0x85bdf28l, l);
    result = 1;
  }
  l = jrand48(xs);
  if (l != 0x7b433e47l) {
    printf("jrand48() in line %d failed: expected %lx, seen %lx\n", 344 - 4,
           0x7b433e47l, l);
    result = 1;
  }
  (void)seed48(xs);
  d = drand48();
  e = erand48(xs);
  if (d != e) {
    printf(
        "drand48() and erand48 in lines %d and %d produce different results\n",
        357 - 6, 357 - 5);
    printf("  drand48() = %g, erand48() = %g\n", d, e);
    result = 1;
  } else if (e != 0.640650904452755298735) {
    printf("erand48() in line %d failed: expected %.*g, seen %.*g\n", 364 - 4,
           21, 0.640650904452755298735, 21, e);
    result = 1;
  }
  d = drand48();
  e = erand48(xs);
  if (d != e) {
    printf(
        "drand48() and erand48 in lines %d and %d produce different results\n",
        376 - 6, 376 - 5);
    printf("  drand48() = %g, erand48() = %g\n", d, e);
    result = 1;
  } else if (e != 0.115372323508150742555) {
    printf("erand48() in line %d failed: expected %.*g, seen %.*g\n", 383 - 4,
           21, 0.0115372323508150742555, 21, e);
    result = 1;
  }
  return result;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x40,%rsp
movl   $0x0,-0x4(%rbp)
mov    0xe53(%rip),%eax
mov    %eax,-0xa(%rbp)
mov    0xe4d(%rip),%ax
mov    %ax,-0x6(%rbp)
movl   $0x0,-0x24(%rbp)
mov    $0x98765432,%edi
call   10b0 <srand48@plt>
lea    -0xa(%rbp),%rdi
call   1090 <seed48@plt>
mov    %rax,-0x20(%rbp)
mov    -0x20(%rbp),%rax
movzwl (%rax),%eax
cmp    $0x330e,%eax
jne    1239 <main+0x79>
mov    -0x20(%rbp),%rax
movzwl 0x2(%rax),%eax
cmp    $0x5432,%eax
jne    1239 <main+0x79>
mov    -0x20(%rbp),%rax
movzwl 0x4(%rax),%eax
cmp    $0x9876,%eax
je     128e <main+0xce>
lea    0xdee(%rip),%rdi
call   1030 <puts@plt>
lea    0xe0f(%rip),%rdi
mov    $0x330e,%esi
mov    $0x5432,%edx
mov    $0x9876,%ecx
mov    $0x0,%al
call   1050 <printf@plt>
mov    -0x20(%rbp),%rax
movzwl (%rax),%esi
mov    -0x20(%rbp),%rax
movzwl 0x2(%rax),%edx
mov    -0x20(%rbp),%rax
movzwl 0x4(%rax),%ecx
lea    0xe00(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
movl   $0x1,-0x24(%rbp)
lea    -0xa(%rbp),%rdi
mov    -0x20(%rbp),%rsi
mov    $0x6,%edx
call   1080 <memcpy@plt>
lea    -0xa(%rbp),%rdi
call   1090 <seed48@plt>
mov    $0x0,%al
call   10a0 <lrand48@plt>
mov    %rax,-0x30(%rbp)
cmpq   $0x2fed1413,-0x30(%rbp)
2f
je     12e5 <main+0x125>
mov    -0x30(%rbp),%rcx
lea    0xdd8(%rip),%rdi
mov    $0x26,%esi
mov    $0x2fed1413,%edx
mov    $0x0,%al
call   1050 <printf@plt>
movl   $0x1,-0x24(%rbp)
mov    $0x0,%al
call   1070 <mrand48@plt>
mov    %rax,-0x30(%rbp)
cmpq   $0xffffffffa28c1003,-0x30(%rbp)
a2
je     1321 <main+0x161>
mov    -0x30(%rbp),%rcx
lea    0xdd1(%rip),%rdi
mov    $0x2e,%esi
mov    $0xa28c1003,%edx
mov    $0x0,%al
call   1050 <printf@plt>
movl   $0x1,-0x24(%rbp)
mov    $0x0,%al
call   10a0 <lrand48@plt>
mov    %rax,-0x30(%rbp)
cmpq   $0x585fcfb7,-0x30(%rbp)
58
je     135d <main+0x19d>
mov    -0x30(%rbp),%rcx
lea    0xd60(%rip),%rdi
mov    $0x36,%esi
mov    $0x585fcfb7,%edx
mov    $0x0,%al
call   1050 <printf@plt>
movl   $0x1,-0x24(%rbp)
mov    $0x0,%al
call   1070 <mrand48@plt>
mov    %rax,-0x30(%rbp)
cmpq   $0xffffffff9e88f474,-0x30(%rbp)
9e
je     1399 <main+0x1d9>
mov    -0x30(%rbp),%rcx
lea    0xd59(%rip),%rdi
mov    $0x3e,%esi
mov    $0x9e88f474,%edx
mov    $0x0,%al
call   1050 <printf@plt>
movl   $0x1,-0x24(%rbp)
movw   $0x1234,-0xa(%rbp)
movw   $0x5678,-0x8(%rbp)
movw   $0x9012,-0x6(%rbp)
lea    -0xa(%rbp),%rdi
call   1090 <seed48@plt>
mov    %rax,-0x20(%rbp)
mov    -0x20(%rbp),%rax
movzwl (%rax),%eax
cmp    $0x62f2,%eax
jne    13f0 <main+0x230>
mov    -0x20(%rbp),%rax
movzwl 0x2(%rax),%eax
cmp    $0xf474,%eax
jne    13f0 <main+0x230>
mov    -0x20(%rbp),%rax
movzwl 0x4(%rax),%eax
cmp    $0x9e88,%eax
je     1445 <main+0x285>
lea    0xd18(%rip),%rdi
call   1030 <puts@plt>
lea    0xc58(%rip),%rdi
mov    $0x62f2,%esi
mov    $0xf474,%edx
mov    $0x9e88,%ecx
mov    $0x0,%al
call   1050 <printf@plt>
mov    -0x20(%rbp),%rax
movzwl (%rax),%esi
mov    -0x20(%rbp),%rax
movzwl 0x2(%rax),%edx
mov    -0x20(%rbp),%rax
movzwl 0x4(%rax),%ecx
lea    0xc49(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
movl   $0x1,-0x24(%rbp)
mov    $0x0,%al
call   10a0 <lrand48@plt>
mov    %rax,-0x30(%rbp)
cmpq   $0x17e48b5,-0x30(%rbp)
01
je     1481 <main+0x2c1>
mov    -0x30(%rbp),%rcx
lea    0xc3c(%rip),%rdi
mov    $0x56,%esi
mov    $0x17e48b5,%edx
mov    $0x0,%al
call   1050 <printf@plt>
movl   $0x1,-0x24(%rbp)
mov    $0x0,%al
call   1070 <mrand48@plt>
mov    %rax,-0x30(%rbp)
cmpq   $0xffffffffeb7a1fa3,-0x30(%rbp)
eb
je     14bd <main+0x2fd>
mov    -0x30(%rbp),%rcx
lea    0xc35(%rip),%rdi
mov    $0x5e,%esi
mov    $0xeb7a1fa3,%edx
mov    $0x0,%al
call   1050 <printf@plt>
movl   $0x1,-0x24(%rbp)
mov    $0x0,%al
call   10a0 <lrand48@plt>
mov    %rax,-0x30(%rbp)
cmpq   $0x6b6a3f95,-0x30(%rbp)
6b
je     14f9 <main+0x339>
mov    -0x30(%rbp),%rcx
lea    0xbc4(%rip),%rdi
mov    $0x66,%esi
mov    $0x6b6a3f95,%edx
mov    $0x0,%al
call   1050 <printf@plt>
movl   $0x1,-0x24(%rbp)
mov    $0x0,%al
call   1070 <mrand48@plt>
mov    %rax,-0x30(%rbp)
cmpq   $0x175c0d6f,-0x30(%rbp)
17
je     1535 <main+0x375>
mov    -0x30(%rbp),%rcx
lea    0xbbd(%rip),%rdi
mov    $0x6e,%esi
mov    $0x175c0d6f,%edx
mov    $0x0,%al
call   1050 <printf@plt>
movl   $0x1,-0x24(%rbp)
movw   $0x4567,-0x18(%rbp)
movw   $0x6789,-0x16(%rbp)
movw   $0x8901,-0x14(%rbp)
movw   $0x123,-0x12(%rbp)
movw   $0x2345,-0x10(%rbp)
movw   $0x1111,-0xe(%rbp)
movw   $0x2222,-0xc(%rbp)
lea    -0x18(%rbp),%rdi
call   1060 <lcong48@plt>
mov    $0x0,%al
call   10a0 <lrand48@plt>
mov    %rax,-0x30(%rbp)
cmpq   $0x6df63d66,-0x30(%rbp)
6d
je     15a4 <main+0x3e4>
mov    -0x30(%rbp),%rcx
lea    0xb19(%rip),%rdi
mov    $0x81,%esi
mov    $0x6df63d66,%edx
mov    $0x0,%al
call   1050 <printf@plt>
movl   $0x1,-0x24(%rbp)
mov    $0x0,%al
call   1070 <mrand48@plt>
mov    %rax,-0x30(%rbp)
cmpq   $0x2f92c8e1,-0x30(%rbp)
2f
je     15e0 <main+0x420>
mov    -0x30(%rbp),%rcx
lea    0xb12(%rip),%rdi
mov    $0x89,%esi
mov    $0x2f92c8e1,%edx
mov    $0x0,%al
call   1050 <printf@plt>
movl   $0x1,-0x24(%rbp)
mov    $0x0,%al
call   10a0 <lrand48@plt>
mov    %rax,-0x30(%rbp)
cmpq   $0x3b4869ff,-0x30(%rbp)
3b
je     161c <main+0x45c>
mov    -0x30(%rbp),%rcx
lea    0xaa1(%rip),%rdi
mov    $0x91,%esi
mov    $0x3b4869ff,%edx
mov    $0x0,%al
call   1050 <printf@plt>
movl   $0x1,-0x24(%rbp)
mov    $0x0,%al
call   1070 <mrand48@plt>
mov    %rax,-0x30(%rbp)
cmpq   $0x5cd4cc3e,-0x30(%rbp)
5c
je     1658 <main+0x498>
mov    -0x30(%rbp),%rcx
lea    0xa9a(%rip),%rdi
mov    $0x99,%esi
mov    $0x5cd4cc3e,%edx
mov    $0x0,%al
call   1050 <printf@plt>
movl   $0x1,-0x24(%rbp)
mov    $0x98765432,%edi
call   10b0 <srand48@plt>
mov    $0x0,%al
call   10a0 <lrand48@plt>
mov    %rax,-0x30(%rbp)
cmpq   $0x2fed1413,-0x30(%rbp)
2f
je     169e <main+0x4de>
mov    -0x30(%rbp),%rcx
lea    0xa1f(%rip),%rdi
mov    $0xa5,%esi
mov    $0x2fed1413,%edx
mov    $0x0,%al
call   1050 <printf@plt>
movl   $0x1,-0x24(%rbp)
mov    $0x0,%al
call   1070 <mrand48@plt>
mov    %rax,-0x30(%rbp)
cmpq   $0xffffffffa28c1003,-0x30(%rbp)
a2
je     16da <main+0x51a>
mov    -0x30(%rbp),%rcx
lea    0xa18(%rip),%rdi
mov    $0xad,%esi
mov    $0xa28c1003,%edx
mov    $0x0,%al
call   1050 <printf@plt>
movl   $0x1,-0x24(%rbp)
mov    $0x0,%al
call   10a0 <lrand48@plt>
mov    %rax,-0x30(%rbp)
cmpq   $0x585fcfb7,-0x30(%rbp)
58
je     1716 <main+0x556>
mov    -0x30(%rbp),%rcx
lea    0x9a7(%rip),%rdi
mov    $0xb5,%esi
mov    $0x585fcfb7,%edx
mov    $0x0,%al
call   1050 <printf@plt>
movl   $0x1,-0x24(%rbp)
mov    $0x0,%al
call   1070 <mrand48@plt>
mov    %rax,-0x30(%rbp)
cmpq   $0xffffffff9e88f474,-0x30(%rbp)
9e
je     1752 <main+0x592>
mov    -0x30(%rbp),%rcx
lea    0x9a0(%rip),%rdi
mov    $0xbd,%esi
mov    $0x9e88f474,%edx
mov    $0x0,%al
call   1050 <printf@plt>
movl   $0x1,-0x24(%rbp)
lea    -0x18(%rbp),%rdi
call   1060 <lcong48@plt>
mov    $0x0,%al
call   10a0 <lrand48@plt>
mov    %rax,-0x30(%rbp)
cmpq   $0x6df63d66,-0x30(%rbp)
6d
je     1797 <main+0x5d7>
mov    -0x30(%rbp),%rcx
lea    0x926(%rip),%rdi
mov    $0xc9,%esi
mov    $0x6df63d66,%edx
mov    $0x0,%al
call   1050 <printf@plt>
movl   $0x1,-0x24(%rbp)
movw   $0x1234,-0xa(%rbp)
movw   $0x5678,-0x8(%rbp)
movw   $0x9012,-0x6(%rbp)
lea    -0xa(%rbp),%rdi
call   1090 <seed48@plt>
mov    %rax,-0x20(%rbp)
mov    -0x20(%rbp),%rax
movzwl (%rax),%eax
cmp    $0x637,%eax
jne    17ee <main+0x62e>
mov    -0x20(%rbp),%rax
movzwl 0x2(%rax),%eax
cmp    $0x7acd,%eax
jne    17ee <main+0x62e>
mov    -0x20(%rbp),%rax
movzwl 0x4(%rax),%eax
cmp    $0xdbec,%eax
je     1843 <main+0x683>
lea    0x91a(%rip),%rdi
call   1030 <puts@plt>
lea    0x85a(%rip),%rdi
mov    $0x637,%esi
mov    $0x7acd,%edx
mov    $0xdbec,%ecx
mov    $0x0,%al
call   1050 <printf@plt>
mov    -0x20(%rbp),%rax
movzwl (%rax),%esi
mov    -0x20(%rbp),%rax
movzwl 0x2(%rax),%edx
mov    -0x20(%rbp),%rax
movzwl 0x4(%rax),%ecx
lea    0x84b(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
movl   $0x1,-0x24(%rbp)
mov    $0x0,%al
call   10a0 <lrand48@plt>
mov    %rax,-0x30(%rbp)
cmpq   $0x17e48b5,-0x30(%rbp)
01
je     187f <main+0x6bf>
mov    -0x30(%rbp),%rcx
lea    0x83e(%rip),%rdi
mov    $0xe1,%esi
mov    $0x17e48b5,%edx
mov    $0x0,%al
call   1050 <printf@plt>
movl   $0x1,-0x24(%rbp)
mov    $0x0,%al
call   1070 <mrand48@plt>
mov    %rax,-0x30(%rbp)
cmpq   $0xffffffffeb7a1fa3,-0x30(%rbp)
eb
je     18bb <main+0x6fb>
mov    -0x30(%rbp),%rcx
lea    0x837(%rip),%rdi
mov    $0xe9,%esi
mov    $0xeb7a1fa3,%edx
mov    $0x0,%al
call   1050 <printf@plt>
movl   $0x1,-0x24(%rbp)
mov    $0x0,%al
call   10a0 <lrand48@plt>
mov    %rax,-0x30(%rbp)
cmpq   $0x6b6a3f95,-0x30(%rbp)
6b
je     18f7 <main+0x737>
mov    -0x30(%rbp),%rcx
lea    0x7c6(%rip),%rdi
mov    $0xf1,%esi
mov    $0x6b6a3f95,%edx
mov    $0x0,%al
call   1050 <printf@plt>
movl   $0x1,-0x24(%rbp)
mov    $0x0,%al
call   1070 <mrand48@plt>
mov    %rax,-0x30(%rbp)
cmpq   $0x175c0d6f,-0x30(%rbp)
17
je     1933 <main+0x773>
mov    -0x30(%rbp),%rcx
lea    0x7bf(%rip),%rdi
mov    $0xf9,%esi
mov    $0x175c0d6f,%edx
mov    $0x0,%al
call   1050 <printf@plt>
movl   $0x1,-0x24(%rbp)
mov    $0x0,%al
call   10e0 <drand48@plt>
movsd  %xmm0,-0x38(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  0x6b4(%rip),%xmm1
ucomisd %xmm1,%xmm0
jne    1961 <main+0x7a1>
jp     1961 <main+0x7a1>
jmp    198f <main+0x7cf>
movsd  -0x38(%rbp),%xmm1
lea    0x7d0(%rip),%rdi
mov    $0x102,%esi
mov    $0x15,%ecx
movsd  0x681(%rip),%xmm0
mov    %ecx,%edx
mov    $0x2,%al
call   1050 <printf@plt>
movl   $0x1,-0x24(%rbp)
mov    $0x0,%al
call   10e0 <drand48@plt>
movsd  %xmm0,-0x38(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  0x660(%rip),%xmm1
ucomisd %xmm1,%xmm0
jne    19bd <main+0x7fd>
jp     19bd <main+0x7fd>
jmp    19eb <main+0x82b>
movsd  -0x38(%rbp),%xmm1
lea    0x774(%rip),%rdi
mov    $0x10b,%esi
mov    $0x15,%ecx
movsd  0x62d(%rip),%xmm0
mov    %ecx,%edx
mov    $0x2,%al
call   1050 <printf@plt>
movl   $0x1,-0x24(%rbp)
movw   $0x3849,-0xa(%rbp)
movw   $0x5061,-0x8(%rbp)
movw   $0x7283,-0x6(%rbp)
lea    -0xa(%rbp),%rdi
call   1040 <nrand48@plt>
mov    %rax,-0x30(%rbp)
cmpq   $0x1efe61a1,-0x30(%rbp)
1e
je     1a3b <main+0x87b>
mov    -0x30(%rbp),%rcx
lea    0x751(%rip),%rdi
mov    $0x119,%esi
mov    $0x1efe61a1,%edx
mov    $0x0,%al
call   1050 <printf@plt>
movl   $0x1,-0x24(%rbp)
lea    -0xa(%rbp),%rdi
call   10d0 <jrand48@plt>
mov    %rax,-0x30(%rbp)
cmpq   $0xfffffffff568c7a0,-0x30(%rbp)
f5
je     1a79 <main+0x8b9>
mov    -0x30(%rbp),%rcx
lea    0x748(%rip),%rdi
mov    $0x121,%esi
mov    $0xf568c7a0,%edx
mov    $0x0,%al
call   1050 <printf@plt>
movl   $0x1,-0x24(%rbp)
lea    -0xa(%rbp),%rdi
call   1040 <nrand48@plt>
mov    %rax,-0x30(%rbp)
cmpq   $0x2a5e57fe,-0x30(%rbp)
2a
je     1ab7 <main+0x8f7>
mov    -0x30(%rbp),%rcx
lea    0x6d5(%rip),%rdi
mov    $0x129,%esi
mov    $0x2a5e57fe,%edx
mov    $0x0,%al
call   1050 <printf@plt>
movl   $0x1,-0x24(%rbp)
lea    -0xa(%rbp),%rdi
call   10d0 <jrand48@plt>
mov    %rax,-0x30(%rbp)
cmpq   $0x71a779a8,-0x30(%rbp)
71
je     1af5 <main+0x935>
mov    -0x30(%rbp),%rcx
lea    0x6cc(%rip),%rdi
mov    $0x131,%esi
mov    $0x71a779a8,%edx
mov    $0x0,%al
call   1050 <printf@plt>
movl   $0x1,-0x24(%rbp)
lea    -0x18(%rbp),%rdi
call   1060 <lcong48@plt>
lea    -0xa(%rbp),%rdi
call   1040 <nrand48@plt>
mov    %rax,-0x30(%rbp)
cmpq   $0x32beee9f,-0x30(%rbp)
32
je     1b3c <main+0x97c>
mov    -0x30(%rbp),%rcx
lea    0x650(%rip),%rdi
mov    $0x13c,%esi
mov    $0x32beee9f,%edx
mov    $0x0,%al
call   1050 <printf@plt>
movl   $0x1,-0x24(%rbp)
lea    -0xa(%rbp),%rdi
call   10d0 <jrand48@plt>
mov    %rax,-0x30(%rbp)
cmpq   $0x7bddf3ba,-0x30(%rbp)
7b
je     1b7a <main+0x9ba>
mov    -0x30(%rbp),%rcx
lea    0x647(%rip),%rdi
mov    $0x144,%esi
mov    $0x7bddf3ba,%edx
mov    $0x0,%al
call   1050 <printf@plt>
movl   $0x1,-0x24(%rbp)
lea    -0xa(%rbp),%rdi
call   1040 <nrand48@plt>
mov    %rax,-0x30(%rbp)
cmpq   $0x85bdf28,-0x30(%rbp)
08
je     1bb8 <main+0x9f8>
mov    -0x30(%rbp),%rcx
lea    0x5d4(%rip),%rdi
mov    $0x14c,%esi
mov    $0x85bdf28,%edx
mov    $0x0,%al
call   1050 <printf@plt>
movl   $0x1,-0x24(%rbp)
lea    -0xa(%rbp),%rdi
call   10d0 <jrand48@plt>
mov    %rax,-0x30(%rbp)
cmpq   $0x7b433e47,-0x30(%rbp)
7b
je     1bf6 <main+0xa36>
mov    -0x30(%rbp),%rcx
lea    0x5cb(%rip),%rdi
mov    $0x154,%esi
mov    $0x7b433e47,%edx
mov    $0x0,%al
call   1050 <printf@plt>
movl   $0x1,-0x24(%rbp)
lea    -0xa(%rbp),%rdi
call   1090 <seed48@plt>
mov    $0x0,%al
call   10e0 <drand48@plt>
movsd  %xmm0,-0x38(%rbp)
lea    -0xa(%rbp),%rdi
call   10c0 <erand48@plt>
movsd  %xmm0,-0x40(%rbp)
movsd  -0x38(%rbp),%xmm0
ucomisd -0x40(%rbp),%xmm0
jne    1c34 <main+0xa74>
jp     1c34 <main+0xa74>
jmp    1c70 <main+0xab0>
lea    0x5a3(%rip),%rdi
mov    $0x15f,%esi
mov    $0x160,%edx
mov    $0x0,%al
call   1050 <printf@plt>
cvttsd2si -0x38(%rbp),%esi
cvttsd2si -0x40(%rbp),%edx
lea    0x5c5(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
movl   $0x1,-0x24(%rbp)
jmp    1cc5 <main+0xb05>
movsd  -0x40(%rbp),%xmm0
movsd  0x393(%rip),%xmm1
ucomisd %xmm1,%xmm0
jne    1c92 <main+0xad2>
jp     1c92 <main+0xad2>
jmp    1cc0 <main+0xb00>
movsd  -0x40(%rbp),%xmm1
lea    0x5a6(%rip),%rdi
mov    $0x168,%esi
mov    $0x15,%ecx
movsd  0x360(%rip),%xmm0
mov    %ecx,%edx
mov    $0x2,%al
call   1050 <printf@plt>
movl   $0x1,-0x24(%rbp)
jmp    1cc5 <main+0xb05>
mov    $0x0,%al
call   10e0 <drand48@plt>
movsd  %xmm0,-0x38(%rbp)
lea    -0xa(%rbp),%rdi
call   10c0 <erand48@plt>
movsd  %xmm0,-0x40(%rbp)
movsd  -0x38(%rbp),%xmm0
ucomisd -0x40(%rbp),%xmm0
jne    1cfa <main+0xb3a>
jp     1cfa <main+0xb3a>
jmp    1d36 <main+0xb76>
lea    0x4dd(%rip),%rdi
mov    $0x172,%esi
mov    $0x173,%edx
mov    $0x0,%al
call   1050 <printf@plt>
cvttsd2si -0x38(%rbp),%esi
cvttsd2si -0x40(%rbp),%edx
lea    0x4ff(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
movl   $0x1,-0x24(%rbp)
jmp    1d8b <main+0xbcb>
movsd  -0x40(%rbp),%xmm0
movsd  0x2d5(%rip),%xmm1
ucomisd %xmm1,%xmm0
jne    1d58 <main+0xb98>
jp     1d58 <main+0xb98>
jmp    1d86 <main+0xbc6>
movsd  -0x40(%rbp),%xmm1
lea    0x4e0(%rip),%rdi
mov    $0x17b,%esi
mov    $0x15,%ecx
movsd  0x2aa(%rip),%xmm0
mov    %ecx,%edx
mov    $0x2,%al
call   1050 <printf@plt>
movl   $0x1,-0x24(%rbp)
jmp    1d8b <main+0xbcb>
mov    -0x24(%rbp),%eax
add    $0x40,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbp
push   %r14
push   %rbx
sub    $0x30,%rsp
movzwl 0xe5d(%rip),%eax
mov    %ax,0xc(%rsp)
mov    0xe4e(%rip),%eax
mov    %eax,0x8(%rsp)
mov    $0x98765432,%edi
call   10b0 <srand48@plt>
lea    0x8(%rsp),%rdi
call   1090 <seed48@plt>
mov    %rax,%rbx
movzwl (%rax),%eax
cmp    $0x330e,%eax
jne    1218 <main+0x58>
movzwl 0x2(%rbx),%eax
cmp    $0x5432,%eax
jne    1218 <main+0x58>
movzwl 0x4(%rbx),%eax
xor    %r14d,%r14d
cmp    $0x9876,%eax
je     1260 <main+0xa0>
lea    0xe0f(%rip),%rdi
call   1030 <puts@plt>
lea    0xe30(%rip),%rdi
mov    $0x330e,%esi
mov    $0x5432,%edx
mov    $0x9876,%ecx
xor    %eax,%eax
call   1050 <printf@plt>
movzwl (%rbx),%esi
movzwl 0x2(%rbx),%edx
movzwl 0x4(%rbx),%ecx
lea    0xe2d(%rip),%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    $0x1,%r14d
lea    0x8(%rsp),%rbp
mov    %rbp,%rdi
mov    %rbx,%rsi
mov    $0x6,%edx
call   1080 <memcpy@plt>
mov    %rbp,%rdi
call   1090 <seed48@plt>
xor    %eax,%eax
call   10a0 <lrand48@plt>
cmp    $0x2fed1413,%rax
je     12ad <main+0xed>
lea    0xe12(%rip),%rdi
mov    $0x26,%esi
mov    $0x2fed1413,%edx
mov    %rax,%rcx
xor    %eax,%eax
call   1050 <printf@plt>
mov    $0x1,%r14d
xor    %eax,%eax
call   1070 <mrand48@plt>
cmp    $0xffffffffa28c1003,%rax
je     12dd <main+0x11d>
lea    0xe17(%rip),%rdi
mov    $0x2e,%esi
mov    $0xa28c1003,%edx
mov    %rax,%rcx
xor    %eax,%eax
call   1050 <printf@plt>
mov    $0x1,%r14d
xor    %eax,%eax
call   10a0 <lrand48@plt>
cmp    $0x585fcfb7,%rax
je     130d <main+0x14d>
lea    0xdb2(%rip),%rdi
mov    $0x36,%esi
mov    $0x585fcfb7,%edx
mov    %rax,%rcx
xor    %eax,%eax
call   1050 <printf@plt>
mov    $0x1,%r14d
xor    %eax,%eax
call   1070 <mrand48@plt>
cmp    $0xffffffff9e88f474,%rax
je     133d <main+0x17d>
lea    0xdb7(%rip),%rdi
mov    $0x3e,%esi
mov    $0x9e88f474,%edx
mov    %rax,%rcx
xor    %eax,%eax
call   1050 <printf@plt>
mov    $0x1,%r14d
movl   $0x56781234,0x8(%rsp)
56
movw   $0x9012,0xc(%rsp)
lea    0x8(%rsp),%rdi
call   1090 <seed48@plt>
mov    %rax,%rbx
movzwl (%rax),%eax
cmp    $0x62f2,%eax
jne    1379 <main+0x1b9>
movzwl 0x2(%rbx),%eax
cmp    $0xf474,%eax
jne    1379 <main+0x1b9>
movzwl 0x4(%rbx),%eax
cmp    $0x9e88,%eax
je     13c1 <main+0x201>
lea    0xd8f(%rip),%rdi
call   1030 <puts@plt>
lea    0xccf(%rip),%rdi
mov    $0x62f2,%esi
mov    $0xf474,%edx
mov    $0x9e88,%ecx
xor    %eax,%eax
call   1050 <printf@plt>
movzwl (%rbx),%esi
movzwl 0x2(%rbx),%edx
movzwl 0x4(%rbx),%ecx
lea    0xccc(%rip),%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    $0x1,%r14d
xor    %eax,%eax
call   10a0 <lrand48@plt>
cmp    $0x17e48b5,%rax
je     13f1 <main+0x231>
lea    0xcce(%rip),%rdi
mov    $0x56,%esi
mov    $0x17e48b5,%edx
mov    %rax,%rcx
xor    %eax,%eax
call   1050 <printf@plt>
mov    $0x1,%r14d
xor    %eax,%eax
call   1070 <mrand48@plt>
cmp    $0xffffffffeb7a1fa3,%rax
je     1421 <main+0x261>
lea    0xcd3(%rip),%rdi
mov    $0x5e,%esi
mov    $0xeb7a1fa3,%edx
mov    %rax,%rcx
xor    %eax,%eax
call   1050 <printf@plt>
mov    $0x1,%r14d
xor    %eax,%eax
call   10a0 <lrand48@plt>
cmp    $0x6b6a3f95,%rax
je     1451 <main+0x291>
lea    0xc6e(%rip),%rdi
mov    $0x66,%esi
mov    $0x6b6a3f95,%edx
mov    %rax,%rcx
xor    %eax,%eax
call   1050 <printf@plt>
mov    $0x1,%r14d
xor    %eax,%eax
call   1070 <mrand48@plt>
cmp    $0x175c0d6f,%rax
je     1481 <main+0x2c1>
lea    0xc73(%rip),%rdi
mov    $0x6e,%esi
mov    $0x175c0d6f,%edx
mov    %rax,%rcx
xor    %eax,%eax
call   1050 <printf@plt>
mov    $0x1,%r14d
movabs $0x123890167894567,%rax
89 23 01
mov    %rax,0x22(%rsp)
movl   $0x11112345,0x2a(%rsp)
11
movw   $0x2222,0x2e(%rsp)
lea    0x22(%rsp),%rdi
call   1060 <lcong48@plt>
xor    %eax,%eax
call   10a0 <lrand48@plt>
cmp    $0x6df63d66,%rax
je     14d9 <main+0x319>
lea    0xbe6(%rip),%rdi
mov    $0x81,%esi
mov    $0x6df63d66,%edx
mov    %rax,%rcx
xor    %eax,%eax
call   1050 <printf@plt>
mov    $0x1,%r14d
xor    %eax,%eax
call   1070 <mrand48@plt>
cmp    $0x2f92c8e1,%rax
je     1509 <main+0x349>
lea    0xbeb(%rip),%rdi
mov    $0x89,%esi
mov    $0x2f92c8e1,%edx
mov    %rax,%rcx
xor    %eax,%eax
call   1050 <printf@plt>
mov    $0x1,%r14d
xor    %eax,%eax
call   10a0 <lrand48@plt>
cmp    $0x3b4869ff,%rax
je     1539 <main+0x379>
lea    0xb86(%rip),%rdi
mov    $0x91,%esi
mov    $0x3b4869ff,%edx
mov    %rax,%rcx
xor    %eax,%eax
call   1050 <printf@plt>
mov    $0x1,%r14d
xor    %eax,%eax
call   1070 <mrand48@plt>
cmp    $0x5cd4cc3e,%rax
je     1569 <main+0x3a9>
lea    0xb8b(%rip),%rdi
mov    $0x99,%esi
mov    $0x5cd4cc3e,%edx
mov    %rax,%rcx
xor    %eax,%eax
call   1050 <printf@plt>
mov    $0x1,%r14d
mov    $0x98765432,%edi
call   10b0 <srand48@plt>
xor    %eax,%eax
call   10a0 <lrand48@plt>
cmp    $0x2fed1413,%rax
je     15a3 <main+0x3e3>
lea    0xb1c(%rip),%rdi
mov    $0xa5,%esi
mov    $0x2fed1413,%edx
mov    %rax,%rcx
xor    %eax,%eax
call   1050 <printf@plt>
mov    $0x1,%r14d
xor    %eax,%eax
call   1070 <mrand48@plt>
cmp    $0xffffffffa28c1003,%rax
je     15d3 <main+0x413>
lea    0xb21(%rip),%rdi
mov    $0xad,%esi
mov    $0xa28c1003,%edx
mov    %rax,%rcx
xor    %eax,%eax
call   1050 <printf@plt>
mov    $0x1,%r14d
xor    %eax,%eax
call   10a0 <lrand48@plt>
cmp    $0x585fcfb7,%rax
je     1603 <main+0x443>
lea    0xabc(%rip),%rdi
mov    $0xb5,%esi
mov    $0x585fcfb7,%edx
mov    %rax,%rcx
xor    %eax,%eax
call   1050 <printf@plt>
mov    $0x1,%r14d
xor    %eax,%eax
call   1070 <mrand48@plt>
cmp    $0xffffffff9e88f474,%rax
je     1633 <main+0x473>
lea    0xac1(%rip),%rdi
mov    $0xbd,%esi
mov    $0x9e88f474,%edx
mov    %rax,%rcx
xor    %eax,%eax
call   1050 <printf@plt>
mov    $0x1,%r14d
lea    0x22(%rsp),%rdi
call   1060 <lcong48@plt>
xor    %eax,%eax
call   10a0 <lrand48@plt>
cmp    $0x6df63d66,%rax
je     166d <main+0x4ad>
lea    0xa52(%rip),%rdi
mov    $0xc9,%esi
mov    $0x6df63d66,%edx
mov    %rax,%rcx
xor    %eax,%eax
call   1050 <printf@plt>
mov    $0x1,%r14d
movl   $0x56781234,0x8(%rsp)
56
movw   $0x9012,0xc(%rsp)
lea    0x8(%rsp),%rdi
call   1090 <seed48@plt>
mov    %rax,%rbx
movzwl (%rax),%eax
cmp    $0x637,%eax
jne    16a9 <main+0x4e9>
movzwl 0x2(%rbx),%eax
cmp    $0x7acd,%eax
jne    16a9 <main+0x4e9>
movzwl 0x4(%rbx),%eax
cmp    $0xdbec,%eax
je     16f1 <main+0x531>
lea    0xa5f(%rip),%rdi
call   1030 <puts@plt>
lea    0x99f(%rip),%rdi
mov    $0x637,%esi
mov    $0x7acd,%edx
mov    $0xdbec,%ecx
xor    %eax,%eax
call   1050 <printf@plt>
movzwl (%rbx),%esi
movzwl 0x2(%rbx),%edx
movzwl 0x4(%rbx),%ecx
lea    0x99c(%rip),%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    $0x1,%r14d
xor    %eax,%eax
call   10a0 <lrand48@plt>
cmp    $0x17e48b5,%rax
je     1721 <main+0x561>
lea    0x99e(%rip),%rdi
mov    $0xe1,%esi
mov    $0x17e48b5,%edx
mov    %rax,%rcx
xor    %eax,%eax
call   1050 <printf@plt>
mov    $0x1,%r14d
xor    %eax,%eax
call   1070 <mrand48@plt>
cmp    $0xffffffffeb7a1fa3,%rax
je     1751 <main+0x591>
lea    0x9a3(%rip),%rdi
mov    $0xe9,%esi
mov    $0xeb7a1fa3,%edx
mov    %rax,%rcx
xor    %eax,%eax
call   1050 <printf@plt>
mov    $0x1,%r14d
xor    %eax,%eax
call   10a0 <lrand48@plt>
cmp    $0x6b6a3f95,%rax
je     1781 <main+0x5c1>
lea    0x93e(%rip),%rdi
mov    $0xf1,%esi
mov    $0x6b6a3f95,%edx
mov    %rax,%rcx
xor    %eax,%eax
call   1050 <printf@plt>
mov    $0x1,%r14d
xor    %eax,%eax
call   1070 <mrand48@plt>
cmp    $0x175c0d6f,%rax
je     17b1 <main+0x5f1>
lea    0x943(%rip),%rdi
mov    $0xf9,%esi
mov    $0x175c0d6f,%edx
mov    %rax,%rcx
xor    %eax,%eax
call   1050 <printf@plt>
mov    $0x1,%r14d
xor    %eax,%eax
call   10e0 <drand48@plt>
ucomisd 0x840(%rip),%xmm0
jne    17c4 <main+0x604>
jnp    17f3 <main+0x633>
movapd %xmm0,%xmm1
lea    0x96e(%rip),%rdi
movsd  0x829(%rip),%xmm0
mov    $0x102,%esi
mov    $0x15,%edx
mov    $0x15,%ecx
mov    $0x2,%al
call   1050 <printf@plt>
mov    $0x1,%r14d
xor    %eax,%eax
call   10e0 <drand48@plt>
ucomisd 0x806(%rip),%xmm0
jne    1806 <main+0x646>
jnp    1835 <main+0x675>
movapd %xmm0,%xmm1
lea    0x92c(%rip),%rdi
movsd  0x7ef(%rip),%xmm0
mov    $0x10b,%esi
mov    $0x15,%edx
mov    $0x15,%ecx
mov    $0x2,%al
call   1050 <printf@plt>
mov    $0x1,%r14d
movl   $0x50613849,0x8(%rsp)
50
movw   $0x7283,0xc(%rsp)
lea    0x8(%rsp),%rdi
call   1040 <nrand48@plt>
cmp    $0x1efe61a1,%rax
je     1877 <main+0x6b7>
lea    0x917(%rip),%rdi
mov    $0x119,%esi
mov    $0x1efe61a1,%edx
mov    %rax,%rcx
xor    %eax,%eax
call   1050 <printf@plt>
mov    $0x1,%r14d
lea    0x8(%rsp),%rdi
call   10d0 <jrand48@plt>
cmp    $0xfffffffff568c7a0,%rax
je     18aa <main+0x6ea>
lea    0x919(%rip),%rdi
mov    $0x121,%esi
mov    $0xf568c7a0,%edx
mov    %rax,%rcx
xor    %eax,%eax
call   1050 <printf@plt>
mov    $0x1,%r14d
lea    0x8(%rsp),%rdi
call   1040 <nrand48@plt>
cmp    $0x2a5e57fe,%rax
je     18dd <main+0x71d>
lea    0x8b1(%rip),%rdi
mov    $0x129,%esi
mov    $0x2a5e57fe,%edx
mov    %rax,%rcx
xor    %eax,%eax
call   1050 <printf@plt>
mov    $0x1,%r14d
lea    0x8(%rsp),%rdi
call   10d0 <jrand48@plt>
cmp    $0x71a779a8,%rax
je     1910 <main+0x750>
lea    0x8b3(%rip),%rdi
mov    $0x131,%esi
mov    $0x71a779a8,%edx
mov    %rax,%rcx
xor    %eax,%eax
call   1050 <printf@plt>
mov    $0x1,%r14d
lea    0x22(%rsp),%rdi
call   1060 <lcong48@plt>
lea    0x8(%rsp),%rdi
call   1040 <nrand48@plt>
cmp    $0x32beee9f,%rax
je     194d <main+0x78d>
lea    0x841(%rip),%rdi
mov    $0x13c,%esi
mov    $0x32beee9f,%edx
mov    %rax,%rcx
xor    %eax,%eax
call   1050 <printf@plt>
mov    $0x1,%r14d
lea    0x8(%rsp),%rdi
call   10d0 <jrand48@plt>
cmp    $0x7bddf3ba,%rax
je     1980 <main+0x7c0>
lea    0x843(%rip),%rdi
mov    $0x144,%esi
mov    $0x7bddf3ba,%edx
mov    %rax,%rcx
xor    %eax,%eax
call   1050 <printf@plt>
mov    $0x1,%r14d
lea    0x8(%rsp),%rdi
call   1040 <nrand48@plt>
cmp    $0x85bdf28,%rax
je     19b3 <main+0x7f3>
lea    0x7db(%rip),%rdi
mov    $0x14c,%esi
mov    $0x85bdf28,%edx
mov    %rax,%rcx
xor    %eax,%eax
call   1050 <printf@plt>
mov    $0x1,%r14d
lea    0x8(%rsp),%rdi
call   10d0 <jrand48@plt>
cmp    $0x7b433e47,%rax
je     19e6 <main+0x826>
lea    0x7dd(%rip),%rdi
mov    $0x154,%esi
mov    $0x7b433e47,%edx
mov    %rax,%rcx
xor    %eax,%eax
call   1050 <printf@plt>
mov    $0x1,%r14d
lea    0x8(%rsp),%rbx
mov    %rbx,%rdi
call   1090 <seed48@plt>
xor    %eax,%eax
call   10e0 <drand48@plt>
movsd  %xmm0,0x10(%rsp)
mov    %rbx,%rdi
call   10c0 <erand48@plt>
movapd %xmm0,%xmm1
movsd  0x10(%rsp),%xmm0
ucomisd %xmm1,%xmm0
jne    1a1a <main+0x85a>
jnp    1a54 <main+0x894>
lea    0x7bd(%rip),%rdi
mov    $0x15f,%esi
mov    $0x160,%edx
xor    %eax,%eax
movsd  %xmm1,0x18(%rsp)
call   1050 <printf@plt>
cvttsd2si 0x10(%rsp),%esi
cvttsd2si 0x18(%rsp),%edx
lea    0x7d7(%rip),%rdi
xor    %eax,%eax
call   1050 <printf@plt>
jmp    1a85 <main+0x8c5>
ucomisd 0x5b4(%rip),%xmm1
jne    1a60 <main+0x8a0>
jnp    1a8b <main+0x8cb>
lea    0x7dd(%rip),%rdi
movsd  0x5a1(%rip),%xmm0
mov    $0x168,%esi
mov    $0x15,%edx
mov    $0x15,%ecx
mov    $0x2,%al
call   1050 <printf@plt>
mov    $0x1,%r14d
xor    %eax,%eax
call   10e0 <drand48@plt>
movsd  %xmm0,0x10(%rsp)
lea    0x8(%rsp),%rdi
call   10c0 <erand48@plt>
movapd %xmm0,%xmm1
movsd  0x10(%rsp),%xmm0
ucomisd %xmm1,%xmm0
jne    1ab4 <main+0x8f4>
jnp    1aee <main+0x92e>
lea    0x723(%rip),%rdi
mov    $0x172,%esi
mov    $0x173,%edx
xor    %eax,%eax
movsd  %xmm1,0x18(%rsp)
call   1050 <printf@plt>
cvttsd2si 0x10(%rsp),%esi
cvttsd2si 0x18(%rsp),%edx
lea    0x73d(%rip),%rdi
xor    %eax,%eax
call   1050 <printf@plt>
jmp    1b1f <main+0x95f>
ucomisd 0x522(%rip),%xmm1
jne    1afa <main+0x93a>
jnp    1b25 <main+0x965>
lea    0x743(%rip),%rdi
movsd  0x517(%rip),%xmm0
mov    $0x17b,%esi
mov    $0x15,%edx
mov    $0x15,%ecx
mov    $0x2,%al
call   1050 <printf@plt>
mov    $0x1,%r14d
mov    %r14d,%eax
add    $0x30,%rsp
pop    %rbx
pop    %r14
pop    %rbp
ret

LLVM IR (-O0):
@__const.main.xs = [3 x i16] [i16 1, i16 18, i16 291]
@.str = [45 x i8] c"srand48(0x98765432) didn't set correct value\00"
@.str.1 = [37 x i8] c" expected: { %04hx, %04hx, %04hx }\0A\00"
@.str.2 = [37 x i8] c" seen: { %04hx, %04hx, %04hx }\0A\00"
@.str.3 = [53 x i8] c"lrand48() in line %d failed: expected %lx, seen %lx\0A\00"
@.str.4 = [53 x i8] c"mrand48() in line %d failed: expected %lx, seen %lx\0A\00"
@.str.5 = [46 x i8] c"seed48() did not install the values correctly\00"
@.str.6 = [55 x i8] c"drand48() in line %d failed: expected %.*g, seen %.*g\0A\00"
@.str.7 = [53 x i8] c"nrand48() in line %d failed: expected %lx, seen %lx\0A\00"
@.str.8 = [53 x i8] c"jrand48() in line %d failed: expected %lx, seen %lx\0A\00"
@.str.9 = [68 x i8] c"drand48() and erand48 in lines %d and %d produce different results\0A\00"
@.str.10 = [34 x i8] c" drand48() = %g, erand48() = %g\0A\00"
@.str.11 = [55 x i8] c"erand48() in line %d failed: expected %.*g, seen %.*g\0A\00"
define i32 @main() {
%1 = alloca i32
%2 = alloca [3 x i16]
%3 = alloca [7 x i16]
%4 = alloca i16*
%5 = alloca i32
%6 = alloca i64
%7 = alloca double
%8 = alloca double
store i32 0, i32* %1
%9 = bitcast [3 x i16]* %2 to i8*
store i32 0, i32* %5
%10 = call i32 @srand48(i32 -1737075662)
%11 = getelementptr inbounds [3 x i16], [3 x i16]* %2, i64 0, i64 0
%12 = call i16* @seed48(i16* %11)
store i16* %12, i16** %4
%13 = load i16*, i16** %4
%14 = getelementptr inbounds i16, i16* %13, i64 0
%15 = load i16, i16* %14
%16 = zext i16 %15 to i32
%17 = icmp ne i32 %16, 13070
br i1 %17, label %30, label %18
18: ; preds = %0
%19 = load i16*, i16** %4
%20 = getelementptr inbounds i16, i16* %19, i64 1
%21 = load i16, i16* %20
%22 = zext i16 %21 to i32
%23 = icmp ne i32 %22, 21554
br i1 %23, label %30, label %24
24: ; preds = %18
%25 = load i16*, i16** %4
%26 = getelementptr inbounds i16, i16* %25, i64 2
%27 = load i16, i16* %26
%28 = zext i16 %27 to i32
%29 = icmp ne i32 %28, 39030
br i1 %29, label %30, label %46
30: ; preds = %24, %18, %0
%31 = call i32 @puts(i8* getelementptr inbounds ([45 x i8], [45 x i8]* @.str, i64 0, i64 0))
%32 = call i32 (i8*, i32, i32, ...) @printf(i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.1, i64 0, i64 0), i32 13070, i32 21554, i32 39030)
%33 = load i16*, i16** %4
%34 = getelementptr inbounds i16, i16* %33, i64 0
%35 = load i16, i16* %34
%36 = zext i16 %35 to i32
%37 = load i16*, i16** %4
%38 = getelementptr inbounds i16, i16* %37, i64 1
%39 = load i16, i16* %38
%40 = zext i16 %39 to i32
%41 = load i16*, i16** %4
%42 = getelementptr inbounds i16, i16* %41, i64 2
%43 = load i16, i16* %42
%44 = zext i16 %43 to i32
%45 = call i32 (i8*, i32, i32, ...) @printf(i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.2, i64 0, i64 0), i32 %36, i32 %40, i32 %44)
store i32 1, i32* %5
br label %46
46: ; preds = %30, %24
%47 = getelementptr inbounds [3 x i16], [3 x i16]* %2, i64 0, i64 0
%48 = load i16*, i16** %4
%49 = call i32 @memcpy(i16* %47, i16* %48, i32 6)
%50 = getelementptr inbounds [3 x i16], [3 x i16]* %2, i64 0, i64 0
%51 = call i16* @seed48(i16* %50)
%52 = call i64 (...) @lrand48()
store i64 %52, i64* %6
%53 = load i64, i64* %6
%54 = icmp ne i64 %53, 804066323
br i1 %54, label %55, label %58
55: ; preds = %46
%56 = load i64, i64* %6
%57 = call i32 (i8*, i32, i32, ...) @printf(i8* getelementptr inbounds ([53 x i8], [53 x i8]* @.str.3, i64 0, i64 0), i32 38, i32 804066323, i64 %56)
store i32 1, i32* %5
br label %58
58: ; preds = %55, %46
%59 = call i64 (...) @mrand48()
store i64 %59, i64* %6
%60 = load i64, i64* %6
%61 = icmp ne i64 %60, -1567879165
br i1 %61, label %62, label %65
62: ; preds = %58
%63 = load i64, i64* %6
%64 = call i32 (i8*, i32, i32, ...) @printf(i8* getelementptr inbounds ([53 x i8], [53 x i8]* @.str.4, i64 0, i64 0), i32 46, i32 -1567879165, i64 %63)
store i32 1, i32* %5
br label %65
65: ; preds = %62, %58
%66 = call i64 (...) @lrand48()
store i64 %66, i64* %6
%67 = load i64, i64* %6
%68 = icmp ne i64 %67, 1482674103
br i1 %68, label %69, label %72
69: ; preds = %65
%70 = load i64, i64* %6
%71 = call i32 (i8*, i32, i32, ...) @printf(i8* getelementptr inbounds ([53 x i8], [53 x i8]* @.str.3, i64 0, i64 0), i32 54, i32 1482674103, i64 %70)
store i32 1, i32* %5
br label %72
72: ; preds = %69, %65
%73 = call i64 (...) @mrand48()
store i64 %73, i64* %6
%74 = load i64, i64* %6
%75 = icmp ne i64 %74, -1635191692
br i1 %75, label %76, label %79
76: ; preds = %72
%77 = load i64, i64* %6
%78 = call i32 (i8*, i32, i32, ...) @printf(i8* getelementptr inbounds ([53 x i8], [53 x i8]* @.str.4, i64 0, i64 0), i32 62, i32 -1635191692, i64 %77)
store i32 1, i32* %5
br label %79
79: ; preds = %76, %72
%80 = getelementptr inbounds [3 x i16], [3 x i16]* %2, i64 0, i64 0
store i16 4660, i16* %80
%81 = getelementptr inbounds [3 x i16], [3 x i16]* %2, i64 0, i64 1
store i16 22136, i16* %81
%82 = getelementptr inbounds [3 x i16], [3 x i16]* %2, i64 0, i64 2
store i16 -28654, i16* %82
%83 = getelementptr inbounds [3 x i16], [3 x i16]* %2, i64 0, i64 0
%84 = call i16* @seed48(i16* %83)
store i16* %84, i16** %4
%85 = load i16*, i16** %4
%86 = getelementptr inbounds i16, i16* %85, i64 0
%87 = load i16, i16* %86
%88 = zext i16 %87 to i32
%89 = icmp ne i32 %88, 25330
br i1 %89, label %102, label %90
90: ; preds = %79
%91 = load i16*, i16** %4
%92 = getelementptr inbounds i16, i16* %91, i64 1
%93 = load i16, i16* %92
%94 = zext i16 %93 to i32
%95 = icmp ne i32 %94, 62580
br i1 %95, label %102, label %96
96: ; preds = %90
%97 = load i16*, i16** %4
%98 = getelementptr inbounds i16, i16* %97, i64 2
%99 = load i16, i16* %98
%100 = zext i16 %99 to i32
%101 = icmp ne i32 %100, 40584
br i1 %101, label %102, label %118
102: ; preds = %96, %90, %79
%103 = call i32 @puts(i8* getelementptr inbounds ([46 x i8], [46 x i8]* @.str.5, i64 0, i64 0))
%104 = call i32 (i8*, i32, i32, ...) @printf(i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.1, i64 0, i64 0), i32 25330, i32 62580, i32 40584)
%105 = load i16*, i16** %4
%106 = getelementptr inbounds i16, i16* %105, i64 0
%107 = load i16, i16* %106
%108 = zext i16 %107 to i32
%109 = load i16*, i16** %4
%110 = getelementptr inbounds i16, i16* %109, i64 1
%111 = load i16, i16* %110
%112 = zext i16 %111 to i32
%113 = load i16*, i16** %4
%114 = getelementptr inbounds i16, i16* %113, i64 2
%115 = load i16, i16* %114
%116 = zext i16 %115 to i32
%117 = call i32 (i8*, i32, i32, ...) @printf(i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.2, i64 0, i64 0), i32 %108, i32 %112, i32 %116)
store i32 1, i32* %5
br label %118
118: ; preds = %102, %96
%119 = call i64 (...) @lrand48()
store i64 %119, i64* %6
%120 = load i64, i64* %6
%121 = icmp ne i64 %120, 25053365
br i1 %121, label %122, label %125
122: ; preds = %118
%123 = load i64, i64* %6
%124 = call i32 (i8*, i32, i32, ...) @printf(i8* getelementptr inbounds ([53 x i8], [53 x i8]* @.str.3, i64 0, i64 0), i32 86, i32 25053365, i64 %123)
store i32 1, i32* %5
br label %125
125: ; preds = %122, %118
%126 = call i64 (...) @mrand48()
store i64 %126, i64* %6
%127 = load i64, i64* %6
%128 = icmp ne i64 %127, -344318045
br i1 %128, label %129, label %132
129: ; preds = %125
%130 = load i64, i64* %6
%131 = call i32 (i8*, i32, i32, ...) @printf(i8* getelementptr inbounds ([53 x i8], [53 x i8]* @.str.4, i64 0, i64 0), i32 94, i32 -344318045, i64 %130)
store i32 1, i32* %5
br label %132
132: ; preds = %129, %125
%133 = call i64 (...) @lrand48()
store i64 %133, i64* %6
%134 = load i64, i64* %6
%135 = icmp ne i64 %134, 1802125205
br i1 %135, label %136, label %139
136: ; preds = %132
%137 = load i64, i64* %6
%138 = call i32 (i8*, i32, i32, ...) @printf(i8* getelementptr inbounds ([53 x i8], [53 x i8]* @.str.3, i64 0, i64 0), i32 102, i32 1802125205, i64 %137)
store i32 1, i32* %5
br label %139
139: ; preds = %136, %132
%140 = call i64 (...) @mrand48()
store i64 %140, i64* %6
%141 = load i64, i64* %6
%142 = icmp ne i64 %141, 391908719
br i1 %142, label %143, label %146
143: ; preds = %139
%144 = load i64, i64* %6
%145 = call i32 (i8*, i32, i32, ...) @printf(i8* getelementptr inbounds ([53 x i8], [53 x i8]* @.str.4, i64 0, i64 0), i32 110, i32 391908719, i64 %144)
store i32 1, i32* %5
br label %146
146: ; preds = %143, %139
%147 = getelementptr inbounds [7 x i16], [7 x i16]* %3, i64 0, i64 0
store i16 17767, i16* %147
%148 = getelementptr inbounds [7 x i16], [7 x i16]* %3, i64 0, i64 1
store i16 26505, i16* %148
%149 = getelementptr inbounds [7 x i16], [7 x i16]* %3, i64 0, i64 2
store i16 -30463, i16* %149
%150 = getelementptr inbounds [7 x i16], [7 x i16]* %3, i64 0, i64 3
store i16 291, i16* %150
%151 = getelementptr inbounds [7 x i16], [7 x i16]* %3, i64 0, i64 4
store i16 9029, i16* %151
%152 = getelementptr inbounds [7 x i16], [7 x i16]* %3, i64 0, i64 5
store i16 4369, i16* %152
%153 = getelementptr inbounds [7 x i16], [7 x i16]* %3, i64 0, i64 6
store i16 8738, i16* %153
%154 = getelementptr inbounds [7 x i16], [7 x i16]* %3, i64 0, i64 0
%155 = call i32 @lcong48(i16* %154)
%156 = call i64 (...) @lrand48()
store i64 %156, i64* %6
%157 = load i64, i64* %6
%158 = icmp ne i64 %157, 1844854118
br i1 %158, label %159, label %162
159: ; preds = %146
%160 = load i64, i64* %6
%161 = call i32 (i8*, i32, i32, ...) @printf(i8* getelementptr inbounds ([53 x i8], [53 x i8]* @.str.3, i64 0, i64 0), i32 129, i32 1844854118, i64 %160)
store i32 1, i32* %5
br label %162
162: ; preds = %159, %146
%163 = call i64 (...) @mrand48()
store i64 %163, i64* %6
%164 = load i64, i64* %6
%165 = icmp ne i64 %164, 798148833
br i1 %165, label %166, label %169
166: ; preds = %162
%167 = load i64, i64* %6
%168 = call i32 (i8*, i32, i32, ...) @printf(i8* getelementptr inbounds ([53 x i8], [53 x i8]* @.str.4, i64 0, i64 0), i32 137, i32 798148833, i64 %167)
store i32 1, i32* %5
br label %169
169: ; preds = %166, %162
%170 = call i64 (...) @lrand48()
store i64 %170, i64* %6
%171 = load i64, i64* %6
%172 = icmp ne i64 %171, 994601471
br i1 %172, label %173, label %176
173: ; preds = %169
%174 = load i64, i64* %6
%175 = call i32 (i8*, i32, i32, ...) @printf(i8* getelementptr inbounds ([53 x i8], [53 x i8]* @.str.3, i64 0, i64 0), i32 145, i32 994601471, i64 %174)
store i32 1, i32* %5
br label %176
176: ; preds = %173, %169
%177 = call i64 (...) @mrand48()
store i64 %177, i64* %6
%178 = load i64, i64* %6
%179 = icmp ne i64 %178, 1557449790
br i1 %179, label %180, label %183
180: ; preds = %176
%181 = load i64, i64* %6
%182 = call i32 (i8*, i32, i32, ...) @printf(i8* getelementptr inbounds ([53 x i8], [53 x i8]* @.str.4, i64 0, i64 0), i32 153, i32 1557449790, i64 %181)
store i32 1, i32* %5
br label %183
183: ; preds = %180, %176
%184 = call i32 @srand48(i32 -1737075662)
%185 = call i64 (...) @lrand48()
store i64 %185, i64* %6
%186 = load i64, i64* %6
%187 = icmp ne i64 %186, 804066323
br i1 %187, label %188, label %191
188: ; preds = %183
%189 = load i64, i64* %6
%190 = call i32 (i8*, i32, i32, ...) @printf(i8* getelementptr inbounds ([53 x i8], [53 x i8]* @.str.3, i64 0, i64 0), i32 165, i32 804066323, i64 %189)
store i32 1, i32* %5
br label %191
191: ; preds = %188, %183
%192 = call i64 (...) @mrand48()
store i64 %192, i64* %6
%193 = load i64, i64* %6
%194 = icmp ne i64 %193, -1567879165
br i1 %194, label %195, label %198
195: ; preds = %191
%196 = load i64, i64* %6
%197 = call i32 (i8*, i32, i32, ...) @printf(i8* getelementptr inbounds ([53 x i8], [53 x i8]* @.str.4, i64 0, i64 0), i32 173, i32 -1567879165, i64 %196)
store i32 1, i32* %5
br label %198
198: ; preds = %195, %191
%199 = call i64 (...) @lrand48()
store i64 %199, i64* %6
%200 = load i64, i64* %6
%201 = icmp ne i64 %200, 1482674103
br i1 %201, label %202, label %205
202: ; preds = %198
%203 = load i64, i64* %6
%204 = call i32 (i8*, i32, i32, ...) @printf(i8* getelementptr inbounds ([53 x i8], [53 x i8]* @.str.3, i64 0, i64 0), i32 181, i32 1482674103, i64 %203)
store i32 1, i32* %5
br label %205
205: ; preds = %202, %198
%206 = call i64 (...) @mrand48()
store i64 %206, i64* %6
%207 = load i64, i64* %6
%208 = icmp ne i64 %207, -1635191692
br i1 %208, label %209, label %212
209: ; preds = %205
%210 = load i64, i64* %6
%211 = call i32 (i8*, i32, i32, ...) @printf(i8* getelementptr inbounds ([53 x i8], [53 x i8]* @.str.4, i64 0, i64 0), i32 189, i32 -1635191692, i64 %210)
store i32 1, i32* %5
br label %212
212: ; preds = %209, %205
%213 = getelementptr inbounds [7 x i16], [7 x i16]* %3, i64 0, i64 0
%214 = call i32 @lcong48(i16* %213)
%215 = call i64 (...) @lrand48()
store i64 %215, i64* %6
%216 = load i64, i64* %6
%217 = icmp ne i64 %216, 1844854118
br i1 %217, label %218, label %221
218: ; preds = %212
%219 = load i64, i64* %6
%220 = call i32 (i8*, i32, i32, ...) @printf(i8* getelementptr inbounds ([53 x i8], [53 x i8]* @.str.3, i64 0, i64 0), i32 201, i32 1844854118, i64 %219)
store i32 1, i32* %5
br label %221
221: ; preds = %218, %212
%222 = getelementptr inbounds [3 x i16], [3 x i16]* %2, i64 0, i64 0
store i16 4660, i16* %222
%223 = getelementptr inbounds [3 x i16], [3 x i16]* %2, i64 0, i64 1
store i16 22136, i16* %223
%224 = getelementptr inbounds [3 x i16], [3 x i16]* %2, i64 0, i64 2
store i16 -28654, i16* %224
%225 = getelementptr inbounds [3 x i16], [3 x i16]* %2, i64 0, i64 0
%226 = call i16* @seed48(i16* %225)
store i16* %226, i16** %4
%227 = load i16*, i16** %4
%228 = getelementptr inbounds i16, i16* %227, i64 0
%229 = load i16, i16* %228
%230 = zext i16 %229 to i32
%231 = icmp ne i32 %230, 1591
br i1 %231, label %244, label %232
232: ; preds = %221
%233 = load i16*, i16** %4
%234 = getelementptr inbounds i16, i16* %233, i64 1
%235 = load i16, i16* %234
%236 = zext i16 %235 to i32
%237 = icmp ne i32 %236, 31437
br i1 %237, label %244, label %238
238: ; preds = %232
%239 = load i16*, i16** %4
%240 = getelementptr inbounds i16, i16* %239, i64 2
%241 = load i16, i16* %240
%242 = zext i16 %241 to i32
%243 = icmp ne i32 %242, 56300
br i1 %243, label %244, label %260
244: ; preds = %238, %232, %221
%245 = call i32 @puts(i8* getelementptr inbounds ([46 x i8], [46 x i8]* @.str.5, i64 0, i64 0))
%246 = call i32 (i8*, i32, i32, ...) @printf(i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.1, i64 0, i64 0), i32 1591, i32 31437, i32 56300)
%247 = load i16*, i16** %4
%248 = getelementptr inbounds i16, i16* %247, i64 0
%249 = load i16, i16* %248
%250 = zext i16 %249 to i32
%251 = load i16*, i16** %4
%252 = getelementptr inbounds i16, i16* %251, i64 1
%253 = load i16, i16* %252
%254 = zext i16 %253 to i32
%255 = load i16*, i16** %4
%256 = getelementptr inbounds i16, i16* %255, i64 2
%257 = load i16, i16* %256
%258 = zext i16 %257 to i32
%259 = call i32 (i8*, i32, i32, ...) @printf(i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.2, i64 0, i64 0), i32 %250, i32 %254, i32 %258)
store i32 1, i32* %5
br label %260
260: ; preds = %244, %238
%261 = call i64 (...) @lrand48()
store i64 %261, i64* %6
%262 = load i64, i64* %6
%263 = icmp ne i64 %262, 25053365
br i1 %263, label %264, label %267
264: ; preds = %260
%265 = load i64, i64* %6
%266 = call i32 (i8*, i32, i32, ...) @printf(i8* getelementptr inbounds ([53 x i8], [53 x i8]* @.str.3, i64 0, i64 0), i32 225, i32 25053365, i64 %265)
store i32 1, i32* %5
br label %267
267: ; preds = %264, %260
%268 = call i64 (...) @mrand48()
store i64 %268, i64* %6
%269 = load i64, i64* %6
%270 = icmp ne i64 %269, -344318045
br i1 %270, label %271, label %274
271: ; preds = %267
%272 = load i64, i64* %6
%273 = call i32 (i8*, i32, i32, ...) @printf(i8* getelementptr inbounds ([53 x i8], [53 x i8]* @.str.4, i64 0, i64 0), i32 233, i32 -344318045, i64 %272)
store i32 1, i32* %5
br label %274
274: ; preds = %271, %267
%275 = call i64 (...) @lrand48()
store i64 %275, i64* %6
%276 = load i64, i64* %6
%277 = icmp ne i64 %276, 1802125205
br i1 %277, label %278, label %281
278: ; preds = %274
%279 = load i64, i64* %6
%280 = call i32 (i8*, i32, i32, ...) @printf(i8* getelementptr inbounds ([53 x i8], [53 x i8]* @.str.3, i64 0, i64 0), i32 241, i32 1802125205, i64 %279)
store i32 1, i32* %5
br label %281
281: ; preds = %278, %274
%282 = call i64 (...) @mrand48()
store i64 %282, i64* %6
%283 = load i64, i64* %6
%284 = icmp ne i64 %283, 391908719
br i1 %284, label %285, label %288
285: ; preds = %281
%286 = load i64, i64* %6
%287 = call i32 (i8*, i32, i32, ...) @printf(i8* getelementptr inbounds ([53 x i8], [53 x i8]* @.str.4, i64 0, i64 0), i32 249, i32 391908719, i64 %286)
store i32 1, i32* %5
br label %288
288: ; preds = %285, %281
%289 = call double (...) @drand48()
store double %289, double* %7
%290 = load double, double* %7
%291 = fcmp une double %290, 0x3FB7441F84392300
br i1 %291, label %292, label %295
292: ; preds = %288
%293 = load double, double* %7
%294 = call i32 (i8*, i32, i32, ...) @printf(i8* getelementptr inbounds ([55 x i8], [55 x i8]* @.str.6, i64 0, i64 0), i32 258, i32 21, double 0x3FB7441F84392300, i32 21, double %293)
store i32 1, i32* %5
br label %295
295: ; preds = %292, %288
%296 = call double (...) @drand48()
store double %296, double* %7
%297 = load double, double* %7
%298 = fcmp une double %297, 0x3FEE2E479CB8BE40
br i1 %298, label %299, label %302
299: ; preds = %295
%300 = load double, double* %7
%301 = call i32 (i8*, i32, i32, ...) @printf(i8* getelementptr inbounds ([55 x i8], [55 x i8]* @.str.6, i64 0, i64 0), i32 267, i32 21, double 0x3FEE2E479CB8BE40, i32 21, double %300)
store i32 1, i32* %5
br label %302
302: ; preds = %299, %295
%303 = getelementptr inbounds [3 x i16], [3 x i16]* %2, i64 0, i64 0
store i16 14409, i16* %303
%304 = getelementptr inbounds [3 x i16], [3 x i16]* %2, i64 0, i64 1
store i16 20577, i16* %304
%305 = getelementptr inbounds [3 x i16], [3 x i16]* %2, i64 0, i64 2
store i16 29315, i16* %305
%306 = getelementptr inbounds [3 x i16], [3 x i16]* %2, i64 0, i64 0
%307 = call i64 @nrand48(i16* %306)
store i64 %307, i64* %6
%308 = load i64, i64* %6
%309 = icmp ne i64 %308, 519987617
br i1 %309, label %310, label %313
310: ; preds = %302
%311 = load i64, i64* %6
%312 = call i32 (i8*, i32, i32, ...) @printf(i8* getelementptr inbounds ([53 x i8], [53 x i8]* @.str.7, i64 0, i64 0), i32 281, i32 519987617, i64 %311)
store i32 1, i32* %5
br label %313
313: ; preds = %310, %302
%314 = getelementptr inbounds [3 x i16], [3 x i16]* %2, i64 0, i64 0
%315 = call i64 @jrand48(i16* %314)
store i64 %315, i64* %6
%316 = load i64, i64* %6
%317 = icmp ne i64 %316, -177682528
br i1 %317, label %318, label %321
318: ; preds = %313
%319 = load i64, i64* %6
%320 = call i32 (i8*, i32, i32, ...) @printf(i8* getelementptr inbounds ([53 x i8], [53 x i8]* @.str.8, i64 0, i64 0), i32 289, i32 -177682528, i64 %319)
store i32 1, i32* %5
br label %321
321: ; preds = %318, %313
%322 = getelementptr inbounds [3 x i16], [3 x i16]* %2, i64 0, i64 0
%323 = call i64 @nrand48(i16* %322)
store i64 %323, i64* %6
%324 = load i64, i64* %6
%325 = icmp ne i64 %324, 710825982
br i1 %325, label %326, label %329
326: ; preds = %321
%327 = load i64, i64* %6
%328 = call i32 (i8*, i32, i32, ...) @printf(i8* getelementptr inbounds ([53 x i8], [53 x i8]* @.str.7, i64 0, i64 0), i32 297, i32 710825982, i64 %327)
store i32 1, i32* %5
br label %329
329: ; preds = %326, %321
%330 = getelementptr inbounds [3 x i16], [3 x i16]* %2, i64 0, i64 0
%331 = call i64 @jrand48(i16* %330)
store i64 %331, i64* %6
%332 = load i64, i64* %6
%333 = icmp ne i64 %332, 1906801064
br i1 %333, label %334, label %337
334: ; preds = %329
%335 = load i64, i64* %6
%336 = call i32 (i8*, i32, i32, ...) @printf(i8* getelementptr inbounds ([53 x i8], [53 x i8]* @.str.8, i64 0, i64 0), i32 305, i32 1906801064, i64 %335)
store i32 1, i32* %5
br label %337
337: ; preds = %334, %329
%338 = getelementptr inbounds [7 x i16], [7 x i16]* %3, i64 0, i64 0
%339 = call i32 @lcong48(i16* %338)
%340 = getelementptr inbounds [3 x i16], [3 x i16]* %2, i64 0, i64 0
%341 = call i64 @nrand48(i16* %340)
store i64 %341, i64* %6
%342 = load i64, i64* %6
%343 = icmp ne i64 %342, 851373727
br i1 %343, label %344, label %347
344: ; preds = %337
%345 = load i64, i64* %6
%346 = call i32 (i8*, i32, i32, ...) @printf(i8* getelementptr inbounds ([53 x i8], [53 x i8]* @.str.7, i64 0, i64 0), i32 316, i32 851373727, i64 %345)
store i32 1, i32* %5
br label %347
347: ; preds = %344, %337
%348 = getelementptr inbounds [3 x i16], [3 x i16]* %2, i64 0, i64 0
%349 = call i64 @jrand48(i16* %348)
store i64 %349, i64* %6
%350 = load i64, i64* %6
%351 = icmp ne i64 %350, 2078143418
br i1 %351, label %352, label %355
352: ; preds = %347
%353 = load i64, i64* %6
%354 = call i32 (i8*, i32, i32, ...) @printf(i8* getelementptr inbounds ([53 x i8], [53 x i8]* @.str.8, i64 0, i64 0), i32 324, i32 2078143418, i64 %353)
store i32 1, i32* %5
br label %355
355: ; preds = %352, %347
%356 = getelementptr inbounds [3 x i16], [3 x i16]* %2, i64 0, i64 0
%357 = call i64 @nrand48(i16* %356)
store i64 %357, i64* %6
%358 = load i64, i64* %6
%359 = icmp ne i64 %358, 140238632
br i1 %359, label %360, label %363
360: ; preds = %355
%361 = load i64, i64* %6
%362 = call i32 (i8*, i32, i32, ...) @printf(i8* getelementptr inbounds ([53 x i8], [53 x i8]* @.str.7, i64 0, i64 0), i32 332, i32 140238632, i64 %361)
store i32 1, i32* %5
br label %363
363: ; preds = %360, %355
%364 = getelementptr inbounds [3 x i16], [3 x i16]* %2, i64 0, i64 0
%365 = call i64 @jrand48(i16* %364)
store i64 %365, i64* %6
%366 = load i64, i64* %6
%367 = icmp ne i64 %366, 2068004423
br i1 %367, label %368, label %371
368: ; preds = %363
%369 = load i64, i64* %6
%370 = call i32 (i8*, i32, i32, ...) @printf(i8* getelementptr inbounds ([53 x i8], [53 x i8]* @.str.8, i64 0, i64 0), i32 340, i32 2068004423, i64 %369)
store i32 1, i32* %5
br label %371
371: ; preds = %368, %363
%372 = getelementptr inbounds [3 x i16], [3 x i16]* %2, i64 0, i64 0
%373 = call i16* @seed48(i16* %372)
%374 = call double (...) @drand48()
store double %374, double* %7
%375 = getelementptr inbounds [3 x i16], [3 x i16]* %2, i64 0, i64 0
%376 = call double @erand48(i16* %375)
store double %376, double* %8
%377 = load double, double* %7
%378 = load double, double* %8
%379 = fcmp une double %377, %378
br i1 %379, label %380, label %387
380: ; preds = %371
%381 = call i32 (i8*, i32, i32, ...) @printf(i8* getelementptr inbounds ([68 x i8], [68 x i8]* @.str.9, i64 0, i64 0), i32 351, i32 352)
%382 = load double, double* %7
%383 = fptosi double %382 to i32
%384 = load double, double* %8
%385 = fptosi double %384 to i32
%386 = call i32 (i8*, i32, i32, ...) @printf(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @.str.10, i64 0, i64 0), i32 %383, i32 %385)
store i32 1, i32* %5
br label %394
387: ; preds = %371
%388 = load double, double* %8
%389 = fcmp une double %388, 0x3FE480365358E080
br i1 %389, label %390, label %393
390: ; preds = %387
%391 = load double, double* %8
%392 = call i32 (i8*, i32, i32, ...) @printf(i8* getelementptr inbounds ([55 x i8], [55 x i8]* @.str.11, i64 0, i64 0), i32 360, i32 21, double 0x3FE480365358E080, i32 21, double %391)
store i32 1, i32* %5
br label %393
393: ; preds = %390, %387
br label %394
394: ; preds = %393, %380
%395 = call double (...) @drand48()
store double %395, double* %7
%396 = getelementptr inbounds [3 x i16], [3 x i16]* %2, i64 0, i64 0
%397 = call double @erand48(i16* %396)
store double %397, double* %8
%398 = load double, double* %7
%399 = load double, double* %8
%400 = fcmp une double %398, %399
br i1 %400, label %401, label %408
401: ; preds = %394
%402 = call i32 (i8*, i32, i32, ...) @printf(i8* getelementptr inbounds ([68 x i8], [68 x i8]* @.str.9, i64 0, i64 0), i32 370, i32 371)
%403 = load double, double* %7
%404 = fptosi double %403 to i32
%405 = load double, double* %8
%406 = fptosi double %405 to i32
%407 = call i32 (i8*, i32, i32, ...) @printf(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @.str.10, i64 0, i64 0), i32 %404, i32 %406)
store i32 1, i32* %5
br label %415
408: ; preds = %394
%409 = load double, double* %8
%410 = fcmp une double %409, 0x3FBD890A6454BF00
br i1 %410, label %411, label %414
411: ; preds = %408
%412 = load double, double* %8
%413 = call i32 (i8*, i32, i32, ...) @printf(i8* getelementptr inbounds ([55 x i8], [55 x i8]* @.str.11, i64 0, i64 0), i32 379, i32 21, double 0x3F87A0D51D1098CD, i32 21, double %412)
store i32 1, i32* %5
br label %414
414: ; preds = %411, %408
br label %415
415: ; preds = %414, %401
%416 = load i32, i32* %5
ret i32 %416
}

LLVM IR (-O2):
@__const.main.xs = [3 x i16] [i16 1, i16 18, i16 291]
@.str = [45 x i8] c"srand48(0x98765432) didn't set correct value\00"
@.str.1 = [37 x i8] c" expected: { %04hx, %04hx, %04hx }\0A\00"
@.str.2 = [37 x i8] c" seen: { %04hx, %04hx, %04hx }\0A\00"
@.str.3 = [53 x i8] c"lrand48() in line %d failed: expected %lx, seen %lx\0A\00"
@.str.4 = [53 x i8] c"mrand48() in line %d failed: expected %lx, seen %lx\0A\00"
@.str.5 = [46 x i8] c"seed48() did not install the values correctly\00"
@.str.6 = [55 x i8] c"drand48() in line %d failed: expected %.*g, seen %.*g\0A\00"
@.str.7 = [53 x i8] c"nrand48() in line %d failed: expected %lx, seen %lx\0A\00"
@.str.8 = [53 x i8] c"jrand48() in line %d failed: expected %lx, seen %lx\0A\00"
@.str.9 = [68 x i8] c"drand48() and erand48 in lines %d and %d produce different results\0A\00"
@.str.10 = [34 x i8] c" drand48() = %g, erand48() = %g\0A\00"
@.str.11 = [55 x i8] c"erand48() in line %d failed: expected %.*g, seen %.*g\0A\00"
define i32 @main() {
%1 = alloca [3 x i16]
%2 = alloca [7 x i16]
%3 = bitcast [3 x i16]* %1 to i8*
%4 = bitcast [7 x i16]* %2 to i8*
%5 = tail call i32 @srand48(i32 -1737075662)
%6 = getelementptr inbounds [3 x i16], [3 x i16]* %1, i64 0, i64 0
%7 = call i16* @seed48(i16* %6)
%8 = load i16, i16* %7
%9 = icmp eq i16 %8, 13070
br i1 %9, label %10, label %18
10: ; preds = %0
%11 = getelementptr inbounds i16, i16* %7, i64 1
%12 = load i16, i16* %11
%13 = icmp eq i16 %12, 21554
br i1 %13, label %14, label %18
14: ; preds = %10
%15 = getelementptr inbounds i16, i16* %7, i64 2
%16 = load i16, i16* %15
%17 = icmp eq i16 %16, -26506
br i1 %17, label %30, label %18
18: ; preds = %14, %10, %0
%19 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([45 x i8], [45 x i8]* @.str, i64 0, i64 0))
%20 = call i32 (i8*, i32, i32, ...) @printf(i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.1, i64 0, i64 0), i32 13070, i32 21554, i32 39030)
%21 = load i16, i16* %7
%22 = zext i16 %21 to i32
%23 = getelementptr inbounds i16, i16* %7, i64 1
%24 = load i16, i16* %23
%25 = zext i16 %24 to i32
%26 = getelementptr inbounds i16, i16* %7, i64 2
%27 = load i16, i16* %26
%28 = zext i16 %27 to i32
%29 = call i32 (i8*, i32, i32, ...) @printf(i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.2, i64 0, i64 0), i32 %22, i32 %25, i32 %28)
br label %30
30: ; preds = %18, %14
%31 = phi i32 [ 1, %18 ], [ 0, %14 ]
%32 = call i32 @memcpy(i16* %6, i16* %7, i32 6)
%33 = call i16* @seed48(i16* %6)
%34 = call i64 (...) @lrand48()
%35 = icmp eq i64 %34, 804066323
br i1 %35, label %38, label %36
36: ; preds = %30
%37 = call i32 (i8*, i32, i32, ...) @printf(i8* getelementptr inbounds ([53 x i8], [53 x i8]* @.str.3, i64 0, i64 0), i32 38, i32 804066323, i64 %34)
br label %38
38: ; preds = %36, %30
%39 = phi i32 [ 1, %36 ], [ %31, %30 ]
%40 = call i64 (...) @mrand48()
%41 = icmp eq i64 %40, -1567879165
br i1 %41, label %44, label %42
42: ; preds = %38
%43 = call i32 (i8*, i32, i32, ...) @printf(i8* getelementptr inbounds ([53 x i8], [53 x i8]* @.str.4, i64 0, i64 0), i32 46, i32 -1567879165, i64 %40)
br label %44
44: ; preds = %42, %38
%45 = phi i32 [ 1, %42 ], [ %39, %38 ]
%46 = call i64 (...) @lrand48()
%47 = icmp eq i64 %46, 1482674103
br i1 %47, label %50, label %48
48: ; preds = %44
%49 = call i32 (i8*, i32, i32, ...) @printf(i8* getelementptr inbounds ([53 x i8], [53 x i8]* @.str.3, i64 0, i64 0), i32 54, i32 1482674103, i64 %46)
br label %50
50: ; preds = %48, %44
%51 = phi i32 [ 1, %48 ], [ %45, %44 ]
%52 = call i64 (...) @mrand48()
%53 = icmp eq i64 %52, -1635191692
br i1 %53, label %56, label %54
54: ; preds = %50
%55 = call i32 (i8*, i32, i32, ...) @printf(i8* getelementptr inbounds ([53 x i8], [53 x i8]* @.str.4, i64 0, i64 0), i32 62, i32 -1635191692, i64 %52)
br label %56
56: ; preds = %54, %50
%57 = phi i32 [ 1, %54 ], [ %51, %50 ]
store i16 4660, i16* %6
%58 = getelementptr inbounds [3 x i16], [3 x i16]* %1, i64 0, i64 1
store i16 22136, i16* %58
%59 = getelementptr inbounds [3 x i16], [3 x i16]* %1, i64 0, i64 2
store i16 -28654, i16* %59
%60 = call i16* @seed48(i16* %6)
%61 = load i16, i16* %60
%62 = icmp eq i16 %61, 25330
br i1 %62, label %63, label %71
63: ; preds = %56
%64 = getelementptr inbounds i16, i16* %60, i64 1
%65 = load i16, i16* %64
%66 = icmp eq i16 %65, -2956
br i1 %66, label %67, label %71
67: ; preds = %63
%68 = getelementptr inbounds i16, i16* %60, i64 2
%69 = load i16, i16* %68
%70 = icmp eq i16 %69, -24952
br i1 %70, label %83, label %71
71: ; preds = %67, %63, %56
%72 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([46 x i8], [46 x i8]* @.str.5, i64 0, i64 0))
%73 = call i32 (i8*, i32, i32, ...) @printf(i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.1, i64 0, i64 0), i32 25330, i32 62580, i32 40584)
%74 = load i16, i16* %60
%75 = zext i16 %74 to i32
%76 = getelementptr inbounds i16, i16* %60, i64 1
%77 = load i16, i16* %76
%78 = zext i16 %77 to i32
%79 = getelementptr inbounds i16, i16* %60, i64 2
%80 = load i16, i16* %79
%81 = zext i16 %80 to i32
%82 = call i32 (i8*, i32, i32, ...) @printf(i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.2, i64 0, i64 0), i32 %75, i32 %78, i32 %81)
br label %83
83: ; preds = %71, %67
%84 = phi i32 [ 1, %71 ], [ %57, %67 ]
%85 = call i64 (...) @lrand48()
%86 = icmp eq i64 %85, 25053365
br i1 %86, label %89, label %87
87: ; preds = %83
%88 = call i32 (i8*, i32, i32, ...) @printf(i8* getelementptr inbounds ([53 x i8], [53 x i8]* @.str.3, i64 0, i64 0), i32 86, i32 25053365, i64 %85)
br label %89
89: ; preds = %87, %83
%90 = phi i32 [ 1, %87 ], [ %84, %83 ]
%91 = call i64 (...) @mrand48()
%92 = icmp eq i64 %91, -344318045
br i1 %92, label %95, label %93
93: ; preds = %89
%94 = call i32 (i8*, i32, i32, ...) @printf(i8* getelementptr inbounds ([53 x i8], [53 x i8]* @.str.4, i64 0, i64 0), i32 94, i32 -344318045, i64 %91)
br label %95
95: ; preds = %93, %89
%96 = phi i32 [ 1, %93 ], [ %90, %89 ]
%97 = call i64 (...) @lrand48()
%98 = icmp eq i64 %97, 1802125205
br i1 %98, label %101, label %99
99: ; preds = %95
%100 = call i32 (i8*, i32, i32, ...) @printf(i8* getelementptr inbounds ([53 x i8], [53 x i8]* @.str.3, i64 0, i64 0), i32 102, i32 1802125205, i64 %97)
br label %101
101: ; preds = %99, %95
%102 = phi i32 [ 1, %99 ], [ %96, %95 ]
%103 = call i64 (...) @mrand48()
%104 = icmp eq i64 %103, 391908719
br i1 %104, label %107, label %105
105: ; preds = %101
%106 = call i32 (i8*, i32, i32, ...) @printf(i8* getelementptr inbounds ([53 x i8], [53 x i8]* @.str.4, i64 0, i64 0), i32 110, i32 391908719, i64 %103)
br label %107
107: ; preds = %105, %101
%108 = phi i32 [ 1, %105 ], [ %102, %101 ]
%109 = getelementptr inbounds [7 x i16], [7 x i16]* %2, i64 0, i64 0
store i16 17767, i16* %109
%110 = getelementptr inbounds [7 x i16], [7 x i16]* %2, i64 0, i64 1
store i16 26505, i16* %110
%111 = getelementptr inbounds [7 x i16], [7 x i16]* %2, i64 0, i64 2
store i16 -30463, i16* %111
%112 = getelementptr inbounds [7 x i16], [7 x i16]* %2, i64 0, i64 3
store i16 291, i16* %112
%113 = getelementptr inbounds [7 x i16], [7 x i16]* %2, i64 0, i64 4
store i16 9029, i16* %113
%114 = getelementptr inbounds [7 x i16], [7 x i16]* %2, i64 0, i64 5
store i16 4369, i16* %114
%115 = getelementptr inbounds [7 x i16], [7 x i16]* %2, i64 0, i64 6
store i16 8738, i16* %115
%116 = call i32 @lcong48(i16* %109)
%117 = call i64 (...) @lrand48()
%118 = icmp eq i64 %117, 1844854118
br i1 %118, label %121, label %119
119: ; preds = %107
%120 = call i32 (i8*, i32, i32, ...) @printf(i8* getelementptr inbounds ([53 x i8], [53 x i8]* @.str.3, i64 0, i64 0), i32 129, i32 1844854118, i64 %117)
br label %121
121: ; preds = %119, %107
%122 = phi i32 [ 1, %119 ], [ %108, %107 ]
%123 = call i64 (...) @mrand48()
%124 = icmp eq i64 %123, 798148833
br i1 %124, label %127, label %125
125: ; preds = %121
%126 = call i32 (i8*, i32, i32, ...) @printf(i8* getelementptr inbounds ([53 x i8], [53 x i8]* @.str.4, i64 0, i64 0), i32 137, i32 798148833, i64 %123)
br label %127
127: ; preds = %125, %121
%128 = phi i32 [ 1, %125 ], [ %122, %121 ]
%129 = call i64 (...) @lrand48()
%130 = icmp eq i64 %129, 994601471
br i1 %130, label %133, label %131
131: ; preds = %127
%132 = call i32 (i8*, i32, i32, ...) @printf(i8* getelementptr inbounds ([53 x i8], [53 x i8]* @.str.3, i64 0, i64 0), i32 145, i32 994601471, i64 %129)
br label %133
133: ; preds = %131, %127
%134 = phi i32 [ 1, %131 ], [ %128, %127 ]
%135 = call i64 (...) @mrand48()
%136 = icmp eq i64 %135, 1557449790
br i1 %136, label %139, label %137
137: ; preds = %133
%138 = call i32 (i8*, i32, i32, ...) @printf(i8* getelementptr inbounds ([53 x i8], [53 x i8]* @.str.4, i64 0, i64 0), i32 153, i32 1557449790, i64 %135)
br label %139
139: ; preds = %137, %133
%140 = phi i32 [ 1, %137 ], [ %134, %133 ]
%141 = call i32 @srand48(i32 -1737075662)
%142 = call i64 (...) @lrand48()
%143 = icmp eq i64 %142, 804066323
br i1 %143, label %146, label %144
144: ; preds = %139
%145 = call i32 (i8*, i32, i32, ...) @printf(i8* getelementptr inbounds ([53 x i8], [53 x i8]* @.str.3, i64 0, i64 0), i32 165, i32 804066323, i64 %142)
br label %146
146: ; preds = %144, %139
%147 = phi i32 [ 1, %144 ], [ %140, %139 ]
%148 = call i64 (...) @mrand48()
%149 = icmp eq i64 %148, -1567879165
br i1 %149, label %152, label %150
150: ; preds = %146
%151 = call i32 (i8*, i32, i32, ...) @printf(i8* getelementptr inbounds ([53 x i8], [53 x i8]* @.str.4, i64 0, i64 0), i32 173, i32 -1567879165, i64 %148)
br label %152
152: ; preds = %150, %146
%153 = phi i32 [ 1, %150 ], [ %147, %146 ]
%154 = call i64 (...) @lrand48()
%155 = icmp eq i64 %154, 1482674103
br i1 %155, label %158, label %156
156: ; preds = %152
%157 = call i32 (i8*, i32, i32, ...) @printf(i8* getelementptr inbounds ([53 x i8], [53 x i8]* @.str.3, i64 0, i64 0), i32 181, i32 1482674103, i64 %154)
br label %158
158: ; preds = %156, %152
%159 = phi i32 [ 1, %156 ], [ %153, %152 ]
%160 = call i64 (...) @mrand48()
%161 = icmp eq i64 %160, -1635191692
br i1 %161, label %164, label %162
162: ; preds = %158
%163 = call i32 (i8*, i32, i32, ...) @printf(i8* getelementptr inbounds ([53 x i8], [53 x i8]* @.str.4, i64 0, i64 0), i32 189, i32 -1635191692, i64 %160)
br label %164
164: ; preds = %162, %158
%165 = phi i32 [ 1, %162 ], [ %159, %158 ]
%166 = call i32 @lcong48(i16* %109)
%167 = call i64 (...) @lrand48()
%168 = icmp eq i64 %167, 1844854118
br i1 %168, label %171, label %169
169: ; preds = %164
%170 = call i32 (i8*, i32, i32, ...) @printf(i8* getelementptr inbounds ([53 x i8], [53 x i8]* @.str.3, i64 0, i64 0), i32 201, i32 1844854118, i64 %167)
br label %171
171: ; preds = %169, %164
%172 = phi i32 [ 1, %169 ], [ %165, %164 ]
store i16 4660, i16* %6
store i16 22136, i16* %58
store i16 -28654, i16* %59
%173 = call i16* @seed48(i16* %6)
%174 = load i16, i16* %173
%175 = icmp eq i16 %174, 1591
br i1 %175, label %176, label %184
176: ; preds = %171
%177 = getelementptr inbounds i16, i16* %173, i64 1
%178 = load i16, i16* %177
%179 = icmp eq i16 %178, 31437
br i1 %179, label %180, label %184
180: ; preds = %176
%181 = getelementptr inbounds i16, i16* %173, i64 2
%182 = load i16, i16* %181
%183 = icmp eq i16 %182, -9236
br i1 %183, label %196, label %184
184: ; preds = %180, %176, %171
%185 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([46 x i8], [46 x i8]* @.str.5, i64 0, i64 0))
%186 = call i32 (i8*, i32, i32, ...) @printf(i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.1, i64 0, i64 0), i32 1591, i32 31437, i32 56300)
%187 = load i16, i16* %173
%188 = zext i16 %187 to i32
%189 = getelementptr inbounds i16, i16* %173, i64 1
%190 = load i16, i16* %189
%191 = zext i16 %190 to i32
%192 = getelementptr inbounds i16, i16* %173, i64 2
%193 = load i16, i16* %192
%194 = zext i16 %193 to i32
%195 = call i32 (i8*, i32, i32, ...) @printf(i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.2, i64 0, i64 0), i32 %188, i32 %191, i32 %194)
br label %196
196: ; preds = %184, %180
%197 = phi i32 [ 1, %184 ], [ %172, %180 ]
%198 = call i64 (...) @lrand48()
%199 = icmp eq i64 %198, 25053365
br i1 %199, label %202, label %200
200: ; preds = %196
%201 = call i32 (i8*, i32, i32, ...) @printf(i8* getelementptr inbounds ([53 x i8], [53 x i8]* @.str.3, i64 0, i64 0), i32 225, i32 25053365, i64 %198)
br label %202
202: ; preds = %200, %196
%203 = phi i32 [ 1, %200 ], [ %197, %196 ]
%204 = call i64 (...) @mrand48()
%205 = icmp eq i64 %204, -344318045
br i1 %205, label %208, label %206
206: ; preds = %202
%207 = call i32 (i8*, i32, i32, ...) @printf(i8* getelementptr inbounds ([53 x i8], [53 x i8]* @.str.4, i64 0, i64 0), i32 233, i32 -344318045, i64 %204)
br label %208
208: ; preds = %206, %202
%209 = phi i32 [ 1, %206 ], [ %203, %202 ]
%210 = call i64 (...) @lrand48()
%211 = icmp eq i64 %210, 1802125205
br i1 %211, label %214, label %212
212: ; preds = %208
%213 = call i32 (i8*, i32, i32, ...) @printf(i8* getelementptr inbounds ([53 x i8], [53 x i8]* @.str.3, i64 0, i64 0), i32 241, i32 1802125205, i64 %210)
br label %214
214: ; preds = %212, %208
%215 = phi i32 [ 1, %212 ], [ %209, %208 ]
%216 = call i64 (...) @mrand48()
%217 = icmp eq i64 %216, 391908719
br i1 %217, label %220, label %218
218: ; preds = %214
%219 = call i32 (i8*, i32, i32, ...) @printf(i8* getelementptr inbounds ([53 x i8], [53 x i8]* @.str.4, i64 0, i64 0), i32 249, i32 391908719, i64 %216)
br label %220
220: ; preds = %218, %214
%221 = phi i32 [ 1, %218 ], [ %215, %214 ]
%222 = call double (...) @drand48()
%223 = fcmp une double %222, 0x3FB7441F84392300
br i1 %223, label %224, label %226
224: ; preds = %220
%225 = call i32 (i8*, i32, i32, ...) @printf(i8* getelementptr inbounds ([55 x i8], [55 x i8]* @.str.6, i64 0, i64 0), i32 258, i32 21, double 0x3FB7441F84392300, i32 21, double %222)
br label %226
226: ; preds = %224, %220
%227 = phi i32 [ 1, %224 ], [ %221, %220 ]
%228 = call double (...) @drand48()
%229 = fcmp une double %228, 0x3FEE2E479CB8BE40
br i1 %229, label %230, label %232
230: ; preds = %226
%231 = call i32 (i8*, i32, i32, ...) @printf(i8* getelementptr inbounds ([55 x i8], [55 x i8]* @.str.6, i64 0, i64 0), i32 267, i32 21, double 0x3FEE2E479CB8BE40, i32 21, double %228)
br label %232
232: ; preds = %230, %226
%233 = phi i32 [ 1, %230 ], [ %227, %226 ]
store i16 14409, i16* %6
store i16 20577, i16* %58
store i16 29315, i16* %59
%234 = call i64 @nrand48(i16* %6)
%235 = icmp eq i64 %234, 519987617
br i1 %235, label %238, label %236
236: ; preds = %232
%237 = call i32 (i8*, i32, i32, ...) @printf(i8* getelementptr inbounds ([53 x i8], [53 x i8]* @.str.7, i64 0, i64 0), i32 281, i32 519987617, i64 %234)
br label %238
238: ; preds = %236, %232
%239 = phi i32 [ 1, %236 ], [ %233, %232 ]
%240 = call i64 @jrand48(i16* %6)
%241 = icmp eq i64 %240, -177682528
br i1 %241, label %244, label %242
242: ; preds = %238
%243 = call i32 (i8*, i32, i32, ...) @printf(i8* getelementptr inbounds ([53 x i8], [53 x i8]* @.str.8, i64 0, i64 0), i32 289, i32 -177682528, i64 %240)
br label %244
244: ; preds = %242, %238
%245 = phi i32 [ 1, %242 ], [ %239, %238 ]
%246 = call i64 @nrand48(i16* %6)
%247 = icmp eq i64 %246, 710825982
br i1 %247, label %250, label %248
248: ; preds = %244
%249 = call i32 (i8*, i32, i32, ...) @printf(i8* getelementptr inbounds ([53 x i8], [53 x i8]* @.str.7, i64 0, i64 0), i32 297, i32 710825982, i64 %246)
br label %250
250: ; preds = %248, %244
%251 = phi i32 [ 1, %248 ], [ %245, %244 ]
%252 = call i64 @jrand48(i16* %6)
%253 = icmp eq i64 %252, 1906801064
br i1 %253, label %256, label %254
254: ; preds = %250
%255 = call i32 (i8*, i32, i32, ...) @printf(i8* getelementptr inbounds ([53 x i8], [53 x i8]* @.str.8, i64 0, i64 0), i32 305, i32 1906801064, i64 %252)
br label %256
256: ; preds = %254, %250
%257 = phi i32 [ 1, %254 ], [ %251, %250 ]
%258 = call i32 @lcong48(i16* %109)
%259 = call i64 @nrand48(i16* %6)
%260 = icmp eq i64 %259, 851373727
br i1 %260, label %263, label %261
261: ; preds = %256
%262 = call i32 (i8*, i32, i32, ...) @printf(i8* getelementptr inbounds ([53 x i8], [53 x i8]* @.str.7, i64 0, i64 0), i32 316, i32 851373727, i64 %259)
br label %263
263: ; preds = %261, %256
%264 = phi i32 [ 1, %261 ], [ %257, %256 ]
%265 = call i64 @jrand48(i16* %6)
%266 = icmp eq i64 %265, 2078143418
br i1 %266, label %269, label %267
267: ; preds = %263
%268 = call i32 (i8*, i32, i32, ...) @printf(i8* getelementptr inbounds ([53 x i8], [53 x i8]* @.str.8, i64 0, i64 0), i32 324, i32 2078143418, i64 %265)
br label %269
269: ; preds = %267, %263
%270 = phi i32 [ 1, %267 ], [ %264, %263 ]
%271 = call i64 @nrand48(i16* %6)
%272 = icmp eq i64 %271, 140238632
br i1 %272, label %275, label %273
273: ; preds = %269
%274 = call i32 (i8*, i32, i32, ...) @printf(i8* getelementptr inbounds ([53 x i8], [53 x i8]* @.str.7, i64 0, i64 0), i32 332, i32 140238632, i64 %271)
br label %275
275: ; preds = %273, %269
%276 = phi i32 [ 1, %273 ], [ %270, %269 ]
%277 = call i64 @jrand48(i16* %6)
%278 = icmp eq i64 %277, 2068004423
br i1 %278, label %281, label %279
279: ; preds = %275
%280 = call i32 (i8*, i32, i32, ...) @printf(i8* getelementptr inbounds ([53 x i8], [53 x i8]* @.str.8, i64 0, i64 0), i32 340, i32 2068004423, i64 %277)
br label %281
281: ; preds = %279, %275
%282 = phi i32 [ 1, %279 ], [ %276, %275 ]
%283 = call i16* @seed48(i16* %6)
%284 = call double (...) @drand48()
%285 = call double @erand48(i16* %6)
%286 = fcmp une double %284, %285
br i1 %286, label %287, label %292
287: ; preds = %281
%288 = call i32 (i8*, i32, i32, ...) @printf(i8* getelementptr inbounds ([68 x i8], [68 x i8]* @.str.9, i64 0, i64 0), i32 351, i32 352)
%289 = fptosi double %284 to i32
%290 = fptosi double %285 to i32
%291 = call i32 (i8*, i32, i32, ...) @printf(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @.str.10, i64 0, i64 0), i32 %289, i32 %290)
br label %296
292: ; preds = %281
%293 = fcmp une double %285, 0x3FE480365358E080
br i1 %293, label %294, label %296
294: ; preds = %292
%295 = call i32 (i8*, i32, i32, ...) @printf(i8* getelementptr inbounds ([55 x i8], [55 x i8]* @.str.11, i64 0, i64 0), i32 360, i32 21, double 0x3FE480365358E080, i32 21, double %285)
br label %296
296: ; preds = %292, %294, %287
%297 = phi i32 [ 1, %287 ], [ 1, %294 ], [ %282, %292 ]
%298 = call double (...) @drand48()
%299 = call double @erand48(i16* %6)
%300 = fcmp une double %298, %299
br i1 %300, label %301, label %306
301: ; preds = %296
%302 = call i32 (i8*, i32, i32, ...) @printf(i8* getelementptr inbounds ([68 x i8], [68 x i8]* @.str.9, i64 0, i64 0), i32 370, i32 371)
%303 = fptosi double %298 to i32
%304 = fptosi double %299 to i32
%305 = call i32 (i8*, i32, i32, ...) @printf(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @.str.10, i64 0, i64 0), i32 %303, i32 %304)
br label %310
306: ; preds = %296
%307 = fcmp une double %299, 0x3FBD890A6454BF00
br i1 %307, label %308, label %310
308: ; preds = %306
%309 = call i32 (i8*, i32, i32, ...) @printf(i8* getelementptr inbounds ([55 x i8], [55 x i8]* @.str.11, i64 0, i64 0), i32 379, i32 21, double 0x3F87A0D51D1098CD, i32 21, double %299)
br label %310
310: ; preds = %306, %308, %301
%311 = phi i32 [ 1, %301 ], [ 1, %308 ], [ %297, %306 ]
ret i32 %311
}