#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 */
scalar_t__ SphGenOh(double *, int, double, double, double);
int MakeAngularGrid_974(double (*pOut)[4]) {
  double a = 0, b = 0, v;
  int N = 0;
  v = 0.1438294190527431e-3;
  N += SphGenOh(&pOut[N][0], 0, a, b, v);
  v = 0.1125772288287004e-2;
  N += SphGenOh(&pOut[N][0], 2, a, b, v);
  a = 0.4292963545341347e-1;
  v = 0.4948029341949241e-3;
  N += SphGenOh(&pOut[N][0], 3, a, b, v);
  a = 0.1051426854086404e+0;
  v = 0.7357990109125470e-3;
  N += SphGenOh(&pOut[N][0], 3, a, b, v);
  a = 0.1750024867623087e+0;
  v = 0.8889132771304384e-3;
  N += SphGenOh(&pOut[N][0], 3, a, b, v);
  a = 0.2477653379650257e+0;
  v = 0.9888347838921435e-3;
  N += SphGenOh(&pOut[N][0], 3, a, b, v);
  a = 0.3206567123955957e+0;
  v = 0.1053299681709471e-2;
  N += SphGenOh(&pOut[N][0], 3, a, b, v);
  a = 0.3916520749849983e+0;
  v = 0.1092778807014578e-2;
  N += SphGenOh(&pOut[N][0], 3, a, b, v);
  a = 0.4590825874187624e+0;
  v = 0.1114389394063227e-2;
  N += SphGenOh(&pOut[N][0], 3, a, b, v);
  a = 0.5214563888415861e+0;
  v = 0.1123724788051555e-2;
  N += SphGenOh(&pOut[N][0], 3, a, b, v);
  a = 0.6253170244654199e+0;
  v = 0.1125239325243814e-2;
  N += SphGenOh(&pOut[N][0], 3, a, b, v);
  a = 0.6637926744523170e+0;
  v = 0.1126153271815905e-2;
  N += SphGenOh(&pOut[N][0], 3, a, b, v);
  a = 0.6910410398498301e+0;
  v = 0.1130286931123841e-2;
  N += SphGenOh(&pOut[N][0], 3, a, b, v);
  a = 0.7052907007457760e+0;
  v = 0.1134986534363955e-2;
  N += SphGenOh(&pOut[N][0], 3, a, b, v);
  a = 0.1236686762657990e+0;
  v = 0.6823367927109931e-3;
  N += SphGenOh(&pOut[N][0], 4, a, b, v);
  a = 0.2940777114468387e+0;
  v = 0.9454158160447096e-3;
  N += SphGenOh(&pOut[N][0], 4, a, b, v);
  a = 0.4697753849207649e+0;
  v = 0.1074429975385679e-2;
  N += SphGenOh(&pOut[N][0], 4, a, b, v);
  a = 0.6334563241139567e+0;
  v = 0.1129300086569132e-2;
  N += SphGenOh(&pOut[N][0], 4, a, b, v);
  a = 0.5974048614181342e-1;
  b = 0.2029128752777523e+0;
  v = 0.8436884500901954e-3;
  N += SphGenOh(&pOut[N][0], 5, a, b, v);
  a = 0.1375760408473636e+0;
  b = 0.4602621942484054e+0;
  v = 0.1075255720448885e-2;
  N += SphGenOh(&pOut[N][0], 5, a, b, v);
  a = 0.3391016526336286e+0;
  b = 0.5030673999662036e+0;
  v = 0.1108577236864462e-2;
  N += SphGenOh(&pOut[N][0], 5, a, b, v);
  a = 0.1271675191439820e+0;
  b = 0.2817606422442134e+0;
  v = 0.9566475323783357e-3;
  N += SphGenOh(&pOut[N][0], 5, a, b, v);
  a = 0.2693120740413512e+0;
  b = 0.4331561291720157e+0;
  v = 0.1080663250717391e-2;
  N += SphGenOh(&pOut[N][0], 5, a, b, v);
  a = 0.1419786452601918e+0;
  b = 0.6256167358580814e+0;
  v = 0.1126797131196295e-2;
  N += SphGenOh(&pOut[N][0], 5, a, b, v);
  a = 0.6709284600738255e-1;
  b = 0.3798395216859157e+0;
  v = 0.1022568715358061e-2;
  N += SphGenOh(&pOut[N][0], 5, a, b, v);
  a = 0.7057738183256172e-1;
  b = 0.5517505421423520e+0;
  v = 0.1108960267713108e-2;
  N += SphGenOh(&pOut[N][0], 5, a, b, v);
  a = 0.2783888477882155e+0;
  b = 0.6029619156159187e+0;
  v = 0.1122790653435766e-2;
  N += SphGenOh(&pOut[N][0], 5, a, b, v);
  a = 0.1979578938917407e+0;
  b = 0.3589606329589096e+0;
  v = 0.1032401847117460e-2;
  N += SphGenOh(&pOut[N][0], 5, a, b, v);
  a = 0.2087307061103274e+0;
  b = 0.5348666438135476e+0;
  v = 0.1107249382283854e-2;
  N += SphGenOh(&pOut[N][0], 5, a, b, v);
  a = 0.4055122137872836e+0;
  b = 0.5674997546074373e+0;
  v = 0.1121780048519972e-2;
  N += SphGenOh(&pOut[N][0], 5, a, b, v);
  return N;
}


