#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 /*<<< orphan*/ ci_qff(char *, int, int, int);
int /*<<< orphan*/ gamess_get_nmodes_nbas(int *, int *);
int /*<<< orphan*/ harmonic(double, double, double, int);
int /*<<< orphan*/ morse(double, double, double, double, int);
int /*<<< orphan*/ morse_points(double, double, double, double, int);
int /*<<< orphan*/ morse_polynom(double, double, double, double, int);
int /*<<< orphan*/ one_d(char *, double, double, int, int);
int /*<<< orphan*/ one_d_points(char *, double, double, int);
int /*<<< orphan*/ one_d_polynom(char *, double, double, int, int);
int /*<<< orphan*/ parse_1d(char *, int *, int *, double *, double *);
int /*<<< orphan*/ parse_control(char *, int *, int *, int *);
int /*<<< orphan*/ parse_harmonic(char *, double *, int *, double *, double *);
int /*<<< orphan*/ parse_morse(char *, double *, double *, int *, double *,
                               double *);
int /*<<< orphan*/ parse_size(char *, int *, int *);
int /*<<< orphan*/ print_banner();
int /*<<< orphan*/ printf(char *, ...);
int /*<<< orphan*/ vscf_qff(char *, int, int, int);
int main(int argc, char *argv[]) {
  int task_type = 0;
  int pot_type = 0;
  int friend = 0;
  double xstart = -15.5, xend = 15.5, deltax = 0.2;
  double d = 12.0, w = 0.5;
  int nbas = 32, npow = 16, nmodes = 3;
  print_banner();
  if (argc > 0)
    parse_control(argv[1], &task_type, &pot_type, &friend);
  if (friend == 1) {
    gamess_get_nmodes_nbas(&nmodes, &nbas);
    parse_size(argv[1], &nmodes, &nbas);
    switch (task_type) {
    case 0:
    case 1:
    case 2:
    case 3:
      ci_qff(argv[1], nmodes, nmodes * (nmodes - 1) / 2, nbas);
      break;
    case 4:
      vscf_qff(argv[1], nmodes, nmodes * (nmodes - 1) / 2, nbas);
      break;
    }
  } else {
    parse_size(argv[1], &nmodes, &nbas);
    switch (task_type) {
    case 0:
      parse_harmonic(argv[1], &w, &nbas, &xstart, &xend);
      break;
    case 1:
      parse_morse(argv[1], &d, &w, &nbas, &xstart, &xend);
      break;
    case 2:
      parse_1d(argv[1], &npow, &nbas, &xstart, &xend);
      break;
    }
    deltax = (xend - xstart) / ((double)(nbas - 1));
    printf("\n Subprogram choice:\n");
    printf(" task   = ");
    switch (task_type) {
    case 0:
      printf("harmonic\n w      = %10g\n", w);
      break;
    case 1:
      printf("morse\n d      = %10g\n w      = %10g\n", d, w);
      break;
    case 2:
      printf("1D\n");
      break;
    case 3:
      printf("VCI\n");
      break;
    case 4:
      printf("VSCF\n");
      break;
    }
    printf(" potential   = ");
    switch (pot_type) {
    case 0:
      printf("analytic\n");
      break;
    case 1:
      printf("polynom\n");
      break;
    case 2:
      printf("points\n");
      break;
    }
    if (task_type < 3)
      printf("\n Starting parameters: xstart = %10g\n xend   = %10g\n deltax = "
             "%10g\n nbas   = %10d\n",
             xstart, xend, deltax, nbas);
    switch (task_type) {
    case 0:
      harmonic(w, xstart, deltax, nbas);
      break;
    case 1:
      switch (pot_type) {
      case 0:
        morse(d, w, xstart, deltax, nbas);
        break;
      case 1:
        morse_polynom(d, w, xstart, deltax, nbas);
        break;
      case 2:
        morse_points(d, w, xstart, deltax, nbas);
        break;
      }
      break;
    case 2:
      switch (pot_type) {
      case 0:
        one_d(argv[1], xstart, deltax, nbas, npow);
        break;
      case 1:
        one_d_polynom(argv[1], xstart, deltax, nbas, npow);
        break;
      case 2:
        one_d_points(argv[1], xstart, deltax, nbas);
        break;
      }
    case 3:
      ci_qff(argv[1], nmodes, nmodes * (nmodes - 1) / 2, nbas);
      break;
    case 4:
      vscf_qff(argv[1], nmodes, nmodes * (nmodes - 1) / 2, nbas);
      break;
    }
  }
  printf("\n All done!\n\n Arevoir!\n\n");
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x90,%rsp
movl   $0x0,-0x4(%rbp)
mov    %edi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
movl   $0x0,-0x14(%rbp)
movl   $0x0,-0x18(%rbp)
movl   $0x0,-0x1c(%rbp)
movsd  0xdda(%rip),%xmm0
movsd  %xmm0,-0x28(%rbp)
movsd  0xdc5(%rip),%xmm0
movsd  %xmm0,-0x30(%rbp)
movsd  0xdb0(%rip),%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  0xd9b(%rip),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  0xd86(%rip),%xmm0
movsd  %xmm0,-0x48(%rbp)
movl   $0x20,-0x4c(%rbp)
movl   $0x10,-0x50(%rbp)
movl   $0x3,-0x54(%rbp)
mov    $0x0,%al
call   1110 <print_banner@plt>
cmpl   $0x0,-0x8(%rbp)
jle    12be <main+0xae>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rdi
lea    -0x14(%rbp),%rsi
lea    -0x18(%rbp),%rdx
lea    -0x1c(%rbp),%rcx
call   1060 <parse_control@plt>
cmpl   $0x1,-0x1c(%rbp)
jne    1373 <main+0x163>
lea    -0x54(%rbp),%rdi
mov    %rdi,-0x68(%rbp)
lea    -0x4c(%rbp),%rsi
mov    %rsi,-0x60(%rbp)
call   10f0 <gamess_get_nmodes_nbas@plt>
mov    -0x68(%rbp),%rsi
mov    -0x60(%rbp),%rdx
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rdi
call   10d0 <parse_size@plt>
mov    -0x14(%rbp),%eax
mov    %eax,-0x58(%rbp)
sub    $0x4,%eax
jb     1317 <main+0x107>
jmp    1306 <main+0xf6>
mov    -0x58(%rbp),%eax
sub    $0x4,%eax
je     1345 <main+0x135>
jmp    136e <main+0x15e>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rdi
mov    -0x54(%rbp),%esi
mov    -0x54(%rbp),%eax
mov    -0x54(%rbp),%ecx
sub    $0x1,%ecx
imul   %ecx,%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,%edx
mov    -0x4c(%rbp),%ecx
call   10e0 <ci_qff@plt>
jmp    136e <main+0x15e>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rdi
mov    -0x54(%rbp),%esi
mov    -0x54(%rbp),%eax
mov    -0x54(%rbp),%ecx
sub    $0x1,%ecx
imul   %ecx,%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,%edx
mov    -0x4c(%rbp),%ecx
call   1090 <vscf_qff@plt>
jmp    1777 <main+0x567>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rdi
lea    -0x54(%rbp),%rsi
lea    -0x4c(%rbp),%rdx
call   10d0 <parse_size@plt>
mov    -0x14(%rbp),%eax
mov    %eax,-0x6c(%rbp)
test   %eax,%eax
je     13bd <main+0x1ad>
jmp    139b <main+0x18b>
mov    -0x6c(%rbp),%eax
sub    $0x1,%eax
je     13df <main+0x1cf>
jmp    13ac <main+0x19c>
mov    -0x6c(%rbp),%eax
sub    $0x2,%eax
je     1405 <main+0x1f5>
jmp    1422 <main+0x212>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rdi
lea    -0x48(%rbp),%rsi
lea    -0x4c(%rbp),%rdx
lea    -0x28(%rbp),%rcx
lea    -0x30(%rbp),%r8
call   10b0 <parse_harmonic@plt>
jmp    1422 <main+0x212>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rdi
lea    -0x40(%rbp),%rsi
lea    -0x48(%rbp),%rdx
lea    -0x4c(%rbp),%rcx
lea    -0x28(%rbp),%r8
lea    -0x30(%rbp),%r9
call   1100 <parse_morse@plt>
jmp    1422 <main+0x212>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rdi
lea    -0x50(%rbp),%rsi
lea    -0x4c(%rbp),%rdx
lea    -0x28(%rbp),%rcx
lea    -0x30(%rbp),%r8
call   1030 <parse_1d@plt>
movsd  -0x30(%rbp),%xmm0
movsd  -0x28(%rbp),%xmm1
subsd  %xmm1,%xmm0
mov    -0x4c(%rbp),%eax
add    $0xffffffff,%eax
cvtsi2sd %eax,%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x38(%rbp)
lea    0xc06(%rip),%rdi
xor    %eax,%eax
mov    %al,-0x79(%rbp)
call   1080 <printf@plt>
mov    -0x79(%rbp),%al
lea    0xc08(%rip),%rdi
call   1080 <printf@plt>
mov    -0x14(%rbp),%eax
mov    %rax,-0x78(%rbp)
sub    $0x4,%rax
ja     14f1 <main+0x2e1>
mov    -0x78(%rbp),%rax
lea    0xba9(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
movsd  -0x48(%rbp),%xmm0
lea    0xbdd(%rip),%rdi
mov    $0x1,%al
call   1080 <printf@plt>
jmp    14f1 <main+0x2e1>
movsd  -0x40(%rbp),%xmm0
movsd  -0x48(%rbp),%xmm1
lea    0xbd9(%rip),%rdi
mov    $0x2,%al
call   1080 <printf@plt>
jmp    14f1 <main+0x2e1>
lea    0xbeb(%rip),%rdi
mov    $0x0,%al
call   1080 <printf@plt>
jmp    14f1 <main+0x2e1>
lea    0xbdc(%rip),%rdi
mov    $0x0,%al
call   1080 <printf@plt>
jmp    14f1 <main+0x2e1>
lea    0xbce(%rip),%rdi
mov    $0x0,%al
call   1080 <printf@plt>
lea    0xbc6(%rip),%rdi
xor    %eax,%eax
call   1080 <printf@plt>
mov    -0x18(%rbp),%eax
mov    %eax,-0x80(%rbp)
test   %eax,%eax
je     1534 <main+0x324>
jmp    1512 <main+0x302>
mov    -0x80(%rbp),%eax
sub    $0x1,%eax
je     1547 <main+0x337>
jmp    1523 <main+0x313>
mov    -0x80(%rbp),%eax
sub    $0x2,%eax
je     155a <main+0x34a>
jmp    1568 <main+0x358>
lea    0xb93(%rip),%rdi
mov    $0x0,%al
call   1080 <printf@plt>
jmp    1568 <main+0x358>
lea    0xb8a(%rip),%rdi
mov    $0x0,%al
call   1080 <printf@plt>
jmp    1568 <main+0x358>
lea    0xb80(%rip),%rdi
mov    $0x0,%al
call   1080 <printf@plt>
cmpl   $0x3,-0x14(%rbp)
jge    1592 <main+0x382>
movsd  -0x28(%rbp),%xmm0
movsd  -0x30(%rbp),%xmm1
movsd  -0x38(%rbp),%xmm2
mov    -0x4c(%rbp),%esi
lea    0xb5e(%rip),%rdi
mov    $0x3,%al
call   1080 <printf@plt>
mov    -0x14(%rbp),%eax
mov    %rax,-0x88(%rbp)
sub    $0x4,%rax
ja     1772 <main+0x562>
mov    -0x88(%rbp),%rax
lea    0xa88(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
movsd  -0x48(%rbp),%xmm0
movsd  -0x28(%rbp),%xmm1
movsd  -0x38(%rbp),%xmm2
mov    -0x4c(%rbp),%edi
call   10a0 <harmonic@plt>
jmp    1772 <main+0x562>
mov    -0x18(%rbp),%eax
mov    %eax,-0x8c(%rbp)
test   %eax,%eax
je     1617 <main+0x407>
jmp    15ef <main+0x3df>
mov    -0x8c(%rbp),%eax
sub    $0x1,%eax
je     1638 <main+0x428>
jmp    1603 <main+0x3f3>
mov    -0x8c(%rbp),%eax
sub    $0x2,%eax
je     1659 <main+0x449>
jmp    1675 <main+0x465>
movsd  -0x40(%rbp),%xmm0
movsd  -0x48(%rbp),%xmm1
movsd  -0x28(%rbp),%xmm2
movsd  -0x38(%rbp),%xmm3
mov    -0x4c(%rbp),%edi
call   1050 <morse@plt>
jmp    1675 <main+0x465>
movsd  -0x40(%rbp),%xmm0
movsd  -0x48(%rbp),%xmm1
movsd  -0x28(%rbp),%xmm2
movsd  -0x38(%rbp),%xmm3
mov    -0x4c(%rbp),%edi
call   1130 <morse_polynom@plt>
jmp    1675 <main+0x465>
movsd  -0x40(%rbp),%xmm0
movsd  -0x48(%rbp),%xmm1
movsd  -0x28(%rbp),%xmm2
movsd  -0x38(%rbp),%xmm3
mov    -0x4c(%rbp),%edi
call   1120 <morse_points@plt>
jmp    1772 <main+0x562>
mov    -0x18(%rbp),%eax
mov    %eax,-0x90(%rbp)
test   %eax,%eax
je     16b8 <main+0x4a8>
jmp    1690 <main+0x480>
mov    -0x90(%rbp),%eax
sub    $0x1,%eax
je     16da <main+0x4ca>
jmp    16a4 <main+0x494>
mov    -0x90(%rbp),%eax
sub    $0x2,%eax
je     16fc <main+0x4ec>
jmp    1716 <main+0x506>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rdi
movsd  -0x28(%rbp),%xmm0
movsd  -0x38(%rbp),%xmm1
mov    -0x4c(%rbp),%esi
mov    -0x50(%rbp),%edx
call   1040 <one_d@plt>
jmp    1716 <main+0x506>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rdi
movsd  -0x28(%rbp),%xmm0
movsd  -0x38(%rbp),%xmm1
mov    -0x4c(%rbp),%esi
mov    -0x50(%rbp),%edx
call   10c0 <one_d_polynom@plt>
jmp    1716 <main+0x506>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rdi
movsd  -0x28(%rbp),%xmm0
movsd  -0x38(%rbp),%xmm1
mov    -0x4c(%rbp),%esi
call   1070 <one_d_points@plt>
jmp    171b <main+0x50b>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rdi
mov    -0x54(%rbp),%esi
mov    -0x54(%rbp),%eax
mov    -0x54(%rbp),%ecx
sub    $0x1,%ecx
imul   %ecx,%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,%edx
mov    -0x4c(%rbp),%ecx
call   10e0 <ci_qff@plt>
jmp    1772 <main+0x562>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rdi
mov    -0x54(%rbp),%esi
mov    -0x54(%rbp),%eax
mov    -0x54(%rbp),%ecx
sub    $0x1,%ecx
imul   %ecx,%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,%edx
mov    -0x4c(%rbp),%ecx
call   1090 <vscf_qff@plt>
jmp    1777 <main+0x567>
lea    0x9be(%rip),%rdi
mov    $0x0,%al
call   1080 <printf@plt>
xor    %eax,%eax
add    $0x90,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbp
push   %r14
push   %rbx
sub    $0x60,%rsp
mov    %rsi,%r14
mov    %edi,%ebp
movl   $0x0,0x14(%rsp)
movl   $0x0,0x24(%rsp)
movl   $0x0,0x4c(%rsp)
movabs $0xc02f000000000000,%rax
mov    %rax,0x18(%rsp)
movabs $0x402f000000000000,%rax
mov    %rax,0x40(%rsp)
movabs $0x4028000000000000,%rax
mov    %rax,0x38(%rsp)
movabs $0x3fe0000000000000,%rax
mov    %rax,0x28(%rsp)
movl   $0x20,0xc(%rsp)
movl   $0x10,0x34(%rsp)
movl   $0x3,0x10(%rsp)
xor    %eax,%eax
call   1120 <print_banner@plt>
test   %ebp,%ebp
jle    12fd <main+0xdd>
mov    0x8(%r14),%rdi
lea    0x14(%rsp),%rsi
lea    0x24(%rsp),%rdx
lea    0x4c(%rsp),%rcx
call   1070 <parse_control@plt>
cmpl   $0x1,0x4c(%rsp)
jne    12fd <main+0xdd>
lea    0x10(%rsp),%rbp
lea    0xc(%rsp),%rbx
mov    %rbp,%rdi
mov    %rbx,%rsi
call   1100 <gamess_get_nmodes_nbas@plt>
mov    0x8(%r14),%rdi
mov    %rbp,%rsi
mov    %rbx,%rdx
call   10e0 <parse_size@plt>
cmpl   $0x4,0x14(%rsp)
jb     15d4 <main+0x3b4>
je     14d8 <main+0x2b8>
jmp    15f4 <main+0x3d4>
mov    0x8(%r14),%rdi
lea    0x10(%rsp),%rsi
lea    0xc(%rsp),%rdx
call   10e0 <parse_size@plt>
mov    0x14(%rsp),%eax
cmp    $0x2,%eax
je     1341 <main+0x121>
cmp    $0x1,%eax
je     1360 <main+0x140>
test   %eax,%eax
jne    1382 <main+0x162>
mov    0x8(%r14),%rdi
lea    0x28(%rsp),%rsi
lea    0xc(%rsp),%rdx
lea    0x18(%rsp),%rcx
lea    0x40(%rsp),%r8
call   10c0 <parse_harmonic@plt>
jmp    1382 <main+0x162>
mov    0x8(%r14),%rdi
lea    0x34(%rsp),%rsi
lea    0xc(%rsp),%rdx
lea    0x18(%rsp),%rcx
lea    0x40(%rsp),%r8
call   1030 <parse_1d@plt>
jmp    1382 <main+0x162>
mov    0x8(%r14),%rdi
lea    0x38(%rsp),%rsi
lea    0x28(%rsp),%rdx
lea    0xc(%rsp),%rcx
lea    0x18(%rsp),%r8
lea    0x40(%rsp),%r9
call   1110 <parse_morse@plt>
movsd  0x40(%rsp),%xmm0
subsd  0x18(%rsp),%xmm0
movsd  %xmm0,0x50(%rsp)
mov    0xc(%rsp),%ebx
add    $0xffffffff,%ebx
lea    0xd3e(%rip),%rdi
call   1040 <puts@plt>
lea    0xc86(%rip),%rdi
xor    %eax,%eax
call   1090 <printf@plt>
mov    0x14(%rsp),%eax
cmp    $0x4,%rax
ja     141f <main+0x1ff>
lea    0xc3a(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
movsd  0x28(%rsp),%xmm0
lea    0xc63(%rip),%rdi
mov    $0x1,%al
call   1090 <printf@plt>
jmp    141f <main+0x1ff>
lea    0xd42(%rip),%rdi
jmp    13fe <main+0x1de>
lea    0xd35(%rip),%rdi
jmp    13fe <main+0x1de>
lea    0xcf7(%rip),%rdi
call   1040 <puts@plt>
jmp    141f <main+0x1ff>
movsd  0x38(%rsp),%xmm0
movsd  0x28(%rsp),%xmm1
lea    0xc40(%rip),%rdi
mov    $0x2,%al
call   1090 <printf@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %ebx,%xmm0
movsd  %xmm0,0x58(%rsp)
lea    0xc4a(%rip),%rdi
xor    %eax,%eax
call   1090 <printf@plt>
movslq 0x24(%rsp),%rax
cmp    $0x2,%rax
ja     1458 <main+0x238>
lea    0xbdc(%rip),%rcx
movslq (%rcx,%rax,4),%rdi
add    %rcx,%rdi
call   1040 <puts@plt>
movsd  0x50(%rsp),%xmm3
divsd  0x58(%rsp),%xmm3
mov    0x14(%rsp),%eax
cmp    $0x2,%eax
jg     149f <main+0x27f>
movsd  0x18(%rsp),%xmm0
movsd  0x40(%rsp),%xmm1
mov    0xc(%rsp),%esi
lea    0xc09(%rip),%rdi
movapd %xmm3,%xmm2
mov    $0x3,%al
movsd  %xmm3,0x50(%rsp)
call   1090 <printf@plt>
movsd  0x50(%rsp),%xmm3
mov    0x14(%rsp),%eax
cmp    $0x4,%eax
ja     15f4 <main+0x3d4>
mov    %eax,%eax
lea    0xb63(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
movsd  0x28(%rsp),%xmm0
movsd  0x18(%rsp),%xmm1
mov    0xc(%rsp),%edi
movapd %xmm3,%xmm2
call   10b0 <harmonic@plt>
jmp    15f4 <main+0x3d4>
mov    0x8(%r14),%rdi
mov    0x10(%rsp),%esi
lea    -0x1(%rsi),%eax
imul   %esi,%eax
mov    %eax,%edx
shr    $0x1f,%edx
add    %eax,%edx
sar    %edx
mov    0xc(%rsp),%ecx
call   10a0 <vscf_qff@plt>
jmp    15f4 <main+0x3d4>
mov    0x24(%rsp),%eax
cmp    $0x2,%eax
je     1566 <main+0x346>
cmp    $0x1,%eax
je     1583 <main+0x363>
test   %eax,%eax
jne    15f4 <main+0x3d4>
movsd  0x38(%rsp),%xmm0
movsd  0x28(%rsp),%xmm1
movsd  0x18(%rsp),%xmm2
mov    0xc(%rsp),%edi
call   1060 <morse@plt>
jmp    15f4 <main+0x3d4>
mov    0x24(%rsp),%eax
cmp    $0x2,%eax
je     15a0 <main+0x380>
cmp    $0x1,%eax
je     15b9 <main+0x399>
test   %eax,%eax
jne    15d4 <main+0x3b4>
mov    0x8(%r14),%rdi
movsd  0x18(%rsp),%xmm0
mov    0xc(%rsp),%esi
mov    0x34(%rsp),%edx
movapd %xmm3,%xmm1
call   1050 <one_d@plt>
jmp    15d4 <main+0x3b4>
movsd  0x38(%rsp),%xmm0
movsd  0x28(%rsp),%xmm1
movsd  0x18(%rsp),%xmm2
mov    0xc(%rsp),%edi
call   1130 <morse_points@plt>
jmp    15f4 <main+0x3d4>
movsd  0x38(%rsp),%xmm0
movsd  0x28(%rsp),%xmm1
movsd  0x18(%rsp),%xmm2
mov    0xc(%rsp),%edi
call   1140 <morse_polynom@plt>
jmp    15f4 <main+0x3d4>
mov    0x8(%r14),%rdi
movsd  0x18(%rsp),%xmm0
mov    0xc(%rsp),%esi
movapd %xmm3,%xmm1
call   1080 <one_d_points@plt>
jmp    15d4 <main+0x3b4>
mov    0x8(%r14),%rdi
movsd  0x18(%rsp),%xmm0
mov    0xc(%rsp),%esi
mov    0x34(%rsp),%edx
movapd %xmm3,%xmm1
call   10d0 <one_d_polynom@plt>
mov    0x8(%r14),%rdi
mov    0x10(%rsp),%esi
lea    -0x1(%rsi),%eax
imul   %esi,%eax
mov    %eax,%edx
shr    $0x1f,%edx
add    %eax,%edx
sar    %edx
mov    0xc(%rsp),%ecx
call   10f0 <ci_qff@plt>
lea    0xb06(%rip),%rdi
call   1040 <puts@plt>
xor    %eax,%eax
add    $0x60,%rsp
pop    %rbx
pop    %r14
pop    %rbp
ret

LLVM IR (-O0):
@.str = [22 x i8] c"\0A Subprogram choice:\0A\00"
@.str.1 = [11 x i8] c" task = \00"
@.str.2 = [25 x i8] c"harmonic\0A w = %10g\0A\00"
@.str.3 = [37 x i8] c"morse\0A d = %10g\0A w = %10g\0A\00"
@.str.4 = [4 x i8] c"1D\0A\00"
@.str.5 = [5 x i8] c"VCI\0A\00"
@.str.6 = [6 x i8] c"VSCF\0A\00"
@.str.7 = [16 x i8] c" potential = \00"
@.str.8 = [10 x i8] c"analytic\0A\00"
@.str.9 = [9 x i8] c"polynom\0A\00"
@.str.10 = [8 x i8] c"points\0A\00"
@.str.11 = [83 x i8] c"\0A Starting parameters: xstart = %10g\0A xend = %10g\0A deltax = %10g\0A nbas = %10d\0A\00"
@.str.12 = [25 x i8] c"\0A All done!\0A\0A Arevoir!\0A\0A\00"
define i32 @main(i32 %0, i8** %1) {
%3 = alloca i32
%4 = alloca i32
%5 = alloca i8**
%6 = alloca i32
%7 = alloca i32
%8 = alloca i32
%9 = alloca double
%10 = alloca double
%11 = alloca double
%12 = alloca double
%13 = alloca double
%14 = alloca i32
%15 = alloca i32
%16 = alloca i32
store i32 0, i32* %3
store i32 %0, i32* %4
store i8** %1, i8*** %5
store i32 0, i32* %6
store i32 0, i32* %7
store i32 0, i32* %8
store double -1.550000e+01, double* %9
store double 1.550000e+01, double* %10
store double 2.000000e-01, double* %11
store double 1.200000e+01, double* %12
store double 5.000000e-01, double* %13
store i32 32, i32* %14
store i32 16, i32* %15
store i32 3, i32* %16
%17 = call i32 (...) @print_banner()
%18 = load i32, i32* %4
%19 = icmp sgt i32 %18, 0
br i1 %19, label %20, label %25
20: ; preds = %2
%21 = load i8**, i8*** %5
%22 = getelementptr inbounds i8*, i8** %21, i64 1
%23 = load i8*, i8** %22
%24 = call i32 @parse_control(i8* %23, i32* %6, i32* %7, i32* %8)
br label %25
25: ; preds = %20, %2
%26 = load i32, i32* %8
%27 = icmp eq i32 %26, 1
br i1 %27, label %28, label %60
28: ; preds = %25
%29 = call i32 @gamess_get_nmodes_nbas(i32* %16, i32* %14)
%30 = load i8**, i8*** %5
%31 = getelementptr inbounds i8*, i8** %30, i64 1
%32 = load i8*, i8** %31
%33 = call i32 @parse_size(i8* %32, i32* %16, i32* %14)
%34 = load i32, i32* %6
switch i32 %34, label %59 [
i32 0, label %35
i32 1, label %35
i32 2, label %35
i32 3, label %35
i32 4, label %47
]
35: ; preds = %28, %28, %28, %28
%36 = load i8**, i8*** %5
%37 = getelementptr inbounds i8*, i8** %36, i64 1
%38 = load i8*, i8** %37
%39 = load i32, i32* %16
%40 = load i32, i32* %16
%41 = load i32, i32* %16
%42 = sub nsw i32 %41, 1
%43 = mul nsw i32 %40, %42
%44 = sdiv i32 %43, 2
%45 = load i32, i32* %14
%46 = call i32 @ci_qff(i8* %38, i32 %39, i32 %44, i32 %45)
br label %59
47: ; preds = %28
%48 = load i8**, i8*** %5
%49 = getelementptr inbounds i8*, i8** %48, i64 1
%50 = load i8*, i8** %49
%51 = load i32, i32* %16
%52 = load i32, i32* %16
%53 = load i32, i32* %16
%54 = sub nsw i32 %53, 1
%55 = mul nsw i32 %52, %54
%56 = sdiv i32 %55, 2
%57 = load i32, i32* %14
%58 = call i32 @vscf_qff(i8* %50, i32 %51, i32 %56, i32 %57)
br label %59
59: ; preds = %28, %47, %35
br label %209
60: ; preds = %25
%61 = load i8**, i8*** %5
%62 = getelementptr inbounds i8*, i8** %61, i64 1
%63 = load i8*, i8** %62
%64 = call i32 @parse_size(i8* %63, i32* %16, i32* %14)
%65 = load i32, i32* %6
switch i32 %65, label %81 [
i32 0, label %66
i32 1, label %71
i32 2, label %76
]
66: ; preds = %60
%67 = load i8**, i8*** %5
%68 = getelementptr inbounds i8*, i8** %67, i64 1
%69 = load i8*, i8** %68
%70 = call i32 @parse_harmonic(i8* %69, double* %13, i32* %14, double* %9, double* %10)
br label %81
71: ; preds = %60
%72 = load i8**, i8*** %5
%73 = getelementptr inbounds i8*, i8** %72, i64 1
%74 = load i8*, i8** %73
%75 = call i32 @parse_morse(i8* %74, double* %12, double* %13, i32* %14, double* %9, double* %10)
br label %81
76: ; preds = %60
%77 = load i8**, i8*** %5
%78 = getelementptr inbounds i8*, i8** %77, i64 1
%79 = load i8*, i8** %78
%80 = call i32 @parse_1d(i8* %79, i32* %15, i32* %14, double* %9, double* %10)
br label %81
81: ; preds = %60, %76, %71, %66
%82 = load double, double* %10
%83 = load double, double* %9
%84 = fsub double %82, %83
%85 = load i32, i32* %14
%86 = sub nsw i32 %85, 1
%87 = sitofp i32 %86 to double
%88 = fdiv double %84, %87
store double %88, double* %11
%89 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str, i64 0, i64 0))
%90 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.1, i64 0, i64 0))
%91 = load i32, i32* %6
switch i32 %91, label %105 [
i32 0, label %92
i32 1, label %95
i32 2, label %99
i32 3, label %101
i32 4, label %103
]
92: ; preds = %81
%93 = load double, double* %13
%94 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.2, i64 0, i64 0), double %93)
br label %105
95: ; preds = %81
%96 = load double, double* %12
%97 = load double, double* %13
%98 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.3, i64 0, i64 0), double %96, double %97)
br label %105
99: ; preds = %81
%100 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.4, i64 0, i64 0))
br label %105
101: ; preds = %81
%102 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.5, i64 0, i64 0))
br label %105
103: ; preds = %81
%104 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.6, i64 0, i64 0))
br label %105
105: ; preds = %81, %103, %101, %99, %95, %92
%106 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.7, i64 0, i64 0))
%107 = load i32, i32* %7
switch i32 %107, label %114 [
i32 0, label %108
i32 1, label %110
i32 2, label %112
]
108: ; preds = %105
%109 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.8, i64 0, i64 0))
br label %114
110: ; preds = %105
%111 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.9, i64 0, i64 0))
br label %114
112: ; preds = %105
%113 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.10, i64 0, i64 0))
br label %114
114: ; preds = %105, %112, %110, %108
%115 = load i32, i32* %6
%116 = icmp slt i32 %115, 3
br i1 %116, label %117, label %123
117: ; preds = %114
%118 = load double, double* %9
%119 = load double, double* %10
%120 = load double, double* %11
%121 = load i32, i32* %14
%122 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([83 x i8], [83 x i8]* @.str.11, i64 0, i64 0), double %118, double %119, double %120, i32 %121)
br label %123
123: ; preds = %117, %114
%124 = load i32, i32* %6
switch i32 %124, label %208 [
i32 0, label %125
i32 1, label %131
i32 2, label %155
i32 3, label %184
i32 4, label %196
]
125: ; preds = %123
%126 = load double, double* %13
%127 = load double, double* %9
%128 = load double, double* %11
%129 = load i32, i32* %14
%130 = call i32 @harmonic(double %126, double %127, double %128, i32 %129)
br label %208
131: ; preds = %123
%132 = load i32, i32* %7
switch i32 %132, label %154 [
i32 0, label %133
i32 1, label %140
i32 2, label %147
]
133: ; preds = %131
%134 = load double, double* %12
%135 = load double, double* %13
%136 = load double, double* %9
%137 = load double, double* %11
%138 = load i32, i32* %14
%139 = call i32 @morse(double %134, double %135, double %136, double %137, i32 %138)
br label %154
140: ; preds = %131
%141 = load double, double* %12
%142 = load double, double* %13
%143 = load double, double* %9
%144 = load double, double* %11
%145 = load i32, i32* %14
%146 = call i32 @morse_polynom(double %141, double %142, double %143, double %144, i32 %145)
br label %154
147: ; preds = %131
%148 = load double, double* %12
%149 = load double, double* %13
%150 = load double, double* %9
%151 = load double, double* %11
%152 = load i32, i32* %14
%153 = call i32 @morse_points(double %148, double %149, double %150, double %151, i32 %152)
br label %154
154: ; preds = %131, %147, %140, %133
br label %208
155: ; preds = %123
%156 = load i32, i32* %7
switch i32 %156, label %183 [
i32 0, label %157
i32 1, label %166
i32 2, label %175
]
157: ; preds = %155
%158 = load i8**, i8*** %5
%159 = getelementptr inbounds i8*, i8** %158, i64 1
%160 = load i8*, i8** %159
%161 = load double, double* %9
%162 = load double, double* %11
%163 = load i32, i32* %14
%164 = load i32, i32* %15
%165 = call i32 @one_d(i8* %160, double %161, double %162, i32 %163, i32 %164)
br label %183
166: ; preds = %155
%167 = load i8**, i8*** %5
%168 = getelementptr inbounds i8*, i8** %167, i64 1
%169 = load i8*, i8** %168
%170 = load double, double* %9
%171 = load double, double* %11
%172 = load i32, i32* %14
%173 = load i32, i32* %15
%174 = call i32 @one_d_polynom(i8* %169, double %170, double %171, i32 %172, i32 %173)
br label %183
175: ; preds = %155
%176 = load i8**, i8*** %5
%177 = getelementptr inbounds i8*, i8** %176, i64 1
%178 = load i8*, i8** %177
%179 = load double, double* %9
%180 = load double, double* %11
%181 = load i32, i32* %14
%182 = call i32 @one_d_points(i8* %178, double %179, double %180, i32 %181)
br label %183
183: ; preds = %155, %175, %166, %157
br label %184
184: ; preds = %123, %183
%185 = load i8**, i8*** %5
%186 = getelementptr inbounds i8*, i8** %185, i64 1
%187 = load i8*, i8** %186
%188 = load i32, i32* %16
%189 = load i32, i32* %16
%190 = load i32, i32* %16
%191 = sub nsw i32 %190, 1
%192 = mul nsw i32 %189, %191
%193 = sdiv i32 %192, 2
%194 = load i32, i32* %14
%195 = call i32 @ci_qff(i8* %187, i32 %188, i32 %193, i32 %194)
br label %208
196: ; preds = %123
%197 = load i8**, i8*** %5
%198 = getelementptr inbounds i8*, i8** %197, i64 1
%199 = load i8*, i8** %198
%200 = load i32, i32* %16
%201 = load i32, i32* %16
%202 = load i32, i32* %16
%203 = sub nsw i32 %202, 1
%204 = mul nsw i32 %201, %203
%205 = sdiv i32 %204, 2
%206 = load i32, i32* %14
%207 = call i32 @vscf_qff(i8* %199, i32 %200, i32 %205, i32 %206)
br label %208
208: ; preds = %123, %196, %184, %154, %125
br label %209
209: ; preds = %208, %59
%210 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.12, i64 0, i64 0))
ret i32 0
}

