user: Please show me the C implementation that matches the assembly code listed below:

```asm
<MakeAngularGrid_350>:
  endbr64
  push   %rbp
  xor    %esi,%esi
  pxor   %xmm1,%xmm1
  pxor   %xmm0,%xmm0
  push   %rbx
  mov    %rdi,%rbp
  sub    $0x8,%rsp
  movsd  D164(%rip),%xmm2
  call   <SphGenOh@plt>
  pxor   %xmm1,%xmm1
  mov    $0x2,%esi
  movsd  D75(%rip),%xmm2
  movslq %eax,%rdi
  movapd %xmm1,%xmm0
  mov    %rax,%rbx
  shl    $0x5,%rdi
  add    %rbp,%rdi
  call   <SphGenOh@plt>
  pxor   %xmm1,%xmm1
  mov    $0x3,%esi
  movsd  D219(%rip),%xmm2
  add    %eax,%ebx
  movsd  D127(%rip),%xmm0
  movslq %ebx,%rdi
  shl    $0x5,%rdi
  add    %rbp,%rdi
  call   <SphGenOh@plt>
  pxor   %xmm1,%xmm1
  mov    $0x3,%esi
  movsd  D167(%rip),%xmm2
  add    %eax,%ebx
  movsd  D181(%rip),%xmm0
  movslq %ebx,%rdi
  shl    $0x5,%rdi
  add    %rbp,%rdi
  call   <SphGenOh@plt>
  pxor   %xmm1,%xmm1
  mov    $0x3,%esi
  movsd  D97(%rip),%xmm2
  add    %eax,%ebx
  movsd  D147(%rip),%xmm0
  movslq %ebx,%rdi
  shl    $0x5,%rdi
  add    %rbp,%rdi
  call   <SphGenOh@plt>
  pxor   %xmm1,%xmm1
  mov    $0x3,%esi
  movsd  D161(%rip),%xmm2
  add    %eax,%ebx
  movsd  D8(%rip),%xmm0
  movslq %ebx,%rdi
  shl    $0x5,%rdi
  add    %rbp,%rdi
  call   <SphGenOh@plt>
  pxor   %xmm1,%xmm1
  mov    $0x3,%esi
  movsd  D214(%rip),%xmm2
  add    %eax,%ebx
  movsd  D25(%rip),%xmm0
  movslq %ebx,%rdi
  shl    $0x5,%rdi
  add    %rbp,%rdi
  call   <SphGenOh@plt>
  pxor   %xmm1,%xmm1
  mov    $0x3,%esi
  movsd  D82(%rip),%xmm2
  add    %eax,%ebx
  movsd  D124(%rip),%xmm0
  movslq %ebx,%rdi
  shl    $0x5,%rdi
  add    %rbp,%rdi
  call   <SphGenOh@plt>
  pxor   %xmm1,%xmm1
  mov    $0x4,%esi
  movsd  D129(%rip),%xmm2
  add    %eax,%ebx
  movsd  D126(%rip),%xmm0
  movslq %ebx,%rdi
  shl    $0x5,%rdi
  add    %rbp,%rdi
  call   <SphGenOh@plt>
  pxor   %xmm1,%xmm1
  mov    $0x4,%esi
  movsd  D83(%rip),%xmm2
  add    %eax,%ebx
  movsd  D120(%rip),%xmm0
  movslq %ebx,%rdi
  shl    $0x5,%rdi
  add    %rbp,%rdi
  call   <SphGenOh@plt>
  movsd  D2(%rip),%xmm2
  mov    $0x5,%esi
  movsd  D169(%rip),%xmm1
  add    %eax,%ebx
  movsd  D228(%rip),%xmm0
  movslq %ebx,%rdi
  shl    $0x5,%rdi
  add    %rbp,%rdi
  call   <SphGenOh@plt>
  movsd  D195(%rip),%xmm2
  mov    $0x5,%esi
  movsd  D121(%rip),%xmm1
  add    %eax,%ebx
  movsd  D146(%rip),%xmm0
  movslq %ebx,%rdi
  shl    $0x5,%rdi
  add    %rbp,%rdi
  call   <SphGenOh@plt>
  movsd  D266(%rip),%xmm2
  mov    $0x5,%esi
  movsd  D41(%rip),%xmm1
  add    %eax,%ebx
  movsd  D102(%rip),%xmm0
  movslq %ebx,%rax
  shl    $0x5,%rax
  lea    0x0(%rbp,%rax,1),%rdi
  call   <SphGenOh@plt>
  add    $0x8,%rsp
  add    %ebx,%eax
  pop    %rbx
  pop    %rbp
  ret
```

