#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 EXIT_SUCCESS;
int /*<<< orphan*/ copyshrink(double *, double *, int, int, int *, int);
int /*<<< orphan*/ free(double *);
double *malloc(int);
int /*<<< orphan*/ printf(char *, int, int, int, int);
int /*<<< orphan*/ thin(double *, int, int, int *, double, int, int);
int main(void) {
  int i;
  double *y = malloc(sizeof(double) * 15);
  double x[25] = {-0.827, -0.724, -1.278, -0.821, -2.3,  -0.566, -0.123,
                  0.296,  -0.093, -0.619, 1.602,  0.065, -0.549, -0.855,
                  0.055,  -0.245, -1.652, 0.547,  0.234, 0.908,  -0.707,
                  1.665,  0.167,  -2.399, -0.974};
  double y2[15] = {-0.827, -0.724, -2.3,   -0.566, -0.123, -0.619, 1.602, 0.065,
                   0.055,  -0.245, -1.652, 0.908,  -0.707, 1.665,  -0.974};
  double x2[1000] = {
      -0.46, -0.76, -1.09, -0.08, 0.01,  0.74,  1,     2.66,  -1.08, 2.03,
      0.86,  1.65,  -1.38, -0.33, 0.66,  -0.64, 1.79,  -0.73, -1.1,  -1.31,
      1.06,  0.73,  -0.17, 0.02,  1.17,  0.12,  0.11,  -0.18, -0.49, 0.46,
      -1.01, -0.62, -0.4,  0.12,  0.08,  0.27,  1.94,  -0.91, -0.76, 0.9,
      0.88,  -0.58, -0.88, 0.37,  0.49,  0.73,  0.75,  -1.22, -0.26, 0.08,
      -0.48, 0.22,  0.36,  -1.59, -1.4,  1.61,  -0.03, 0.28,  -0.75, 0.53,
      0.95,  -0.57, -0.97, 0.43,  -1.99, -0.16, 1.01,  -0.33, -0.59, 0.49,
      -0.62, -0.76, 0.21,  -0.39, 0.74,  -0.5,  1.34,  0.07,  -0.3,  -0.36,
      0.23,  0.55,  -0.28, 0.56,  2.14,  0.01,  -1.12, 1.87,  0.27,  -0.85,
      -0.66, 0.33,  -1.04, 1.01,  0.87,  0.13,  1.05,  0.43,  -0.23, 0.34,
      0.26,  1.83,  -0.65, -0.56, 0.66,  1.62,  0.23,  -0.77, 1.87,  -0.25,
      0.76,  -1.07, 0.62,  -0.34, 0.17,  0.43,  -0.8,  0.92,  0.3,   0.15,
      0.83,  -2.08, 0.15,  -0.81, 0.98,  -0.04, 1.04,  -0.99, -0.48, 0.54,
      1.41,  -0.44, -0.58, -0.07, -0.11, 1.77,  0.94,  -0.77, -0.46, 0.8,
      -0.15, 0.56,  -2.49, 0.45,  0.26,  -1.1,  0.44,  -0.45, -0.27, 0.37,
      0.47,  -0.49, -0.13, 0.85,  0.55,  0.68,  1.31,  0.43,  -0.53, -1.29,
      1.16,  -1.01, 0.57,  1.2,   -1.21, -1.11, 0.26,  -0.85, -0.41, -2.42,
      1.11,  -0.36, 1.6,   0.6,   -0.01, 2.39,  0.35,  -0.51, 0.08,  0.33,
      -0.97, 0.55,  -0.77, -1.08, -0.65, -0.97, -1.65, -0.39, 0.86,  1.31,
      1.28,  -1.02, 0.63,  1.27,  -0.8,  0.28,  -0.28, -0.42, 0.55,  -0.8,
      0.48,  -1.98, 1.44,  -2,    0.15,  -1.69, 0.26,  -0.28, -0.08, -0.89,
      -0.42, -0.43, -0.16, 0.19,  0.12,  -0.19, -0.64, -0.09, 0.79,  2.42,
      0.62,  -1.03, 1.71,  -2.23, -1.33, 1.33,  1.52,  0.23,  0.24,  -0.24,
      -0.58, -0.84, -1.08, 0.75,  -0.32, -0.38, -0.22, 1.53,  -0.53, 0.12,
      -0.06, -1.94, -1.2,  -0.43, 0.96,  -0.22, -0.34, -0.2,  -1.21, 0.2,
      0.63,  1.06,  0.39,  0.7,   0.39,  -0.33, -1.21, 0.95,  -1.08, -0.45,
      0.67,  0.43,  -1.51, -1.33, -0.5,  -0.42, -0.73, -0.41, -0.97, -1.32,
      0.24,  0.11,  -0.31, -0.22, 1.18,  0.27,  -0.22, -1.67, -0.11, 1.76,
      -0.07, -1.27, 0.75,  0.13,  -0.01, 1.42,  -0.83, -0.9,  -0.86, -0.6,
      -0.46, 0.14,  0.51,  1.65,  -0.05, 0.06,  1.16,  0.94,  -1.87, 0.14,
      -0.59, -0.14, -0.61, 1.3,   -1.06, 0.79,  0.48,  -0.11, -1.21, -0.28,
      0.06,  -0.35, 0.36,  1.08,  -0.47, 1.13,  0.04,  1.59,  -0.67, 0.93,
      0.76,  -2.66, 0.63,  -0.52, 0.88,  -0.31, -1.69, 1.86,  -0.16, -0.29,
      -0.53, 0.9,   -0.05, 0.54,  -0.64, -0.61, 0.52,  -0.61, 0.2,   -1.04,
      -0.41, -0.69, -1.29, -0.21, -0.64, 0.85,  0.34,  -2.08, -0.31, 2.22,
      -0.08, -1.13, -0.4,  0.05,  0.3,   0.65,  -0.37, 0.85,  -2.67, 0.04,
      -0.64, 0.4,   -0.22, 0.02,  1.7,   -0.42, 0.76,  -0.03, -0.04, -0.86,
      1.06,  -0.54, -1.35, 0.66,  0.09,  -0.3,  -0.03, 0.26,  0.21,  -1,
      1.15,  -1,    -1.53, -0.38, 1.77,  -0.67, -0.27, -0.68, -0.03, -0.39,
      1.51,  -0.27, -0.28, 0.47,  0.74,  1.01,  0.57,  0.44,  -1.55, -1.4,
      0.58,  0.14,  -1.67, -1.12, -0.74, -0.21, 0.69,  0.76,  0.78,  0.86,
      0.04,  1.45,  -1.53, 0.32,  -1.72, 1.1,   1.66,  1.07,  -1.01, 1,
      0.29,  0.24,  -0.61, 0.84,  -0.93, 2.28,  -0.75, -0.03, -1.13, -1.23,
      1.32,  -0.63, 0.06,  -1.45, -2.28, -1.98, -1.44, 0.74,  -0.78, -0.61,
      -0.03, -0.22, -1.43, 1.24,  -0.17, -0.45, -0.49, -0.45, 2.05,  -0.5,
      -0.14, 0.59,  -1.66, 1.63,  -0.88, 1.45,  -0.5,  -2.07, -1.7,  0.34,
      -0.54, 0.33,  -0.35, 0.14,  -0.02, -1.01, 0.7,   -0.58, 1.44,  0.52,
      0.17,  0.53,  -1.57, 0.93,  -0.92, 0.2,   -1.72, -0.66, -0.95, -1.57,
      1.53,  0.75,  -0.01, 0.54,  0.2,   0.83,  0.3,   -1.25, -0.18, -0.01,
      1.06,  0.51,  0.06,  -0.5,  -0.6,  0.86,  0.68,  0.74,  -2.22, 0.44,
      -1.38, 0.73,  -1.13, -1.14, -1.12, 0.51,  -0.63, 1.31,  0.32,  0.09,
      -1.44, 0.03,  -0.05, 0.03,  0.81,  1.04,  0.14,  0.49,  0.42,  0.3,
      0.91,  -0.67, -2.32, -0.6,  0.79,  -1.04, 1.4,   -0.29, -1.39, -0.73,
      0.53,  -0.49, -0.28, -0.42, 0.35,  1.27,  -0.09, -1.18, 0.98,  0.27,
      0.89,  -0.62, 2.15,  -0.81, -0.87, -0.23, -0.83, 0.36,  -0.38, 0.27,
      -1.55, -0.81, -0.24, 0.48,  -0.38, 0.32,  1.05,  -0.08, -0.44, -0.92,
      0.24,  -0.12, 0.19,  0.01,  0.8,   0.11,  0.18,  0.73,  0.29,  0.56,
      -1.05, 0.37,  1.3,   0.85,  -1.6,  0.15,  -0.14, 0.1,   0.55,  -1.36,
      0.83,  0.45,  0.88,  0.23,  0.18,  -0.5,  0.21,  0.5,   -0.15, 1.15,
      -1.12, -0.81, -1.13, -0.82, 0.89,  -0.99, -0.42, 1.08,  0.74,  -1.18,
      -0.55, 0.12,  2.17,  1.82,  -0.64, -0.38, -0.23, -0.73, -0.97, 0.58,
      -0.48, 0.96,  0.37,  1.83,  -0.54, 0.69,  -1.35, 0.58,  0.79,  1.32,
      -1.53, 0.37,  -0.61, 0.9,   2.71,  0.4,   -1.34, 0.1,   1.39,  0.29,
      -0.19, -0.91, -1.08, 0.81,  0,     -0.94, -1.49, -0.49, -0.34, 0.07,
      1.69,  -0.73, -0.04, 0.52,  -2.02, -0.37, -0.97, -0.71, -0.78, 0.25,
      -1.63, 0.76,  -2.12, -0.5,  0.93,  0.43,  1.7,   -1.92, 0.75,  -0.91,
      -0.4,  -0.46, 0.77,  -1.38, -0.33, 1.4,   0.53,  1.62,  0.25,  0.37,
      0.54,  -0.06, -0.84, 0.75,  -1.88, 0.49,  0.11,  -0.17, 1.16,  0.67,
      0.87,  -1.74, 0.03,  1.54,  -1.58, 0.35,  0.79,  -0.13, 0.7,   -0.13,
      -0.54, -2.17, -0.36, -0.38, -0.74, -1.01, -1.2,  0.43,  0.6,   0.11,
      0.76,  0.43,  -0.74, -1.59, 2.06,  -0.33, -0.26, 0.78,  -0.83, -1.57,
      0.64,  0.41,  -0.92, -1.2,  -0.87, 0.2,   1.11,  -0.21, 1.15,  1.11,
      -0.75, 1.53,  0.38,  -0.87, 2.24,  -0.11, 0.45,  0.07,  0.41,  -0.99,
      -0.71, -0.34, -1.16, 0.76,  2.1,   -2.24, 1.65,  0.29,  0.74,  -0.62,
      0.55,  0.03,  -0.12, -1.14, -1.95, -1.72, 1.31,  1.48,  0.46,  -0.2,
      0.24,  -1.21, 0.25,  0.79,  -0.51, -0.59, 0.02,  0.7,   0.77,  1.16,
      1.11,  2.73,  -1.54, -1.26, -0.04, 0.39,  0.6,   -0.86, 2.3,   0.59,
      -0.85, 1.6,   -0.02, 1.03,  -0.08, -0.73, -0.23, 0.16,  0.01,  -1.06,
      -0.11, 0.93,  0.59,  -1.94, 0.33,  -1.25, 0.01,  1.4,   1.07,  0.36,
      -1.41, -0.36, -0.21, 0.16,  0.7,   0.78,  0.29,  -0.64, 0.73,  -1.01,
      -0.3,  1.42,  -0.38, 0.14,  -1.25, -1.26, 0.23,  -0.81, 0.64,  -0.66,
      -0.71, -0.15, -0.8,  0.79,  0.46,  0.75,  0.5,   -1.44, -0.81, 0.59,
      1.02,  0.45,  -0.53, -1.4,  -0.64, 0.51,  -0.99, 0.01,  -1.52, -0.14,
      -0.25, 1.81,  -1.16, 0.66,  -0.1,  -0.54, 0.3,   -1.05, -0.13, 1.54,
      -0.56, 1.41,  0.01,  0.27,  0.99,  1.74,  -0.4,  -0.84, 0.72,  1.37,
      1.77,  0.16,  2.33,  -0.7,  1.64,  -0.18, 0.46,  2.33,  -1.35, -0.38,
      0.41,  -1.83, -0.73, 2,     0.76,  0.58,  -0.81, -0.18, -0.85, 0.17,
      0.65,  -0.39, 1.37,  -0.04, 0.86,  1.11,  -0.16, -0.8,  -0.47, -1.59,
      -0.09, -1.21, -2.3,  -2.7,  -1.57, -0.12, 1.39,  -0.79, 1.87,  0.9,
      0.29,  0.88,  -0.68, 0.29,  -1.15, -0.32, 0.14,  -0.31, -0.3,  -0.62,
      0.13,  -0.33, 0.6,   -1.12, 0.05,  0.13,  0.91,  -0.85, 0.75,  -0.54,
      -0.33, 0.39,  1.38,  -0.33, 0.51,  1.89,  1.02,  0.38,  0.37,  0.35,
      -0.1,  0.69,  0.04,  0.01,  -0.89, -0.9,  -1.08, 0.02,  -1.27, -0.92,
      1.17,  -0.66, 0.62,  0.01,  -0.93, 1.01,  0.41,  -0.29, 1.01,  0.01,
      -0.85, 0.65,  -0.9,  1.09,  -0.2,  0.15,  2.72,  -0.66, 0.57,  0.82,
      -0.5,  0.76,  0.2,   0.63,  -0.35, -0.52, 0.43,  1.99,  1.85,  0.35,
      -1.56, 0.69,  1.07,  0.19,  -0.51, 0.29,  0.22,  -0.83, -0.2,  0.72,
      1.52,  -1.22, -0.68, -1.45, -0.5,  -1.27, 0.33,  0.46,  0.42,  0.23,
      -2.22, 0.2,   2.05,  1.3,   0.16,  0.79,  1.8,   -0.93, -0.21, -0.54,
      0.16,  -0.16, 0.71,  -0.06, -0.46, -0.31, 1.67,  -0.18, 0.43,  -1.56};
  int active[5] = {1, 1, 0, 0, 1};
  int nactive = 3;
  int active2[20] = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
                     1, 1, 1, 1, 1, 1, 1, 1, 1, 1};
  int thinned[20] = {1, 0, 0, 0, 0, 0, 1, 0, 0, 0,
                     1, 0, 0, 0, 0, 1, 0, 0, 0, 0};
  copyshrink(x, y, 5, 5, active, nactive);
  for (i = 0; i < 9; i++)
    printf("%d %.3f %.3f %.3f\n", i, y2[i], y[i], y2[i] - y[i]);
  thin(x2, 50, 20, active2, 0.1, 8, 5);
  for (i = 0; i < 20; i++)
    printf("%d\t%d\t%d\t%d\n", i, thinned[i], active2[i],
           thinned[i] - active2[i]);
  free(y);
  return EXIT_SUCCESS;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x2170,%rsp
