#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*/ FILE;

/* Variables and functions */
double M_PI;
double M_SQRT2;
int asin(double);
double atan2(int, int);
char **char_calloc2(int, int);
double cos(double);
int /*<<< orphan*/ fprintf(int /*<<< orphan*/ *, char *, ...);
int /*<<< orphan*/ free(void **);
double hypot(double, double);
int /*<<< orphan*/ pnodal(char **, double, double, int, int, char);
double sin(double);
int charplot(double *M, double s1, double d1, double s2, double d2, char D,
             char C, char W, char B, char sep, char pnod, int rx, int ry,
             FILE *stream) {
  int jx, jy, rint;
  int jxP, jxT, jyP, jyT;
  double radius, aP, aT;
  double ain, azi;
  double x, y, z, amp;
  char **figure;
  figure = char_calloc2(2 * ry + 1, 2 * rx + 1);
  jxP = 0;
  jyP = 0;
  jxT = 0;
  jyT = 0;
  aP = M[0];
  aT = M[0];
  for (jy = ry; jy >= -ry; jy--) {
    for (jx = -rx; jx <= rx; jx++) {
      radius = hypot((double)jx, (double)jy * (double)rx / (double)ry);
      rint = (int)(radius + 0.5);
      figure[ry + jy][rx + jx] = W;
      if (rint <= rx) {
        figure[ry + jy][rx + jx] = D;
        ain = 2. * asin(radius / (double)rx / M_SQRT2);
        azi = atan2(jx, jy * (double)rx / (double)ry);
        x = sin(ain) * sin(azi);
        y = sin(ain) * cos(azi);
        z = -cos(ain);
        amp = M[0] * z * z + M[1] * y * y + M[2] * x * x;
        amp += 2. * (M[3] * z * y + M[4] * z * x + M[5] * x * y);
        if (amp > 0.)
          figure[ry + jy][rx + jx] = C;
        if (amp < aP) {
          aP = amp;
          jxP = jx;
          jyP = jy;
        }
        if (amp > aT) {
          aT = amp;
          jxT = jx;
          jyT = jy;
        }
      } else if (B != '\0' && radius >= rx && radius < rx + 1)
        figure[ry + jy][rx + jx] = B;
    }
  }
  if (sep == '\0') {
    for (jx = jxP - 1; jx <= jxP + 1; jx++)
      for (jy = jyP - 1; jy <= jyP + 1; jy++)
        if (jy >= -ry && jy <= ry && jx >= -rx && jx <= rx)
          figure[ry + jy][rx + jx] = W;
    for (jx = jxT - 1; jx <= jxT + 1; jx++)
      for (jy = jyT - 1; jy <= jyT + 1; jy++)
        if (jy >= -ry && jy <= ry && jx >= -rx && jx <= rx)
          figure[ry + jy][rx + jx] = W;
    figure[ry + jyT][rx + jxT] = 'T';
    figure[ry + jyP][rx + jxP] = 'P';
    for (jy = -ry; jy <= ry; jy++) {
      for (jx = -rx; jx <= rx; jx++)
        fprintf(stream, "%c", figure[ry + jy][rx + jx]);
      fprintf(stream, "\n");
    }
  } else {
    pnodal(figure, s1 * M_PI / 180., d1 * M_PI / 180., rx, ry, pnod);
    pnodal(figure, s2 * M_PI / 180., d2 * M_PI / 180., rx, ry, pnod);
    for (jy = -ry; jy <= ry; jy++) {
      for (jx = -rx; jx <= rx; jx++)
        fprintf(stream, "%c%c", figure[ry + jy][rx + jx], sep);
      fprintf(stream, "\n");
    }
  }
  for (jx = 0; jx < 2 * ry + 1; jx++)
    free((void *)figure[jx]);
  free((void **)figure);
  return (1);
}