tool_calls: name: disassemble_data
arguments: label: D164
type_guessed: byte[8]
name: disassemble_data
arguments: label: D75
type_guessed: byte[8]
name: disassemble_data
arguments: label: D219
type_guessed: byte[8]
name: disassemble_data
arguments: label: D127
type_guessed: byte[8]
name: disassemble_data
arguments: label: D167
type_guessed: byte[8]
name: disassemble_data
arguments: label: D181
type_guessed: byte[8]
name: disassemble_data
arguments: label: D97
type_guessed: byte[8]
name: disassemble_data
arguments: label: D147
type_guessed: byte[8]
name: disassemble_data
arguments: label: D161
type_guessed: byte[8]
name: disassemble_data
arguments: label: D8
type_guessed: byte[8]
name: disassemble_data
arguments: label: D214
type_guessed: byte[8]
name: disassemble_data
arguments: label: D25
type_guessed: byte[8]
name: disassemble_data
arguments: label: D82
type_guessed: byte[8]
name: disassemble_data
arguments: label: D124
type_guessed: byte[8]
name: disassemble_data
arguments: label: D129
type_guessed: byte[8]
name: disassemble_data
arguments: label: D126
type_guessed: byte[8]
name: disassemble_data
arguments: label: D83
type_guessed: byte[8]
name: disassemble_data
arguments: label: D120
type_guessed: byte[8]
name: disassemble_data
arguments: label: D2
type_guessed: byte[8]
name: disassemble_data
arguments: label: D169
type_guessed: byte[8]
name: disassemble_data
arguments: label: D228
type_guessed: byte[8]
name: disassemble_data
arguments: label: D195
type_guessed: byte[8]
name: disassemble_data
arguments: label: D121
type_guessed: byte[8]
name: disassemble_data
arguments: label: D146
type_guessed: byte[8]
name: disassemble_data
arguments: label: D266
type_guessed: byte[8]
name: disassemble_data
arguments: label: D41
type_guessed: byte[8]
name: disassemble_data
arguments: label: D102
type_guessed: byte[8]

tool: {"D164": [0x21,0x47,0x8c,0xb6,0xb5,0xa1,0x68,0x3f]}

tool: {"D75": [0xd1,0x7d,0xcb,0x4c,0xa1,0xfd,0x68,0x3f]}

tool: {"D219": [0x63,0xf8,0x76,0xcf,0x67,0x8f,0x5a,0x3f]}

tool: {"D127": [0x62,0xfb,0x8c,0x81,0xe5,0x9e,0xe6,0x3f]}

tool: {"D167": [0xf4,0xbc,0x88,0xb2,0x69,0x9f,0x68,0x3f]}

tool: {"D181": [0xfb,0xa5,0xcd,0xa6,0x9b,0xaf,0xde,0x3f]}

tool: {"D97": [0x59,0x41,0x1e,0xe3,0x90,0x80,0x68,0x3f]}

tool: {"D147": [0x62,0x9b,0x1b,0x01,0x24,0xac,0xc8,0x3f]}

tool: {"D161": [0x65,0xac,0x66,0xac,0x10,0x6e,0x68,0x3f]}

tool: {"D8": [0x44,0x1d,0xeb,0x67,0x59,0x2d,0xe6,0x3f]}

tool: {"D214": [0x4e,0x35,0x95,0xac,0x88,0x4b,0x66,0x3f]}

tool: {"D25": [0xb6,0x93,0x81,0x99,0xd7,0x17,0xd7,0x3f]}