movl   $0x0,-0x4(%rbp)
mov    $0x78,%edi
call   1090 <malloc@plt>
mov    %rax,-0x10(%rbp)
lea    -0xe0(%rbp),%rdi
lea    0xe72(%rip),%rsi
mov    $0xc8,%edx
call   1080 <memcpy@plt>
lea    -0x160(%rbp),%rdi
lea    0xf2a(%rip),%rsi
mov    $0x78,%edx
call   1080 <memcpy@plt>
lea    -0x20a0(%rbp),%rdi
lea    0xf92(%rip),%rsi
mov    $0x1f40,%edx
call   1080 <memcpy@plt>
mov    0x2ec1(%rip),%rax
mov    %rax,-0x20c0(%rbp)
mov    0x2ebb(%rip),%rax
mov    %rax,-0x20b8(%rbp)
mov    0x2eb6(%rip),%eax
mov    %eax,-0x20b0(%rbp)
movl   $0x3,-0x20c4(%rbp)
lea    -0x2120(%rbp),%rdi
lea    0x2ea8(%rip),%rsi
mov    $0x50,%edx
call   1080 <memcpy@plt>
lea    -0x2170(%rbp),%rdi
xor    %esi,%esi
mov    $0x50,%edx
call   1070 <memset@plt>
movl   $0x1,-0x2170(%rbp)
movl   $0x1,-0x2158(%rbp)
movl   $0x1,-0x2148(%rbp)
movl   $0x1,-0x2134(%rbp)
lea    -0xe0(%rbp),%rdi
mov    -0x10(%rbp),%rsi
lea    -0x20c0(%rbp),%r8
mov    -0x20c4(%rbp),%r9d
mov    $0x5,%ecx
mov    %ecx,%edx
call   1050 <copyshrink@plt>
movl   $0x0,-0x8(%rbp)
cmpl   $0x9,-0x8(%rbp)
jge    12e9 <main+0x179>
mov    -0x8(%rbp),%esi
movslq -0x8(%rbp),%rax
cvttsd2si -0x160(%rbp,%rax,8),%edx
ff ff
mov    -0x10(%rbp),%rax
movslq -0x8(%rbp),%rcx
cvttsd2si (%rax,%rcx,8),%ecx
movslq -0x8(%rbp),%rax
movsd  -0x160(%rbp,%rax,8),%xmm0
ff ff
mov    -0x10(%rbp),%rax
movslq -0x8(%rbp),%rdi
subsd  (%rax,%rdi,8),%xmm0
cvttsd2si %xmm0,%r8d
lea    0x2e3a(%rip),%rdi
call   1060 <printf@plt>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    1289 <main+0x119>
lea    -0x20a0(%rbp),%rdi
lea    -0x2120(%rbp),%rcx
mov    $0x32,%esi
mov    $0x14,%edx
movsd  0xcf7(%rip),%xmm0
mov    $0x8,%r8d
mov    $0x5,%r9d
call   1030 <thin@plt>
movl   $0x0,-0x8(%rbp)
cmpl   $0x14,-0x8(%rbp)
jge    1376 <main+0x206>
mov    -0x8(%rbp),%esi
movslq -0x8(%rbp),%rax
mov    -0x2170(%rbp,%rax,4),%edx
movslq -0x8(%rbp),%rax
mov    -0x2120(%rbp,%rax,4),%ecx
movslq -0x8(%rbp),%rax
mov    -0x2170(%rbp,%rax,4),%r8d
ff
movslq -0x8(%rbp),%rax
sub    -0x2120(%rbp,%rax,4),%r8d
ff
lea    0x2dc0(%rip),%rdi
call   1060 <printf@plt>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    1321 <main+0x1b1>
mov    -0x10(%rbp),%rdi
call   1040 <free@plt>
mov    0x4c5a(%rip),%rax
mov    (%rax),%eax
add    $0x2170,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbp
push   %r15
push   %r14
push   %r12
push   %rbx
sub    $0x20d0,%rsp
mov    $0x78,%edi
call   1080 <malloc@plt>
mov    %rax,%r12
lea    0xecd(%rip),%rsi
lea    0xc0(%rsp),%rbp
mov    $0xc8,%edx
mov    %rbp,%rdi
call   1070 <memcpy@plt>
lea    0xf81(%rip),%rsi
lea    0x190(%rsp),%r14
mov    $0x1f40,%edx
mov    %r14,%rdi
call   1070 <memcpy@plt>
mov    0x2eb6(%rip),%eax
mov    %eax,0x10(%rsp)
movaps 0x2e9b(%rip),%xmm0
movaps %xmm0,(%rsp)
movaps 0x2ef0(%rip),%xmm0
movaps %xmm0,0xb0(%rsp)
movaps 0x2ed1(%rip),%xmm0
movaps %xmm0,0xa0(%rsp)
movaps 0x2eb2(%rip),%xmm0
movaps %xmm0,0x90(%rsp)
movaps 0x2e93(%rip),%xmm0
movaps %xmm0,0x80(%rsp)
movaps 0x2e74(%rip),%xmm0
movaps %xmm0,0x70(%rsp)
xorps  %xmm0,%xmm0
movaps %xmm0,0x20(%rsp)
movaps %xmm0,0x30(%rsp)
movaps %xmm0,0x40(%rsp)
movaps %xmm0,0x50(%rsp)
movaps %xmm0,0x60(%rsp)
movl   $0x1,0x20(%rsp)
movl   $0x1,0x38(%rsp)
movl   $0x1,0x48(%rsp)
movl   $0x1,0x5c(%rsp)
mov    %rsp,%r8
mov    %rbp,%rdi
mov    %r12,%rsi
mov    $0x5,%edx
mov    $0x5,%ecx
mov    $0x3,%r9d
call   1050 <copyshrink@plt>
movsd  (%r12),%xmm0
cvttsd2si %xmm0,%ecx
movsd  0xd83(%rip),%xmm1
subsd  %xmm0,%xmm1
cvttsd2si %xmm1,%r8d
lea    0x2e43(%rip),%rbp
mov    %rbp,%rdi
xor    %esi,%esi
xor    %edx,%edx
call   1060 <printf@plt>
movsd  0x8(%r12),%xmm0
cvttsd2si %xmm0,%ecx
movsd  0xd5c(%rip),%xmm1
subsd  %xmm0,%xmm1
cvttsd2si %xmm1,%r8d
mov    $0x1,%r15d
mov    %rbp,%rdi
mov    $0x1,%esi
xor    %edx,%edx
call   1060 <printf@plt>
movsd  0x10(%r12),%xmm0
cvttsd2si %xmm0,%ecx
movsd  0xd33(%rip),%xmm1
subsd  %xmm0,%xmm1
cvttsd2si %xmm1,%r8d
mov    %rbp,%rdi
mov    $0x2,%esi
mov    $0xfffffffe,%edx
call   1060 <printf@plt>
movsd  0x18(%r12),%xmm0
cvttsd2si %xmm0,%ecx
movsd  0xd0d(%rip),%xmm1
subsd  %xmm0,%xmm1
cvttsd2si %xmm1,%r8d
mov    %rbp,%rdi
mov    $0x3,%esi
xor    %edx,%edx
call   1060 <printf@plt>
movsd  0x20(%r12),%xmm0
cvttsd2si %xmm0,%ecx
movsd  0xcea(%rip),%xmm1
subsd  %xmm0,%xmm1
cvttsd2si %xmm1,%r8d
mov    %rbp,%rdi
mov    $0x4,%esi
xor    %edx,%edx
call   1060 <printf@plt>
movsd  0x28(%r12),%xmm0
cvttsd2si %xmm0,%ecx
movsd  0xcc7(%rip),%xmm1
subsd  %xmm0,%xmm1
cvttsd2si %xmm1,%r8d
mov    %rbp,%rdi
mov    $0x5,%esi
xor    %edx,%edx
call   1060 <printf@plt>
movsd  0x30(%r12),%xmm0
cvttsd2si %xmm0,%ecx
movsd  0xca4(%rip),%xmm1
subsd  %xmm0,%xmm1
cvttsd2si %xmm1,%r8d
mov    %rbp,%rdi
mov    $0x6,%esi
mov    $0x1,%edx
call   1060 <printf@plt>
movsd  0x38(%r12),%xmm0
cvttsd2si %xmm0,%ecx
movsd  0xc7e(%rip),%xmm1
subsd  %xmm0,%xmm1
cvttsd2si %xmm1,%r8d
mov    %rbp,%rdi
mov    $0x7,%esi
xor    %edx,%edx
call   1060 <printf@plt>
movsd  0x40(%r12),%xmm0
cvttsd2si %xmm0,%ecx
movsd  0xc5b(%rip),%xmm1
subsd  %xmm0,%xmm1
cvttsd2si %xmm1,%r8d
mov    %rbp,%rdi
mov    $0x8,%esi
xor    %edx,%edx
call   1060 <printf@plt>
lea    0x70(%rsp),%rcx
movsd  0xc3e(%rip),%xmm0
mov    %r14,%rdi
mov    $0x32,%esi
mov    $0x14,%edx
mov    $0x8,%r8d
mov    $0x5,%r9d
call   1030 <thin@plt>
mov    0x70(%rsp),%ecx
sub    %ecx,%r15d
lea    0x2cad(%rip),%rbp
mov    %rbp,%rdi
xor    %esi,%esi
mov    $0x1,%edx
mov    %r15d,%r8d
call   1060 <printf@plt>
mov    $0x1,%ebx
nopl   (%rax)
mov    0x20(%rsp,%rbx,4),%edx
mov    0x70(%rsp,%rbx,4),%ecx
mov    %edx,%r8d
sub    %ecx,%r8d
mov    %rbp,%rdi
mov    %ebx,%esi
call   1060 <printf@plt>
add    $0x1,%rbx
cmp    $0x14,%rbx
jne    1450 <main+0x2f0>
mov    %r12,%rdi
call   1040 <free@plt>
mov    0x4b5f(%rip),%rax
mov    (%rax),%eax
add    $0x20d0,%rsp
pop    %rbx
pop    %r12
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
@__const.main.x = [25 x double] [double 0xBFEA76C8B4395810, double 0xBFE72B020C49BA5E, double -1.278000e+00, double 0xBFEA45A1CAC08312, double -2.300000e+00, double -5.660000e-01, double -1.230000e-01, double 2.960000e-01, double 0xBFB7CED916872B02, double 0xBFE3CED916872B02, double 1.602000e+00, double 6.500000e-02, double -5.490000e-01, double 0xBFEB5C28F5C28F5C, double 5.500000e-02, double -2.450000e-01, double -1.652000e+00, double 5.470000e-01, double 2.340000e-01, double 9.080000e-01, double -7.070000e-01, double 1.665000e+00, double 1.670000e-01, double -2.399000e+00, double 0xBFEF2B020C49BA5E]
@__const.main.y2 = [15 x double] [double 0xBFEA76C8B4395810, double 0xBFE72B020C49BA5E, double -2.300000e+00, double -5.660000e-01, double -1.230000e-01, double 0xBFE3CED916872B02, double 1.602000e+00, double 6.500000e-02, double 5.500000e-02, double -2.450000e-01, double -1.652000e+00, double 9.080000e-01, double -7.070000e-01, double 1.665000e+00, double 0xBFEF2B020C49BA5E]
@__const.main.x2 = [1000 x double] [double -4.600000e-01, double -7.600000e-01, double -1.090000e+00, double -8.000000e-02, double 1.000000e-02, double 0x3FE7AE147AE147AE, double 1.000000e+00, double 2.660000e+00, double -1.080000e+00, double 2.030000e+00, double 8.600000e-01, double 1.650000e+00, double -1.380000e+00, double -3.300000e-01, double 6.600000e-01, double -6.400000e-01, double 1.790000e+00, double -7.300000e-01, double -1.100000e+00, double -1.310000e+00, double 1.060000e+00, double 7.300000e-01, double -1.700000e-01, double 2.000000e-02, double 1.170000e+00, double 1.200000e-01, double 1.100000e-01, double -1.800000e-01, double -4.900000e-01, double 4.600000e-01, double -1.010000e+00, double -6.200000e-01, double -4.000000e-01, double 1.200000e-01, double 8.000000e-02, double 2.700000e-01, double 1.940000e+00, double -9.100000e-01, double -7.600000e-01, double 9.000000e-01, double 8.800000e-01, double -5.800000e-01, double -8.800000e-01, double 3.700000e-01, double 4.900000e-01, double 7.300000e-01, double 7.500000e-01, double -1.220000e+00, double -2.600000e-01, double 8.000000e-02, double -4.800000e-01, double 2.200000e-01, double 3.600000e-01, double -1.590000e+00, double -1.400000e+00, double 1.610000e+00, double -3.000000e-02, double 2.800000e-01, double -7.500000e-01, double 5.300000e-01, double 0x3FEE666666666666, double -5.700000e-01, double 0xBFEF0A3D70A3D70A, double 4.300000e-01, double -1.990000e+00, double -1.600000e-01, double 1.010000e+00, double -3.300000e-01, double -5.900000e-01, double 4.900000e-01, double -6.200000e-01, double -7.600000e-01, double 2.100000e-01, double -3.900000e-01, double 0x3FE7AE147AE147AE, double -5.000000e-01, double 1.340000e+00, double 7.000000e-02, double -3.000000e-01, double -3.600000e-01, double 2.300000e-01, double 5.500000e-01, double -2.800000e-01, double 5.600000e-01, double 2.140000e+00, double 1.000000e-02, double -1.120000e+00, double 1.870000e+00, double 2.700000e-01, double -8.500000e-01, double -6.600000e-01, double 3.300000e-01, double -1.040000e+00, double 1.010000e+00, double 8.700000e-01, double 1.300000e-01, double 1.050000e+00, double 4.300000e-01, double -2.300000e-01, double 3.400000e-01, double 2.600000e-01, double 1.830000e+00, double -6.500000e-01, double -5.600000e-01, double 6.600000e-01, double 1.620000e+00, double 2.300000e-01, double -7.700000e-01, double 1.870000e+00, double -2.500000e-01, double 7.600000e-01, double -1.070000e+00, double 6.200000e-01, double -3.400000e-01, double 1.700000e-01, double 4.300000e-01, double -8.000000e-01, double 9.200000e-01, double 3.000000e-01, double 1.500000e-01, double 8.300000e-01, double -2.080000e+00, double 1.500000e-01, double -8.100000e-01, double 0x3FEF5C28F5C28F5C, double -4.000000e-02, double 1.040000e+00, double 0xBFEFAE147AE147AE, double -4.800000e-01, double 5.400000e-01, double 1.410000e+00, double -4.400000e-01, double -5.800000e-01, double -7.000000e-02, double -1.100000e-01, double 1.770000e+00, double 0x3FEE147AE147AE14, double -7.700000e-01, double -4.600000e-01, double 8.000000e-01, double -1.500000e-01, double 5.600000e-01, double -2.490000e+00, double 4.500000e-01, double 2.600000e-01, double -1.100000e+00, double 4.400000e-01, double -4.500000e-01, double -2.700000e-01, double 3.700000e-01, double 4.700000e-01, double -4.900000e-01, double -1.300000e-01, double 8.500000e-01, double 5.500000e-01, double 6.800000e-01, double 1.310000e+00, double 4.300000e-01, double -5.300000e-01, double -1.290000e+00, double 1.160000e+00, double -1.010000e+00, double 5.700000e-01, double 1.200000e+00, double -1.210000e+00, double -1.110000e+00, double 2.600000e-01, double -8.500000e-01, double -4.100000e-01, double -2.420000e+00, double 1.110000e+00, double -3.600000e-01, double 1.600000e+00, double 6.000000e-01, double -1.000000e-02, double 2.390000e+00, double 3.500000e-01, double -5.100000e-01, double 8.000000e-02, double 3.300000e-01, double 0xBFEF0A3D70A3D70A, double 5.500000e-01, double -7.700000e-01, double -1.080000e+00, double -6.500000e-01, double 0xBFEF0A3D70A3D70A, double -1.650000e+00, double -3.900000e-01, double 8.600000e-01, double 1.310000e+00, double 1.280000e+00, double -1.020000e+00, double 6.300000e-01, double 1.270000e+00, double -8.000000e-01, double 2.800000e-01, double -2.800000e-01, double -4.200000e-01, double 5.500000e-01, double -8.000000e-01, double 4.800000e-01, double -1.980000e+00, double 1.440000e+00, double -2.000000e+00, double 1.500000e-01, double -1.690000e+00, double 2.600000e-01, double -2.800000e-01, double -8.000000e-02, double -8.900000e-01, double -4.200000e-01, double -4.300000e-01, double -1.600000e-01, double 1.900000e-01, double 1.200000e-01, double -1.900000e-01, double -6.400000e-01, double 0xBFB70A3D70A3D70A, double 7.900000e-01, double 2.420000e+00, double 6.200000e-01, double -1.030000e+00, double 1.710000e+00, double -2.230000e+00, double -1.330000e+00, double 1.330000e+00, double 1.520000e+00, double 2.300000e-01, double 2.400000e-01, double -2.400000e-01, double -5.800000e-01, double -8.400000e-01, double -1.080000e+00, double 7.500000e-01, double -3.200000e-01, double -3.800000e-01, double -2.200000e-01, double 1.530000e+00, double -5.300000e-01, double 1.200000e-01, double -6.000000e-02, double -1.940000e+00, double -1.200000e+00, double -4.300000e-01, double 0x3FEEB851EB851EB8, double -2.200000e-01, double -3.400000e-01, double -2.000000e-01, double -1.210000e+00, double 2.000000e-01, double 6.300000e-01, double 1.060000e+00, double 3.900000e-01, double 0x3FE6666666666666, double 3.900000e-01, double -3.300000e-01, double -1.210000e+00, double 0x3FEE666666666666, double -1.080000e+00, double -4.500000e-01, double 6.700000e-01, double 4.300000e-01, double -1.510000e+00, double -1.330000e+00, double -5.000000e-01, double -4.200000e-01, double -7.300000e-01, double -4.100000e-01, double 0xBFEF0A3D70A3D70A, double -1.320000e+00, double 2.400000e-01, double 1.100000e-01, double -3.100000e-01, double -2.200000e-01, double 1.180000e+00, double 2.700000e-01, double -2.200000e-01, double -1.670000e+00, double -1.100000e-01, double 1.760000e+00, double -7.000000e-02, double -1.270000e+00, double 7.500000e-01, double 1.300000e-01, double -1.000000e-02, double 1.420000e+00, double -8.300000e-01, double -9.000000e-01, double -8.600000e-01, double -6.000000e-01, double -4.600000e-01, double 1.400000e-01, double 5.100000e-01, double 1.650000e+00, double -5.000000e-02, double 6.000000e-02, double 1.160000e+00, double 0x3FEE147AE147AE14, double -1.870000e+00, double 1.400000e-01, double -5.900000e-01, double -1.400000e-01, double -6.100000e-01, double 1.300000e+00, double -1.060000e+00, double 7.900000e-01, double 4.800000e-01, double -1.100000e-01, double -1.210000e+00, double -2.800000e-01, double 6.000000e-02, double -3.500000e-01, double 3.600000e-01, double 1.080000e+00, double -4.700000e-01, double 1.130000e+00, double 4.000000e-02, double 1.590000e+00, double -6.700000e-01, double 9.300000e-01, double 7.600000e-01, double -2.660000e+00, double 6.300000e-01, double -5.200000e-01, double 8.800000e-01, double -3.100000e-01, double -1.690000e+00, double 1.860000e+00, double -1.600000e-01, double -2.900000e-01, double -5.300000e-01, double 9.000000e-01, double -5.000000e-02, double 5.400000e-01, double -6.400000e-01, double -6.100000e-01, double 5.200000e-01, double -6.100000e-01, double 2.000000e-01, double -1.040000e+00, double -4.100000e-01, double -6.900000e-01, double -1.290000e+00, double -2.100000e-01, double -6.400000e-01, double 8.500000e-01, double 3.400000e-01, double -2.080000e+00, double -3.100000e-01, double 2.220000e+00, double -8.000000e-02, double -1.130000e+00, double -4.000000e-01, double 5.000000e-02, double 3.000000e-01, double 6.500000e-01, double -3.700000e-01, double 8.500000e-01, double -2.670000e+00, double 4.000000e-02, double -6.400000e-01, double 4.000000e-01, double -2.200000e-01, double 2.000000e-02, double 1.700000e+00, double -4.200000e-01, double 7.600000e-01, double -3.000000e-02, double -4.000000e-02, double -8.600000e-01, double 1.060000e+00, double -5.400000e-01, double -1.350000e+00, double 6.600000e-01, double 0x3FB70A3D70A3D70A, double -3.000000e-01, double -3.000000e-02, double 2.600000e-01, double 2.100000e-01, double -1.000000e+00, double 1.150000e+00, double -1.000000e+00, double -1.530000e+00, double -3.800000e-01, double 1.770000e+00, double -6.700000e-01, double -2.700000e-01, double -6.800000e-01, double -3.000000e-02, double -3.900000e-01, double 1.510000e+00, double -2.700000e-01, double -2.800000e-01, double 4.700000e-01, double 0x3FE7AE147AE147AE, double 1.010000e+00, double 5.700000e-01, double 4.400000e-01, double -1.550000e+00, double -1.400000e+00, double 5.800000e-01, double 1.400000e-01, double -1.670000e+00, double -1.120000e+00, double 0xBFE7AE147AE147AE, double -2.100000e-01, double 6.900000e-01, double 7.600000e-01, double 7.800000e-01, double 8.600000e-01, double 4.000000e-02, double 1.450000e+00, double -1.530000e+00, double 3.200000e-01, double -1.720000e+00, double 1.100000e+00, double 1.660000e+00, double 1.070000e+00, double -1.010000e+00, double 1.000000e+00, double 2.900000e-01, double 2.400000e-01, double -6.100000e-01, double 8.400000e-01, double -9.300000e-01, double 2.280000e+00, double -7.500000e-01, double -3.000000e-02, double -1.130000e+00, double -1.230000e+00, double 1.320000e+00, double -6.300000e-01, double 6.000000e-02, double -1.450000e+00, double -2.280000e+00, double -1.980000e+00, double -1.440000e+00, double 0x3FE7AE147AE147AE, double -7.800000e-01, double -6.100000e-01, double -3.000000e-02, double -2.200000e-01, double -1.430000e+00, double 1.240000e+00, double -1.700000e-01, double -4.500000e-01, double -4.900000e-01, double -4.500000e-01, double 2.050000e+00, double -5.000000e-01, double -1.400000e-01, double 5.900000e-01, double -1.660000e+00, double 1.630000e+00, double -8.800000e-01, double 1.450000e+00, double -5.000000e-01, double -2.070000e+00, double -1.700000e+00, double 3.400000e-01, double -5.400000e-01, double 3.300000e-01, double -3.500000e-01, double 1.400000e-01, double -2.000000e-02, double -1.010000e+00, double 0x3FE6666666666666, double -5.800000e-01, double 1.440000e+00, double 5.200000e-01, double 1.700000e-01, double 5.300000e-01, double -1.570000e+00, double 9.300000e-01, double -9.200000e-01, double 2.000000e-01, double -1.720000e+00, double -6.600000e-01, double 0xBFEE666666666666, double -1.570000e+00, double 1.530000e+00, double 7.500000e-01, double -1.000000e-02, double 5.400000e-01, double 2.000000e-01, double 8.300000e-01, double 3.000000e-01, double -1.250000e+00, double -1.800000e-01, double -1.000000e-02, double 1.060000e+00, double 5.100000e-01, double 6.000000e-02, double -5.000000e-01, double -6.000000e-01, double 8.600000e-01, double 6.800000e-01, double 0x3FE7AE147AE147AE, double -2.220000e+00, double 4.400000e-01, double -1.380000e+00, double 7.300000e-01, double -1.130000e+00, double -1.140000e+00, double -1.120000e+00, double 5.100000e-01, double -6.300000e-01, double 1.310000e+00, double 3.200000e-01, double 0x3FB70A3D70A3D70A, double -1.440000e+00, double 3.000000e-02, double -5.000000e-02, double 3.000000e-02, double 8.100000e-01, double 1.040000e+00, double 1.400000e-01, double 4.900000e-01, double 4.200000e-01, double 3.000000e-01, double 9.100000e-01, double -6.700000e-01, double -2.320000e+00, double -6.000000e-01, double 7.900000e-01, double -1.040000e+00, double 1.400000e+00, double -2.900000e-01, double -1.390000e+00, double -7.300000e-01, double 5.300000e-01, double -4.900000e-01, double -2.800000e-01, double -4.200000e-01, double 3.500000e-01, double 1.270000e+00, double 0xBFB70A3D70A3D70A, double -1.180000e+00, double 0x3FEF5C28F5C28F5C, double 2.700000e-01, double 8.900000e-01, double -6.200000e-01, double 2.150000e+00, double -8.100000e-01, double -8.700000e-01, double -2.300000e-01, double -8.300000e-01, double 3.600000e-01, double -3.800000e-01, double 2.700000e-01, double -1.550000e+00, double -8.100000e-01, double -2.400000e-01, double 4.800000e-01, double -3.800000e-01, double 3.200000e-01, double 1.050000e+00, double -8.000000e-02, double -4.400000e-01, double -9.200000e-01, double 2.400000e-01, double -1.200000e-01, double 1.900000e-01, double 1.000000e-02, double 8.000000e-01, double 1.100000e-01, double 1.800000e-01, double 7.300000e-01, double 2.900000e-01, double 5.600000e-01, double -1.050000e+00, double 3.700000e-01, double 1.300000e+00, double 8.500000e-01, double -1.600000e+00, double 1.500000e-01, double -1.400000e-01, double 1.000000e-01, double 5.500000e-01, double -1.360000e+00, double 8.300000e-01, double 4.500000e-01, double 8.800000e-01, double 2.300000e-01, double 1.800000e-01, double -5.000000e-01, double 2.100000e-01, double 5.000000e-01, double -1.500000e-01, double 1.150000e+00, double -1.120000e+00, double -8.100000e-01, double -1.130000e+00, double -8.200000e-01, double 8.900000e-01, double 0xBFEFAE147AE147AE, double -4.200000e-01, double 1.080000e+00, double 0x3FE7AE147AE147AE, double -1.180000e+00, double -5.500000e-01, double 1.200000e-01, double 2.170000e+00, double 1.820000e+00, double -6.400000e-01, double -3.800000e-01, double -2.300000e-01, double -7.300000e-01, double 0xBFEF0A3D70A3D70A, double 5.800000e-01, double -4.800000e-01, double 0x3FEEB851EB851EB8, double 3.700000e-01, double 1.830000e+00, double -5.400000e-01, double 6.900000e-01, double -1.350000e+00, double 5.800000e-01, double 7.900000e-01, double 1.320000e+00, double -1.530000e+00, double 3.700000e-01, double -6.100000e-01, double 9.000000e-01, double 2.710000e+00, double 4.000000e-01, double -1.340000e+00, double 1.000000e-01, double 1.390000e+00, double 2.900000e-01, double -1.900000e-01, double -9.100000e-01, double -1.080000e+00, double 8.100000e-01, double 0.000000e+00, double 0xBFEE147AE147AE14, double -1.490000e+00, double -4.900000e-01, double -3.400000e-01, double 7.000000e-02, double 1.690000e+00, double -7.300000e-01, double -4.000000e-02, double 5.200000e-01, double -2.020000e+00, double -3.700000e-01, double 0xBFEF0A3D70A3D70A, double -7.100000e-01, double -7.800000e-01, double 2.500000e-01, double -1.630000e+00, double 7.600000e-01, double -2.120000e+00, double -5.000000e-01, double 9.300000e-01, double 4.300000e-01, double 1.700000e+00, double -1.920000e+00, double 7.500000e-01, double -9.100000e-01, double -4.000000e-01, double -4.600000e-01, double 7.700000e-01, double -1.380000e+00, double -3.300000e-01, double 1.400000e+00, double 5.300000e-01, double 1.620000e+00, double 2.500000e-01, double 3.700000e-01, double 5.400000e-01, double -6.000000e-02, double -8.400000e-01, double 7.500000e-01, double -1.880000e+00, double 4.900000e-01, double 1.100000e-01, double -1.700000e-01, double 1.160000e+00, double 6.700000e-01, double 8.700000e-01, double -1.740000e+00, double 3.000000e-02, double 1.540000e+00, double -1.580000e+00, double 3.500000e-01, double 7.900000e-01, double -1.300000e-01, double 0x3FE6666666666666, double -1.300000e-01, double -5.400000e-01, double -2.170000e+00, double -3.600000e-01, double -3.800000e-01, double 0xBFE7AE147AE147AE, double -1.010000e+00, double -1.200000e+00, double 4.300000e-01, double 6.000000e-01, double 1.100000e-01, double 7.600000e-01, double 4.300000e-01, double 0xBFE7AE147AE147AE, double -1.590000e+00, double 2.060000e+00, double -3.300000e-01, double -2.600000e-01, double 7.800000e-01, double -8.300000e-01, double -1.570000e+00, double 6.400000e-01, double 4.100000e-01, double -9.200000e-01, double -1.200000e+00, double -8.700000e-01, double 2.000000e-01, double 1.110000e+00, double -2.100000e-01, double 1.150000e+00, double 1.110000e+00, double -7.500000e-01, double 1.530000e+00, double 3.800000e-01, double -8.700000e-01, double 2.240000e+00, double -1.100000e-01, double 4.500000e-01, double 7.000000e-02, double 4.100000e-01, double 0xBFEFAE147AE147AE, double -7.100000e-01, double -3.400000e-01, double -1.160000e+00, double 7.600000e-01, double 2.100000e+00, double -2.240000e+00, double 1.650000e+00, double 2.900000e-01, double 0x3FE7AE147AE147AE, double -6.200000e-01, double 5.500000e-01, double 3.000000e-02, double -1.200000e-01, double -1.140000e+00, double -1.950000e+00, double -1.720000e+00, double 1.310000e+00, double 1.480000e+00, double 4.600000e-01, double -2.000000e-01, double 2.400000e-01, double -1.210000e+00, double 2.500000e-01, double 7.900000e-01, double -5.100000e-01, double -5.900000e-01, double 2.000000e-02, double 0x3FE6666666666666, double 7.700000e-01, double 1.160000e+00, double 1.110000e+00, double 2.730000e+00, double -1.540000e+00, double -1.260000e+00, double -4.000000e-02, double 3.900000e-01, double 6.000000e-01, double -8.600000e-01, double 2.300000e+00, double 5.900000e-01, double -8.500000e-01, double 1.600000e+00, double -2.000000e-02, double 1.030000e+00, double -8.000000e-02, double -7.300000e-01, double -2.300000e-01, double 1.600000e-01, double 1.000000e-02, double -1.060000e+00, double -1.100000e-01, double 9.300000e-01, double 5.900000e-01, double -1.940000e+00, double 3.300000e-01, double -1.250000e+00, double 1.000000e-02, double 1.400000e+00, double 1.070000e+00, double 3.600000e-01, double -1.410000e+00, double -3.600000e-01, double -2.100000e-01, double 1.600000e-01, double 0x3FE6666666666666, double 7.800000e-01, double 2.900000e-01, double -6.400000e-01, double 7.300000e-01, double -1.010000e+00, double -3.000000e-01, double 1.420000e+00, double -3.800000e-01, double 1.400000e-01, double -1.250000e+00, double -1.260000e+00, double 2.300000e-01, double -8.100000e-01, double 6.400000e-01, double -6.600000e-01, double -7.100000e-01, double -1.500000e-01, double -8.000000e-01, double 7.900000e-01, double 4.600000e-01, double 7.500000e-01, double 5.000000e-01, double -1.440000e+00, double -8.100000e-01, double 5.900000e-01, double 1.020000e+00, double 4.500000e-01, double -5.300000e-01, double -1.400000e+00, double -6.400000e-01, double 5.100000e-01, double 0xBFEFAE147AE147AE, double 1.000000e-02, double -1.520000e+00, double -1.400000e-01, double -2.500000e-01, double 1.810000e+00, double -1.160000e+00, double 6.600000e-01, double -1.000000e-01, double -5.400000e-01, double 3.000000e-01, double -1.050000e+00, double -1.300000e-01, double 1.540000e+00, double -5.600000e-01, double 1.410000e+00, double 1.000000e-02, double 2.700000e-01, double 0x3FEFAE147AE147AE, double 1.740000e+00, double -4.000000e-01, double -8.400000e-01, double 0x3FE70A3D70A3D70A, double 1.370000e+00, double 1.770000e+00, double 1.600000e-01, double 2.330000e+00, double 0xBFE6666666666666, double 1.640000e+00, double -1.800000e-01, double 4.600000e-01, double 2.330000e+00, double -1.350000e+00, double -3.800000e-01, double 4.100000e-01, double -1.830000e+00, double -7.300000e-01, double 2.000000e+00, double 7.600000e-01, double 5.800000e-01, double -8.100000e-01, double -1.800000e-01, double -8.500000e-01, double 1.700000e-01, double 6.500000e-01, double -3.900000e-01, double 1.370000e+00, double -4.000000e-02, double 8.600000e-01, double 1.110000e+00, double -1.600000e-01, double -8.000000e-01, double -4.700000e-01, double -1.590000e+00, double 0xBFB70A3D70A3D70A, double -1.210000e+00, double -2.300000e+00, double -2.700000e+00, double -1.570000e+00, double -1.200000e-01, double 1.390000e+00, double -7.900000e-01, double 1.870000e+00, double 9.000000e-01, double 2.900000e-01, double 8.800000e-01, double -6.800000e-01, double 2.900000e-01, double -1.150000e+00, double -3.200000e-01, double 1.400000e-01, double -3.100000e-01, double -3.000000e-01, double -6.200000e-01, double 1.300000e-01, double -3.300000e-01, double 6.000000e-01, double -1.120000e+00, double 5.000000e-02, double 1.300000e-01, double 9.100000e-01, double -8.500000e-01, double 7.500000e-01, double -5.400000e-01, double -3.300000e-01, double 3.900000e-01, double 1.380000e+00, double -3.300000e-01, double 5.100000e-01, double 1.890000e+00, double 1.020000e+00, double 3.800000e-01, double 3.700000e-01, double 3.500000e-01, double -1.000000e-01, double 6.900000e-01, double 4.000000e-02, double 1.000000e-02, double -8.900000e-01, double -9.000000e-01, double -1.080000e+00, double 2.000000e-02, double -1.270000e+00, double -9.200000e-01, double 1.170000e+00, double -6.600000e-01, double 6.200000e-01, double 1.000000e-02, double -9.300000e-01, double 1.010000e+00, double 4.100000e-01, double -2.900000e-01, double 1.010000e+00, double 1.000000e-02, double -8.500000e-01, double 6.500000e-01, double -9.000000e-01, double 1.090000e+00, double -2.000000e-01, double 1.500000e-01, double 2.720000e+00, double -6.600000e-01, double 5.700000e-01, double 8.200000e-01, double -5.000000e-01, double 7.600000e-01, double 2.000000e-01, double 6.300000e-01, double -3.500000e-01, double -5.200000e-01, double 4.300000e-01, double 1.990000e+00, double 1.850000e+00, double 3.500000e-01, double -1.560000e+00, double 6.900000e-01, double 1.070000e+00, double 1.900000e-01, double -5.100000e-01, double 2.900000e-01, double 2.200000e-01, double -8.300000e-01, double -2.000000e-01, double 0x3FE70A3D70A3D70A, double 1.520000e+00, double -1.220000e+00, double -6.800000e-01, double -1.450000e+00, double -5.000000e-01, double -1.270000e+00, double 3.300000e-01, double 4.600000e-01, double 4.200000e-01, double 2.300000e-01, double -2.220000e+00, double 2.000000e-01, double 2.050000e+00, double 1.300000e+00, double 1.600000e-01, double 7.900000e-01, double 1.800000e+00, double -9.300000e-01, double -2.100000e-01, double -5.400000e-01, double 1.600000e-01, double -1.600000e-01, double 7.100000e-01, double -6.000000e-02, double -4.600000e-01, double -3.100000e-01, double 1.670000e+00, double -1.800000e-01, double 4.300000e-01, double -1.560000e+00]
@__const.main.active = [5 x i32] [i32 1, i32 1, i32 0, i32 0, i32 1]
@__const.main.active2 = [20 x i32] [i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1]
@.str = [19 x i8] c"%d %.3f %.3f %.3f\0A\00"
@.str.1 = [13 x i8] c"%d\09%d\09%d\09%d\0A\00"
@EXIT_SUCCESS = global i32 0
define i32 @main() {
%1 = alloca i32
%2 = alloca i32
%3 = alloca double*
%4 = alloca [25 x double]
%5 = alloca [15 x double]
%6 = alloca [1000 x double]
%7 = alloca [5 x i32]
%8 = alloca i32
%9 = alloca [20 x i32]
%10 = alloca [20 x i32]
store i32 0, i32* %1
%11 = call double* @malloc(i32 120)
store double* %11, double** %3
%12 = bitcast [25 x double]* %4 to i8*
%13 = bitcast [15 x double]* %5 to i8*
%14 = bitcast [1000 x double]* %6 to i8*
%15 = bitcast [5 x i32]* %7 to i8*
store i32 3, i32* %8
%16 = bitcast [20 x i32]* %9 to i8*
%17 = bitcast [20 x i32]* %10 to i8*
%18 = bitcast i8* %17 to [20 x i32]*
%19 = getelementptr inbounds [20 x i32], [20 x i32]* %18, i32 0, i32 0
store i32 1, i32* %19
%20 = getelementptr inbounds [20 x i32], [20 x i32]* %18, i32 0, i32 6
store i32 1, i32* %20
%21 = getelementptr inbounds [20 x i32], [20 x i32]* %18, i32 0, i32 10
store i32 1, i32* %21
%22 = getelementptr inbounds [20 x i32], [20 x i32]* %18, i32 0, i32 15
store i32 1, i32* %22
%23 = getelementptr inbounds [25 x double], [25 x double]* %4, i64 0, i64 0
%24 = load double*, double** %3
%25 = getelementptr inbounds [5 x i32], [5 x i32]* %7, i64 0, i64 0
%26 = load i32, i32* %8
%27 = call i32 @copyshrink(double* %23, double* %24, i32 5, i32 5, i32* %25, i32 %26)
store i32 0, i32* %2
br label %28
28: ; preds = %56, %0
%29 = load i32, i32* %2
%30 = icmp slt i32 %29, 9
br i1 %30, label %31, label %59
31: ; preds = %28
%32 = load i32, i32* %2
%33 = load i32, i32* %2
%34 = sext i32 %33 to i64
%35 = getelementptr inbounds [15 x double], [15 x double]* %5, i64 0, i64 %34
%36 = load double, double* %35
%37 = fptosi double %36 to i32
%38 = load double*, double** %3
%39 = load i32, i32* %2
%40 = sext i32 %39 to i64
%41 = getelementptr inbounds double, double* %38, i64 %40
%42 = load double, double* %41
%43 = fptosi double %42 to i32
%44 = load i32, i32* %2
%45 = sext i32 %44 to i64
%46 = getelementptr inbounds [15 x double], [15 x double]* %5, i64 0, i64 %45
%47 = load double, double* %46
%48 = load double*, double** %3
%49 = load i32, i32* %2
%50 = sext i32 %49 to i64
%51 = getelementptr inbounds double, double* %48, i64 %50
%52 = load double, double* %51
%53 = fsub double %47, %52
%54 = fptosi double %53 to i32
%55 = call i32 @printf(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str, i64 0, i64 0), i32 %32, i32 %37, i32 %43, i32 %54)
br label %56
56: ; preds = %31
%57 = load i32, i32* %2
%58 = add nsw i32 %57, 1
store i32 %58, i32* %2
br label %28
59: ; preds = %28
%60 = getelementptr inbounds [1000 x double], [1000 x double]* %6, i64 0, i64 0
%61 = getelementptr inbounds [20 x i32], [20 x i32]* %9, i64 0, i64 0
%62 = call i32 @thin(double* %60, i32 50, i32 20, i32* %61, double 1.000000e-01, i32 8, i32 5)
store i32 0, i32* %2
br label %63
63: ; preds = %86, %59
%64 = load i32, i32* %2
%65 = icmp slt i32 %64, 20
br i1 %65, label %66, label %89
66: ; preds = %63
%67 = load i32, i32* %2
%68 = load i32, i32* %2
%69 = sext i32 %68 to i64
%70 = getelementptr inbounds [20 x i32], [20 x i32]* %10, i64 0, i64 %69
%71 = load i32, i32* %70
%72 = load i32, i32* %2
%73 = sext i32 %72 to i64
%74 = getelementptr inbounds [20 x i32], [20 x i32]* %9, i64 0, i64 %73
%75 = load i32, i32* %74
%76 = load i32, i32* %2
%77 = sext i32 %76 to i64
%78 = getelementptr inbounds [20 x i32], [20 x i32]* %10, i64 0, i64 %77
%79 = load i32, i32* %78
%80 = load i32, i32* %2
%81 = sext i32 %80 to i64
%82 = getelementptr inbounds [20 x i32], [20 x i32]* %9, i64 0, i64 %81
%83 = load i32, i32* %82
%84 = sub nsw i32 %79, %83
%85 = call i32 @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.1, i64 0, i64 0), i32 %67, i32 %71, i32 %75, i32 %84)
br label %86
86: ; preds = %66
%87 = load i32, i32* %2
%88 = add nsw i32 %87, 1
store i32 %88, i32* %2
br label %63
89: ; preds = %63
%90 = load double*, double** %3
%91 = call i32 @free(double* %90)
%92 = load i32, i32* @EXIT_SUCCESS
ret i32 %92
}