x86 assembly (clang, -O0):
<charplot>:
push   %rbp
mov    %rsp,%rbp
sub    $0xc0,%rsp
mov    %r8d,-0xb0(%rbp)
mov    %ecx,%eax
mov    -0xb0(%rbp),%ecx
mov    %eax,-0xac(%rbp)
mov    %edx,%eax
mov    -0xac(%rbp),%edx
mov    %eax,-0xa8(%rbp)
mov    %esi,%eax
mov    -0xa8(%rbp),%esi
mov    %eax,-0xa4(%rbp)
mov    %rdi,%r8
mov    -0xa4(%rbp),%edi
mov    %r9b,%al
mov    0x28(%rbp),%r9
mov    0x20(%rbp),%r9d
mov    0x18(%rbp),%r9d
mov    0x10(%rbp),%r9b
mov    %r8,-0x8(%rbp)
movsd  %xmm0,-0x10(%rbp)
movsd  %xmm1,-0x18(%rbp)
movsd  %xmm2,-0x20(%rbp)
movsd  %xmm3,-0x28(%rbp)
mov    %dil,-0x29(%rbp)
mov    %sil,-0x2a(%rbp)
mov    %dl,-0x2b(%rbp)
mov    %cl,-0x2c(%rbp)
mov    %al,-0x2d(%rbp)
mov    0x20(%rbp),%edi
shl    $0x1,%edi
add    $0x1,%edi
mov    0x18(%rbp),%esi
shl    $0x1,%esi
add    $0x1,%esi
call   1040 <char_calloc2@plt>
mov    %rax,-0xa0(%rbp)
movl   $0x0,-0x40(%rbp)
movl   $0x0,-0x48(%rbp)
movl   $0x0,-0x44(%rbp)
movl   $0x0,-0x4c(%rbp)
mov    -0x8(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    -0x8(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    0x20(%rbp),%eax
mov    %eax,-0x38(%rbp)
mov    -0x38(%rbp),%eax
xor    %ecx,%ecx
sub    0x20(%rbp),%ecx
cmp    %ecx,%eax
jl     15ec <charplot+0x45c>
xor    %eax,%eax
sub    0x18(%rbp),%eax
mov    %eax,-0x34(%rbp)
mov    -0x34(%rbp),%eax
cmp    0x18(%rbp),%eax
jg     15d9 <charplot+0x449>
cvtsi2sdl -0x34(%rbp),%xmm0
cvtsi2sdl -0x38(%rbp),%xmm1
cvtsi2sdl 0x18(%rbp),%xmm2
mulsd  %xmm2,%xmm1
cvtsi2sdl 0x20(%rbp),%xmm2
divsd  %xmm2,%xmm1
call   10a0 <hypot@plt>
movsd  %xmm0,-0x58(%rbp)
movsd  0xd4b(%rip),%xmm0
addsd  -0x58(%rbp),%xmm0
cvttsd2si %xmm0,%eax
mov    %eax,-0x3c(%rbp)
mov    -0x2b(%rbp),%dl
mov    -0xa0(%rbp),%rax
mov    0x20(%rbp),%ecx
add    -0x38(%rbp),%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    0x18(%rbp),%ecx
add    -0x34(%rbp),%ecx
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x3c(%rbp),%eax
cmp    0x18(%rbp),%eax
jg     1564 <charplot+0x3d4>
mov    -0x29(%rbp),%dl
mov    -0xa0(%rbp),%rax
mov    0x20(%rbp),%ecx
add    -0x38(%rbp),%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    0x18(%rbp),%ecx
add    -0x34(%rbp),%ecx
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
movsd  -0x58(%rbp),%xmm0
cvtsi2sdl 0x18(%rbp),%xmm1
divsd  %xmm1,%xmm0
mov    0x2ca8(%rip),%rax
divsd  (%rax),%xmm0
call   1090 <asin@plt>
cvtsi2sd %eax,%xmm1
movsd  0xccb(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
mov    -0x34(%rbp),%edi
cvtsi2sdl -0x38(%rbp),%xmm0
cvtsi2sdl 0x18(%rbp),%xmm1
mulsd  %xmm1,%xmm0
cvtsi2sdl 0x20(%rbp),%xmm1
divsd  %xmm1,%xmm0
cvttsd2si %xmm0,%esi
call   1050 <atan2@plt>
movsd  %xmm0,-0x78(%rbp)
movsd  -0x70(%rbp),%xmm0
call   1080 <sin@plt>
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x78(%rbp),%xmm0
call   1080 <sin@plt>
movaps %xmm0,%xmm1
movsd  -0xc0(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x70(%rbp),%xmm0
call   1080 <sin@plt>
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x78(%rbp),%xmm0
call   10b0 <cos@plt>
movaps %xmm0,%xmm1
movsd  -0xb8(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x70(%rbp),%xmm0
call   10b0 <cos@plt>
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  (%rax),%xmm1
mulsd  -0x90(%rbp),%xmm1
ff
movsd  -0x90(%rbp),%xmm2
ff
mov    -0x8(%rbp),%rax
movsd  0x8(%rax),%xmm0
mulsd  -0x88(%rbp),%xmm0
ff
mulsd  -0x88(%rbp),%xmm0
ff
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
mov    -0x8(%rbp),%rax
movsd  0x10(%rax),%xmm0
mulsd  -0x80(%rbp),%xmm0
movsd  -0x80(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x18(%rax),%xmm1
mulsd  -0x90(%rbp),%xmm1
ff
movsd  -0x88(%rbp),%xmm2
ff
mov    -0x8(%rbp),%rax
movsd  0x20(%rax),%xmm0
mulsd  -0x90(%rbp),%xmm0
ff
mulsd  -0x80(%rbp),%xmm0
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
mov    -0x8(%rbp),%rax
movsd  0x28(%rax),%xmm0
mulsd  -0x80(%rbp),%xmm0
movsd  -0x88(%rbp),%xmm2
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x98(%rbp),%xmm1
ff
addsd  %xmm0,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x98(%rbp),%xmm0
ff
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    1503 <charplot+0x373>
mov    -0x2a(%rbp),%dl
mov    -0xa0(%rbp),%rax
mov    0x20(%rbp),%ecx
add    -0x38(%rbp),%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    0x18(%rbp),%ecx
add    -0x34(%rbp),%ecx
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
movsd  -0x98(%rbp),%xmm1
ff
movsd  -0x60(%rbp),%xmm0
ucomisd %xmm1,%xmm0
jbe    1533 <charplot+0x3a3>
movsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0x60(%rbp)
mov    -0x34(%rbp),%eax
mov    %eax,-0x40(%rbp)
mov    -0x38(%rbp),%eax
mov    %eax,-0x48(%rbp)
movsd  -0x98(%rbp),%xmm0
ff
ucomisd -0x68(%rbp),%xmm0
jbe    155f <charplot+0x3cf>
movsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0x68(%rbp)
mov    -0x34(%rbp),%eax
mov    %eax,-0x44(%rbp)
mov    -0x38(%rbp),%eax
mov    %eax,-0x4c(%rbp)
jmp    15c6 <charplot+0x436>
movsbl -0x2c(%rbp),%eax
cmp    $0x0,%eax
je     15c1 <charplot+0x431>
movsd  -0x58(%rbp),%xmm0
cvtsi2sdl 0x18(%rbp),%xmm1
ucomisd %xmm1,%xmm0
jb     15c1 <charplot+0x431>
movsd  -0x58(%rbp),%xmm1
mov    0x18(%rbp),%eax
add    $0x1,%eax
cvtsi2sd %eax,%xmm0
ucomisd %xmm1,%xmm0
jbe    15c1 <charplot+0x431>
mov    -0x2c(%rbp),%dl
mov    -0xa0(%rbp),%rax
mov    0x20(%rbp),%ecx
add    -0x38(%rbp),%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    0x18(%rbp),%ecx
add    -0x34(%rbp),%ecx
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
jmp    15c6 <charplot+0x436>
jmp    15cb <charplot+0x43b>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
jmp    1283 <charplot+0xf3>
jmp    15de <charplot+0x44e>
mov    -0x38(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x38(%rbp)
jmp    126b <charplot+0xdb>
movsbl -0x2d(%rbp),%eax
cmp    $0x0,%eax
jne    1833 <charplot+0x6a3>
mov    -0x40(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x34(%rbp)
mov    -0x34(%rbp),%eax
mov    -0x40(%rbp),%ecx
add    $0x1,%ecx
cmp    %ecx,%eax
jg     16ae <charplot+0x51e>
mov    -0x48(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x38(%rbp)
mov    -0x38(%rbp),%eax
mov    -0x48(%rbp),%ecx
add    $0x1,%ecx
cmp    %ecx,%eax
jg     169b <charplot+0x50b>
mov    -0x38(%rbp),%eax
xor    %ecx,%ecx
sub    0x20(%rbp),%ecx
cmp    %ecx,%eax
jl     1688 <charplot+0x4f8>
mov    -0x38(%rbp),%eax
cmp    0x20(%rbp),%eax
jg     1688 <charplot+0x4f8>
mov    -0x34(%rbp),%eax
xor    %ecx,%ecx
sub    0x18(%rbp),%ecx
cmp    %ecx,%eax
jl     1688 <charplot+0x4f8>
mov    -0x34(%rbp),%eax
cmp    0x18(%rbp),%eax
jg     1688 <charplot+0x4f8>
mov    -0x2b(%rbp),%dl
mov    -0xa0(%rbp),%rax
mov    0x20(%rbp),%ecx
add    -0x38(%rbp),%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    0x18(%rbp),%ecx
add    -0x34(%rbp),%ecx
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
jmp    168d <charplot+0x4fd>
mov    -0x38(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x38(%rbp)
jmp    161c <charplot+0x48c>
jmp    16a0 <charplot+0x510>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
jmp    1602 <charplot+0x472>
mov    -0x44(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x34(%rbp)
mov    -0x34(%rbp),%eax
mov    -0x44(%rbp),%ecx
add    $0x1,%ecx
cmp    %ecx,%eax
jg     1763 <charplot+0x5d3>
mov    -0x4c(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x38(%rbp)
mov    -0x38(%rbp),%eax
mov    -0x4c(%rbp),%ecx
add    $0x1,%ecx
cmp    %ecx,%eax
jg     1750 <charplot+0x5c0>
mov    -0x38(%rbp),%eax
xor    %ecx,%ecx
sub    0x20(%rbp),%ecx
cmp    %ecx,%eax
jl     173d <charplot+0x5ad>
mov    -0x38(%rbp),%eax
cmp    0x20(%rbp),%eax
jg     173d <charplot+0x5ad>
mov    -0x34(%rbp),%eax
xor    %ecx,%ecx
sub    0x18(%rbp),%ecx
cmp    %ecx,%eax
jl     173d <charplot+0x5ad>
mov    -0x34(%rbp),%eax
cmp    0x18(%rbp),%eax
jg     173d <charplot+0x5ad>
mov    -0x2b(%rbp),%dl
mov    -0xa0(%rbp),%rax
mov    0x20(%rbp),%ecx
add    -0x38(%rbp),%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    0x18(%rbp),%ecx
add    -0x34(%rbp),%ecx
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
jmp    1742 <charplot+0x5b2>
mov    -0x38(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x38(%rbp)
jmp    16d1 <charplot+0x541>
jmp    1755 <charplot+0x5c5>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
jmp    16b7 <charplot+0x527>
mov    -0xa0(%rbp),%rax
mov    0x20(%rbp),%ecx
add    -0x4c(%rbp),%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    0x18(%rbp),%ecx
add    -0x44(%rbp),%ecx
movslq %ecx,%rcx
movb   $0x54,(%rax,%rcx,1)
mov    -0xa0(%rbp),%rax
mov    0x20(%rbp),%ecx
add    -0x48(%rbp),%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    0x18(%rbp),%ecx
add    -0x40(%rbp),%ecx
movslq %ecx,%rcx
movb   $0x50,(%rax,%rcx,1)
xor    %eax,%eax
sub    0x20(%rbp),%eax
mov    %eax,-0x38(%rbp)
mov    -0x38(%rbp),%eax
cmp    0x20(%rbp),%eax
jg     182e <charplot+0x69e>
xor    %eax,%eax
sub    0x18(%rbp),%eax
mov    %eax,-0x34(%rbp)
mov    -0x34(%rbp),%eax
cmp    0x18(%rbp),%eax
jg     180e <charplot+0x67e>
mov    0x28(%rbp),%rdi
mov    -0xa0(%rbp),%rax
mov    0x20(%rbp),%ecx
add    -0x38(%rbp),%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    0x18(%rbp),%ecx
add    -0x34(%rbp),%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%edx
lea    0x823(%rip),%rsi
mov    $0x0,%al
call   1070 <fprintf@plt>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
jmp    17c1 <charplot+0x631>
mov    0x28(%rbp),%rdi
lea    0x7ff(%rip),%rsi
mov    $0x0,%al
call   1070 <fprintf@plt>
mov    -0x38(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x38(%rbp)
jmp    17ad <charplot+0x61d>
jmp    1961 <charplot+0x7d1>
mov    -0xa0(%rbp),%rdi
movsd  -0x10(%rbp),%xmm0
mov    0x27a2(%rip),%rax
mulsd  (%rax),%xmm0
movsd  0x7ae(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  -0x18(%rbp),%xmm1
mov    0x2786(%rip),%rax
mulsd  (%rax),%xmm1
movsd  0x792(%rip),%xmm2
divsd  %xmm2,%xmm1
mov    0x18(%rbp),%esi
mov    0x20(%rbp),%edx
movsbl 0x10(%rbp),%ecx
call   1060 <pnodal@plt>
mov    -0xa0(%rbp),%rdi
movsd  -0x20(%rbp),%xmm0
mov    0x2754(%rip),%rax
mulsd  (%rax),%xmm0
movsd  0x760(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  -0x28(%rbp),%xmm1
mov    0x2738(%rip),%rax
mulsd  (%rax),%xmm1
movsd  0x744(%rip),%xmm2
divsd  %xmm2,%xmm1
mov    0x18(%rbp),%esi
mov    0x20(%rbp),%edx
movsbl 0x10(%rbp),%ecx
call   1060 <pnodal@plt>
xor    %eax,%eax
sub    0x20(%rbp),%eax
mov    %eax,-0x38(%rbp)
mov    -0x38(%rbp),%eax
cmp    0x20(%rbp),%eax
jg     195c <charplot+0x7cc>
xor    %eax,%eax
sub    0x18(%rbp),%eax
mov    %eax,-0x34(%rbp)
mov    -0x34(%rbp),%eax
cmp    0x18(%rbp),%eax
jg     193c <charplot+0x7ac>
mov    0x28(%rbp),%rdi
mov    -0xa0(%rbp),%rax
mov    0x20(%rbp),%ecx
add    -0x38(%rbp),%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    0x18(%rbp),%ecx
add    -0x34(%rbp),%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%edx
movsbl -0x2d(%rbp),%ecx
lea    0x6f3(%rip),%rsi
mov    $0x0,%al
call   1070 <fprintf@plt>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
jmp    18eb <charplot+0x75b>
mov    0x28(%rbp),%rdi
lea    0x6d1(%rip),%rsi
mov    $0x0,%al
call   1070 <fprintf@plt>
mov    -0x38(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x38(%rbp)
jmp    18d7 <charplot+0x747>
jmp    1961 <charplot+0x7d1>
movl   $0x0,-0x34(%rbp)
mov    -0x34(%rbp),%eax
mov    0x20(%rbp),%ecx
shl    $0x1,%ecx
add    $0x1,%ecx
cmp    %ecx,%eax
jge    199e <charplot+0x80e>
mov    -0xa0(%rbp),%rax
movslq -0x34(%rbp),%rcx
mov    (%rax,%rcx,8),%rdi
call   1030 <free@plt>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
jmp    1968 <charplot+0x7d8>
mov    -0xa0(%rbp),%rdi
call   1030 <free@plt>
mov    $0x1,%eax
add    $0xc0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<charplot>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0xe8,%rsp
mov    %r9d,0x84(%rsp)
mov    %r8d,0x64(%rsp)
mov    %ecx,0x4(%rsp)
mov    %edx,0x8c(%rsp)
mov    %esi,0x90(%rsp)
movsd  %xmm3,0xb8(%rsp)
movsd  %xmm2,0xb0(%rsp)
movsd  %xmm1,0xa8(%rsp)
movsd  %xmm0,0xa0(%rsp)
mov    %rdi,%r12
mov    0x130(%rsp),%ebx
mov    0x128(%rsp),%r13d
lea    (%rbx,%rbx,1),%edi
add    $0x1,%edi
lea    0x1(%r13,%r13,1),%esi
mov    %edi,0x88(%rsp)
call   1040 <char_calloc2@plt>
mov    %rax,0x10(%rsp)
mov    %ebx,%eax
neg    %eax
movslq %r13d,%rcx
mov    %eax,0x60(%rsp)
cltq
mov    %rax,0x68(%rsp)
mov    %ebx,%edx
test   %ebx,%ebx
mov    %rcx,0x28(%rsp)
mov    %rdx,%rax
mov    %rdx,0x98(%rsp)
js     15b9 <charplot+0x419>
xorps  %xmm0,%xmm0
cvtsi2sd %ecx,%xmm0
movsd  %xmm0,0x70(%rsp)
xorps  %xmm0,%xmm0
cvtsi2sd %ebx,%xmm0
movsd  %xmm0,0xc0(%rsp)
lea    0x1(%rcx),%eax
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0xc8(%rsp)
mov    %ecx,%eax
neg    %eax
movslq %eax,%rbp
mov    %r13d,%esi
cmovns %ebp,%esi
movsd  (%r12),%xmm1
add    %rcx,%rbp
not    %esi
mov    %rax,0xe0(%rsp)
add    %rax,%rsi
mov    %rsi,0xd8(%rsp)
xor    %eax,%eax
mov    %rax,0x48(%rsp)
mov    %rdx,%rbx
xor    %eax,%eax
mov    %rax,0x50(%rsp)
xor    %eax,%eax
mov    %rax,0x38(%rsp)
xor    %eax,%eax
mov    %rax,0x40(%rsp)
movapd %xmm1,%xmm2
jmp    1302 <charplot+0x162>
xchg   %ax,%ax
movapd %xmm2,%xmm0
movapd %xmm1,%xmm3
lea    -0x1(%rbx),%rax
movapd %xmm3,%xmm1
movapd %xmm0,%xmm2
cmp    0x68(%rsp),%rbx
mov    %rax,%rbx
mov    0x128(%rsp),%r13d
mov    0x98(%rsp),%rdx
jle    15d5 <charplot+0x435>
test   %r13d,%r13d
js     12d0 <charplot+0x130>
xorps  %xmm0,%xmm0
cvtsi2sd %ebx,%xmm0
mulsd  0x70(%rsp),%xmm0
divsd  0xc0(%rsp),%xmm0
lea    (%rbx,%rdx,1),%r15
movsd  %xmm0,0x58(%rsp)
cvttsd2si %xmm0,%eax
mov    %eax,0x94(%rsp)
xor    %r13d,%r13d
jmp    1360 <charplot+0x1c0>
movsd  0x8(%rsp),%xmm0
movsd  0x20(%rsp),%xmm3
add    $0x1,%r13
mov    0xd8(%rsp),%rax
movapd %xmm3,%xmm1
movapd %xmm0,%xmm2
add    %r13d,%eax
je     12d8 <charplot+0x138>
movsd  %xmm2,0x8(%rsp)
movsd  %xmm1,0x20(%rsp)
mov    0xe0(%rsp),%rax
lea    (%rax,%r13,1),%r14
xorps  %xmm0,%xmm0
cvtsi2sd %r14d,%xmm0
movsd  0x58(%rsp),%xmm1
call   10b0 <hypot@plt>
movapd %xmm0,%xmm1
addsd  0xc69(%rip),%xmm1
cvttsd2si %xmm1,%eax
mov    0x10(%rsp),%rdx
mov    (%rdx,%r15,8),%rcx
add    %rbp,%rcx
mov    0x4(%rsp),%esi
mov    %sil,0x0(%r13,%rcx,1)
mov    0x128(%rsp),%ecx
cmp    %ecx,%eax
jle    1400 <charplot+0x260>
cmpb   $0x0,0x64(%rsp)
je     1337 <charplot+0x197>
ucomisd 0x70(%rsp),%xmm0
jb     1337 <charplot+0x197>
movsd  0xc8(%rsp),%xmm1
ucomisd %xmm0,%xmm1
movsd  0x8(%rsp),%xmm0
jbe    133d <charplot+0x19d>
mov    (%rdx,%r15,8),%rax
add    %rbp,%rax
mov    0x64(%rsp),%ecx
mov    %cl,0x0(%r13,%rax,1)
jmp    133d <charplot+0x19d>
mov    (%rdx,%r15,8),%rax
add    %rbp,%rax
mov    0x90(%rsp),%ecx
mov    %cl,0x0(%r13,%rax,1)
divsd  0x70(%rsp),%xmm0
mov    0x2bb8(%rip),%rax
divsd  (%rax),%xmm0
call   10a0 <asin@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
addsd  %xmm0,%xmm0
movsd  %xmm0,0x18(%rsp)
mov    %r14d,%edi
mov    0x94(%rsp),%esi
call   1050 <atan2@plt>
movsd  %xmm0,0x30(%rsp)
movsd  0x18(%rsp),%xmm0
call   1090 <sin@plt>
movsd  %xmm0,0x78(%rsp)
movsd  0x30(%rsp),%xmm0
call   1090 <sin@plt>
mulsd  0x78(%rsp),%xmm0
movsd  %xmm0,0x78(%rsp)
movsd  0x18(%rsp),%xmm0
call   1090 <sin@plt>
movsd  %xmm0,0xd0(%rsp)
movsd  0x30(%rsp),%xmm0
call   10c0 <cos@plt>
mulsd  0xd0(%rsp),%xmm0
movsd  %xmm0,0x30(%rsp)
movsd  0x18(%rsp),%xmm0
call   10c0 <cos@plt>
movapd %xmm0,%xmm1
xorpd  0xb64(%rip),%xmm1
movsd  (%r12),%xmm2
mulsd  %xmm0,%xmm2
movsd  0x8(%r12),%xmm3
movsd  0x30(%rsp),%xmm4
mulsd  %xmm4,%xmm3
mulsd  %xmm4,%xmm3
movapd %xmm4,%xmm5
mulsd  %xmm0,%xmm2
addsd  %xmm3,%xmm2
movsd  0x10(%r12),%xmm3
movsd  0x78(%rsp),%xmm4
mulsd  %xmm4,%xmm3
mulsd  %xmm4,%xmm3
mulsd  0x18(%r12),%xmm1
mulsd  0x20(%r12),%xmm0
addsd  %xmm2,%xmm3
mulsd  %xmm4,%xmm0
mulsd  %xmm5,%xmm1
subsd  %xmm0,%xmm1
movapd %xmm4,%xmm0
mulsd  0x28(%r12),%xmm0
mulsd  %xmm5,%xmm0
addsd  %xmm1,%xmm0
addsd  %xmm0,%xmm0
addsd  %xmm3,%xmm0
movapd %xmm0,%xmm3
ucomisd 0xacf(%rip),%xmm0
jbe    155b <charplot+0x3bb>
mov    0x10(%rsp),%rax
mov    (%rax,%r15,8),%rax
add    %rbp,%rax
mov    0x8c(%rsp),%ecx
mov    %cl,0x0(%r13,%rax,1)
movsd  0x8(%rsp),%xmm1
ucomisd %xmm3,%xmm1
mov    0x38(%rsp),%rax
cmova  %ebx,%eax
mov    %rax,0x38(%rsp)
mov    0x48(%rsp),%rax
cmova  %r14d,%eax
mov    %rax,0x48(%rsp)
movapd %xmm3,%xmm0
minsd  %xmm1,%xmm0
movsd  0x20(%rsp),%xmm1
ucomisd %xmm1,%xmm3
jbe    15b0 <charplot+0x410>
mov    %ebx,%eax
mov    %rax,0x40(%rsp)
mov    %r14,0x50(%rsp)
jmp    1343 <charplot+0x1a3>
cs nopw 0x0(%rax,%rax,1)
nop
movapd %xmm1,%xmm3
jmp    1343 <charplot+0x1a3>
xor    %eax,%eax
mov    %rax,0x40(%rsp)
xor    %eax,%eax
mov    %rax,0x38(%rsp)
xor    %eax,%eax
mov    %rax,0x50(%rsp)
xor    %eax,%eax
mov    %rax,0x48(%rsp)
mov    0x84(%rsp),%r12d
test   %r12b,%r12b
je     1765 <charplot+0x5c5>
mov    0x29fb(%rip),%r14
movsd  (%r14),%xmm2
movsd  0xa0(%rsp),%xmm0
mulsd  %xmm2,%xmm0
movsd  0xa01(%rip),%xmm3
divsd  %xmm3,%xmm0
movsd  0xa8(%rsp),%xmm1
mulsd  %xmm2,%xmm1
divsd  %xmm3,%xmm1
movsbl 0x120(%rsp),%r15d
mov    0x10(%rsp),%rbp
mov    %rbp,%rdi
mov    %r13d,%esi
mov    0x130(%rsp),%ebx
mov    %ebx,%edx
mov    %r15d,%ecx
call   1060 <pnodal@plt>
movsd  (%r14),%xmm2
movsd  0xb0(%rsp),%xmm0
mulsd  %xmm2,%xmm0
movsd  0x9ad(%rip),%xmm3
divsd  %xmm3,%xmm0
movsd  0xb8(%rsp),%xmm1
mulsd  %xmm2,%xmm1
divsd  %xmm3,%xmm1
mov    %rbp,%rdi
mov    %r13d,%esi
mov    %ebx,%edx
mov    %r15d,%ecx
call   1060 <pnodal@plt>
test   %ebx,%ebx
js     1d0d <charplot+0xb6d>
movsbl %r12b,%eax
mov    %eax,0x20(%rsp)
mov    %r13d,%eax
neg    %eax
cltq
mov    %eax,%ecx
cmovs  %r13d,%ecx
add    $0x1,%ebx
add    %rax,0x28(%rsp)
lea    (%rcx,%r13,1),%eax
add    $0x1,%eax
mov    %eax,0x30(%rsp)
mov    %rbx,0x8(%rsp)
mov    0x10(%rsp),%r12
jmp    16f0 <charplot+0x550>
nopl   0x0(%rax)
mov    $0xa,%edi
mov    %rbx,%rsi
call   1070 <fputc@plt>
mov    0x68(%rsp),%rax
add    $0x1,%rax
mov    0x8(%rsp),%rbx
mov    %rax,0x68(%rsp)
cmp    %eax,%ebx
mov    0x128(%rsp),%r13d
je     1d0d <charplot+0xb6d>
test   %r13d,%r13d
mov    0x138(%rsp),%rbx
lea    0x92e(%rip),%rsi
mov    0x20(%rsp),%r13d
js     16c0 <charplot+0x520>
mov    0x68(%rsp),%rax
mov    0x98(%rsp),%rcx
add    %rcx,%rax
mov    %rax,0x18(%rsp)
mov    0x30(%rsp),%ebp
mov    0x28(%rsp),%r14
nopw   0x0(%rax,%rax,1)
mov    0x18(%rsp),%rax
mov    (%r12,%rax,8),%rax
movsbl (%rax,%r14,1),%edx
mov    %rbx,%rdi
mov    %rbx,%r15
mov    %r13d,%ecx
xor    %eax,%eax
mov    %rsi,%rbx
call   1080 <fprintf@plt>
mov    %rbx,%rsi
mov    %r15,%rbx
add    $0x1,%r14
add    $0xffffffff,%ebp
jne    1730 <charplot+0x590>
jmp    16c0 <charplot+0x520>
mov    0x48(%rsp),%rax
lea    -0x1(%rax),%esi
mov    0x38(%rsp),%rax
lea    -0x1(%rax),%ecx
mov    %r13d,%r15d
neg    %r15d
movslq %ecx,%r8
mov    0x130(%rsp),%edx
movslq %edx,%rax
mov    %rax,0x8(%rsp)
movslq %esi,%r14
mov    0x28(%rsp),%r9
lea    (%r14,%r9,1),%r10
mov    0x60(%rsp),%r12d
cmp    %r12d,%r8d
setl   %bl
cmp    %edx,%r8d
setg   %al
or     %bl,%al
jne    17d7 <charplot+0x637>
cmp    %r15d,%esi
jl     17d7 <charplot+0x637>
cmp    %r13d,%esi
jg     17d7 <charplot+0x637>
mov    0x8(%rsp),%rdi
add    %r8,%rdi
mov    0x10(%rsp),%rbp
mov    0x0(%rbp,%rdi,8),%rdi
mov    0x28(%rsp),%r9
mov    0x4(%rsp),%ebx
mov    %bl,(%rdi,%r10,1)
movslq %r12d,%rdi
mov    %rdi,0x18(%rsp)
lea    0x1(%r8),%r11
cmpl   $0x80000000,0x38(%rsp)
80
je     1859 <charplot+0x6b9>
cmp    0x18(%rsp),%r11
jl     1821 <charplot+0x681>
cmp    %edx,%ecx
jge    1821 <charplot+0x681>
cmp    %r15d,%esi
jl     1821 <charplot+0x681>
cmp    %r13d,%esi
jg     1821 <charplot+0x681>
mov    0x8(%rsp),%rdi
add    %r11,%rdi
mov    0x10(%rsp),%rbp
mov    0x0(%rbp,%rdi,8),%rdi
mov    0x28(%rsp),%r9
mov    0x4(%rsp),%ebx
mov    %bl,(%rdi,%r10,1)
lea    0x2(%r8),%rdi
cmp    0x18(%rsp),%rdi
jl     1859 <charplot+0x6b9>
cmp    0x8(%rsp),%rdi
jg     1859 <charplot+0x6b9>
cmp    %r15d,%esi
jl     1859 <charplot+0x6b9>
cmp    %r13d,%esi
jg     1859 <charplot+0x6b9>
add    0x8(%rsp),%rdi
mov    0x10(%rsp),%rbp
mov    0x0(%rbp,%rdi,8),%rdi
mov    0x28(%rsp),%r9
mov    0x4(%rsp),%ebx
mov    %bl,(%rdi,%r10,1)
mov    %ecx,0x30(%rsp)
movslq %r15d,%r10
cmpl   $0x80000000,0x48(%rsp)
80
mov    %r10,0x20(%rsp)
je     19ed <charplot+0x84d>
lea    0x1(%r14),%r12
cmp    %r10,%r12
setl   %bl
lea    (%r12,%r9,1),%rbp
mov    %rbp,0x58(%rsp)
or     %al,%bl
jne    18c0 <charplot+0x720>
cmp    %r13d,%esi
jge    18c0 <charplot+0x720>
mov    0x8(%rsp),%rbp
lea    (%r8,%rbp,1),%rbx
mov    0x10(%rsp),%rbp
mov    0x0(%rbp,%rbx,8),%rbx
mov    0x20(%rsp),%r10
mov    0x28(%rsp),%r9
mov    %r11,%rcx
mov    0x4(%rsp),%r11d
mov    0x58(%rsp),%rdi
mov    %r11b,(%rbx,%rdi,1)
mov    %rcx,%r11
cmpl   $0x80000000,0x38(%rsp)
80
je     1942 <charplot+0x7a2>
cmp    0x18(%rsp),%r11
jl     190b <charplot+0x76b>
cmp    %edx,0x30(%rsp)
jge    190b <charplot+0x76b>
cmp    %r10,%r12
jl     190b <charplot+0x76b>
cmp    %r13d,%esi
jge    190b <charplot+0x76b>
mov    0x8(%rsp),%rbp
lea    (%r11,%rbp,1),%rbx
mov    0x10(%rsp),%rbp
mov    0x0(%rbp,%rbx,8),%rbx
mov    0x28(%rsp),%r9
mov    0x4(%rsp),%ebp
mov    0x58(%rsp),%rdi
mov    %bpl,(%rbx,%rdi,1)
mov    0x20(%rsp),%r10
lea    0x2(%r8),%rbx
cmp    0x18(%rsp),%rbx
jl     1942 <charplot+0x7a2>
cmp    0x8(%rsp),%rbx
jg     1942 <charplot+0x7a2>
cmp    %r10,%r12
jl     1942 <charplot+0x7a2>
cmp    %r13d,%esi
jge    1942 <charplot+0x7a2>
add    0x8(%rsp),%rbx
mov    0x10(%rsp),%rsi
mov    (%rsi,%rbx,8),%rsi
mov    0x4(%rsp),%edi
mov    0x58(%rsp),%rbp
mov    %dil,(%rsi,%rbp,1)
lea    0x2(%r14),%rsi
cmp    %r10,%rsi
setl   %bl
lea    (%r14,%r9,1),%rdi
add    $0x2,%rdi
or     %bl,%al
jne    1981 <charplot+0x7e1>
cmp    %r9,%rsi
jg     1981 <charplot+0x7e1>
mov    0x8(%rsp),%rax
add    %r8,%rax
mov    0x10(%rsp),%rbp
mov    0x0(%rbp,%rax,8),%rax
mov    0x28(%rsp),%r9
mov    0x4(%rsp),%ebp
mov    %bpl,(%rax,%rdi,1)
mov    0x20(%rsp),%r10
cmpl   $0x80000000,0x38(%rsp)
80
mov    0x60(%rsp),%r12d
je     19ed <charplot+0x84d>
cmp    0x18(%rsp),%r11
jl     19bc <charplot+0x81c>
cmp    %edx,0x30(%rsp)
jge    19bc <charplot+0x81c>
cmp    %r10,%rsi
jl     19bc <charplot+0x81c>
cmp    %r9,%rsi
jg     19bc <charplot+0x81c>
add    0x8(%rsp),%r11
mov    0x10(%rsp),%rax
mov    (%rax,%r11,8),%rax
mov    0x4(%rsp),%ebx
mov    %bl,(%rax,%rdi,1)
add    $0x2,%r8
cmp    0x18(%rsp),%r8
jl     19ed <charplot+0x84d>
cmp    0x8(%rsp),%r8
jg     19ed <charplot+0x84d>
cmp    %r10,%rsi
jl     19ed <charplot+0x84d>
cmp    %r9,%rsi
jg     19ed <charplot+0x84d>
add    0x8(%rsp),%r8
mov    0x10(%rsp),%rax
mov    (%rax,%r8,8),%rax
mov    0x4(%rsp),%ecx
mov    %cl,(%rax,%rdi,1)
mov    0x50(%rsp),%rax
lea    -0x1(%rax),%esi
mov    0x40(%rsp),%rax
lea    -0x1(%rax),%r8d
movslq %r8d,%r14
movslq %esi,%r11
lea    (%r11,%r9,1),%rdi
cmp    %r12d,%r14d
setl   %bl
cmp    %edx,%r14d
setg   %al
or     %bl,%al
jne    1a46 <charplot+0x8a6>
cmp    %r15d,%esi
jl     1a46 <charplot+0x8a6>
cmp    %r13d,%esi
jg     1a46 <charplot+0x8a6>
mov    0x8(%rsp),%rcx
lea    (%r14,%rcx,1),%rbp
mov    0x10(%rsp),%rbx
mov    (%rbx,%rbp,8),%rbp
mov    0x4(%rsp),%ecx
mov    %cl,0x0(%rbp,%rdi,1)
mov    0x20(%rsp),%r10
mov    0x28(%rsp),%r9
lea    0x1(%r14),%r12
cmpl   $0x80000000,0x40(%rsp)
80
je     1abf <charplot+0x91f>
cmp    0x18(%rsp),%r12
jl     1a8e <charplot+0x8ee>
cmp    %edx,%r8d
jge    1a8e <charplot+0x8ee>
cmp    %r15d,%esi
jl     1a8e <charplot+0x8ee>
cmp    %r13d,%esi
jg     1a8e <charplot+0x8ee>
mov    0x8(%rsp),%rcx
lea    (%r12,%rcx,1),%rbx
mov    0x10(%rsp),%rbp
mov    0x0(%rbp,%rbx,8),%rbx
mov    0x20(%rsp),%r10
mov    0x28(%rsp),%r9
mov    0x4(%rsp),%ecx
mov    %cl,(%rbx,%rdi,1)
lea    0x2(%r14),%rbx
cmp    0x18(%rsp),%rbx
jl     1abf <charplot+0x91f>
cmp    0x8(%rsp),%rbx
jg     1abf <charplot+0x91f>
cmp    %r15d,%esi
jl     1abf <charplot+0x91f>
cmp    %r13d,%esi
jg     1abf <charplot+0x91f>
add    0x8(%rsp),%rbx
mov    0x10(%rsp),%rcx
mov    (%rcx,%rbx,8),%rcx
mov    0x4(%rsp),%ebx
mov    %bl,(%rcx,%rdi,1)
cmpl   $0x80000000,0x50(%rsp)
80
je     1c1c <charplot+0xa7c>
lea    0x1(%r11),%rdi
cmp    %r10,%rdi
setl   %bl
lea    (%rdi,%r9,1),%rcx
or     %al,%bl
jne    1b09 <charplot+0x969>
cmp    %r13d,%esi
jge    1b09 <charplot+0x969>
mov    0x8(%rsp),%rbp
lea    (%r14,%rbp,1),%rbx
mov    0x10(%rsp),%rbp
mov    0x0(%rbp,%rbx,8),%rbx
mov    0x28(%rsp),%r9
mov    0x4(%rsp),%ebp
mov    %bpl,(%rbx,%rcx,1)
mov    0x20(%rsp),%r10
cmpl   $0x80000000,0x40(%rsp)
80
je     1b80 <charplot+0x9e0>
cmp    0x18(%rsp),%r12
jl     1b4e <charplot+0x9ae>
cmp    %edx,%r8d
jge    1b4e <charplot+0x9ae>
cmp    %r10,%rdi
jl     1b4e <charplot+0x9ae>
cmp    %r13d,%esi
jge    1b4e <charplot+0x9ae>
mov    0x8(%rsp),%rbp
lea    (%r12,%rbp,1),%rbx
mov    0x10(%rsp),%rbp
mov    0x0(%rbp,%rbx,8),%rbx
mov    0x28(%rsp),%r9
mov    0x4(%rsp),%ebp
mov    %bpl,(%rbx,%rcx,1)
mov    0x20(%rsp),%r10
lea    0x2(%r14),%rbx
cmp    0x18(%rsp),%rbx
jl     1b80 <charplot+0x9e0>
cmp    0x8(%rsp),%rbx
jg     1b80 <charplot+0x9e0>
cmp    %r10,%rdi
jl     1b80 <charplot+0x9e0>
cmp    %r13d,%esi
jge    1b80 <charplot+0x9e0>
add    0x8(%rsp),%rbx
mov    0x10(%rsp),%rsi
mov    (%rsi,%rbx,8),%rsi
mov    0x4(%rsp),%edi
mov    %dil,(%rsi,%rcx,1)
lea    0x2(%r11),%rsi
cmp    %r10,%rsi
setl   %bl
lea    (%r11,%r9,1),%rcx
add    $0x2,%rcx
or     %bl,%al
jne    1bb4 <charplot+0xa14>
cmp    %r9,%rsi
jg     1bb4 <charplot+0xa14>
mov    0x8(%rsp),%rax
add    %r14,%rax
mov    0x10(%rsp),%rdi
mov    (%rdi,%rax,8),%rax
mov    0x4(%rsp),%edi
mov    %dil,(%rax,%rcx,1)
cmpl   $0x80000000,0x40(%rsp)
80
je     1c1c <charplot+0xa7c>
cmp    0x18(%rsp),%r12
jl     1bea <charplot+0xa4a>
cmp    %edx,%r8d
jge    1bea <charplot+0xa4a>
cmp    %r10,%rsi
jl     1bea <charplot+0xa4a>
cmp    %r9,%rsi
jg     1bea <charplot+0xa4a>
add    0x8(%rsp),%r12
mov    0x10(%rsp),%rax
mov    (%rax,%r12,8),%rax
mov    0x4(%rsp),%edi
mov    %dil,(%rax,%rcx,1)
add    $0x2,%r14
cmp    0x18(%rsp),%r14
jl     1c1c <charplot+0xa7c>
cmp    0x8(%rsp),%r14
jg     1c1c <charplot+0xa7c>
cmp    %r10,%rsi
jl     1c1c <charplot+0xa7c>
cmp    %r9,%rsi
jg     1c1c <charplot+0xa7c>
add    0x8(%rsp),%r14
mov    0x10(%rsp),%rax
mov    (%rax,%r14,8),%rax
mov    0x4(%rsp),%esi
mov    %sil,(%rax,%rcx,1)
mov    0x40(%rsp),%rax
add    %edx,%eax
mov    0x50(%rsp),%rcx
add    %r13d,%ecx
mov    0x38(%rsp),%rbp
add    %edx,%ebp
mov    0x48(%rsp),%rdi
add    %r13d,%edi
cltq
mov    0x10(%rsp),%rsi
mov    (%rsi,%rax,8),%rax
movslq %ecx,%rcx
movb   $0x54,(%rax,%rcx,1)
movslq %ebp,%rax
mov    (%rsi,%rax,8),%rax
movslq %edi,%rcx
movb   $0x50,(%rax,%rcx,1)
test   %edx,%edx
js     1d0d <charplot+0xb6d>
mov    %r13d,%eax
neg    %eax
cmovs  %r13d,%eax
add    $0x1,%edx
mov    0x20(%rsp),%rcx
add    %rcx,0x28(%rsp)
add    %r13d,%eax
add    $0x1,%eax
mov    %eax,0x20(%rsp)
jmp    1cba <charplot+0xb1a>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
mov    $0xa,%edi
mov    %r12,%rsi
call   1070 <fputc@plt>
mov    0x18(%rsp),%rax
add    $0x1,%rax
mov    %r14,%rdx
mov    %rax,0x18(%rsp)
cmp    %eax,%edx
mov    0x128(%rsp),%r13d
je     1d0d <charplot+0xb6d>
mov    %rdx,%r14
test   %r13d,%r13d
mov    0x10(%rsp),%r13
mov    0x138(%rsp),%r12
js     1c90 <charplot+0xaf0>
mov    0x8(%rsp),%rax
mov    0x18(%rsp),%rcx
lea    (%rcx,%rax,1),%rbx
mov    0x20(%rsp),%ebp
mov    0x28(%rsp),%r15
cs nopw 0x0(%rax,%rax,1)
mov    0x0(%r13,%rbx,8),%rax
movsbl (%rax,%r15,1),%edi
mov    %r12,%rsi
call   1070 <fputc@plt>
add    $0x1,%r15
add    $0xffffffff,%ebp
jne    1cf0 <charplot+0xb50>
jmp    1c90 <charplot+0xaf0>
mov    0x88(%rsp),%eax
test   %eax,%eax
mov    0x10(%rsp),%r14
jle    1d42 <charplot+0xba2>
mov    %eax,%ebx
xor    %ebp,%ebp
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
mov    (%r14,%rbp,8),%rdi
call   1030 <free@plt>
add    $0x1,%rbp
cmp    %rbp,%rbx
jne    1d30 <charplot+0xb90>
mov    %r14,%rdi
call   1030 <free@plt>
mov    $0x1,%eax
add    $0xe8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
@M_SQRT2 = global double 0.000000e+00
@.str = [3 x i8] c"%c\00"
@.str.1 = [2 x i8] c"\0A\00"
@M_PI = global double 0.000000e+00
@.str.2 = [5 x i8] c"%c%c\00"
define i32 @charplot(double* %0, double %1, double %2, double %3, double %4, i8 signext %5, i8 signext %6, i8 signext %7, i8 signext %8, i8 signext %9, i8 signext %10, i32 %11, i32 %12, i32* %13) {
%15 = alloca double*
%16 = alloca double
%17 = alloca double
%18 = alloca double
%19 = alloca double
%20 = alloca i8
%21 = alloca i8
%22 = alloca i8
%23 = alloca i8
%24 = alloca i8
%25 = alloca i8
%26 = alloca i32
%27 = alloca i32
%28 = alloca i32*
%29 = alloca i32
%30 = alloca i32
%31 = alloca i32
%32 = alloca i32
%33 = alloca i32
%34 = alloca i32
%35 = alloca i32
%36 = alloca double
%37 = alloca double
%38 = alloca double
%39 = alloca double
%40 = alloca double
%41 = alloca double
%42 = alloca double
%43 = alloca double
%44 = alloca double
%45 = alloca i8**
store double* %0, double** %15
store double %1, double* %16
store double %2, double* %17
store double %3, double* %18
store double %4, double* %19
store i8 %5, i8* %20
store i8 %6, i8* %21
store i8 %7, i8* %22
store i8 %8, i8* %23
store i8 %9, i8* %24
store i8 %10, i8* %25
store i32 %11, i32* %26
store i32 %12, i32* %27
store i32* %13, i32** %28
%46 = load i32, i32* %27
%47 = mul nsw i32 2, %46
%48 = add nsw i32 %47, 1
%49 = load i32, i32* %26
%50 = mul nsw i32 2, %49
%51 = add nsw i32 %50, 1
%52 = call i8** @char_calloc2(i32 %48, i32 %51)
store i8** %52, i8*** %45
store i32 0, i32* %32
store i32 0, i32* %34
store i32 0, i32* %33
store i32 0, i32* %35
%53 = load double*, double** %15
%54 = getelementptr inbounds double, double* %53, i64 0
%55 = load double, double* %54
store double %55, double* %37
%56 = load double*, double** %15
%57 = getelementptr inbounds double, double* %56, i64 0
%58 = load double, double* %57
store double %58, double* %38
%59 = load i32, i32* %27
store i32 %59, i32* %30
br label %60
60: ; preds = %262, %14
%61 = load i32, i32* %30
%62 = load i32, i32* %27
%63 = sub nsw i32 0, %62
%64 = icmp sge i32 %61, %63
br i1 %64, label %65, label %265
65: ; preds = %60
%66 = load i32, i32* %26
%67 = sub nsw i32 0, %66
store i32 %67, i32* %29
br label %68
68: ; preds = %258, %65
%69 = load i32, i32* %29
%70 = load i32, i32* %26
%71 = icmp sle i32 %69, %70
br i1 %71, label %72, label %261
72: ; preds = %68
%73 = load i32, i32* %29
%74 = sitofp i32 %73 to double
%75 = load i32, i32* %30
%76 = sitofp i32 %75 to double
%77 = load i32, i32* %26
%78 = sitofp i32 %77 to double
%79 = fmul double %76, %78
%80 = load i32, i32* %27
%81 = sitofp i32 %80 to double
%82 = fdiv double %79, %81
%83 = call double @hypot(double %74, double %82)
store double %83, double* %36
%84 = load double, double* %36
%85 = fadd double %84, 5.000000e-01
%86 = fptosi double %85 to i32
store i32 %86, i32* %31
%87 = load i8, i8* %22
%88 = load i8**, i8*** %45
%89 = load i32, i32* %27
%90 = load i32, i32* %30
%91 = add nsw i32 %89, %90
%92 = sext i32 %91 to i64
%93 = getelementptr inbounds i8*, i8** %88, i64 %92
%94 = load i8*, i8** %93
%95 = load i32, i32* %26
%96 = load i32, i32* %29
%97 = add nsw i32 %95, %96
%98 = sext i32 %97 to i64
%99 = getelementptr inbounds i8, i8* %94, i64 %98
store i8 %87, i8* %99
%100 = load i32, i32* %31
%101 = load i32, i32* %26
%102 = icmp sle i32 %100, %101
br i1 %102, label %103, label %227
103: ; preds = %72
%104 = load i8, i8* %20
%105 = load i8**, i8*** %45
%106 = load i32, i32* %27
%107 = load i32, i32* %30
%108 = add nsw i32 %106, %107
%109 = sext i32 %108 to i64
%110 = getelementptr inbounds i8*, i8** %105, i64 %109
%111 = load i8*, i8** %110
%112 = load i32, i32* %26
%113 = load i32, i32* %29
%114 = add nsw i32 %112, %113
%115 = sext i32 %114 to i64
%116 = getelementptr inbounds i8, i8* %111, i64 %115
store i8 %104, i8* %116
%117 = load double, double* %36
%118 = load i32, i32* %26
%119 = sitofp i32 %118 to double
%120 = fdiv double %117, %119
%121 = load double, double* @M_SQRT2
%122 = fdiv double %120, %121
%123 = call i32 @asin(double %122)
%124 = sitofp i32 %123 to double
%125 = fmul double 2.000000e+00, %124
store double %125, double* %39
%126 = load i32, i32* %29
%127 = load i32, i32* %30
%128 = sitofp i32 %127 to double
%129 = load i32, i32* %26
%130 = sitofp i32 %129 to double
%131 = fmul double %128, %130
%132 = load i32, i32* %27
%133 = sitofp i32 %132 to double
%134 = fdiv double %131, %133
%135 = fptosi double %134 to i32
%136 = call double @atan2(i32 %126, i32 %135)
store double %136, double* %40
%137 = load double, double* %39
%138 = call double @sin(double %137)
%139 = load double, double* %40
%140 = call double @sin(double %139)
%141 = fmul double %138, %140
store double %141, double* %41
%142 = load double, double* %39
%143 = call double @sin(double %142)
%144 = load double, double* %40
%145 = call double @cos(double %144)
%146 = fmul double %143, %145
store double %146, double* %42
%147 = load double, double* %39
%148 = call double @cos(double %147)
%149 = fneg double %148
store double %149, double* %43
%150 = load double*, double** %15
%151 = getelementptr inbounds double, double* %150, i64 0
%152 = load double, double* %151
%153 = load double, double* %43
%154 = fmul double %152, %153
%155 = load double, double* %43
%156 = load double*, double** %15
%157 = getelementptr inbounds double, double* %156, i64 1
%158 = load double, double* %157
%159 = load double, double* %42
%160 = fmul double %158, %159
%161 = load double, double* %42
%162 = fmul double %160, %161
%163 = call double @llvm.fmuladd.f64(double %154, double %155, double %162)
%164 = load double*, double** %15
%165 = getelementptr inbounds double, double* %164, i64 2
%166 = load double, double* %165
%167 = load double, double* %41
%168 = fmul double %166, %167
%169 = load double, double* %41
%170 = call double @llvm.fmuladd.f64(double %168, double %169, double %163)
store double %170, double* %44
%171 = load double*, double** %15
%172 = getelementptr inbounds double, double* %171, i64 3
%173 = load double, double* %172
%174 = load double, double* %43
%175 = fmul double %173, %174
%176 = load double, double* %42
%177 = load double*, double** %15
%178 = getelementptr inbounds double, double* %177, i64 4
%179 = load double, double* %178
%180 = load double, double* %43
%181 = fmul double %179, %180
%182 = load double, double* %41
%183 = fmul double %181, %182
%184 = call double @llvm.fmuladd.f64(double %175, double %176, double %183)
%185 = load double*, double** %15
%186 = getelementptr inbounds double, double* %185, i64 5
%187 = load double, double* %186
%188 = load double, double* %41
%189 = fmul double %187, %188
%190 = load double, double* %42
%191 = call double @llvm.fmuladd.f64(double %189, double %190, double %184)
%192 = load double, double* %44
%193 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %191, double %192)
store double %193, double* %44
%194 = load double, double* %44
%195 = fcmp ogt double %194, 0.000000e+00
br i1 %195, label %196, label %210
196: ; preds = %103
%197 = load i8, i8* %21
%198 = load i8**, i8*** %45
%199 = load i32, i32* %27
%200 = load i32, i32* %30
%201 = add nsw i32 %199, %200
%202 = sext i32 %201 to i64
%203 = getelementptr inbounds i8*, i8** %198, i64 %202
%204 = load i8*, i8** %203
%205 = load i32, i32* %26
%206 = load i32, i32* %29
%207 = add nsw i32 %205, %206
%208 = sext i32 %207 to i64
%209 = getelementptr inbounds i8, i8* %204, i64 %208
store i8 %197, i8* %209
br label %210
210: ; preds = %196, %103
%211 = load double, double* %44
%212 = load double, double* %37
%213 = fcmp olt double %211, %212
br i1 %213, label %214, label %218
214: ; preds = %210
%215 = load double, double* %44
store double %215, double* %37
%216 = load i32, i32* %29
store i32 %216, i32* %32
%217 = load i32, i32* %30
store i32 %217, i32* %34
br label %218
218: ; preds = %214, %210
%219 = load double, double* %44
%220 = load double, double* %38
%221 = fcmp ogt double %219, %220
br i1 %221, label %222, label %226
222: ; preds = %218
%223 = load double, double* %44
store double %223, double* %38
%224 = load i32, i32* %29
store i32 %224, i32* %33
%225 = load i32, i32* %30
store i32 %225, i32* %35
br label %226
226: ; preds = %222, %218
br label %257
227: ; preds = %72
%228 = load i8, i8* %23
%229 = sext i8 %228 to i32
%230 = icmp ne i32 %229, 0
br i1 %230, label %231, label %256
231: ; preds = %227
%232 = load double, double* %36
%233 = load i32, i32* %26
%234 = sitofp i32 %233 to double
%235 = fcmp oge double %232, %234
br i1 %235, label %236, label %256
236: ; preds = %231
%237 = load double, double* %36
%238 = load i32, i32* %26
%239 = add nsw i32 %238, 1
%240 = sitofp i32 %239 to double
%241 = fcmp olt double %237, %240
br i1 %241, label %242, label %256
242: ; preds = %236
%243 = load i8, i8* %23
%244 = load i8**, i8*** %45
%245 = load i32, i32* %27
%246 = load i32, i32* %30
%247 = add nsw i32 %245, %246
%248 = sext i32 %247 to i64
%249 = getelementptr inbounds i8*, i8** %244, i64 %248
%250 = load i8*, i8** %249
%251 = load i32, i32* %26
%252 = load i32, i32* %29
%253 = add nsw i32 %251, %252
%254 = sext i32 %253 to i64
%255 = getelementptr inbounds i8, i8* %250, i64 %254
store i8 %243, i8* %255
br label %256
256: ; preds = %242, %236, %231, %227
br label %257
257: ; preds = %256, %226
br label %258
258: ; preds = %257
%259 = load i32, i32* %29
%260 = add nsw i32 %259, 1
store i32 %260, i32* %29
br label %68
261: ; preds = %68
br label %262
262: ; preds = %261
%263 = load i32, i32* %30
%264 = add nsw i32 %263, -1
store i32 %264, i32* %30
br label %60
265: ; preds = %60
%266 = load i8, i8* %24
%267 = sext i8 %266 to i32
%268 = icmp eq i32 %267, 0
br i1 %268, label %269, label %446
269: ; preds = %265
%270 = load i32, i32* %32
%271 = sub nsw i32 %270, 1
store i32 %271, i32* %29
br label %272
272: ; preds = %322, %269
%273 = load i32, i32* %29
%274 = load i32, i32* %32
%275 = add nsw i32 %274, 1
%276 = icmp sle i32 %273, %275
br i1 %276, label %277, label %325
277: ; preds = %272
%278 = load i32, i32* %34
%279 = sub nsw i32 %278, 1
store i32 %279, i32* %30
br label %280
280: ; preds = %318, %277
%281 = load i32, i32* %30
%282 = load i32, i32* %34
%283 = add nsw i32 %282, 1
%284 = icmp sle i32 %281, %283
br i1 %284, label %285, label %321
285: ; preds = %280
%286 = load i32, i32* %30
%287 = load i32, i32* %27
%288 = sub nsw i32 0, %287
%289 = icmp sge i32 %286, %288
br i1 %289, label %290, label %317
290: ; preds = %285
%291 = load i32, i32* %30
%292 = load i32, i32* %27
%293 = icmp sle i32 %291, %292
br i1 %293, label %294, label %317
294: ; preds = %290
%295 = load i32, i32* %29
%296 = load i32, i32* %26
%297 = sub nsw i32 0, %296
%298 = icmp sge i32 %295, %297
br i1 %298, label %299, label %317
299: ; preds = %294
%300 = load i32, i32* %29
%301 = load i32, i32* %26
%302 = icmp sle i32 %300, %301
br i1 %302, label %303, label %317
303: ; preds = %299
%304 = load i8, i8* %22
%305 = load i8**, i8*** %45
%306 = load i32, i32* %27
%307 = load i32, i32* %30
%308 = add nsw i32 %306, %307
%309 = sext i32 %308 to i64
%310 = getelementptr inbounds i8*, i8** %305, i64 %309
%311 = load i8*, i8** %310
%312 = load i32, i32* %26
%313 = load i32, i32* %29
%314 = add nsw i32 %312, %313
%315 = sext i32 %314 to i64
%316 = getelementptr inbounds i8, i8* %311, i64 %315
store i8 %304, i8* %316
br label %317
317: ; preds = %303, %299, %294, %290, %285
br label %318
318: ; preds = %317
%319 = load i32, i32* %30
%320 = add nsw i32 %319, 1
store i32 %320, i32* %30
br label %280
321: ; preds = %280
br label %322
322: ; preds = %321
%323 = load i32, i32* %29
%324 = add nsw i32 %323, 1
store i32 %324, i32* %29
br label %272
325: ; preds = %272
%326 = load i32, i32* %33
%327 = sub nsw i32 %326, 1
store i32 %327, i32* %29
br label %328
328: ; preds = %378, %325
%329 = load i32, i32* %29
%330 = load i32, i32* %33
%331 = add nsw i32 %330, 1
%332 = icmp sle i32 %329, %331
br i1 %332, label %333, label %381
333: ; preds = %328
%334 = load i32, i32* %35
%335 = sub nsw i32 %334, 1
store i32 %335, i32* %30
br label %336
336: ; preds = %374, %333
%337 = load i32, i32* %30
%338 = load i32, i32* %35
%339 = add nsw i32 %338, 1
%340 = icmp sle i32 %337, %339
br i1 %340, label %341, label %377
341: ; preds = %336
%342 = load i32, i32* %30
%343 = load i32, i32* %27
%344 = sub nsw i32 0, %343
%345 = icmp sge i32 %342, %344
br i1 %345, label %346, label %373
346: ; preds = %341
%347 = load i32, i32* %30
%348 = load i32, i32* %27
%349 = icmp sle i32 %347, %348
br i1 %349, label %350, label %373
350: ; preds = %346
%351 = load i32, i32* %29
%352 = load i32, i32* %26
%353 = sub nsw i32 0, %352
%354 = icmp sge i32 %351, %353
br i1 %354, label %355, label %373
355: ; preds = %350
%356 = load i32, i32* %29
%357 = load i32, i32* %26
%358 = icmp sle i32 %356, %357
br i1 %358, label %359, label %373
359: ; preds = %355
%360 = load i8, i8* %22
%361 = load i8**, i8*** %45
%362 = load i32, i32* %27
%363 = load i32, i32* %30
%364 = add nsw i32 %362, %363
%365 = sext i32 %364 to i64
%366 = getelementptr inbounds i8*, i8** %361, i64 %365
%367 = load i8*, i8** %366
%368 = load i32, i32* %26
%369 = load i32, i32* %29
%370 = add nsw i32 %368, %369
%371 = sext i32 %370 to i64
%372 = getelementptr inbounds i8, i8* %367, i64 %371
store i8 %360, i8* %372
br label %373
373: ; preds = %359, %355, %350, %346, %341
br label %374
374: ; preds = %373
%375 = load i32, i32* %30
%376 = add nsw i32 %375, 1
store i32 %376, i32* %30
br label %336
377: ; preds = %336
br label %378
378: ; preds = %377
%379 = load i32, i32* %29
%380 = add nsw i32 %379, 1
store i32 %380, i32* %29
br label %328
381: ; preds = %328
%382 = load i8**, i8*** %45
%383 = load i32, i32* %27
%384 = load i32, i32* %35
%385 = add nsw i32 %383, %384
%386 = sext i32 %385 to i64
%387 = getelementptr inbounds i8*, i8** %382, i64 %386
%388 = load i8*, i8** %387
%389 = load i32, i32* %26
%390 = load i32, i32* %33
%391 = add nsw i32 %389, %390
%392 = sext i32 %391 to i64
%393 = getelementptr inbounds i8, i8* %388, i64 %392
store i8 84, i8* %393
%394 = load i8**, i8*** %45
%395 = load i32, i32* %27
%396 = load i32, i32* %34
%397 = add nsw i32 %395, %396
%398 = sext i32 %397 to i64
%399 = getelementptr inbounds i8*, i8** %394, i64 %398
%400 = load i8*, i8** %399
%401 = load i32, i32* %26
%402 = load i32, i32* %32
%403 = add nsw i32 %401, %402
%404 = sext i32 %403 to i64
%405 = getelementptr inbounds i8, i8* %400, i64 %404
store i8 80, i8* %405
%406 = load i32, i32* %27
%407 = sub nsw i32 0, %406
store i32 %407, i32* %30
br label %408
408: ; preds = %442, %381
%409 = load i32, i32* %30
%410 = load i32, i32* %27
%411 = icmp sle i32 %409, %410
br i1 %411, label %412, label %445
412: ; preds = %408
%413 = load i32, i32* %26
%414 = sub nsw i32 0, %413
store i32 %414, i32* %29
br label %415
415: ; preds = %436, %412
%416 = load i32, i32* %29
%417 = load i32, i32* %26
%418 = icmp sle i32 %416, %417
br i1 %418, label %419, label %439
419: ; preds = %415
%420 = load i32*, i32** %28
%421 = load i8**, i8*** %45
%422 = load i32, i32* %27
%423 = load i32, i32* %30
%424 = add nsw i32 %422, %423
%425 = sext i32 %424 to i64
%426 = getelementptr inbounds i8*, i8** %421, i64 %425
%427 = load i8*, i8** %426
%428 = load i32, i32* %26
%429 = load i32, i32* %29
%430 = add nsw i32 %428, %429
%431 = sext i32 %430 to i64
%432 = getelementptr inbounds i8, i8* %427, i64 %431
%433 = load i8, i8* %432
%434 = sext i8 %433 to i32
%435 = call i32 (i32*, i8*, ...) @fprintf(i32* %420, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i32 %434)
br label %436
436: ; preds = %419
%437 = load i32, i32* %29
%438 = add nsw i32 %437, 1
store i32 %438, i32* %29
br label %415
439: ; preds = %415
%440 = load i32*, i32** %28
%441 = call i32 (i32*, i8*, ...) @fprintf(i32* %440, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
br label %442
442: ; preds = %439
%443 = load i32, i32* %30
%444 = add nsw i32 %443, 1
store i32 %444, i32* %30
br label %408
445: ; preds = %408
br label %515
446: ; preds = %265
%447 = load i8**, i8*** %45
%448 = load double, double* %16
%449 = load double, double* @M_PI
%450 = fmul double %448, %449
%451 = fdiv double %450, 1.800000e+02
%452 = load double, double* %17
%453 = load double, double* @M_PI
%454 = fmul double %452, %453
%455 = fdiv double %454, 1.800000e+02
%456 = load i32, i32* %26
%457 = load i32, i32* %27
%458 = load i8, i8* %25
%459 = call i32 @pnodal(i8** %447, double %451, double %455, i32 %456, i32 %457, i8 signext %458)
%460 = load i8**, i8*** %45
%461 = load double, double* %18
%462 = load double, double* @M_PI
%463 = fmul double %461, %462
%464 = fdiv double %463, 1.800000e+02
%465 = load double, double* %19
%466 = load double, double* @M_PI
%467 = fmul double %465, %466
%468 = fdiv double %467, 1.800000e+02
%469 = load i32, i32* %26
%470 = load i32, i32* %27
%471 = load i8, i8* %25
%472 = call i32 @pnodal(i8** %460, double %464, double %468, i32 %469, i32 %470, i8 signext %471)
%473 = load i32, i32* %27
%474 = sub nsw i32 0, %473
store i32 %474, i32* %30
br label %475
475: ; preds = %511, %446
%476 = load i32, i32* %30
%477 = load i32, i32* %27
%478 = icmp sle i32 %476, %477
br i1 %478, label %479, label %514
479: ; preds = %475
%480 = load i32, i32* %26
%481 = sub nsw i32 0, %480
store i32 %481, i32* %29
br label %482
482: ; preds = %505, %479
%483 = load i32, i32* %29
%484 = load i32, i32* %26
%485 = icmp sle i32 %483, %484
br i1 %485, label %486, label %508
486: ; preds = %482
%487 = load i32*, i32** %28
%488 = load i8**, i8*** %45
%489 = load i32, i32* %27
%490 = load i32, i32* %30
%491 = add nsw i32 %489, %490
%492 = sext i32 %491 to i64
%493 = getelementptr inbounds i8*, i8** %488, i64 %492
%494 = load i8*, i8** %493
%495 = load i32, i32* %26
%496 = load i32, i32* %29
%497 = add nsw i32 %495, %496
%498 = sext i32 %497 to i64
%499 = getelementptr inbounds i8, i8* %494, i64 %498
%500 = load i8, i8* %499
%501 = sext i8 %500 to i32
%502 = load i8, i8* %24
%503 = sext i8 %502 to i32
%504 = call i32 (i32*, i8*, ...) @fprintf(i32* %487, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.2, i64 0, i64 0), i32 %501, i32 %503)
br label %505
505: ; preds = %486
%506 = load i32, i32* %29
%507 = add nsw i32 %506, 1
store i32 %507, i32* %29
br label %482
508: ; preds = %482
%509 = load i32*, i32** %28
%510 = call i32 (i32*, i8*, ...) @fprintf(i32* %509, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
br label %511
511: ; preds = %508
%512 = load i32, i32* %30
%513 = add nsw i32 %512, 1
store i32 %513, i32* %30
br label %475
514: ; preds = %475
br label %515
515: ; preds = %514, %445
store i32 0, i32* %29
br label %516
516: ; preds = %530, %515
%517 = load i32, i32* %29
%518 = load i32, i32* %27
%519 = mul nsw i32 2, %518
%520 = add nsw i32 %519, 1
%521 = icmp slt i32 %517, %520
br i1 %521, label %522, label %533
522: ; preds = %516
%523 = load i8**, i8*** %45
%524 = load i32, i32* %29
%525 = sext i32 %524 to i64
%526 = getelementptr inbounds i8*, i8** %523, i64 %525
%527 = load i8*, i8** %526
%528 = bitcast i8* %527 to i8**
%529 = call i32 @free(i8** %528)
br label %530
530: ; preds = %522
%531 = load i32, i32* %29
%532 = add nsw i32 %531, 1
store i32 %532, i32* %29
br label %516
533: ; preds = %516
%534 = load i8**, i8*** %45
%535 = call i32 @free(i8** %534)
ret i32 1
}

LLVM IR (-O2):
@M_SQRT2 = global double 0.000000e+00
@M_PI = global double 0.000000e+00
@.str.2 = [5 x i8] c"%c%c\00"
define i32 @charplot(double* nocapture %0, double %1, double %2, double %3, double %4, i8 signext %5, i8 signext %6, i8 signext %7, i8 signext %8, i8 signext %9, i8 signext %10, i32 %11, i32 %12, i32* nocapture %13) {
%15 = shl nsw i32 %12, 1
%16 = or i32 %15, 1
%17 = shl nsw i32 %11, 1
%18 = or i32 %17, 1
%19 = tail call i8** @char_calloc2(i32 %16, i32 %18)
%20 = load double, double* %0
%21 = sub i32 0, %12
%22 = icmp slt i32 %12, 0
br i1 %22, label %150, label %23
23: ; preds = %14
%24 = sub i32 0, %11
%25 = icmp slt i32 %11, 0
%26 = sitofp i32 %11 to double
%27 = sitofp i32 %12 to double
%28 = getelementptr inbounds double, double* %0, i64 1
%29 = getelementptr inbounds double, double* %0, i64 2
%30 = getelementptr inbounds double, double* %0, i64 3
%31 = getelementptr inbounds double, double* %0, i64 4
%32 = getelementptr inbounds double, double* %0, i64 5
%33 = icmp ne i8 %8, 0
%34 = add nsw i32 %11, 1
%35 = sitofp i32 %34 to double
%36 = sext i32 %24 to i64
%37 = sext i32 %11 to i64
%38 = call i32 @llvm.abs.i32(i32 %11, i1 false)
%39 = add nuw i32 %38, 1
%40 = zext i32 %12 to i64
%41 = sext i32 %21 to i64
br label %42
42: ; preds = %23, %141
%43 = phi i64 [ %40, %23 ], [ %148, %141 ]
%44 = phi i32 [ 0, %23 ], [ %147, %141 ]
%45 = phi i32 [ 0, %23 ], [ %146, %141 ]
%46 = phi i32 [ 0, %23 ], [ %145, %141 ]
%47 = phi i32 [ 0, %23 ], [ %144, %141 ]
%48 = phi double [ %20, %23 ], [ %143, %141 ]
%49 = phi double [ %20, %23 ], [ %142, %141 ]
br i1 %25, label %141, label %50
50: ; preds = %42
%51 = trunc i64 %43 to i32
%52 = sitofp i32 %51 to double
%53 = fmul double %26, %52
%54 = fdiv double %53, %27
%55 = add nsw i64 %43, %40
%56 = getelementptr inbounds i8*, i8** %19, i64 %55
%57 = fptosi double %54 to i32
br label %58
58: ; preds = %50, %131
%59 = phi i64 [ %36, %50 ], [ %138, %131 ]
%60 = phi i32 [ %44, %50 ], [ %137, %131 ]
%61 = phi i32 [ %45, %50 ], [ %136, %131 ]
%62 = phi i32 [ %46, %50 ], [ %135, %131 ]
%63 = phi i32 [ %47, %50 ], [ %134, %131 ]
%64 = phi double [ %48, %50 ], [ %133, %131 ]
%65 = phi double [ %49, %50 ], [ %132, %131 ]
%66 = trunc i64 %59 to i32
%67 = sitofp i32 %66 to double
%68 = tail call double @hypot(double %67, double %54)
%69 = fadd double %68, 5.000000e-01
%70 = fptosi double %69 to i32
%71 = load i8*, i8** %56
%72 = add nsw i64 %59, %37
%73 = getelementptr inbounds i8, i8* %71, i64 %72
store i8 %7, i8* %73
%74 = icmp sgt i32 %70, %11
br i1 %74, label %123, label %75
75: ; preds = %58
%76 = load i8*, i8** %56
%77 = getelementptr inbounds i8, i8* %76, i64 %72
store i8 %5, i8* %77
%78 = fdiv double %68, %26
%79 = load double, double* @M_SQRT2
%80 = fdiv double %78, %79
%81 = tail call i32 @asin(double %80)
%82 = sitofp i32 %81 to double
%83 = fmul double %82, 2.000000e+00
%84 = tail call double @atan2(i32 %66, i32 %57)
%85 = tail call double @sin(double %83)
%86 = tail call double @sin(double %84)
%87 = fmul double %85, %86
%88 = tail call double @sin(double %83)
%89 = tail call double @cos(double %84)
%90 = fmul double %88, %89
%91 = tail call double @cos(double %83)
%92 = fneg double %91
%93 = load double, double* %0
%94 = fmul double %93, %92
%95 = load double, double* %28
%96 = fmul double %90, %95
%97 = fmul double %90, %96
%98 = tail call double @llvm.fmuladd.f64(double %94, double %92, double %97)
%99 = load double, double* %29
%100 = fmul double %87, %99
%101 = tail call double @llvm.fmuladd.f64(double %100, double %87, double %98)
%102 = load double, double* %30
%103 = fmul double %102, %92
%104 = load double, double* %31
%105 = fmul double %104, %92
%106 = fmul double %87, %105
%107 = tail call double @llvm.fmuladd.f64(double %103, double %90, double %106)
%108 = load double, double* %32
%109 = fmul double %87, %108
%110 = tail call double @llvm.fmuladd.f64(double %109, double %90, double %107)
%111 = tail call double @llvm.fmuladd.f64(double %110, double 2.000000e+00, double %101)
%112 = fcmp ogt double %111, 0.000000e+00
br i1 %112, label %113, label %116
113: ; preds = %75
%114 = load i8*, i8** %56
%115 = getelementptr inbounds i8, i8* %114, i64 %72
store i8 %6, i8* %115
br label %116
116: ; preds = %113, %75
%117 = fcmp olt double %111, %65
%118 = select i1 %117, double %111, double %65
%119 = select i1 %117, i32 %51, i32 %62
%120 = select i1 %117, i32 %66, i32 %60
%121 = fcmp ogt double %111, %64
br i1 %121, label %122, label %131
122: ; preds = %116
br label %131
123: ; preds = %58
%124 = fcmp oge double %68, %26
%125 = select i1 %33, i1 %124, i1 false
%126 = fcmp olt double %68, %35
%127 = select i1 %125, i1 %126, i1 false
br i1 %127, label %128, label %131
128: ; preds = %123
%129 = load i8*, i8** %56
%130 = getelementptr inbounds i8, i8* %129, i64 %72
store i8 %8, i8* %130
br label %131
131: ; preds = %122, %116, %128, %123
%132 = phi double [ %118, %122 ], [ %118, %116 ], [ %65, %128 ], [ %65, %123 ]
%133 = phi double [ %111, %122 ], [ %64, %116 ], [ %64, %128 ], [ %64, %123 ]
%134 = phi i32 [ %51, %122 ], [ %63, %116 ], [ %63, %128 ], [ %63, %123 ]
%135 = phi i32 [ %119, %122 ], [ %119, %116 ], [ %62, %128 ], [ %62, %123 ]
%136 = phi i32 [ %66, %122 ], [ %61, %116 ], [ %61, %128 ], [ %61, %123 ]
%137 = phi i32 [ %120, %122 ], [ %120, %116 ], [ %60, %128 ], [ %60, %123 ]
%138 = add nsw i64 %59, 1
%139 = trunc i64 %138 to i32
%140 = icmp eq i32 %39, %139
br i1 %140, label %141, label %58
141: ; preds = %131, %42
%142 = phi double [ %49, %42 ], [ %132, %131 ]
%143 = phi double [ %48, %42 ], [ %133, %131 ]
%144 = phi i32 [ %47, %42 ], [ %134, %131 ]
%145 = phi i32 [ %46, %42 ], [ %135, %131 ]
%146 = phi i32 [ %45, %42 ], [ %136, %131 ]
%147 = phi i32 [ %44, %42 ], [ %137, %131 ]
%148 = add nsw i64 %43, -1
%149 = icmp sgt i64 %43, %41
br i1 %149, label %42, label %150
150: ; preds = %141, %14
%151 = phi i32 [ 0, %14 ], [ %144, %141 ]
%152 = phi i32 [ 0, %14 ], [ %145, %141 ]
%153 = phi i32 [ 0, %14 ], [ %146, %141 ]
%154 = phi i32 [ 0, %14 ], [ %147, %141 ]
%155 = sext i8 %9 to i32
%156 = icmp eq i8 %9, 0
br i1 %156, label %157, label %439
157: ; preds = %150
%158 = add i32 %154, -1
%159 = add i32 %152, -1
%160 = sub i32 0, %11
%161 = sext i32 %159 to i64
%162 = sext i32 %12 to i64
%163 = sext i32 %21 to i64
%164 = sext i32 %158 to i64
%165 = sext i32 %11 to i64
%166 = sext i32 %160 to i64
%167 = icmp slt i32 %158, %160
%168 = icmp sgt i32 %158, %11
%169 = add nsw i64 %164, %165
%170 = icmp slt i32 %159, %21
%171 = icmp sgt i32 %159, %12
%172 = or i1 %170, %171
%173 = select i1 %172, i1 true, i1 %167
%174 = select i1 %173, i1 true, i1 %168
br i1 %174, label %180, label %175
175: ; preds = %157
%176 = add nsw i64 %161, %162
%177 = getelementptr inbounds i8*, i8** %19, i64 %176
%178 = load i8*, i8** %177
%179 = getelementptr inbounds i8, i8* %178, i64 %169
store i8 %7, i8* %179
br label %180
180: ; preds = %157, %175
%181 = add nsw i64 %161, 1
%182 = icmp eq i32 %152, -2147483648
br i1 %182, label %206, label %183
183: ; preds = %180
%184 = icmp slt i64 %181, %163
%185 = icmp sge i32 %159, %12
%186 = or i1 %184, %185
%187 = select i1 %186, i1 true, i1 %167
%188 = select i1 %187, i1 true, i1 %168
br i1 %188, label %194, label %189
189: ; preds = %183
%190 = add nsw i64 %181, %162
%191 = getelementptr inbounds i8*, i8** %19, i64 %190
%192 = load i8*, i8** %191
%193 = getelementptr inbounds i8, i8* %192, i64 %169
store i8 %7, i8* %193
br label %194
194: ; preds = %189, %183
%195 = add nsw i64 %161, 2
%196 = icmp slt i64 %195, %163
%197 = icmp sgt i64 %195, %162
%198 = or i1 %196, %197
%199 = select i1 %198, i1 true, i1 %167
%200 = select i1 %199, i1 true, i1 %168
br i1 %200, label %206, label %201
201: ; preds = %194
%202 = add nsw i64 %195, %162
%203 = getelementptr inbounds i8*, i8** %19, i64 %202
%204 = load i8*, i8** %203
%205 = getelementptr inbounds i8, i8* %204, i64 %169
store i8 %7, i8* %205
br label %206
206: ; preds = %194, %201, %180
%207 = add nsw i64 %164, 1
%208 = icmp eq i32 %154, -2147483648
br i1 %208, label %280, label %209
209: ; preds = %206
%210 = icmp slt i64 %207, %166
%211 = icmp sge i32 %158, %11
%212 = add nsw i64 %207, %165
%213 = select i1 %172, i1 true, i1 %210
%214 = select i1 %213, i1 true, i1 %211
br i1 %214, label %220, label %215
215: ; preds = %209
%216 = add nsw i64 %161, %162
%217 = getelementptr inbounds i8*, i8** %19, i64 %216
%218 = load i8*, i8** %217
%219 = getelementptr inbounds i8, i8* %218, i64 %212
store i8 %7, i8* %219
br label %220
220: ; preds = %215, %209
br i1 %182, label %244, label %221
221: ; preds = %220
%222 = icmp slt i64 %181, %163
%223 = icmp sge i32 %159, %12
%224 = or i1 %222, %223
%225 = select i1 %224, i1 true, i1 %210
%226 = select i1 %225, i1 true, i1 %211
br i1 %226, label %232, label %227
227: ; preds = %221
%228 = add nsw i64 %181, %162
%229 = getelementptr inbounds i8*, i8** %19, i64 %228
%230 = load i8*, i8** %229
%231 = getelementptr inbounds i8, i8* %230, i64 %212
store i8 %7, i8* %231
br label %232
232: ; preds = %227, %221
%233 = add nsw i64 %161, 2
%234 = icmp slt i64 %233, %163
%235 = icmp sgt i64 %233, %162
%236 = or i1 %234, %235
%237 = select i1 %236, i1 true, i1 %210
%238 = select i1 %237, i1 true, i1 %211
br i1 %238, label %244, label %239
239: ; preds = %232
%240 = add nsw i64 %233, %162
%241 = getelementptr inbounds i8*, i8** %19, i64 %240
%242 = load i8*, i8** %241
%243 = getelementptr inbounds i8, i8* %242, i64 %212
store i8 %7, i8* %243
br label %244
244: ; preds = %232, %239, %220
%245 = add nsw i64 %164, 2
%246 = icmp slt i64 %245, %166
%247 = icmp sgt i64 %245, %165
%248 = add nsw i64 %245, %165
%249 = select i1 %172, i1 true, i1 %246
%250 = select i1 %249, i1 true, i1 %247
br i1 %250, label %256, label %251
251: ; preds = %244
%252 = add nsw i64 %161, %162
%253 = getelementptr inbounds i8*, i8** %19, i64 %252
%254 = load i8*, i8** %253
%255 = getelementptr inbounds i8, i8* %254, i64 %248
store i8 %7, i8* %255
br label %256
256: ; preds = %251, %244
br i1 %182, label %280, label %257
257: ; preds = %256
%258 = icmp slt i64 %181, %163
%259 = icmp sge i32 %159, %12
%260 = or i1 %258, %259
%261 = select i1 %260, i1 true, i1 %246
%262 = select i1 %261, i1 true, i1 %247
br i1 %262, label %268, label %263
263: ; preds = %257
%264 = add nsw i64 %181, %162
%265 = getelementptr inbounds i8*, i8** %19, i64 %264
%266 = load i8*, i8** %265
%267 = getelementptr inbounds i8, i8* %266, i64 %248
store i8 %7, i8* %267
br label %268
268: ; preds = %263, %257
%269 = add nsw i64 %161, 2
%270 = icmp slt i64 %269, %163
%271 = icmp sgt i64 %269, %162
%272 = or i1 %270, %271
%273 = select i1 %272, i1 true, i1 %246
%274 = select i1 %273, i1 true, i1 %247
br i1 %274, label %280, label %275
275: ; preds = %268
%276 = add nsw i64 %269, %162
%277 = getelementptr inbounds i8*, i8** %19, i64 %276
%278 = load i8*, i8** %277
%279 = getelementptr inbounds i8, i8* %278, i64 %248
store i8 %7, i8* %279
br label %280
280: ; preds = %256, %275, %268, %206
%281 = add i32 %153, -1
%282 = add i32 %151, -1
%283 = sext i32 %282 to i64
%284 = sext i32 %281 to i64
%285 = icmp slt i32 %281, %160
%286 = icmp sgt i32 %281, %11
%287 = add nsw i64 %284, %165
%288 = icmp slt i32 %282, %21
%289 = icmp sgt i32 %282, %12
%290 = or i1 %288, %289
%291 = select i1 %290, i1 true, i1 %285
%292 = select i1 %291, i1 true, i1 %286
br i1 %292, label %298, label %293
293: ; preds = %280
%294 = add nsw i64 %283, %162
%295 = getelementptr inbounds i8*, i8** %19, i64 %294
%296 = load i8*, i8** %295
%297 = getelementptr inbounds i8, i8* %296, i64 %287
store i8 %7, i8* %297
br label %298
298: ; preds = %280, %293
%299 = add nsw i64 %283, 1
%300 = icmp eq i32 %151, -2147483648
br i1 %300, label %324, label %301
301: ; preds = %298
%302 = icmp slt i64 %299, %163
%303 = icmp sge i32 %282, %12
%304 = or i1 %302, %303
%305 = select i1 %304, i1 true, i1 %285
%306 = select i1 %305, i1 true, i1 %286
br i1 %306, label %312, label %307
307: ; preds = %301
%308 = add nsw i64 %299, %162
%309 = getelementptr inbounds i8*, i8** %19, i64 %308
%310 = load i8*, i8** %309
%311 = getelementptr inbounds i8, i8* %310, i64 %287
store i8 %7, i8* %311
br label %312
312: ; preds = %307, %301
%313 = add nsw i64 %283, 2
%314 = icmp slt i64 %313, %163
%315 = icmp sgt i64 %313, %162
%316 = or i1 %314, %315
%317 = select i1 %316, i1 true, i1 %285
%318 = select i1 %317, i1 true, i1 %286
br i1 %318, label %324, label %319
319: ; preds = %312
%320 = add nsw i64 %313, %162
%321 = getelementptr inbounds i8*, i8** %19, i64 %320
%322 = load i8*, i8** %321
%323 = getelementptr inbounds i8, i8* %322, i64 %287
store i8 %7, i8* %323
br label %324
324: ; preds = %312, %319, %298
%325 = add nsw i64 %284, 1
%326 = icmp eq i32 %153, -2147483648
br i1 %326, label %398, label %327
327: ; preds = %324
%328 = icmp slt i64 %325, %166
%329 = icmp sge i32 %281, %11
%330 = add nsw i64 %325, %165
%331 = select i1 %290, i1 true, i1 %328
%332 = select i1 %331, i1 true, i1 %329
br i1 %332, label %338, label %333
333: ; preds = %327
%334 = add nsw i64 %283, %162
%335 = getelementptr inbounds i8*, i8** %19, i64 %334
%336 = load i8*, i8** %335
%337 = getelementptr inbounds i8, i8* %336, i64 %330
store i8 %7, i8* %337
br label %338
338: ; preds = %333, %327
br i1 %300, label %362, label %339
339: ; preds = %338
%340 = icmp slt i64 %299, %163
%341 = icmp sge i32 %282, %12
%342 = or i1 %340, %341
%343 = select i1 %342, i1 true, i1 %328
%344 = select i1 %343, i1 true, i1 %329
br i1 %344, label %350, label %345
345: ; preds = %339
%346 = add nsw i64 %299, %162
%347 = getelementptr inbounds i8*, i8** %19, i64 %346
%348 = load i8*, i8** %347
%349 = getelementptr inbounds i8, i8* %348, i64 %330
store i8 %7, i8* %349
br label %350
350: ; preds = %345, %339
%351 = add nsw i64 %283, 2
%352 = icmp slt i64 %351, %163
%353 = icmp sgt i64 %351, %162
%354 = or i1 %352, %353
%355 = select i1 %354, i1 true, i1 %328
%356 = select i1 %355, i1 true, i1 %329
br i1 %356, label %362, label %357
357: ; preds = %350
%358 = add nsw i64 %351, %162
%359 = getelementptr inbounds i8*, i8** %19, i64 %358
%360 = load i8*, i8** %359
%361 = getelementptr inbounds i8, i8* %360, i64 %330
store i8 %7, i8* %361
br label %362
362: ; preds = %350, %357, %338
%363 = add nsw i64 %284, 2
%364 = icmp slt i64 %363, %166
%365 = icmp sgt i64 %363, %165
%366 = add nsw i64 %363, %165
%367 = select i1 %290, i1 true, i1 %364
%368 = select i1 %367, i1 true, i1 %365
br i1 %368, label %374, label %369
369: ; preds = %362
%370 = add nsw i64 %283, %162
%371 = getelementptr inbounds i8*, i8** %19, i64 %370
%372 = load i8*, i8** %371
%373 = getelementptr inbounds i8, i8* %372, i64 %366
store i8 %7, i8* %373
br label %374
374: ; preds = %369, %362
br i1 %300, label %398, label %375
375: ; preds = %374
%376 = icmp slt i64 %299, %163
%377 = icmp sge i32 %282, %12
%378 = or i1 %376, %377
%379 = select i1 %378, i1 true, i1 %364
%380 = select i1 %379, i1 true, i1 %365
br i1 %380, label %386, label %381
381: ; preds = %375
%382 = add nsw i64 %299, %162
%383 = getelementptr inbounds i8*, i8** %19, i64 %382
%384 = load i8*, i8** %383
%385 = getelementptr inbounds i8, i8* %384, i64 %366
store i8 %7, i8* %385
br label %386
386: ; preds = %381, %375
%387 = add nsw i64 %283, 2
%388 = icmp slt i64 %387, %163
%389 = icmp sgt i64 %387, %162
%390 = or i1 %388, %389
%391 = select i1 %390, i1 true, i1 %364
%392 = select i1 %391, i1 true, i1 %365
br i1 %392, label %398, label %393
393: ; preds = %386
%394 = add nsw i64 %387, %162
%395 = getelementptr inbounds i8*, i8** %19, i64 %394
%396 = load i8*, i8** %395
%397 = getelementptr inbounds i8, i8* %396, i64 %366
store i8 %7, i8* %397
br label %398
398: ; preds = %374, %393, %386, %324
%399 = add nsw i32 %151, %12
%400 = sext i32 %399 to i64
%401 = getelementptr inbounds i8*, i8** %19, i64 %400
%402 = load i8*, i8** %401
%403 = add nsw i32 %153, %11
%404 = sext i32 %403 to i64
%405 = getelementptr inbounds i8, i8* %402, i64 %404
store i8 84, i8* %405
%406 = add nsw i32 %152, %12
%407 = sext i32 %406 to i64
%408 = getelementptr inbounds i8*, i8** %19, i64 %407
%409 = load i8*, i8** %408
%410 = add nsw i32 %154, %11
%411 = sext i32 %410 to i64
%412 = getelementptr inbounds i8, i8* %409, i64 %411
store i8 80, i8* %412
br i1 %22, label %483, label %413
413: ; preds = %398
%414 = icmp slt i32 %11, 0
%415 = call i32 @llvm.abs.i32(i32 %11, i1 false)
%416 = add nuw i32 %415, 1
%417 = add nuw i32 %12, 1
br label %418
418: ; preds = %413, %434
%419 = phi i64 [ %163, %413 ], [ %436, %434 ]
br i1 %414, label %434, label %420
420: ; preds = %418
%421 = add nsw i64 %419, %162
%422 = getelementptr inbounds i8*, i8** %19, i64 %421
br label %423
423: ; preds = %420, %423
%424 = phi i64 [ %166, %420 ], [ %431, %423 ]
%425 = load i8*, i8** %422
%426 = add nsw i64 %424, %165
%427 = getelementptr inbounds i8, i8* %425, i64 %426
%428 = load i8, i8* %427
%429 = sext i8 %428 to i32
%430 = tail call i32 @fputc(i32 %429, i32* %13)
%431 = add nsw i64 %424, 1
%432 = trunc i64 %431 to i32
%433 = icmp eq i32 %416, %432
br i1 %433, label %434, label %423
434: ; preds = %423, %418
%435 = tail call i32 @fputc(i32 10, i32* %13)
%436 = add nsw i64 %419, 1
%437 = trunc i64 %436 to i32
%438 = icmp eq i32 %417, %437
br i1 %438, label %483, label %418
439: ; preds = %150
%440 = load double, double* @M_PI
%441 = fmul double %440, %1
%442 = fdiv double %441, 1.800000e+02
%443 = fmul double %440, %2
%444 = fdiv double %443, 1.800000e+02
%445 = tail call i32 @pnodal(i8** %19, double %442, double %444, i32 %11, i32 %12, i8 signext %10)
%446 = load double, double* @M_PI
%447 = fmul double %446, %3
%448 = fdiv double %447, 1.800000e+02
%449 = fmul double %446, %4
%450 = fdiv double %449, 1.800000e+02
%451 = tail call i32 @pnodal(i8** %19, double %448, double %450, i32 %11, i32 %12, i8 signext %10)
br i1 %22, label %483, label %452
452: ; preds = %439
%453 = sub i32 0, %11
%454 = icmp slt i32 %11, 0
%455 = sext i32 %453 to i64
%456 = sext i32 %11 to i64
%457 = call i32 @llvm.abs.i32(i32 %11, i1 false)
%458 = add nuw i32 %457, 1
%459 = sext i32 %21 to i64
%460 = zext i32 %12 to i64
%461 = add nuw i32 %12, 1
br label %462
462: ; preds = %452, %478
%463 = phi i64 [ %459, %452 ], [ %480, %478 ]
br i1 %454, label %478, label %464
464: ; preds = %462
%465 = add nsw i64 %463, %460
%466 = getelementptr inbounds i8*, i8** %19, i64 %465
br label %467
467: ; preds = %464, %467
%468 = phi i64 [ %455, %464 ], [ %475, %467 ]
%469 = load i8*, i8** %466
%470 = add nsw i64 %468, %456
%471 = getelementptr inbounds i8, i8* %469, i64 %470
%472 = load i8, i8* %471
%473 = sext i8 %472 to i32
%474 = tail call i32 (i32*, i8*, ...) @fprintf(i32* %13, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.2, i64 0, i64 0), i32 %473, i32 %155)
%475 = add nsw i64 %468, 1
%476 = trunc i64 %475 to i32
%477 = icmp eq i32 %458, %476
br i1 %477, label %478, label %467
478: ; preds = %467, %462
%479 = tail call i32 @fputc(i32 10, i32* %13)
%480 = add nsw i64 %463, 1
%481 = trunc i64 %480 to i32
%482 = icmp eq i32 %461, %481
br i1 %482, label %483, label %462
483: ; preds = %478, %434, %439, %398
%484 = icmp sgt i32 %16, 0
br i1 %484, label %485, label %495
485: ; preds = %483
%486 = zext i32 %16 to i64
br label %487
487: ; preds = %485, %487
%488 = phi i64 [ 0, %485 ], [ %493, %487 ]
%489 = getelementptr inbounds i8*, i8** %19, i64 %488
%490 = bitcast i8** %489 to i8***
%491 = load i8**, i8*** %490
%492 = tail call i32 @free(i8** %491)
%493 = add nuw nsw i64 %488, 1
%494 = icmp eq i64 %493, %486
br i1 %494, label %495, label %487
495: ; preds = %487, %483
%496 = tail call i32 @free(i8** %19)
ret i32 1
}