x86 assembly (clang, -O0):
<MakeAngularGrid_974>:
push   %rbp
mov    %rsp,%rbp
sub    $0x30,%rsp
mov    %rdi,-0x8(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x10(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x18(%rbp)
movl   $0x0,-0x24(%rbp)
movsd  0x10ed(%rip),%xmm0
movsd  %xmm0,-0x20(%rbp)
mov    -0x8(%rbp),%rdi
movslq -0x24(%rbp),%rax
shl    $0x5,%rax
add    %rax,%rdi
movsd  -0x10(%rbp),%xmm0
movsd  -0x18(%rbp),%xmm1
movsd  -0x20(%rbp),%xmm2
xor    %esi,%esi
call   1030 <SphGenOh@plt>
mov    %rax,%rcx
movslq -0x24(%rbp),%rax
add    %rcx,%rax
mov    %eax,-0x24(%rbp)
movsd  0x10a6(%rip),%xmm0
movsd  %xmm0,-0x20(%rbp)
mov    -0x8(%rbp),%rdi
movslq -0x24(%rbp),%rax
shl    $0x5,%rax
add    %rax,%rdi
movsd  -0x10(%rbp),%xmm0
movsd  -0x18(%rbp),%xmm1
movsd  -0x20(%rbp),%xmm2
mov    $0x2,%esi
call   1030 <SphGenOh@plt>
mov    %rax,%rcx
movslq -0x24(%rbp),%rax
add    %rcx,%rax
mov    %eax,-0x24(%rbp)
movsd  0x105c(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  0x1047(%rip),%xmm0
movsd  %xmm0,-0x20(%rbp)
mov    -0x8(%rbp),%rdi
movslq -0x24(%rbp),%rax
shl    $0x5,%rax
add    %rax,%rdi
movsd  -0x10(%rbp),%xmm0
movsd  -0x18(%rbp),%xmm1
movsd  -0x20(%rbp),%xmm2
mov    $0x3,%esi
call   1030 <SphGenOh@plt>
mov    %rax,%rcx
movslq -0x24(%rbp),%rax
add    %rcx,%rax
mov    %eax,-0x24(%rbp)
movsd  0xffd(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  0xfe8(%rip),%xmm0
movsd  %xmm0,-0x20(%rbp)
mov    -0x8(%rbp),%rdi
movslq -0x24(%rbp),%rax
shl    $0x5,%rax
add    %rax,%rdi
movsd  -0x10(%rbp),%xmm0
movsd  -0x18(%rbp),%xmm1
movsd  -0x20(%rbp),%xmm2
mov    $0x3,%esi
call   1030 <SphGenOh@plt>
mov    %rax,%rcx
movslq -0x24(%rbp),%rax
add    %rcx,%rax
mov    %eax,-0x24(%rbp)
movsd  0xf9e(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  0xf89(%rip),%xmm0
movsd  %xmm0,-0x20(%rbp)
mov    -0x8(%rbp),%rdi
movslq -0x24(%rbp),%rax
shl    $0x5,%rax
add    %rax,%rdi
movsd  -0x10(%rbp),%xmm0
movsd  -0x18(%rbp),%xmm1
movsd  -0x20(%rbp),%xmm2
mov    $0x3,%esi
call   1030 <SphGenOh@plt>
mov    %rax,%rcx
movslq -0x24(%rbp),%rax
add    %rcx,%rax
mov    %eax,-0x24(%rbp)
movsd  0xf3f(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  0xf2a(%rip),%xmm0
movsd  %xmm0,-0x20(%rbp)
mov    -0x8(%rbp),%rdi
movslq -0x24(%rbp),%rax
shl    $0x5,%rax
add    %rax,%rdi
movsd  -0x10(%rbp),%xmm0
movsd  -0x18(%rbp),%xmm1
movsd  -0x20(%rbp),%xmm2
mov    $0x3,%esi
call   1030 <SphGenOh@plt>
mov    %rax,%rcx
movslq -0x24(%rbp),%rax
add    %rcx,%rax
mov    %eax,-0x24(%rbp)
movsd  0xee0(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  0xecb(%rip),%xmm0
movsd  %xmm0,-0x20(%rbp)
mov    -0x8(%rbp),%rdi
movslq -0x24(%rbp),%rax
shl    $0x5,%rax
add    %rax,%rdi
movsd  -0x10(%rbp),%xmm0
movsd  -0x18(%rbp),%xmm1
movsd  -0x20(%rbp),%xmm2
mov    $0x3,%esi
call   1030 <SphGenOh@plt>
mov    %rax,%rcx
movslq -0x24(%rbp),%rax
add    %rcx,%rax
mov    %eax,-0x24(%rbp)
movsd  0xe81(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  0xe6c(%rip),%xmm0
movsd  %xmm0,-0x20(%rbp)
mov    -0x8(%rbp),%rdi
movslq -0x24(%rbp),%rax
shl    $0x5,%rax
add    %rax,%rdi
movsd  -0x10(%rbp),%xmm0
movsd  -0x18(%rbp),%xmm1
movsd  -0x20(%rbp),%xmm2
mov    $0x3,%esi
call   1030 <SphGenOh@plt>
mov    %rax,%rcx
movslq -0x24(%rbp),%rax
add    %rcx,%rax
mov    %eax,-0x24(%rbp)
movsd  0xe22(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  0xe0d(%rip),%xmm0
movsd  %xmm0,-0x20(%rbp)
mov    -0x8(%rbp),%rdi
movslq -0x24(%rbp),%rax
shl    $0x5,%rax
add    %rax,%rdi
movsd  -0x10(%rbp),%xmm0
movsd  -0x18(%rbp),%xmm1
movsd  -0x20(%rbp),%xmm2
mov    $0x3,%esi
call   1030 <SphGenOh@plt>
mov    %rax,%rcx
movslq -0x24(%rbp),%rax
add    %rcx,%rax
mov    %eax,-0x24(%rbp)
movsd  0xdc3(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  0xdae(%rip),%xmm0
movsd  %xmm0,-0x20(%rbp)
mov    -0x8(%rbp),%rdi
movslq -0x24(%rbp),%rax
shl    $0x5,%rax
add    %rax,%rdi
movsd  -0x10(%rbp),%xmm0
movsd  -0x18(%rbp),%xmm1
movsd  -0x20(%rbp),%xmm2
mov    $0x3,%esi
call   1030 <SphGenOh@plt>
mov    %rax,%rcx
movslq -0x24(%rbp),%rax
add    %rcx,%rax
mov    %eax,-0x24(%rbp)
movsd  0xd64(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  0xd4f(%rip),%xmm0
movsd  %xmm0,-0x20(%rbp)
mov    -0x8(%rbp),%rdi
movslq -0x24(%rbp),%rax
shl    $0x5,%rax
add    %rax,%rdi
movsd  -0x10(%rbp),%xmm0
movsd  -0x18(%rbp),%xmm1
movsd  -0x20(%rbp),%xmm2
mov    $0x3,%esi
call   1030 <SphGenOh@plt>
mov    %rax,%rcx
movslq -0x24(%rbp),%rax
add    %rcx,%rax
mov    %eax,-0x24(%rbp)
movsd  0xd05(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  0xcf0(%rip),%xmm0
movsd  %xmm0,-0x20(%rbp)
mov    -0x8(%rbp),%rdi
movslq -0x24(%rbp),%rax
shl    $0x5,%rax
add    %rax,%rdi
movsd  -0x10(%rbp),%xmm0
movsd  -0x18(%rbp),%xmm1
movsd  -0x20(%rbp),%xmm2
mov    $0x3,%esi
call   1030 <SphGenOh@plt>
mov    %rax,%rcx
movslq -0x24(%rbp),%rax
add    %rcx,%rax
mov    %eax,-0x24(%rbp)
movsd  0xca6(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  0xc91(%rip),%xmm0
movsd  %xmm0,-0x20(%rbp)
mov    -0x8(%rbp),%rdi
movslq -0x24(%rbp),%rax
shl    $0x5,%rax
add    %rax,%rdi
movsd  -0x10(%rbp),%xmm0
movsd  -0x18(%rbp),%xmm1
movsd  -0x20(%rbp),%xmm2
mov    $0x3,%esi
call   1030 <SphGenOh@plt>
mov    %rax,%rcx
movslq -0x24(%rbp),%rax
add    %rcx,%rax
mov    %eax,-0x24(%rbp)
movsd  0xc47(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  0xc32(%rip),%xmm0
movsd  %xmm0,-0x20(%rbp)
mov    -0x8(%rbp),%rdi
movslq -0x24(%rbp),%rax
shl    $0x5,%rax
add    %rax,%rdi
movsd  -0x10(%rbp),%xmm0
movsd  -0x18(%rbp),%xmm1
movsd  -0x20(%rbp),%xmm2
mov    $0x3,%esi
call   1030 <SphGenOh@plt>
mov    %rax,%rcx
movslq -0x24(%rbp),%rax
add    %rcx,%rax
mov    %eax,-0x24(%rbp)
movsd  0xbe8(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  0xbd3(%rip),%xmm0
movsd  %xmm0,-0x20(%rbp)
mov    -0x8(%rbp),%rdi
movslq -0x24(%rbp),%rax
shl    $0x5,%rax
add    %rax,%rdi
movsd  -0x10(%rbp),%xmm0
movsd  -0x18(%rbp),%xmm1
movsd  -0x20(%rbp),%xmm2
mov    $0x4,%esi
call   1030 <SphGenOh@plt>
mov    %rax,%rcx
movslq -0x24(%rbp),%rax
add    %rcx,%rax
mov    %eax,-0x24(%rbp)
movsd  0xb89(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  0xb74(%rip),%xmm0
movsd  %xmm0,-0x20(%rbp)
mov    -0x8(%rbp),%rdi
movslq -0x24(%rbp),%rax
shl    $0x5,%rax
add    %rax,%rdi
movsd  -0x10(%rbp),%xmm0
movsd  -0x18(%rbp),%xmm1
movsd  -0x20(%rbp),%xmm2
mov    $0x4,%esi
call   1030 <SphGenOh@plt>
mov    %rax,%rcx
movslq -0x24(%rbp),%rax
add    %rcx,%rax
mov    %eax,-0x24(%rbp)
movsd  0xb2a(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  0xb15(%rip),%xmm0
movsd  %xmm0,-0x20(%rbp)
mov    -0x8(%rbp),%rdi
movslq -0x24(%rbp),%rax
shl    $0x5,%rax
add    %rax,%rdi
movsd  -0x10(%rbp),%xmm0
movsd  -0x18(%rbp),%xmm1
movsd  -0x20(%rbp),%xmm2
mov    $0x4,%esi
call   1030 <SphGenOh@plt>
mov    %rax,%rcx
movslq -0x24(%rbp),%rax
add    %rcx,%rax
mov    %eax,-0x24(%rbp)
movsd  0xacb(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  0xab6(%rip),%xmm0
movsd  %xmm0,-0x20(%rbp)
mov    -0x8(%rbp),%rdi
movslq -0x24(%rbp),%rax
shl    $0x5,%rax
add    %rax,%rdi
movsd  -0x10(%rbp),%xmm0
movsd  -0x18(%rbp),%xmm1
movsd  -0x20(%rbp),%xmm2
mov    $0x4,%esi
call   1030 <SphGenOh@plt>
mov    %rax,%rcx
movslq -0x24(%rbp),%rax
add    %rcx,%rax
mov    %eax,-0x24(%rbp)
movsd  0xa6c(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  0xa57(%rip),%xmm0
movsd  %xmm0,-0x18(%rbp)
movsd  0xa42(%rip),%xmm0
movsd  %xmm0,-0x20(%rbp)
mov    -0x8(%rbp),%rdi
movslq -0x24(%rbp),%rax
shl    $0x5,%rax
add    %rax,%rdi
movsd  -0x10(%rbp),%xmm0
movsd  -0x18(%rbp),%xmm1
movsd  -0x20(%rbp),%xmm2
mov    $0x5,%esi
call   1030 <SphGenOh@plt>
mov    %rax,%rcx
movslq -0x24(%rbp),%rax
add    %rcx,%rax
mov    %eax,-0x24(%rbp)
movsd  0x9f8(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  0x9e3(%rip),%xmm0
movsd  %xmm0,-0x18(%rbp)
movsd  0x9ce(%rip),%xmm0
movsd  %xmm0,-0x20(%rbp)
mov    -0x8(%rbp),%rdi
movslq -0x24(%rbp),%rax
shl    $0x5,%rax
add    %rax,%rdi
movsd  -0x10(%rbp),%xmm0
movsd  -0x18(%rbp),%xmm1
movsd  -0x20(%rbp),%xmm2
mov    $0x5,%esi
call   1030 <SphGenOh@plt>
mov    %rax,%rcx
movslq -0x24(%rbp),%rax
add    %rcx,%rax
mov    %eax,-0x24(%rbp)
movsd  0x984(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  0x96f(%rip),%xmm0
movsd  %xmm0,-0x18(%rbp)
movsd  0x95a(%rip),%xmm0
movsd  %xmm0,-0x20(%rbp)
mov    -0x8(%rbp),%rdi
movslq -0x24(%rbp),%rax
shl    $0x5,%rax
add    %rax,%rdi
movsd  -0x10(%rbp),%xmm0
movsd  -0x18(%rbp),%xmm1
movsd  -0x20(%rbp),%xmm2
mov    $0x5,%esi
call   1030 <SphGenOh@plt>
mov    %rax,%rcx
movslq -0x24(%rbp),%rax
add    %rcx,%rax
mov    %eax,-0x24(%rbp)
movsd  0x910(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  0x8fb(%rip),%xmm0
movsd  %xmm0,-0x18(%rbp)
movsd  0x8e6(%rip),%xmm0
movsd  %xmm0,-0x20(%rbp)
mov    -0x8(%rbp),%rdi
movslq -0x24(%rbp),%rax
shl    $0x5,%rax
add    %rax,%rdi
movsd  -0x10(%rbp),%xmm0
movsd  -0x18(%rbp),%xmm1
movsd  -0x20(%rbp),%xmm2
mov    $0x5,%esi
call   1030 <SphGenOh@plt>
mov    %rax,%rcx
movslq -0x24(%rbp),%rax
add    %rcx,%rax
mov    %eax,-0x24(%rbp)
movsd  0x89c(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  0x887(%rip),%xmm0
movsd  %xmm0,-0x18(%rbp)
movsd  0x872(%rip),%xmm0
movsd  %xmm0,-0x20(%rbp)
mov    -0x8(%rbp),%rdi
movslq -0x24(%rbp),%rax
shl    $0x5,%rax
add    %rax,%rdi
movsd  -0x10(%rbp),%xmm0
movsd  -0x18(%rbp),%xmm1
movsd  -0x20(%rbp),%xmm2
mov    $0x5,%esi
call   1030 <SphGenOh@plt>
mov    %rax,%rcx
movslq -0x24(%rbp),%rax
add    %rcx,%rax
mov    %eax,-0x24(%rbp)
movsd  0x828(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  0x813(%rip),%xmm0
movsd  %xmm0,-0x18(%rbp)
movsd  0x7fe(%rip),%xmm0
movsd  %xmm0,-0x20(%rbp)
mov    -0x8(%rbp),%rdi
movslq -0x24(%rbp),%rax
shl    $0x5,%rax
add    %rax,%rdi
movsd  -0x10(%rbp),%xmm0
movsd  -0x18(%rbp),%xmm1
movsd  -0x20(%rbp),%xmm2
mov    $0x5,%esi
call   1030 <SphGenOh@plt>
mov    %rax,%rcx
movslq -0x24(%rbp),%rax
add    %rcx,%rax
mov    %eax,-0x24(%rbp)
movsd  0x7b4(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  0x79f(%rip),%xmm0
movsd  %xmm0,-0x18(%rbp)
movsd  0x78a(%rip),%xmm0
movsd  %xmm0,-0x20(%rbp)
mov    -0x8(%rbp),%rdi
movslq -0x24(%rbp),%rax
shl    $0x5,%rax
add    %rax,%rdi
movsd  -0x10(%rbp),%xmm0
movsd  -0x18(%rbp),%xmm1
movsd  -0x20(%rbp),%xmm2
mov    $0x5,%esi
call   1030 <SphGenOh@plt>
mov    %rax,%rcx
movslq -0x24(%rbp),%rax
add    %rcx,%rax
mov    %eax,-0x24(%rbp)
movsd  0x740(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  0x72b(%rip),%xmm0
movsd  %xmm0,-0x18(%rbp)
movsd  0x716(%rip),%xmm0
movsd  %xmm0,-0x20(%rbp)
mov    -0x8(%rbp),%rdi
movslq -0x24(%rbp),%rax
shl    $0x5,%rax
add    %rax,%rdi
movsd  -0x10(%rbp),%xmm0
movsd  -0x18(%rbp),%xmm1
movsd  -0x20(%rbp),%xmm2
mov    $0x5,%esi
call   1030 <SphGenOh@plt>
mov    %rax,%rcx
movslq -0x24(%rbp),%rax
add    %rcx,%rax
mov    %eax,-0x24(%rbp)
movsd  0x6cc(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  0x6b7(%rip),%xmm0
movsd  %xmm0,-0x18(%rbp)
movsd  0x6a2(%rip),%xmm0
movsd  %xmm0,-0x20(%rbp)
mov    -0x8(%rbp),%rdi
movslq -0x24(%rbp),%rax
shl    $0x5,%rax
add    %rax,%rdi
movsd  -0x10(%rbp),%xmm0
movsd  -0x18(%rbp),%xmm1
movsd  -0x20(%rbp),%xmm2
mov    $0x5,%esi
call   1030 <SphGenOh@plt>
mov    %rax,%rcx
movslq -0x24(%rbp),%rax
add    %rcx,%rax
mov    %eax,-0x24(%rbp)
movsd  0x658(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  0x643(%rip),%xmm0
movsd  %xmm0,-0x18(%rbp)
movsd  0x62e(%rip),%xmm0
movsd  %xmm0,-0x20(%rbp)
mov    -0x8(%rbp),%rdi
movslq -0x24(%rbp),%rax
shl    $0x5,%rax
add    %rax,%rdi
movsd  -0x10(%rbp),%xmm0
movsd  -0x18(%rbp),%xmm1
movsd  -0x20(%rbp),%xmm2
mov    $0x5,%esi
call   1030 <SphGenOh@plt>
mov    %rax,%rcx
movslq -0x24(%rbp),%rax
add    %rcx,%rax
mov    %eax,-0x24(%rbp)
movsd  0x5e4(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  0x5cf(%rip),%xmm0
movsd  %xmm0,-0x18(%rbp)
movsd  0x5ba(%rip),%xmm0
movsd  %xmm0,-0x20(%rbp)
mov    -0x8(%rbp),%rdi
movslq -0x24(%rbp),%rax
shl    $0x5,%rax
add    %rax,%rdi
movsd  -0x10(%rbp),%xmm0
movsd  -0x18(%rbp),%xmm1
movsd  -0x20(%rbp),%xmm2
mov    $0x5,%esi
call   1030 <SphGenOh@plt>
mov    %rax,%rcx
movslq -0x24(%rbp),%rax
add    %rcx,%rax
mov    %eax,-0x24(%rbp)
movsd  0x570(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  0x55b(%rip),%xmm0
movsd  %xmm0,-0x18(%rbp)
movsd  0x546(%rip),%xmm0
movsd  %xmm0,-0x20(%rbp)
mov    -0x8(%rbp),%rdi
movslq -0x24(%rbp),%rax
shl    $0x5,%rax
add    %rax,%rdi
movsd  -0x10(%rbp),%xmm0
movsd  -0x18(%rbp),%xmm1
movsd  -0x20(%rbp),%xmm2
mov    $0x5,%esi
call   1030 <SphGenOh@plt>
mov    %rax,%rcx
movslq -0x24(%rbp),%rax
add    %rcx,%rax
mov    %eax,-0x24(%rbp)
mov    -0x24(%rbp),%eax
add    $0x30,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<MakeAngularGrid_974>:
push   %r15
push   %r14
push   %r12
push   %rbx
push   %rax
mov    %rdi,%r14
movsd  0xedd(%rip),%xmm2
xorps  %xmm0,%xmm0
xorps  %xmm1,%xmm1
xor    %esi,%esi
call   1030 <SphGenOh@plt>
mov    %rax,%r15
movslq %r15d,%rdi
shl    $0x5,%rdi
add    %r14,%rdi
movsd  0xec3(%rip),%xmm2
xorps  %xmm0,%xmm0
xorps  %xmm1,%xmm1
mov    $0x2,%esi
call   1030 <SphGenOh@plt>
mov    %rax,%r12
add    %r15,%r12
movslq %r12d,%rdi
shl    $0x5,%rdi
add    %r14,%rdi
movsd  0xea3(%rip),%xmm0
movsd  0xea3(%rip),%xmm2
xorps  %xmm1,%xmm1
mov    $0x3,%esi
call   1030 <SphGenOh@plt>
mov    %rax,%rbx
add    %r12,%rbx
movslq %ebx,%rdi
shl    $0x5,%rdi
add    %r14,%rdi
movsd  0xe86(%rip),%xmm0
movsd  0xe86(%rip),%xmm2
xorps  %xmm1,%xmm1
mov    $0x3,%esi
call   1030 <SphGenOh@plt>
mov    %rax,%r15
add    %rbx,%r15
movslq %r15d,%rdi
shl    $0x5,%rdi
add    %r14,%rdi
movsd  0xe69(%rip),%xmm0
movsd  0xe69(%rip),%xmm2
xorps  %xmm1,%xmm1
mov    $0x3,%esi
call   1030 <SphGenOh@plt>
mov    %rax,%rbx
add    %r15,%rbx
movslq %ebx,%rdi
shl    $0x5,%rdi
add    %r14,%rdi
movsd  0xe4c(%rip),%xmm0
movsd  0xe4c(%rip),%xmm2
xorps  %xmm1,%xmm1
mov    $0x3,%esi
call   1030 <SphGenOh@plt>
mov    %rax,%r15
add    %rbx,%r15
movslq %r15d,%rdi
shl    $0x5,%rdi
add    %r14,%rdi
movsd  0xe2f(%rip),%xmm0
movsd  0xe2f(%rip),%xmm2
xorps  %xmm1,%xmm1
mov    $0x3,%esi
call   1030 <SphGenOh@plt>
mov    %rax,%rbx
add    %r15,%rbx
movslq %ebx,%rdi
shl    $0x5,%rdi
add    %r14,%rdi
movsd  0xe12(%rip),%xmm0
movsd  0xe12(%rip),%xmm2
xorps  %xmm1,%xmm1
mov    $0x3,%esi
call   1030 <SphGenOh@plt>
mov    %rax,%r15
add    %rbx,%r15
movslq %r15d,%rdi
shl    $0x5,%rdi
add    %r14,%rdi
movsd  0xdf5(%rip),%xmm0
movsd  0xdf5(%rip),%xmm2
xorps  %xmm1,%xmm1
mov    $0x3,%esi
call   1030 <SphGenOh@plt>
mov    %rax,%rbx
add    %r15,%rbx
movslq %ebx,%rdi
shl    $0x5,%rdi
add    %r14,%rdi
movsd  0xdd8(%rip),%xmm0
movsd  0xdd8(%rip),%xmm2
xorps  %xmm1,%xmm1
mov    $0x3,%esi
call   1030 <SphGenOh@plt>
mov    %rax,%r15
add    %rbx,%r15
movslq %r15d,%rdi
shl    $0x5,%rdi
add    %r14,%rdi
movsd  0xdbb(%rip),%xmm0
movsd  0xdbb(%rip),%xmm2
xorps  %xmm1,%xmm1
mov    $0x3,%esi
call   1030 <SphGenOh@plt>
mov    %rax,%rbx
add    %r15,%rbx
movslq %ebx,%rdi
shl    $0x5,%rdi
add    %r14,%rdi
movsd  0xd9e(%rip),%xmm0
movsd  0xd9e(%rip),%xmm2
xorps  %xmm1,%xmm1
mov    $0x3,%esi
call   1030 <SphGenOh@plt>
mov    %rax,%r15
add    %rbx,%r15
movslq %r15d,%rdi
shl    $0x5,%rdi
add    %r14,%rdi
movsd  0xd81(%rip),%xmm0
movsd  0xd81(%rip),%xmm2
xorps  %xmm1,%xmm1
mov    $0x3,%esi
call   1030 <SphGenOh@plt>
mov    %rax,%rbx
add    %r15,%rbx
movslq %ebx,%rdi
shl    $0x5,%rdi
add    %r14,%rdi
movsd  0xd64(%rip),%xmm0
movsd  0xd64(%rip),%xmm2
xorps  %xmm1,%xmm1
mov    $0x3,%esi
call   1030 <SphGenOh@plt>
mov    %rax,%r15
add    %rbx,%r15
movslq %r15d,%rdi
shl    $0x5,%rdi
add    %r14,%rdi
movsd  0xd47(%rip),%xmm0
movsd  0xd47(%rip),%xmm2
xorps  %xmm1,%xmm1
mov    $0x4,%esi
call   1030 <SphGenOh@plt>
mov    %rax,%rbx
add    %r15,%rbx
movslq %ebx,%rdi
shl    $0x5,%rdi
add    %r14,%rdi
movsd  0xd2a(%rip),%xmm0
movsd  0xd2a(%rip),%xmm2
xorps  %xmm1,%xmm1
mov    $0x4,%esi
call   1030 <SphGenOh@plt>
mov    %rax,%r15
add    %rbx,%r15
movslq %r15d,%rdi
shl    $0x5,%rdi
add    %r14,%rdi
movsd  0xd0d(%rip),%xmm0
movsd  0xd0d(%rip),%xmm2
xorps  %xmm1,%xmm1
mov    $0x4,%esi
call   1030 <SphGenOh@plt>
mov    %rax,%rbx
add    %r15,%rbx
movslq %ebx,%rdi
shl    $0x5,%rdi
add    %r14,%rdi
movsd  0xcf0(%rip),%xmm0
movsd  0xcf0(%rip),%xmm2
xorps  %xmm1,%xmm1
mov    $0x4,%esi
call   1030 <SphGenOh@plt>
mov    %rax,%r15
add    %rbx,%r15
movslq %r15d,%rdi
shl    $0x5,%rdi
add    %r14,%rdi
movsd  0xcd3(%rip),%xmm0
movsd  0xcd3(%rip),%xmm1
movsd  0xcd3(%rip),%xmm2
mov    $0x5,%esi
call   1030 <SphGenOh@plt>
mov    %rax,%rbx
add    %r15,%rbx
movslq %ebx,%rdi
shl    $0x5,%rdi
add    %r14,%rdi
movsd  0xcb9(%rip),%xmm0
movsd  0xcb9(%rip),%xmm1
movsd  0xcb9(%rip),%xmm2
mov    $0x5,%esi
call   1030 <SphGenOh@plt>
mov    %rax,%r15
add    %rbx,%r15
movslq %r15d,%rdi
shl    $0x5,%rdi
add    %r14,%rdi
movsd  0xc9f(%rip),%xmm0
movsd  0xc9f(%rip),%xmm1
movsd  0xc9f(%rip),%xmm2
mov    $0x5,%esi
call   1030 <SphGenOh@plt>
mov    %rax,%rbx
add    %r15,%rbx
movslq %ebx,%rdi
shl    $0x5,%rdi
add    %r14,%rdi
movsd  0xc85(%rip),%xmm0
movsd  0xc85(%rip),%xmm1
movsd  0xc85(%rip),%xmm2
mov    $0x5,%esi
call   1030 <SphGenOh@plt>
mov    %rax,%r15
add    %rbx,%r15
movslq %r15d,%rdi
shl    $0x5,%rdi
add    %r14,%rdi
movsd  0xc6b(%rip),%xmm0
movsd  0xc6b(%rip),%xmm1
movsd  0xc6b(%rip),%xmm2
mov    $0x5,%esi
call   1030 <SphGenOh@plt>
mov    %rax,%rbx
add    %r15,%rbx
movslq %ebx,%rdi
shl    $0x5,%rdi
add    %r14,%rdi
movsd  0xc51(%rip),%xmm0
movsd  0xc51(%rip),%xmm1
movsd  0xc51(%rip),%xmm2
mov    $0x5,%esi
call   1030 <SphGenOh@plt>
mov    %rax,%r15
add    %rbx,%r15
movslq %r15d,%rdi
shl    $0x5,%rdi
add    %r14,%rdi
movsd  0xc37(%rip),%xmm0
movsd  0xc37(%rip),%xmm1
movsd  0xc37(%rip),%xmm2
mov    $0x5,%esi
call   1030 <SphGenOh@plt>
mov    %rax,%rbx
add    %r15,%rbx
movslq %ebx,%rdi
shl    $0x5,%rdi
add    %r14,%rdi
movsd  0xc1d(%rip),%xmm0
movsd  0xc1d(%rip),%xmm1
movsd  0xc1d(%rip),%xmm2
mov    $0x5,%esi
call   1030 <SphGenOh@plt>
mov    %rax,%r15
add    %rbx,%r15
movslq %r15d,%rdi
shl    $0x5,%rdi
add    %r14,%rdi
movsd  0xc03(%rip),%xmm0
movsd  0xc03(%rip),%xmm1
movsd  0xc03(%rip),%xmm2
mov    $0x5,%esi
call   1030 <SphGenOh@plt>
mov    %rax,%rbx
add    %r15,%rbx
movslq %ebx,%rdi
shl    $0x5,%rdi
add    %r14,%rdi
movsd  0xbe9(%rip),%xmm0
movsd  0xbe9(%rip),%xmm1
movsd  0xbe9(%rip),%xmm2
mov    $0x5,%esi
call   1030 <SphGenOh@plt>
mov    %rax,%r15
add    %rbx,%r15
movslq %r15d,%rdi
shl    $0x5,%rdi
add    %r14,%rdi
movsd  0xbcf(%rip),%xmm0
movsd  0xbcf(%rip),%xmm1
movsd  0xbcf(%rip),%xmm2
mov    $0x5,%esi
call   1030 <SphGenOh@plt>
add    %r15,%rax
movslq %eax,%rbx
mov    %rbx,%rdi
shl    $0x5,%rdi
add    %r14,%rdi
movsd  0xbb5(%rip),%xmm0
movsd  0xbb5(%rip),%xmm1
movsd  0xbb5(%rip),%xmm2
mov    $0x5,%esi
call   1030 <SphGenOh@plt>
add    %ebx,%eax
add    $0x8,%rsp
pop    %rbx
pop    %r12
pop    %r14
pop    %r15
ret

LLVM IR (-O0):
define i32 @MakeAngularGrid_974([4 x double]* %0) {
%2 = alloca [4 x double]*
%3 = alloca double
%4 = alloca double
%5 = alloca double
%6 = alloca i32
store [4 x double]* %0, [4 x double]** %2
store double 0.000000e+00, double* %3
store double 0.000000e+00, double* %4
store i32 0, i32* %6
store double 0x3F22DA1D4D545B29, double* %5
%7 = load [4 x double]*, [4 x double]** %2
%8 = load i32, i32* %6
%9 = sext i32 %8 to i64
%10 = getelementptr inbounds [4 x double], [4 x double]* %7, i64 %9
%11 = getelementptr inbounds [4 x double], [4 x double]* %10, i64 0, i64 0
%12 = load double, double* %3
%13 = load double, double* %4
%14 = load double, double* %5
%15 = call i64 @SphGenOh(double* %11, i32 0, double %12, double %13, double %14)
%16 = load i32, i32* %6
%17 = sext i32 %16 to i64
%18 = add nsw i64 %17, %15
%19 = trunc i64 %18 to i32
store i32 %19, i32* %6
store double 0x3F5271D4CA4CC587, double* %5
%20 = load [4 x double]*, [4 x double]** %2
%21 = load i32, i32* %6
%22 = sext i32 %21 to i64
%23 = getelementptr inbounds [4 x double], [4 x double]* %20, i64 %22
%24 = getelementptr inbounds [4 x double], [4 x double]* %23, i64 0, i64 0
%25 = load double, double* %3
%26 = load double, double* %4
%27 = load double, double* %5
%28 = call i64 @SphGenOh(double* %24, i32 2, double %25, double %26, double %27)
%29 = load i32, i32* %6
%30 = sext i32 %29 to i64
%31 = add nsw i64 %30, %28
%32 = trunc i64 %31 to i32
store i32 %32, i32* %6
store double 0x3FA5FADF889A6D04, double* %3
store double 0x3F4036B535CD70B5, double* %5
%33 = load [4 x double]*, [4 x double]** %2
%34 = load i32, i32* %6
%35 = sext i32 %34 to i64
%36 = getelementptr inbounds [4 x double], [4 x double]* %33, i64 %35
%37 = getelementptr inbounds [4 x double], [4 x double]* %36, i64 0, i64 0
%38 = load double, double* %3
%39 = load double, double* %4
%40 = load double, double* %5
%41 = call i64 @SphGenOh(double* %37, i32 3, double %38, double %39, double %40)
%42 = load i32, i32* %6
%43 = sext i32 %42 to i64
%44 = add nsw i64 %43, %41
%45 = trunc i64 %44 to i32
store i32 %45, i32* %6
store double 0x3FBAEAA18B3E64E3, double* %3
store double 0x3F481C54581A2A9C, double* %5
%46 = load [4 x double]*, [4 x double]** %2
%47 = load i32, i32* %6
%48 = sext i32 %47 to i64
%49 = getelementptr inbounds [4 x double], [4 x double]* %46, i64 %48
%50 = getelementptr inbounds [4 x double], [4 x double]* %49, i64 0, i64 0
%51 = load double, double* %3
%52 = load double, double* %4
%53 = load double, double* %5
%54 = call i64 @SphGenOh(double* %50, i32 3, double %51, double %52, double %53)
%55 = load i32, i32* %6
%56 = sext i32 %55 to i64
%57 = add nsw i64 %56, %54
%58 = trunc i64 %57 to i32
store i32 %58, i32* %6
store double 0x3FC6667B42AE6FDD, double* %3
store double 0x3F4D20BEBA250AA1, double* %5
%59 = load [4 x double]*, [4 x double]** %2
%60 = load i32, i32* %6
%61 = sext i32 %60 to i64
%62 = getelementptr inbounds [4 x double], [4 x double]* %59, i64 %61
%63 = getelementptr inbounds [4 x double], [4 x double]* %62, i64 0, i64 0
%64 = load double, double* %3
%65 = load double, double* %4
%66 = load double, double* %5
%67 = call i64 @SphGenOh(double* %63, i32 3, double %64, double %65, double %66)
%68 = load i32, i32* %6
%69 = sext i32 %68 to i64
%70 = add nsw i64 %69, %67
%71 = trunc i64 %70 to i32
store i32 %71, i32* %6
store double 0x3FCFB6C64BD232B6, double* %3
store double 0x3F50337943B5AE92, double* %5
%72 = load [4 x double]*, [4 x double]** %2
%73 = load i32, i32* %6
%74 = sext i32 %73 to i64
%75 = getelementptr inbounds [4 x double], [4 x double]* %72, i64 %74
%76 = getelementptr inbounds [4 x double], [4 x double]* %75, i64 0, i64 0
%77 = load double, double* %3
%78 = load double, double* %4
%79 = load double, double* %5
%80 = call i64 @SphGenOh(double* %76, i32 3, double %77, double %78, double %79)
%81 = load i32, i32* %6
%82 = sext i32 %81 to i64
%83 = add nsw i64 %82, %80
%84 = trunc i64 %83 to i32
store i32 %84, i32* %6
store double 0x3FD485A3BB3ED874, double* %3
store double 0x3F5141DBEBE4A0F1, double* %5
%85 = load [4 x double]*, [4 x double]** %2
%86 = load i32, i32* %6
%87 = sext i32 %86 to i64
%88 = getelementptr inbounds [4 x double], [4 x double]* %85, i64 %87
%89 = getelementptr inbounds [4 x double], [4 x double]* %88, i64 0, i64 0
%90 = load double, double* %3
%91 = load double, double* %4
%92 = load double, double* %5
%93 = call i64 @SphGenOh(double* %89, i32 3, double %90, double %91, double %92)
%94 = load i32, i32* %6
%95 = sext i32 %94 to i64
%96 = add nsw i64 %95, %93
%97 = trunc i64 %96 to i32
store i32 %97, i32* %6
store double 0x3FD910D3DD5E26A0, double* %3
store double 0x3F51E7724F3994EA, double* %5
%98 = load [4 x double]*, [4 x double]** %2
%99 = load i32, i32* %6
%100 = sext i32 %99 to i64
%101 = getelementptr inbounds [4 x double], [4 x double]* %98, i64 %100
%102 = getelementptr inbounds [4 x double], [4 x double]* %101, i64 0, i64 0
%103 = load double, double* %3
%104 = load double, double* %4
%105 = load double, double* %5
%106 = call i64 @SphGenOh(double* %102, i32 3, double %103, double %104, double %105)
%107 = load i32, i32* %6
%108 = sext i32 %107 to i64
%109 = add nsw i64 %108, %106
%110 = trunc i64 %109 to i32
store i32 %110, i32* %6
store double 0x3FDD619BEEC81AF6, double* %3
store double 0x3F52421680292321, double* %5
%111 = load [4 x double]*, [4 x double]** %2
%112 = load i32, i32* %6
%113 = sext i32 %112 to i64
%114 = getelementptr inbounds [4 x double], [4 x double]* %111, i64 %113
%115 = getelementptr inbounds [4 x double], [4 x double]* %114, i64 0, i64 0
%116 = load double, double* %3
%117 = load double, double* %4
%118 = load double, double* %5
%119 = call i64 @SphGenOh(double* %115, i32 3, double %116, double %117, double %118)
%120 = load i32, i32* %6
%121 = sext i32 %120 to i64
%122 = add nsw i64 %121, %119
%123 = trunc i64 %122 to i32
store i32 %123, i32* %6
store double 0x3FE0AFC54F0BAD07, double* %3
store double 0x3F52693E4DB87FE4, double* %5
%124 = load [4 x double]*, [4 x double]** %2
%125 = load i32, i32* %6
%126 = sext i32 %125 to i64
%127 = getelementptr inbounds [4 x double], [4 x double]* %124, i64 %126
%128 = getelementptr inbounds [4 x double], [4 x double]* %127, i64 0, i64 0
%129 = load double, double* %3
%130 = load double, double* %4
%131 = load double, double* %5
%132 = call i64 @SphGenOh(double* %128, i32 3, double %129, double %130, double %131)
%133 = load i32, i32* %6
%134 = sext i32 %133 to i64
%135 = add nsw i64 %134, %132
%136 = trunc i64 %135 to i32
store i32 %136, i32* %6
store double 0x3FE40298D936C099, double* %3
store double 0x3F526F988688BAAD, double* %5
%137 = load [4 x double]*, [4 x double]** %2
%138 = load i32, i32* %6
%139 = sext i32 %138 to i64
%140 = getelementptr inbounds [4 x double], [4 x double]* %137, i64 %139
%141 = getelementptr inbounds [4 x double], [4 x double]* %140, i64 0, i64 0
%142 = load double, double* %3
%143 = load double, double* %4
%144 = load double, double* %5
%145 = call i64 @SphGenOh(double* %141, i32 3, double %142, double %143, double %144)
%146 = load i32, i32* %6
%147 = sext i32 %146 to i64
%148 = add nsw i64 %147, %145
%149 = trunc i64 %148 to i32
store i32 %149, i32* %6
store double 0x3FE53DCA22831B40, double* %3
store double 0x3F52736DDE4140B3, double* %5
%150 = load [4 x double]*, [4 x double]** %2
%151 = load i32, i32* %6
%152 = sext i32 %151 to i64
%153 = getelementptr inbounds [4 x double], [4 x double]* %150, i64 %152
%154 = getelementptr inbounds [4 x double], [4 x double]* %153, i64 0, i64 0
%155 = load double, double* %3
%156 = load double, double* %4
%157 = load double, double* %5
%158 = call i64 @SphGenOh(double* %154, i32 3, double %155, double %156, double %157)
%159 = load i32, i32* %6
%160 = sext i32 %159 to i64
%161 = add nsw i64 %160, %158
%162 = trunc i64 %161 to i32
store i32 %162, i32* %6
store double 0x3FE61D02194B29CE, double* %3
store double 0x3F5284C459DF9C4A, double* %5
%163 = load [4 x double]*, [4 x double]** %2
%164 = load i32, i32* %6
%165 = sext i32 %164 to i64
%166 = getelementptr inbounds [4 x double], [4 x double]* %163, i64 %165
%167 = getelementptr inbounds [4 x double], [4 x double]* %166, i64 0, i64 0
%168 = load double, double* %3
%169 = load double, double* %4
%170 = load double, double* %5
%171 = call i64 @SphGenOh(double* %167, i32 3, double %168, double %169, double %170)
%172 = load i32, i32* %6
%173 = sext i32 %172 to i64
%174 = add nsw i64 %173, %171
%175 = trunc i64 %174 to i32
store i32 %175, i32* %6
store double 0x3FE691BDCDBC0872, double* %3
store double 0x3F52987A82F9C027, double* %5
%176 = load [4 x double]*, [4 x double]** %2
%177 = load i32, i32* %6
%178 = sext i32 %177 to i64
%179 = getelementptr inbounds [4 x double], [4 x double]* %176, i64 %178
%180 = getelementptr inbounds [4 x double], [4 x double]* %179, i64 0, i64 0
%181 = load double, double* %3
%182 = load double, double* %4
%183 = load double, double* %5
%184 = call i64 @SphGenOh(double* %180, i32 3, double %181, double %182, double %183)
%185 = load i32, i32* %6
%186 = sext i32 %185 to i64
%187 = add nsw i64 %186, %184
%188 = trunc i64 %187 to i32
store i32 %188, i32* %6
store double 0x3FBFA8C01819E96E, double* %3
store double 0x3F465BDB1AD29343, double* %5
%189 = load [4 x double]*, [4 x double]** %2
%190 = load i32, i32* %6
%191 = sext i32 %190 to i64
%192 = getelementptr inbounds [4 x double], [4 x double]* %189, i64 %191
%193 = getelementptr inbounds [4 x double], [4 x double]* %192, i64 0, i64 0
%194 = load double, double* %3
%195 = load double, double* %4
%196 = load double, double* %5
%197 = call i64 @SphGenOh(double* %193, i32 4, double %194, double %195, double %196)
%198 = load i32, i32* %6
%199 = sext i32 %198 to i64
%200 = add nsw i64 %199, %197
%201 = trunc i64 %200 to i32
store i32 %201, i32* %6
store double 0x3FD2D22B5249637C, double* %3
store double 0x3F4EFAB901698905, double* %5
%202 = load [4 x double]*, [4 x double]** %2
%203 = load i32, i32* %6
%204 = sext i32 %203 to i64
%205 = getelementptr inbounds [4 x double], [4 x double]* %202, i64 %204
%206 = getelementptr inbounds [4 x double], [4 x double]* %205, i64 0, i64 0
%207 = load double, double* %3
%208 = load double, double* %4
%209 = load double, double* %5
%210 = call i64 @SphGenOh(double* %206, i32 4, double %207, double %208, double %209)
%211 = load i32, i32* %6
%212 = sext i32 %211 to i64
%213 = add nsw i64 %212, %210
%214 = trunc i64 %213 to i32
store i32 %214, i32* %6
store double 0x3FDE10CCC6ACD4F1, double* %3
store double 0x3F519A7C66CABA8A, double* %5
%215 = load [4 x double]*, [4 x double]** %2
%216 = load i32, i32* %6
%217 = sext i32 %216 to i64
%218 = getelementptr inbounds [4 x double], [4 x double]* %215, i64 %217
%219 = getelementptr inbounds [4 x double], [4 x double]* %218, i64 0, i64 0
%220 = load double, double* %3
%221 = load double, double* %4
%222 = load double, double* %5
%223 = call i64 @SphGenOh(double* %219, i32 4, double %220, double %221, double %222)
%224 = load i32, i32* %6
%225 = sext i32 %224 to i64
%226 = add nsw i64 %225, %223
%227 = trunc i64 %226 to i32
store i32 %227, i32* %6
store double 0x3FE4454632707137, double* %3
store double 0x3F5280A0BC1B98D9, double* %5
%228 = load [4 x double]*, [4 x double]** %2
%229 = load i32, i32* %6
%230 = sext i32 %229 to i64
%231 = getelementptr inbounds [4 x double], [4 x double]* %228, i64 %230
%232 = getelementptr inbounds [4 x double], [4 x double]* %231, i64 0, i64 0
%233 = load double, double* %3
%234 = load double, double* %4
%235 = load double, double* %5
%236 = call i64 @SphGenOh(double* %232, i32 4, double %233, double %234, double %235)
%237 = load i32, i32* %6
%238 = sext i32 %237 to i64
%239 = add nsw i64 %238, %236
%240 = trunc i64 %239 to i32
store i32 %240, i32* %6
store double 0x3FAE964E1473D466, double* %3
store double 0x3FC9F90C91A0ACCA, double* %4
store double 0x3F4BA55F268C17F6, double* %5
%241 = load [4 x double]*, [4 x double]** %2
%242 = load i32, i32* %6
%243 = sext i32 %242 to i64
%244 = getelementptr inbounds [4 x double], [4 x double]* %241, i64 %243
%245 = getelementptr inbounds [4 x double], [4 x double]* %244, i64 0, i64 0
%246 = load double, double* %3
%247 = load double, double* %4
%248 = load double, double* %5
%249 = call i64 @SphGenOh(double* %245, i32 5, double %246, double %247, double %248)
%250 = load i32, i32* %6
%251 = sext i32 %250 to i64
%252 = add nsw i64 %251, %249
%253 = trunc i64 %252 to i32
store i32 %253, i32* %6
store double 0x3FC19C177A1387F7, double* %3
store double 0x3FDD74EF8FF87456, double* %4
store double 0x3F519DF309DDD65F, double* %5
%254 = load [4 x double]*, [4 x double]** %2
%255 = load i32, i32* %6
%256 = sext i32 %255 to i64
%257 = getelementptr inbounds [4 x double], [4 x double]* %254, i64 %256
%258 = getelementptr inbounds [4 x double], [4 x double]* %257, i64 0, i64 0
%259 = load double, double* %3
%260 = load double, double* %4
%261 = load double, double* %5
%262 = call i64 @SphGenOh(double* %258, i32 5, double %259, double %260, double %261)
%263 = load i32, i32* %6
%264 = sext i32 %263 to i64
%265 = add nsw i64 %264, %262
%266 = trunc i64 %265 to i32
store i32 %266, i32* %6
store double 0x3FD5B3D76B052EE5, double* %3
store double 0x3FE01920CDD13C2E, double* %4
store double 0x3F5229B5BE8E18D2, double* %5
%267 = load [4 x double]*, [4 x double]** %2
%268 = load i32, i32* %6
%269 = sext i32 %268 to i64
%270 = getelementptr inbounds [4 x double], [4 x double]* %267, i64 %269
%271 = getelementptr inbounds [4 x double], [4 x double]* %270, i64 0, i64 0
%272 = load double, double* %3
%273 = load double, double* %4
%274 = load double, double* %5
%275 = call i64 @SphGenOh(double* %271, i32 5, double %272, double %273, double %274)
%276 = load i32, i32* %6
%277 = sext i32 %276 to i64
%278 = add nsw i64 %277, %275
%279 = trunc i64 %278 to i32
store i32 %279, i32* %6
store double 0x3FC0470677EB1E1E, double* %3
store double 0x3FD2085DC9EF495C, double* %4
store double 0x3F4F58F0EEC43FD1, double* %5
%280 = load [4 x double]*, [4 x double]** %2
%281 = load i32, i32* %6
%282 = sext i32 %281 to i64
%283 = getelementptr inbounds [4 x double], [4 x double]* %280, i64 %282
%284 = getelementptr inbounds [4 x double], [4 x double]* %283, i64 0, i64 0
%285 = load double, double* %3
%286 = load double, double* %4
%287 = load double, double* %5
%288 = call i64 @SphGenOh(double* %284, i32 5, double %285, double %286, double %287)
%289 = load i32, i32* %6
%290 = sext i32 %289 to i64
%291 = add nsw i64 %290, %288
%292 = trunc i64 %291 to i32
store i32 %292, i32* %6
store double 0x3FD13C68B59B3BF3, double* %3
store double 0x3FDBB8D47C36C4C1, double* %4
store double 0x3F51B4A15477EF53, double* %5
%293 = load [4 x double]*, [4 x double]** %2
%294 = load i32, i32* %6
%295 = sext i32 %294 to i64
%296 = getelementptr inbounds [4 x double], [4 x double]* %293, i64 %295
%297 = getelementptr inbounds [4 x double], [4 x double]* %296, i64 0, i64 0
%298 = load double, double* %3
%299 = load double, double* %4
%300 = load double, double* %5
%301 = call i64 @SphGenOh(double* %297, i32 5, double %298, double %299, double %300)
%302 = load i32, i32* %6
%303 = sext i32 %302 to i64
%304 = add nsw i64 %303, %301
%305 = trunc i64 %304 to i32
store i32 %305, i32* %6
store double 0x3FC22C5B330FBB7D, double* %3
store double 0x3FE4050D638AE743, double* %4
store double 0x3F52762134F9471D, double* %5
%306 = load [4 x double]*, [4 x double]** %2
%307 = load i32, i32* %6
%308 = sext i32 %307 to i64
%309 = getelementptr inbounds [4 x double], [4 x double]* %306, i64 %308
%310 = getelementptr inbounds [4 x double], [4 x double]* %309, i64 0, i64 0
%311 = load double, double* %3
%312 = load double, double* %4
%313 = load double, double* %5
%314 = call i64 @SphGenOh(double* %310, i32 5, double %311, double %312, double %313)
%315 = load i32, i32* %6
%316 = sext i32 %315 to i64
%317 = add nsw i64 %316, %314
%318 = trunc i64 %317 to i32
store i32 %318, i32* %6
store double 0x3FB12CFF2B65B3A2, double* %3
store double 0x3FD84F4A6CD7A276, double* %4
store double 0x3F50C0F6CC2F1D29, double* %5
%319 = load [4 x double]*, [4 x double]** %2
%320 = load i32, i32* %6
%321 = sext i32 %320 to i64
%322 = getelementptr inbounds [4 x double], [4 x double]* %319, i64 %321
%323 = getelementptr inbounds [4 x double], [4 x double]* %322, i64 0, i64 0
%324 = load double, double* %3
%325 = load double, double* %4
%326 = load double, double* %5
%327 = call i64 @SphGenOh(double* %323, i32 5, double %324, double %325, double %326)
%328 = load i32, i32* %6
%329 = sext i32 %328 to i64
%330 = add nsw i64 %329, %327
%331 = trunc i64 %330 to i32
store i32 %331, i32* %6
store double 0x3FB2115BFACEE363, double* %3
store double 0x3FE1A7F0C0C1A74B, double* %4
store double 0x3F522B510545E5C1, double* %5
%332 = load [4 x double]*, [4 x double]** %2
%333 = load i32, i32* %6
%334 = sext i32 %333 to i64
%335 = getelementptr inbounds [4 x double], [4 x double]* %332, i64 %334
%336 = getelementptr inbounds [4 x double], [4 x double]* %335, i64 0, i64 0
%337 = load double, double* %3
%338 = load double, double* %4
%339 = load double, double* %5
%340 = call i64 @SphGenOh(double* %336, i32 5, double %337, double %338, double %339)
%341 = load i32, i32* %6
%342 = sext i32 %341 to i64
%343 = add nsw i64 %342, %340
%344 = trunc i64 %343 to i32
store i32 %344, i32* %6
store double 0x3FD1D11F75349394, double* %3
store double 0x3FE34B76C989B968, double* %4
store double 0x3F52655348C0B191, double* %5
%345 = load [4 x double]*, [4 x double]** %2
%346 = load i32, i32* %6
%347 = sext i32 %346 to i64
%348 = getelementptr inbounds [4 x double], [4 x double]* %345, i64 %347
%349 = getelementptr inbounds [4 x double], [4 x double]* %348, i64 0, i64 0
%350 = load double, double* %3
%351 = load double, double* %4
%352 = load double, double* %5
%353 = call i64 @SphGenOh(double* %349, i32 5, double %350, double %351, double %352)
%354 = load i32, i32* %6
%355 = sext i32 %354 to i64
%356 = add nsw i64 %355, %353
%357 = trunc i64 %356 to i32
store i32 %357, i32* %6
store double 0x3FC956AF2C20021D, double* %3
store double 0x3FD6F93604C709DB, double* %4
store double 0x3F50EA350ADC5B38, double* %5
%358 = load [4 x double]*, [4 x double]** %2
%359 = load i32, i32* %6
%360 = sext i32 %359 to i64
%361 = getelementptr inbounds [4 x double], [4 x double]* %358, i64 %360
%362 = getelementptr inbounds [4 x double], [4 x double]* %361, i64 0, i64 0
%363 = load double, double* %3
%364 = load double, double* %4
%365 = load double, double* %5
%366 = call i64 @SphGenOh(double* %362, i32 5, double %363, double %364, double %365)
%367 = load i32, i32* %6
%368 = sext i32 %367 to i64
%369 = add nsw i64 %368, %366
%370 = trunc i64 %369 to i32
store i32 %370, i32* %6
store double 0x3FCAB7B012351998, double* %3
store double 0x3FE11DA0A6DCD0A2, double* %4
store double 0x3F522423F8AACF1B, double* %5
%371 = load [4 x double]*, [4 x double]** %2
%372 = load i32, i32* %6
%373 = sext i32 %372 to i64
%374 = getelementptr inbounds [4 x double], [4 x double]* %371, i64 %373
%375 = getelementptr inbounds [4 x double], [4 x double]* %374, i64 0, i64 0
%376 = load double, double* %3
%377 = load double, double* %4
%378 = load double, double* %5
%379 = call i64 @SphGenOh(double* %375, i32 5, double %376, double %377, double %378)
%380 = load i32, i32* %6
%381 = sext i32 %380 to i64
%382 = add nsw i64 %381, %379
%383 = trunc i64 %382 to i32
store i32 %383, i32* %6
store double 0x3FD9F3E98016138D, double* %3
store double 0x3FE228F53ED0DCED, double* %4
store double 0x3F52611627C9E8D0, double* %5
%384 = load [4 x double]*, [4 x double]** %2
%385 = load i32, i32* %6
%386 = sext i32 %385 to i64
%387 = getelementptr inbounds [4 x double], [4 x double]* %384, i64 %386
%388 = getelementptr inbounds [4 x double], [4 x double]* %387, i64 0, i64 0
%389 = load double, double* %3
%390 = load double, double* %4
%391 = load double, double* %5
%392 = call i64 @SphGenOh(double* %388, i32 5, double %389, double %390, double %391)
%393 = load i32, i32* %6
%394 = sext i32 %393 to i64
%395 = add nsw i64 %394, %392
%396 = trunc i64 %395 to i32
store i32 %396, i32* %6
%397 = load i32, i32* %6
ret i32 %397
}

LLVM IR (-O2):
define i32 @MakeAngularGrid_974([4 x double]* %0) {
%2 = getelementptr inbounds [4 x double], [4 x double]* %0, i64 0, i64 0
%3 = tail call i64 @SphGenOh(double* %2, i32 0, double 0.000000e+00, double 0.000000e+00, double 0x3F22DA1D4D545B29)
%4 = shl i64 %3, 32
%5 = ashr exact i64 %4, 32
%6 = getelementptr inbounds [4 x double], [4 x double]* %0, i64 %5, i64 0
%7 = tail call i64 @SphGenOh(double* %6, i32 2, double 0.000000e+00, double 0.000000e+00, double 0x3F5271D4CA4CC587)
%8 = add i64 %7, %3
%9 = shl i64 %8, 32
%10 = ashr exact i64 %9, 32
%11 = getelementptr inbounds [4 x double], [4 x double]* %0, i64 %10, i64 0
%12 = tail call i64 @SphGenOh(double* %11, i32 3, double 0x3FA5FADF889A6D04, double 0.000000e+00, double 0x3F4036B535CD70B5)
%13 = add i64 %8, %12
%14 = shl i64 %13, 32
%15 = ashr exact i64 %14, 32
%16 = getelementptr inbounds [4 x double], [4 x double]* %0, i64 %15, i64 0
%17 = tail call i64 @SphGenOh(double* %16, i32 3, double 0x3FBAEAA18B3E64E3, double 0.000000e+00, double 0x3F481C54581A2A9C)
%18 = add i64 %13, %17
%19 = shl i64 %18, 32
%20 = ashr exact i64 %19, 32
%21 = getelementptr inbounds [4 x double], [4 x double]* %0, i64 %20, i64 0
%22 = tail call i64 @SphGenOh(double* %21, i32 3, double 0x3FC6667B42AE6FDD, double 0.000000e+00, double 0x3F4D20BEBA250AA1)
%23 = add i64 %18, %22
%24 = shl i64 %23, 32
%25 = ashr exact i64 %24, 32
%26 = getelementptr inbounds [4 x double], [4 x double]* %0, i64 %25, i64 0
%27 = tail call i64 @SphGenOh(double* %26, i32 3, double 0x3FCFB6C64BD232B6, double 0.000000e+00, double 0x3F50337943B5AE92)
%28 = add i64 %23, %27
%29 = shl i64 %28, 32
%30 = ashr exact i64 %29, 32
%31 = getelementptr inbounds [4 x double], [4 x double]* %0, i64 %30, i64 0
%32 = tail call i64 @SphGenOh(double* %31, i32 3, double 0x3FD485A3BB3ED874, double 0.000000e+00, double 0x3F5141DBEBE4A0F1)
%33 = add i64 %28, %32
%34 = shl i64 %33, 32
%35 = ashr exact i64 %34, 32
%36 = getelementptr inbounds [4 x double], [4 x double]* %0, i64 %35, i64 0
%37 = tail call i64 @SphGenOh(double* %36, i32 3, double 0x3FD910D3DD5E26A0, double 0.000000e+00, double 0x3F51E7724F3994EA)
%38 = add i64 %33, %37
%39 = shl i64 %38, 32
%40 = ashr exact i64 %39, 32
%41 = getelementptr inbounds [4 x double], [4 x double]* %0, i64 %40, i64 0
%42 = tail call i64 @SphGenOh(double* %41, i32 3, double 0x3FDD619BEEC81AF6, double 0.000000e+00, double 0x3F52421680292321)
%43 = add i64 %38, %42
%44 = shl i64 %43, 32
%45 = ashr exact i64 %44, 32
%46 = getelementptr inbounds [4 x double], [4 x double]* %0, i64 %45, i64 0
%47 = tail call i64 @SphGenOh(double* %46, i32 3, double 0x3FE0AFC54F0BAD07, double 0.000000e+00, double 0x3F52693E4DB87FE4)
%48 = add i64 %43, %47
%49 = shl i64 %48, 32
%50 = ashr exact i64 %49, 32
%51 = getelementptr inbounds [4 x double], [4 x double]* %0, i64 %50, i64 0
%52 = tail call i64 @SphGenOh(double* %51, i32 3, double 0x3FE40298D936C099, double 0.000000e+00, double 0x3F526F988688BAAD)
%53 = add i64 %48, %52
%54 = shl i64 %53, 32
%55 = ashr exact i64 %54, 32
%56 = getelementptr inbounds [4 x double], [4 x double]* %0, i64 %55, i64 0
%57 = tail call i64 @SphGenOh(double* %56, i32 3, double 0x3FE53DCA22831B40, double 0.000000e+00, double 0x3F52736DDE4140B3)
%58 = add i64 %53, %57
%59 = shl i64 %58, 32
%60 = ashr exact i64 %59, 32
%61 = getelementptr inbounds [4 x double], [4 x double]* %0, i64 %60, i64 0
%62 = tail call i64 @SphGenOh(double* %61, i32 3, double 0x3FE61D02194B29CE, double 0.000000e+00, double 0x3F5284C459DF9C4A)
%63 = add i64 %58, %62
%64 = shl i64 %63, 32
%65 = ashr exact i64 %64, 32
%66 = getelementptr inbounds [4 x double], [4 x double]* %0, i64 %65, i64 0
%67 = tail call i64 @SphGenOh(double* %66, i32 3, double 0x3FE691BDCDBC0872, double 0.000000e+00, double 0x3F52987A82F9C027)
%68 = add i64 %63, %67
%69 = shl i64 %68, 32
%70 = ashr exact i64 %69, 32
%71 = getelementptr inbounds [4 x double], [4 x double]* %0, i64 %70, i64 0
%72 = tail call i64 @SphGenOh(double* %71, i32 4, double 0x3FBFA8C01819E96E, double 0.000000e+00, double 0x3F465BDB1AD29343)
%73 = add i64 %68, %72
%74 = shl i64 %73, 32
%75 = ashr exact i64 %74, 32
%76 = getelementptr inbounds [4 x double], [4 x double]* %0, i64 %75, i64 0
%77 = tail call i64 @SphGenOh(double* %76, i32 4, double 0x3FD2D22B5249637C, double 0.000000e+00, double 0x3F4EFAB901698905)
%78 = add i64 %73, %77
%79 = shl i64 %78, 32
%80 = ashr exact i64 %79, 32
%81 = getelementptr inbounds [4 x double], [4 x double]* %0, i64 %80, i64 0
%82 = tail call i64 @SphGenOh(double* %81, i32 4, double 0x3FDE10CCC6ACD4F1, double 0.000000e+00, double 0x3F519A7C66CABA8A)
%83 = add i64 %78, %82
%84 = shl i64 %83, 32
%85 = ashr exact i64 %84, 32
%86 = getelementptr inbounds [4 x double], [4 x double]* %0, i64 %85, i64 0
%87 = tail call i64 @SphGenOh(double* %86, i32 4, double 0x3FE4454632707137, double 0.000000e+00, double 0x3F5280A0BC1B98D9)
%88 = add i64 %83, %87
%89 = shl i64 %88, 32
%90 = ashr exact i64 %89, 32
%91 = getelementptr inbounds [4 x double], [4 x double]* %0, i64 %90, i64 0
%92 = tail call i64 @SphGenOh(double* %91, i32 5, double 0x3FAE964E1473D466, double 0x3FC9F90C91A0ACCA, double 0x3F4BA55F268C17F6)
%93 = add i64 %88, %92
%94 = shl i64 %93, 32
%95 = ashr exact i64 %94, 32
%96 = getelementptr inbounds [4 x double], [4 x double]* %0, i64 %95, i64 0
%97 = tail call i64 @SphGenOh(double* %96, i32 5, double 0x3FC19C177A1387F7, double 0x3FDD74EF8FF87456, double 0x3F519DF309DDD65F)
%98 = add i64 %93, %97
%99 = shl i64 %98, 32
%100 = ashr exact i64 %99, 32
%101 = getelementptr inbounds [4 x double], [4 x double]* %0, i64 %100, i64 0
%102 = tail call i64 @SphGenOh(double* %101, i32 5, double 0x3FD5B3D76B052EE5, double 0x3FE01920CDD13C2E, double 0x3F5229B5BE8E18D2)
%103 = add i64 %98, %102
%104 = shl i64 %103, 32
%105 = ashr exact i64 %104, 32
%106 = getelementptr inbounds [4 x double], [4 x double]* %0, i64 %105, i64 0
%107 = tail call i64 @SphGenOh(double* %106, i32 5, double 0x3FC0470677EB1E1E, double 0x3FD2085DC9EF495C, double 0x3F4F58F0EEC43FD1)
%108 = add i64 %103, %107
%109 = shl i64 %108, 32
%110 = ashr exact i64 %109, 32
%111 = getelementptr inbounds [4 x double], [4 x double]* %0, i64 %110, i64 0
%112 = tail call i64 @SphGenOh(double* %111, i32 5, double 0x3FD13C68B59B3BF3, double 0x3FDBB8D47C36C4C1, double 0x3F51B4A15477EF53)
%113 = add i64 %108, %112
%114 = shl i64 %113, 32
%115 = ashr exact i64 %114, 32
%116 = getelementptr inbounds [4 x double], [4 x double]* %0, i64 %115, i64 0
%117 = tail call i64 @SphGenOh(double* %116, i32 5, double 0x3FC22C5B330FBB7D, double 0x3FE4050D638AE743, double 0x3F52762134F9471D)
%118 = add i64 %113, %117
%119 = shl i64 %118, 32
%120 = ashr exact i64 %119, 32
%121 = getelementptr inbounds [4 x double], [4 x double]* %0, i64 %120, i64 0
%122 = tail call i64 @SphGenOh(double* %121, i32 5, double 0x3FB12CFF2B65B3A2, double 0x3FD84F4A6CD7A276, double 0x3F50C0F6CC2F1D29)
%123 = add i64 %118, %122
%124 = shl i64 %123, 32
%125 = ashr exact i64 %124, 32
%126 = getelementptr inbounds [4 x double], [4 x double]* %0, i64 %125, i64 0
%127 = tail call i64 @SphGenOh(double* %126, i32 5, double 0x3FB2115BFACEE363, double 0x3FE1A7F0C0C1A74B, double 0x3F522B510545E5C1)
%128 = add i64 %123, %127
%129 = shl i64 %128, 32
%130 = ashr exact i64 %129, 32
%131 = getelementptr inbounds [4 x double], [4 x double]* %0, i64 %130, i64 0
%132 = tail call i64 @SphGenOh(double* %131, i32 5, double 0x3FD1D11F75349394, double 0x3FE34B76C989B968, double 0x3F52655348C0B191)
%133 = add i64 %128, %132
%134 = shl i64 %133, 32
%135 = ashr exact i64 %134, 32
%136 = getelementptr inbounds [4 x double], [4 x double]* %0, i64 %135, i64 0
%137 = tail call i64 @SphGenOh(double* %136, i32 5, double 0x3FC956AF2C20021D, double 0x3FD6F93604C709DB, double 0x3F50EA350ADC5B38)
%138 = add i64 %133, %137
%139 = shl i64 %138, 32
%140 = ashr exact i64 %139, 32
%141 = getelementptr inbounds [4 x double], [4 x double]* %0, i64 %140, i64 0
%142 = tail call i64 @SphGenOh(double* %141, i32 5, double 0x3FCAB7B012351998, double 0x3FE11DA0A6DCD0A2, double 0x3F522423F8AACF1B)
%143 = add i64 %138, %142
%144 = shl i64 %143, 32
%145 = ashr exact i64 %144, 32
%146 = getelementptr inbounds [4 x double], [4 x double]* %0, i64 %145, i64 0
%147 = tail call i64 @SphGenOh(double* %146, i32 5, double 0x3FD9F3E98016138D, double 0x3FE228F53ED0DCED, double 0x3F52611627C9E8D0)
%148 = add i64 %143, %147
%149 = trunc i64 %148 to i32
ret i32 %149
}