tool: {"D82": [0xa1,0x6c,0x70,0x51,0xbd,0xd9,0x68,0x3f]}

tool: {"D124": [0xae,0xd4,0x36,0x53,0x8f,0xcb,0xe4,0x3f]}

tool: {"D129": [0xde,0x3e,0xf7,0x9e,0x20,0xa4,0x68,0x3f]}

tool: {"D126": [0x6b,0xeb,0xd6,0xcc,0xdf,0xbd,0xc8,0x3f]}

tool: {"D83": [0xae,0xbd,0xfc,0xf6,0xea,0x9b,0x67,0x3f]}

tool: {"D120": [0x92,0x52,0xbd,0x1a,0xbb,0x52,0xd8,0x3f]}

tool: {"D2": [0xa7,0xdd,0x2f,0x28,0x20,0x3c,0x68,0x3f]}

tool: {"D169": [0x92,0x43,0x89,0x31,0xf9,0x63,0xe9,0x3f]}

tool: {"D228": [0xbe,0x6e,0x35,0x1e,0xa3,0x8e,0xd2,0x3f]}

tool: {"D195": [0xa6,0x40,0x26,0xd7,0xfe,0xde,0x68,0x3f]}

tool: {"D121": [0x1f,0xd7,0xb2,0xf1,0xa1,0x7f,0xea,0x3f]}

tool: {"D146": [0x81,0xd1,0x66,0xf9,0x95,0xca,0xb8,0x3f]}

tool: {"D266": [0xd2,0x0b,0xd5,0x08,0x87,0x33,0x67,0x3f]}

tool: {"D41": [0x08,0xf5,0xe5,0xc5,0xf5,0x09,0xed,0x3f]}

tool: {"D102": [0x0a,0x7c,0x6b,0x74,0xcc,0x77,0xc7,0x3f]}

assistant: ```c
int MakeAngularGrid_350(double (*pOut)[4]) {
  double a = 0, b = 0, v;
  int N = 0;
  v = 0.3006796749453936e-2;
  N += SphGenOh(&pOut[N][0], 0, a, b, v);
  v = 0.3050627745650771e-2;
  N += SphGenOh(&pOut[N][0], 2, a, b, v);
  a = 0.7068965463912316e+0;
  v = 0.1621104600288991e-2;
  N += SphGenOh(&pOut[N][0], 3, a, b, v);
  a = 0.4794682625712025e+0;
  v = 0.3005701484901752e-2;
  N += SphGenOh(&pOut[N][0], 3, a, b, v);
  a = 0.1927533154878019e+0;
  v = 0.2990992529653774e-2;
  N += SphGenOh(&pOut[N][0], 3, a, b, v);
  a = 0.6930357961327123e+0;
  v = 0.2982170644107595e-2;
  N += SphGenOh(&pOut[N][0], 3, a, b, v);
  a = 0.3608302115520091e+0;
  v = 0.2721564237310992e-2;
  N += SphGenOh(&pOut[N][0], 3, a, b, v);
  a = 0.6498486161496169e+0;
  v = 0.3033513795811141e-2;
  N += SphGenOh(&pOut[N][0], 3, a, b, v);
  a = 0.1932945013230339e+0;
  v = 0.3007949555218533e-2;
  N += SphGenOh(&pOut[N][0], 4, a, b, v);
  a = 0.3800494919899303e+0;
  v = 0.2881964603055307e-2;
  N += SphGenOh(&pOut[N][0], 4, a, b, v);
  a = 0.2899558825499574e+0;
  b = 0.7934537856582316e+0;
  v = 0.2958357626535696e-2;
  N += SphGenOh(&pOut[N][0], 5, a, b, v);
  a = 0.9684121455103957e-1;
  b = 0.8280801506686862e+0;
  v = 0.3036020026407088e-2;
  N += SphGenOh(&pOut[N][0], 5, a, b, v);
  a = 0.1833434647041659e+0;
  b = 0.9074658265305127e+0;
  v = 0.2832187403926303e-2;
  N += SphGenOh(&pOut[N][0], 5, a, b, v);
  return N;
}
```