LLVM IR (-O2):
@__const.main.x = [25 x double] [double 0xBFEA76C8B4395810, double 0xBFE72B020C49BA5E, double -1.278000e+00, double 0xBFEA45A1CAC08312, double -2.300000e+00, double -5.660000e-01, double -1.230000e-01, double 2.960000e-01, double 0xBFB7CED916872B02, double 0xBFE3CED916872B02, double 1.602000e+00, double 6.500000e-02, double -5.490000e-01, double 0xBFEB5C28F5C28F5C, double 5.500000e-02, double -2.450000e-01, double -1.652000e+00, double 5.470000e-01, double 2.340000e-01, double 9.080000e-01, double -7.070000e-01, double 1.665000e+00, double 1.670000e-01, double -2.399000e+00, double 0xBFEF2B020C49BA5E]
@__const.main.x2 = [1000 x double] [double -4.600000e-01, double -7.600000e-01, double -1.090000e+00, double -8.000000e-02, double 1.000000e-02, double 0x3FE7AE147AE147AE, double 1.000000e+00, double 2.660000e+00, double -1.080000e+00, double 2.030000e+00, double 8.600000e-01, double 1.650000e+00, double -1.380000e+00, double -3.300000e-01, double 6.600000e-01, double -6.400000e-01, double 1.790000e+00, double -7.300000e-01, double -1.100000e+00, double -1.310000e+00, double 1.060000e+00, double 7.300000e-01, double -1.700000e-01, double 2.000000e-02, double 1.170000e+00, double 1.200000e-01, double 1.100000e-01, double -1.800000e-01, double -4.900000e-01, double 4.600000e-01, double -1.010000e+00, double -6.200000e-01, double -4.000000e-01, double 1.200000e-01, double 8.000000e-02, double 2.700000e-01, double 1.940000e+00, double -9.100000e-01, double -7.600000e-01, double 9.000000e-01, double 8.800000e-01, double -5.800000e-01, double -8.800000e-01, double 3.700000e-01, double 4.900000e-01, double 7.300000e-01, double 7.500000e-01, double -1.220000e+00, double -2.600000e-01, double 8.000000e-02, double -4.800000e-01, double 2.200000e-01, double 3.600000e-01, double -1.590000e+00, double -1.400000e+00, double 1.610000e+00, double -3.000000e-02, double 2.800000e-01, double -7.500000e-01, double 5.300000e-01, double 0x3FEE666666666666, double -5.700000e-01, double 0xBFEF0A3D70A3D70A, double 4.300000e-01, double -1.990000e+00, double -1.600000e-01, double 1.010000e+00, double -3.300000e-01, double -5.900000e-01, double 4.900000e-01, double -6.200000e-01, double -7.600000e-01, double 2.100000e-01, double -3.900000e-01, double 0x3FE7AE147AE147AE, double -5.000000e-01, double 1.340000e+00, double 7.000000e-02, double -3.000000e-01, double -3.600000e-01, double 2.300000e-01, double 5.500000e-01, double -2.800000e-01, double 5.600000e-01, double 2.140000e+00, double 1.000000e-02, double -1.120000e+00, double 1.870000e+00, double 2.700000e-01, double -8.500000e-01, double -6.600000e-01, double 3.300000e-01, double -1.040000e+00, double 1.010000e+00, double 8.700000e-01, double 1.300000e-01, double 1.050000e+00, double 4.300000e-01, double -2.300000e-01, double 3.400000e-01, double 2.600000e-01, double 1.830000e+00, double -6.500000e-01, double -5.600000e-01, double 6.600000e-01, double 1.620000e+00, double 2.300000e-01, double -7.700000e-01, double 1.870000e+00, double -2.500000e-01, double 7.600000e-01, double -1.070000e+00, double 6.200000e-01, double -3.400000e-01, double 1.700000e-01, double 4.300000e-01, double -8.000000e-01, double 9.200000e-01, double 3.000000e-01, double 1.500000e-01, double 8.300000e-01, double -2.080000e+00, double 1.500000e-01, double -8.100000e-01, double 0x3FEF5C28F5C28F5C, double -4.000000e-02, double 1.040000e+00, double 0xBFEFAE147AE147AE, double -4.800000e-01, double 5.400000e-01, double 1.410000e+00, double -4.400000e-01, double -5.800000e-01, double -7.000000e-02, double -1.100000e-01, double 1.770000e+00, double 0x3FEE147AE147AE14, double -7.700000e-01, double -4.600000e-01, double 8.000000e-01, double -1.500000e-01, double 5.600000e-01, double -2.490000e+00, double 4.500000e-01, double 2.600000e-01, double -1.100000e+00, double 4.400000e-01, double -4.500000e-01, double -2.700000e-01, double 3.700000e-01, double 4.700000e-01, double -4.900000e-01, double -1.300000e-01, double 8.500000e-01, double 5.500000e-01, double 6.800000e-01, double 1.310000e+00, double 4.300000e-01, double -5.300000e-01, double -1.290000e+00, double 1.160000e+00, double -1.010000e+00, double 5.700000e-01, double 1.200000e+00, double -1.210000e+00, double -1.110000e+00, double 2.600000e-01, double -8.500000e-01, double -4.100000e-01, double -2.420000e+00, double 1.110000e+00, double -3.600000e-01, double 1.600000e+00, double 6.000000e-01, double -1.000000e-02, double 2.390000e+00, double 3.500000e-01, double -5.100000e-01, double 8.000000e-02, double 3.300000e-01, double 0xBFEF0A3D70A3D70A, double 5.500000e-01, double -7.700000e-01, double -1.080000e+00, double -6.500000e-01, double 0xBFEF0A3D70A3D70A, double -1.650000e+00, double -3.900000e-01, double 8.600000e-01, double 1.310000e+00, double 1.280000e+00, double -1.020000e+00, double 6.300000e-01, double 1.270000e+00, double -8.000000e-01, double 2.800000e-01, double -2.800000e-01, double -4.200000e-01, double 5.500000e-01, double -8.000000e-01, double 4.800000e-01, double -1.980000e+00, double 1.440000e+00, double -2.000000e+00, double 1.500000e-01, double -1.690000e+00, double 2.600000e-01, double -2.800000e-01, double -8.000000e-02, double -8.900000e-01, double -4.200000e-01, double -4.300000e-01, double -1.600000e-01, double 1.900000e-01, double 1.200000e-01, double -1.900000e-01, double -6.400000e-01, double 0xBFB70A3D70A3D70A, double 7.900000e-01, double 2.420000e+00, double 6.200000e-01, double -1.030000e+00, double 1.710000e+00, double -2.230000e+00, double -1.330000e+00, double 1.330000e+00, double 1.520000e+00, double 2.300000e-01, double 2.400000e-01, double -2.400000e-01, double -5.800000e-01, double -8.400000e-01, double -1.080000e+00, double 7.500000e-01, double -3.200000e-01, double -3.800000e-01, double -2.200000e-01, double 1.530000e+00, double -5.300000e-01, double 1.200000e-01, double -6.000000e-02, double -1.940000e+00, double -1.200000e+00, double -4.300000e-01, double 0x3FEEB851EB851EB8, double -2.200000e-01, double -3.400000e-01, double -2.000000e-01, double -1.210000e+00, double 2.000000e-01, double 6.300000e-01, double 1.060000e+00, double 3.900000e-01, double 0x3FE6666666666666, double 3.900000e-01, double -3.300000e-01, double -1.210000e+00, double 0x3FEE666666666666, double -1.080000e+00, double -4.500000e-01, double 6.700000e-01, double 4.300000e-01, double -1.510000e+00, double -1.330000e+00, double -5.000000e-01, double -4.200000e-01, double -7.300000e-01, double -4.100000e-01, double 0xBFEF0A3D70A3D70A, double -1.320000e+00, double 2.400000e-01, double 1.100000e-01, double -3.100000e-01, double -2.200000e-01, double 1.180000e+00, double 2.700000e-01, double -2.200000e-01, double -1.670000e+00, double -1.100000e-01, double 1.760000e+00, double -7.000000e-02, double -1.270000e+00, double 7.500000e-01, double 1.300000e-01, double -1.000000e-02, double 1.420000e+00, double -8.300000e-01, double -9.000000e-01, double -8.600000e-01, double -6.000000e-01, double -4.600000e-01, double 1.400000e-01, double 5.100000e-01, double 1.650000e+00, double -5.000000e-02, double 6.000000e-02, double 1.160000e+00, double 0x3FEE147AE147AE14, double -1.870000e+00, double 1.400000e-01, double -5.900000e-01, double -1.400000e-01, double -6.100000e-01, double 1.300000e+00, double -1.060000e+00, double 7.900000e-01, double 4.800000e-01, double -1.100000e-01, double -1.210000e+00, double -2.800000e-01, double 6.000000e-02, double -3.500000e-01, double 3.600000e-01, double 1.080000e+00, double -4.700000e-01, double 1.130000e+00, double 4.000000e-02, double 1.590000e+00, double -6.700000e-01, double 9.300000e-01, double 7.600000e-01, double -2.660000e+00, double 6.300000e-01, double -5.200000e-01, double 8.800000e-01, double -3.100000e-01, double -1.690000e+00, double 1.860000e+00, double -1.600000e-01, double -2.900000e-01, double -5.300000e-01, double 9.000000e-01, double -5.000000e-02, double 5.400000e-01, double -6.400000e-01, double -6.100000e-01, double 5.200000e-01, double -6.100000e-01, double 2.000000e-01, double -1.040000e+00, double -4.100000e-01, double -6.900000e-01, double -1.290000e+00, double -2.100000e-01, double -6.400000e-01, double 8.500000e-01, double 3.400000e-01, double -2.080000e+00, double -3.100000e-01, double 2.220000e+00, double -8.000000e-02, double -1.130000e+00, double -4.000000e-01, double 5.000000e-02, double 3.000000e-01, double 6.500000e-01, double -3.700000e-01, double 8.500000e-01, double -2.670000e+00, double 4.000000e-02, double -6.400000e-01, double 4.000000e-01, double -2.200000e-01, double 2.000000e-02, double 1.700000e+00, double -4.200000e-01, double 7.600000e-01, double -3.000000e-02, double -4.000000e-02, double -8.600000e-01, double 1.060000e+00, double -5.400000e-01, double -1.350000e+00, double 6.600000e-01, double 0x3FB70A3D70A3D70A, double -3.000000e-01, double -3.000000e-02, double 2.600000e-01, double 2.100000e-01, double -1.000000e+00, double 1.150000e+00, double -1.000000e+00, double -1.530000e+00, double -3.800000e-01, double 1.770000e+00, double -6.700000e-01, double -2.700000e-01, double -6.800000e-01, double -3.000000e-02, double -3.900000e-01, double 1.510000e+00, double -2.700000e-01, double -2.800000e-01, double 4.700000e-01, double 0x3FE7AE147AE147AE, double 1.010000e+00, double 5.700000e-01, double 4.400000e-01, double -1.550000e+00, double -1.400000e+00, double 5.800000e-01, double 1.400000e-01, double -1.670000e+00, double -1.120000e+00, double 0xBFE7AE147AE147AE, double -2.100000e-01, double 6.900000e-01, double 7.600000e-01, double 7.800000e-01, double 8.600000e-01, double 4.000000e-02, double 1.450000e+00, double -1.530000e+00, double 3.200000e-01, double -1.720000e+00, double 1.100000e+00, double 1.660000e+00, double 1.070000e+00, double -1.010000e+00, double 1.000000e+00, double 2.900000e-01, double 2.400000e-01, double -6.100000e-01, double 8.400000e-01, double -9.300000e-01, double 2.280000e+00, double -7.500000e-01, double -3.000000e-02, double -1.130000e+00, double -1.230000e+00, double 1.320000e+00, double -6.300000e-01, double 6.000000e-02, double -1.450000e+00, double -2.280000e+00, double -1.980000e+00, double -1.440000e+00, double 0x3FE7AE147AE147AE, double -7.800000e-01, double -6.100000e-01, double -3.000000e-02, double -2.200000e-01, double -1.430000e+00, double 1.240000e+00, double -1.700000e-01, double -4.500000e-01, double -4.900000e-01, double -4.500000e-01, double 2.050000e+00, double -5.000000e-01, double -1.400000e-01, double 5.900000e-01, double -1.660000e+00, double 1.630000e+00, double -8.800000e-01, double 1.450000e+00, double -5.000000e-01, double -2.070000e+00, double -1.700000e+00, double 3.400000e-01, double -5.400000e-01, double 3.300000e-01, double -3.500000e-01, double 1.400000e-01, double -2.000000e-02, double -1.010000e+00, double 0x3FE6666666666666, double -5.800000e-01, double 1.440000e+00, double 5.200000e-01, double 1.700000e-01, double 5.300000e-01, double -1.570000e+00, double 9.300000e-01, double -9.200000e-01, double 2.000000e-01, double -1.720000e+00, double -6.600000e-01, double 0xBFEE666666666666, double -1.570000e+00, double 1.530000e+00, double 7.500000e-01, double -1.000000e-02, double 5.400000e-01, double 2.000000e-01, double 8.300000e-01, double 3.000000e-01, double -1.250000e+00, double -1.800000e-01, double -1.000000e-02, double 1.060000e+00, double 5.100000e-01, double 6.000000e-02, double -5.000000e-01, double -6.000000e-01, double 8.600000e-01, double 6.800000e-01, double 0x3FE7AE147AE147AE, double -2.220000e+00, double 4.400000e-01, double -1.380000e+00, double 7.300000e-01, double -1.130000e+00, double -1.140000e+00, double -1.120000e+00, double 5.100000e-01, double -6.300000e-01, double 1.310000e+00, double 3.200000e-01, double 0x3FB70A3D70A3D70A, double -1.440000e+00, double 3.000000e-02, double -5.000000e-02, double 3.000000e-02, double 8.100000e-01, double 1.040000e+00, double 1.400000e-01, double 4.900000e-01, double 4.200000e-01, double 3.000000e-01, double 9.100000e-01, double -6.700000e-01, double -2.320000e+00, double -6.000000e-01, double 7.900000e-01, double -1.040000e+00, double 1.400000e+00, double -2.900000e-01, double -1.390000e+00, double -7.300000e-01, double 5.300000e-01, double -4.900000e-01, double -2.800000e-01, double -4.200000e-01, double 3.500000e-01, double 1.270000e+00, double 0xBFB70A3D70A3D70A, double -1.180000e+00, double 0x3FEF5C28F5C28F5C, double 2.700000e-01, double 8.900000e-01, double -6.200000e-01, double 2.150000e+00, double -8.100000e-01, double -8.700000e-01, double -2.300000e-01, double -8.300000e-01, double 3.600000e-01, double -3.800000e-01, double 2.700000e-01, double -1.550000e+00, double -8.100000e-01, double -2.400000e-01, double 4.800000e-01, double -3.800000e-01, double 3.200000e-01, double 1.050000e+00, double -8.000000e-02, double -4.400000e-01, double -9.200000e-01, double 2.400000e-01, double -1.200000e-01, double 1.900000e-01, double 1.000000e-02, double 8.000000e-01, double 1.100000e-01, double 1.800000e-01, double 7.300000e-01, double 2.900000e-01, double 5.600000e-01, double -1.050000e+00, double 3.700000e-01, double 1.300000e+00, double 8.500000e-01, double -1.600000e+00, double 1.500000e-01, double -1.400000e-01, double 1.000000e-01, double 5.500000e-01, double -1.360000e+00, double 8.300000e-01, double 4.500000e-01, double 8.800000e-01, double 2.300000e-01, double 1.800000e-01, double -5.000000e-01, double 2.100000e-01, double 5.000000e-01, double -1.500000e-01, double 1.150000e+00, double -1.120000e+00, double -8.100000e-01, double -1.130000e+00, double -8.200000e-01, double 8.900000e-01, double 0xBFEFAE147AE147AE, double -4.200000e-01, double 1.080000e+00, double 0x3FE7AE147AE147AE, double -1.180000e+00, double -5.500000e-01, double 1.200000e-01, double 2.170000e+00, double 1.820000e+00, double -6.400000e-01, double -3.800000e-01, double -2.300000e-01, double -7.300000e-01, double 0xBFEF0A3D70A3D70A, double 5.800000e-01, double -4.800000e-01, double 0x3FEEB851EB851EB8, double 3.700000e-01, double 1.830000e+00, double -5.400000e-01, double 6.900000e-01, double -1.350000e+00, double 5.800000e-01, double 7.900000e-01, double 1.320000e+00, double -1.530000e+00, double 3.700000e-01, double -6.100000e-01, double 9.000000e-01, double 2.710000e+00, double 4.000000e-01, double -1.340000e+00, double 1.000000e-01, double 1.390000e+00, double 2.900000e-01, double -1.900000e-01, double -9.100000e-01, double -1.080000e+00, double 8.100000e-01, double 0.000000e+00, double 0xBFEE147AE147AE14, double -1.490000e+00, double -4.900000e-01, double -3.400000e-01, double 7.000000e-02, double 1.690000e+00, double -7.300000e-01, double -4.000000e-02, double 5.200000e-01, double -2.020000e+00, double -3.700000e-01, double 0xBFEF0A3D70A3D70A, double -7.100000e-01, double -7.800000e-01, double 2.500000e-01, double -1.630000e+00, double 7.600000e-01, double -2.120000e+00, double -5.000000e-01, double 9.300000e-01, double 4.300000e-01, double 1.700000e+00, double -1.920000e+00, double 7.500000e-01, double -9.100000e-01, double -4.000000e-01, double -4.600000e-01, double 7.700000e-01, double -1.380000e+00, double -3.300000e-01, double 1.400000e+00, double 5.300000e-01, double 1.620000e+00, double 2.500000e-01, double 3.700000e-01, double 5.400000e-01, double -6.000000e-02, double -8.400000e-01, double 7.500000e-01, double -1.880000e+00, double 4.900000e-01, double 1.100000e-01, double -1.700000e-01, double 1.160000e+00, double 6.700000e-01, double 8.700000e-01, double -1.740000e+00, double 3.000000e-02, double 1.540000e+00, double -1.580000e+00, double 3.500000e-01, double 7.900000e-01, double -1.300000e-01, double 0x3FE6666666666666, double -1.300000e-01, double -5.400000e-01, double -2.170000e+00, double -3.600000e-01, double -3.800000e-01, double 0xBFE7AE147AE147AE, double -1.010000e+00, double -1.200000e+00, double 4.300000e-01, double 6.000000e-01, double 1.100000e-01, double 7.600000e-01, double 4.300000e-01, double 0xBFE7AE147AE147AE, double -1.590000e+00, double 2.060000e+00, double -3.300000e-01, double -2.600000e-01, double 7.800000e-01, double -8.300000e-01, double -1.570000e+00, double 6.400000e-01, double 4.100000e-01, double -9.200000e-01, double -1.200000e+00, double -8.700000e-01, double 2.000000e-01, double 1.110000e+00, double -2.100000e-01, double 1.150000e+00, double 1.110000e+00, double -7.500000e-01, double 1.530000e+00, double 3.800000e-01, double -8.700000e-01, double 2.240000e+00, double -1.100000e-01, double 4.500000e-01, double 7.000000e-02, double 4.100000e-01, double 0xBFEFAE147AE147AE, double -7.100000e-01, double -3.400000e-01, double -1.160000e+00, double 7.600000e-01, double 2.100000e+00, double -2.240000e+00, double 1.650000e+00, double 2.900000e-01, double 0x3FE7AE147AE147AE, double -6.200000e-01, double 5.500000e-01, double 3.000000e-02, double -1.200000e-01, double -1.140000e+00, double -1.950000e+00, double -1.720000e+00, double 1.310000e+00, double 1.480000e+00, double 4.600000e-01, double -2.000000e-01, double 2.400000e-01, double -1.210000e+00, double 2.500000e-01, double 7.900000e-01, double -5.100000e-01, double -5.900000e-01, double 2.000000e-02, double 0x3FE6666666666666, double 7.700000e-01, double 1.160000e+00, double 1.110000e+00, double 2.730000e+00, double -1.540000e+00, double -1.260000e+00, double -4.000000e-02, double 3.900000e-01, double 6.000000e-01, double -8.600000e-01, double 2.300000e+00, double 5.900000e-01, double -8.500000e-01, double 1.600000e+00, double -2.000000e-02, double 1.030000e+00, double -8.000000e-02, double -7.300000e-01, double -2.300000e-01, double 1.600000e-01, double 1.000000e-02, double -1.060000e+00, double -1.100000e-01, double 9.300000e-01, double 5.900000e-01, double -1.940000e+00, double 3.300000e-01, double -1.250000e+00, double 1.000000e-02, double 1.400000e+00, double 1.070000e+00, double 3.600000e-01, double -1.410000e+00, double -3.600000e-01, double -2.100000e-01, double 1.600000e-01, double 0x3FE6666666666666, double 7.800000e-01, double 2.900000e-01, double -6.400000e-01, double 7.300000e-01, double -1.010000e+00, double -3.000000e-01, double 1.420000e+00, double -3.800000e-01, double 1.400000e-01, double -1.250000e+00, double -1.260000e+00, double 2.300000e-01, double -8.100000e-01, double 6.400000e-01, double -6.600000e-01, double -7.100000e-01, double -1.500000e-01, double -8.000000e-01, double 7.900000e-01, double 4.600000e-01, double 7.500000e-01, double 5.000000e-01, double -1.440000e+00, double -8.100000e-01, double 5.900000e-01, double 1.020000e+00, double 4.500000e-01, double -5.300000e-01, double -1.400000e+00, double -6.400000e-01, double 5.100000e-01, double 0xBFEFAE147AE147AE, double 1.000000e-02, double -1.520000e+00, double -1.400000e-01, double -2.500000e-01, double 1.810000e+00, double -1.160000e+00, double 6.600000e-01, double -1.000000e-01, double -5.400000e-01, double 3.000000e-01, double -1.050000e+00, double -1.300000e-01, double 1.540000e+00, double -5.600000e-01, double 1.410000e+00, double 1.000000e-02, double 2.700000e-01, double 0x3FEFAE147AE147AE, double 1.740000e+00, double -4.000000e-01, double -8.400000e-01, double 0x3FE70A3D70A3D70A, double 1.370000e+00, double 1.770000e+00, double 1.600000e-01, double 2.330000e+00, double 0xBFE6666666666666, double 1.640000e+00, double -1.800000e-01, double 4.600000e-01, double 2.330000e+00, double -1.350000e+00, double -3.800000e-01, double 4.100000e-01, double -1.830000e+00, double -7.300000e-01, double 2.000000e+00, double 7.600000e-01, double 5.800000e-01, double -8.100000e-01, double -1.800000e-01, double -8.500000e-01, double 1.700000e-01, double 6.500000e-01, double -3.900000e-01, double 1.370000e+00, double -4.000000e-02, double 8.600000e-01, double 1.110000e+00, double -1.600000e-01, double -8.000000e-01, double -4.700000e-01, double -1.590000e+00, double 0xBFB70A3D70A3D70A, double -1.210000e+00, double -2.300000e+00, double -2.700000e+00, double -1.570000e+00, double -1.200000e-01, double 1.390000e+00, double -7.900000e-01, double 1.870000e+00, double 9.000000e-01, double 2.900000e-01, double 8.800000e-01, double -6.800000e-01, double 2.900000e-01, double -1.150000e+00, double -3.200000e-01, double 1.400000e-01, double -3.100000e-01, double -3.000000e-01, double -6.200000e-01, double 1.300000e-01, double -3.300000e-01, double 6.000000e-01, double -1.120000e+00, double 5.000000e-02, double 1.300000e-01, double 9.100000e-01, double -8.500000e-01, double 7.500000e-01, double -5.400000e-01, double -3.300000e-01, double 3.900000e-01, double 1.380000e+00, double -3.300000e-01, double 5.100000e-01, double 1.890000e+00, double 1.020000e+00, double 3.800000e-01, double 3.700000e-01, double 3.500000e-01, double -1.000000e-01, double 6.900000e-01, double 4.000000e-02, double 1.000000e-02, double -8.900000e-01, double -9.000000e-01, double -1.080000e+00, double 2.000000e-02, double -1.270000e+00, double -9.200000e-01, double 1.170000e+00, double -6.600000e-01, double 6.200000e-01, double 1.000000e-02, double -9.300000e-01, double 1.010000e+00, double 4.100000e-01, double -2.900000e-01, double 1.010000e+00, double 1.000000e-02, double -8.500000e-01, double 6.500000e-01, double -9.000000e-01, double 1.090000e+00, double -2.000000e-01, double 1.500000e-01, double 2.720000e+00, double -6.600000e-01, double 5.700000e-01, double 8.200000e-01, double -5.000000e-01, double 7.600000e-01, double 2.000000e-01, double 6.300000e-01, double -3.500000e-01, double -5.200000e-01, double 4.300000e-01, double 1.990000e+00, double 1.850000e+00, double 3.500000e-01, double -1.560000e+00, double 6.900000e-01, double 1.070000e+00, double 1.900000e-01, double -5.100000e-01, double 2.900000e-01, double 2.200000e-01, double -8.300000e-01, double -2.000000e-01, double 0x3FE70A3D70A3D70A, double 1.520000e+00, double -1.220000e+00, double -6.800000e-01, double -1.450000e+00, double -5.000000e-01, double -1.270000e+00, double 3.300000e-01, double 4.600000e-01, double 4.200000e-01, double 2.300000e-01, double -2.220000e+00, double 2.000000e-01, double 2.050000e+00, double 1.300000e+00, double 1.600000e-01, double 7.900000e-01, double 1.800000e+00, double -9.300000e-01, double -2.100000e-01, double -5.400000e-01, double 1.600000e-01, double -1.600000e-01, double 7.100000e-01, double -6.000000e-02, double -4.600000e-01, double -3.100000e-01, double 1.670000e+00, double -1.800000e-01, double 4.300000e-01, double -1.560000e+00]
@__const.main.active = [5 x i32] [i32 1, i32 1, i32 0, i32 0, i32 1]
@__const.main.active2 = [20 x i32] [i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1]
@.str = [19 x i8] c"%d %.3f %.3f %.3f\0A\00"
@.str.1 = [13 x i8] c"%d\09%d\09%d\09%d\0A\00"
@EXIT_SUCCESS = global i32 0
define i32 @main() {
%1 = alloca [25 x double]
%2 = alloca [1000 x double]
%3 = alloca [5 x i32]
%4 = alloca [20 x i32]
%5 = alloca [20 x i32]
%6 = tail call double* @malloc(i32 120)
%7 = bitcast [25 x double]* %1 to i8*
%8 = bitcast [1000 x double]* %2 to i8*
%9 = bitcast [5 x i32]* %3 to i8*
%10 = bitcast [20 x i32]* %4 to i8*
%11 = bitcast [20 x i32]* %5 to i8*
%12 = getelementptr inbounds [20 x i32], [20 x i32]* %5, i64 0, i64 0
store i32 1, i32* %12
%13 = getelementptr inbounds [20 x i32], [20 x i32]* %5, i64 0, i64 6
store i32 1, i32* %13
%14 = getelementptr inbounds [20 x i32], [20 x i32]* %5, i64 0, i64 10
store i32 1, i32* %14
%15 = getelementptr inbounds [20 x i32], [20 x i32]* %5, i64 0, i64 15
store i32 1, i32* %15
%16 = getelementptr inbounds [25 x double], [25 x double]* %1, i64 0, i64 0
%17 = getelementptr inbounds [5 x i32], [5 x i32]* %3, i64 0, i64 0
%18 = call i32 @copyshrink(double* %16, double* %6, i32 5, i32 5, i32* %17, i32 3)
%19 = load double, double* %6
%20 = fptosi double %19 to i32
%21 = fsub double 0xBFEA76C8B4395810, %19
%22 = fptosi double %21 to i32
%23 = call i32 @printf(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str, i64 0, i64 0), i32 0, i32 0, i32 %20, i32 %22)
%24 = getelementptr inbounds double, double* %6, i64 1
%25 = load double, double* %24
%26 = fptosi double %25 to i32
%27 = fsub double 0xBFE72B020C49BA5E, %25
%28 = fptosi double %27 to i32
%29 = call i32 @printf(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str, i64 0, i64 0), i32 1, i32 0, i32 %26, i32 %28)
%30 = getelementptr inbounds double, double* %6, i64 2
%31 = load double, double* %30
%32 = fptosi double %31 to i32
%33 = fsub double -2.300000e+00, %31
%34 = fptosi double %33 to i32
%35 = call i32 @printf(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str, i64 0, i64 0), i32 2, i32 -2, i32 %32, i32 %34)
%36 = getelementptr inbounds double, double* %6, i64 3
%37 = load double, double* %36
%38 = fptosi double %37 to i32
%39 = fsub double -5.660000e-01, %37
%40 = fptosi double %39 to i32
%41 = call i32 @printf(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str, i64 0, i64 0), i32 3, i32 0, i32 %38, i32 %40)
%42 = getelementptr inbounds double, double* %6, i64 4
%43 = load double, double* %42
%44 = fptosi double %43 to i32
%45 = fsub double -1.230000e-01, %43
%46 = fptosi double %45 to i32
%47 = call i32 @printf(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str, i64 0, i64 0), i32 4, i32 0, i32 %44, i32 %46)
%48 = getelementptr inbounds double, double* %6, i64 5
%49 = load double, double* %48
%50 = fptosi double %49 to i32
%51 = fsub double 0xBFE3CED916872B02, %49
%52 = fptosi double %51 to i32
%53 = call i32 @printf(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str, i64 0, i64 0), i32 5, i32 0, i32 %50, i32 %52)
%54 = getelementptr inbounds double, double* %6, i64 6
%55 = load double, double* %54
%56 = fptosi double %55 to i32
%57 = fsub double 1.602000e+00, %55
%58 = fptosi double %57 to i32
%59 = call i32 @printf(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str, i64 0, i64 0), i32 6, i32 1, i32 %56, i32 %58)
%60 = getelementptr inbounds double, double* %6, i64 7
%61 = load double, double* %60
%62 = fptosi double %61 to i32
%63 = fsub double 6.500000e-02, %61
%64 = fptosi double %63 to i32
%65 = call i32 @printf(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str, i64 0, i64 0), i32 7, i32 0, i32 %62, i32 %64)
%66 = getelementptr inbounds double, double* %6, i64 8
%67 = load double, double* %66
%68 = fptosi double %67 to i32
%69 = fsub double 5.500000e-02, %67
%70 = fptosi double %69 to i32
%71 = call i32 @printf(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str, i64 0, i64 0), i32 8, i32 0, i32 %68, i32 %70)
%72 = getelementptr inbounds [1000 x double], [1000 x double]* %2, i64 0, i64 0
%73 = getelementptr inbounds [20 x i32], [20 x i32]* %4, i64 0, i64 0
%74 = call i32 @thin(double* %72, i32 50, i32 20, i32* %73, double 1.000000e-01, i32 8, i32 5)
%75 = getelementptr inbounds [20 x i32], [20 x i32]* %4, i64 0, i64 0
%76 = load i32, i32* %75
%77 = sub nsw i32 1, %76
%78 = call i32 @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.1, i64 0, i64 0), i32 0, i32 1, i32 %76, i32 %77)
br label %79
79: ; preds = %0, %79
%80 = phi i64 [ 1, %0 ], [ %88, %79 ]
%81 = getelementptr inbounds [20 x i32], [20 x i32]* %5, i64 0, i64 %80
%82 = load i32, i32* %81
%83 = getelementptr inbounds [20 x i32], [20 x i32]* %4, i64 0, i64 %80
%84 = load i32, i32* %83
%85 = sub nsw i32 %82, %84
%86 = trunc i64 %80 to i32
%87 = call i32 @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.1, i64 0, i64 0), i32 %86, i32 %82, i32 %84, i32 %85)
%88 = add nuw nsw i64 %80, 1
%89 = icmp eq i64 %88, 20
br i1 %89, label %90, label %79
90: ; preds = %79
%91 = call i32 @free(double* %6)
%92 = load i32, i32* @EXIT_SUCCESS
ret i32 %92
}