LLVM IR (-O2):
@.str.1 = [11 x i8] c" task = \00"
@.str.2 = [25 x i8] c"harmonic\0A w = %10g\0A\00"
@.str.3 = [37 x i8] c"morse\0A d = %10g\0A w = %10g\0A\00"
@.str.7 = [16 x i8] c" potential = \00"
@.str.11 = [83 x i8] c"\0A Starting parameters: xstart = %10g\0A xend = %10g\0A deltax = %10g\0A nbas = %10d\0A\00"
@str = [21 x i8] c"\0A Subprogram choice:\00"
@str.13 = [5 x i8] c"VSCF\00"
@str.14 = [7 x i8] c"points\00"
@str.15 = [24 x i8] c"\0A All done!\0A\0A Arevoir!\0A\00"
@str.16 = [8 x i8] c"polynom\00"
@str.17 = [9 x i8] c"analytic\00"
@str.18 = [4 x i8] c"VCI\00"
@str.19 = [3 x i8] c"1D\00"
@reltable.main = [3 x i32] [i32 trunc (i64 sub (i64 ptrtoint ([9 x i8]* @str.17 to i64), i64 ptrtoint ([3 x i32]* @reltable.main to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([8 x i8]* @str.16 to i64), i64 ptrtoint ([3 x i32]* @reltable.main to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([7 x i8]* @str.14 to i64), i64 ptrtoint ([3 x i32]* @reltable.main to i64)) to i32)]
define i32 @main(i32 %0, i8** nocapture %1) {
%3 = alloca i32
%4 = alloca i32
%5 = alloca i32
%6 = alloca double
%7 = alloca double
%8 = alloca double
%9 = alloca double
%10 = alloca i32
%11 = alloca i32
%12 = alloca i32
%13 = bitcast i32* %3 to i8*
store i32 0, i32* %3
%14 = bitcast i32* %4 to i8*
store i32 0, i32* %4
%15 = bitcast i32* %5 to i8*
store i32 0, i32* %5
%16 = bitcast double* %6 to i8*
store double -1.550000e+01, double* %6
%17 = bitcast double* %7 to i8*
store double 1.550000e+01, double* %7
%18 = bitcast double* %8 to i8*
store double 1.200000e+01, double* %8
%19 = bitcast double* %9 to i8*
store double 5.000000e-01, double* %9
%20 = bitcast i32* %10 to i8*
store i32 32, i32* %10
%21 = bitcast i32* %11 to i8*
store i32 16, i32* %11
%22 = bitcast i32* %12 to i8*
store i32 3, i32* %12
%23 = tail call i32 (...) @print_banner()
%24 = icmp sgt i32 %0, 0
br i1 %24, label %25, label %53
25: ; preds = %2
%26 = getelementptr inbounds i8*, i8** %1, i64 1
%27 = load i8*, i8** %26
%28 = call i32 @parse_control(i8* %27, i32* %3, i32* %4, i32* %5)
%29 = load i32, i32* %5
%30 = icmp eq i32 %29, 1
br i1 %30, label %31, label %53
31: ; preds = %25
%32 = call i32 @gamess_get_nmodes_nbas(i32* %12, i32* %10)
%33 = getelementptr inbounds i8*, i8** %1, i64 1
%34 = load i8*, i8** %33
%35 = call i32 @parse_size(i8* %34, i32* %12, i32* %10)
%36 = load i32, i32* %3
switch i32 %36, label %171 [
i32 0, label %37
i32 1, label %37
i32 2, label %37
i32 3, label %37
i32 4, label %45
]
37: ; preds = %31, %31, %31, %31
%38 = load i8*, i8** %33
%39 = load i32, i32* %12
%40 = add nsw i32 %39, -1
%41 = mul nsw i32 %40, %39
%42 = sdiv i32 %41, 2
%43 = load i32, i32* %10
%44 = call i32 @ci_qff(i8* %38, i32 %39, i32 %42, i32 %43)
br label %171
45: ; preds = %31
%46 = load i8*, i8** %33
%47 = load i32, i32* %12
%48 = add nsw i32 %47, -1
%49 = mul nsw i32 %48, %47
%50 = sdiv i32 %49, 2
%51 = load i32, i32* %10
%52 = call i32 @vscf_qff(i8* %46, i32 %47, i32 %50, i32 %51)
br label %171
53: ; preds = %2, %25
%54 = getelementptr inbounds i8*, i8** %1, i64 1
%55 = load i8*, i8** %54
%56 = call i32 @parse_size(i8* %55, i32* %12, i32* %10)
%57 = load i32, i32* %3
switch i32 %57, label %67 [
i32 0, label %58
i32 1, label %61
i32 2, label %64
]
58: ; preds = %53
%59 = load i8*, i8** %54
%60 = call i32 @parse_harmonic(i8* %59, double* %9, i32* %10, double* %6, double* %7)
br label %67
61: ; preds = %53
%62 = load i8*, i8** %54
%63 = call i32 @parse_morse(i8* %62, double* %8, double* %9, i32* %10, double* %6, double* %7)
br label %67
64: ; preds = %53
%65 = load i8*, i8** %54
%66 = call i32 @parse_1d(i8* %65, i32* %11, i32* %10, double* %6, double* %7)
br label %67
67: ; preds = %53, %64, %61, %58
%68 = load double, double* %7
%69 = load double, double* %6
%70 = fsub double %68, %69
%71 = load i32, i32* %10
%72 = add nsw i32 %71, -1
%73 = sitofp i32 %72 to double
%74 = fdiv double %70, %73
%75 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([21 x i8], [21 x i8]* @str, i64 0, i64 0))
%76 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([11 x i8], [11 x i8]* @.str.1, i64 0, i64 0))
%77 = load i32, i32* %3
switch i32 %77, label %91 [
i32 0, label %78
i32 1, label %81
i32 2, label %85
i32 3, label %87
i32 4, label %89
]
78: ; preds = %67
%79 = load double, double* %9
%80 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([25 x i8], [25 x i8]* @.str.2, i64 0, i64 0), double %79)
br label %91
81: ; preds = %67
%82 = load double, double* %8
%83 = load double, double* %9
%84 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([37 x i8], [37 x i8]* @.str.3, i64 0, i64 0), double %82, double %83)
br label %91
85: ; preds = %67
%86 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @str.19, i64 0, i64 0))
br label %91
87: ; preds = %67
%88 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @str.18, i64 0, i64 0))
br label %91
89: ; preds = %67
%90 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @str.13, i64 0, i64 0))
br label %91
91: ; preds = %67, %89, %87, %85, %81, %78
%92 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([16 x i8], [16 x i8]* @.str.7, i64 0, i64 0))
%93 = load i32, i32* %4
%94 = icmp ult i32 %93, 3
br i1 %94, label %95, label %100
95: ; preds = %91
%96 = sext i32 %93 to i64
%97 = shl i64 %96, 2
%98 = call i8* @llvm.load.relative.i64(i8* bitcast ([3 x i32]* @reltable.main to i8*), i64 %97)
%99 = call i32 @puts(i8* dereferenceable(1) %98)
br label %100
100: ; preds = %91, %95
%101 = load i32, i32* %3
%102 = icmp slt i32 %101, 3
br i1 %102, label %103, label %109
103: ; preds = %100
%104 = load double, double* %6
%105 = load double, double* %7
%106 = load i32, i32* %10
%107 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([83 x i8], [83 x i8]* @.str.11, i64 0, i64 0), double %104, double %105, double %74, i32 %106)
%108 = load i32, i32* %3
br label %109
109: ; preds = %103, %100
%110 = phi i32 [ %108, %103 ], [ %101, %100 ]
switch i32 %110, label %171 [
i32 0, label %111
i32 1, label %116
i32 2, label %136
i32 3, label %155
i32 4, label %163
]
111: ; preds = %109
%112 = load double, double* %9
%113 = load double, double* %6
%114 = load i32, i32* %10
%115 = call i32 @harmonic(double %112, double %113, double %74, i32 %114)
br label %171
116: ; preds = %109
%117 = load i32, i32* %4
switch i32 %117, label %171 [
i32 0, label %118
i32 1, label %124
i32 2, label %130
]
118: ; preds = %116
%119 = load double, double* %8
%120 = load double, double* %9
%121 = load double, double* %6
%122 = load i32, i32* %10
%123 = call i32 @morse(double %119, double %120, double %121, double %74, i32 %122)
br label %171
124: ; preds = %116
%125 = load double, double* %8
%126 = load double, double* %9
%127 = load double, double* %6
%128 = load i32, i32* %10
%129 = call i32 @morse_polynom(double %125, double %126, double %127, double %74, i32 %128)
br label %171
130: ; preds = %116
%131 = load double, double* %8
%132 = load double, double* %9
%133 = load double, double* %6
%134 = load i32, i32* %10
%135 = call i32 @morse_points(double %131, double %132, double %133, double %74, i32 %134)
br label %171
136: ; preds = %109
%137 = load i32, i32* %4
switch i32 %137, label %155 [
i32 0, label %138
i32 1, label %144
i32 2, label %150
]
138: ; preds = %136
%139 = load i8*, i8** %54
%140 = load double, double* %6
%141 = load i32, i32* %10
%142 = load i32, i32* %11
%143 = call i32 @one_d(i8* %139, double %140, double %74, i32 %141, i32 %142)
br label %155
144: ; preds = %136
%145 = load i8*, i8** %54
%146 = load double, double* %6
%147 = load i32, i32* %10
%148 = load i32, i32* %11
%149 = call i32 @one_d_polynom(i8* %145, double %146, double %74, i32 %147, i32 %148)
br label %155
150: ; preds = %136
%151 = load i8*, i8** %54
%152 = load double, double* %6
%153 = load i32, i32* %10
%154 = call i32 @one_d_points(i8* %151, double %152, double %74, i32 %153)
br label %155
155: ; preds = %138, %144, %150, %136, %109
%156 = load i8*, i8** %54
%157 = load i32, i32* %12
%158 = add nsw i32 %157, -1
%159 = mul nsw i32 %158, %157
%160 = sdiv i32 %159, 2
%161 = load i32, i32* %10
%162 = call i32 @ci_qff(i8* %156, i32 %157, i32 %160, i32 %161)
br label %171
163: ; preds = %109
%164 = load i8*, i8** %54
%165 = load i32, i32* %12
%166 = add nsw i32 %165, -1
%167 = mul nsw i32 %166, %165
%168 = sdiv i32 %167, 2
%169 = load i32, i32* %10
%170 = call i32 @vscf_qff(i8* %164, i32 %165, i32 %168, i32 %169)
br label %171
171: ; preds = %111, %155, %163, %109, %116, %130, %124, %118, %37, %45, %31
%172 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([24 x i8], [24 x i8]* @str.15, i64 0, i64 0))
ret i32 0
}