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

```asm
<MakeAngularGrid_146>:
  endbr64
  push   %rbp
  pxor   %xmm1,%xmm1
  xor    %esi,%esi
  mov    %rdi,%rbp
  push   %rbx
  movapd %xmm1,%xmm0
  sub    $0x8,%rsp
  movsd  D0(%rip),%xmm2
  call   <SphGenOh@plt>
  pxor   %xmm3,%xmm3
  mov    $0x1,%esi
  movsd  D80(%rip),%xmm2
  movslq %eax,%rdi
  movapd %xmm3,%xmm1
  movapd %xmm3,%xmm0
  mov    %rax,%rbx
  shl    $0x5,%rdi
  add    %rbp,%rdi
  call   <SphGenOh@plt>
  pxor   %xmm3,%xmm3
  mov    $0x2,%esi
  movsd  D81(%rip),%xmm2
  add    %eax,%ebx
  movapd %xmm3,%xmm1
  movapd %xmm3,%xmm0
  movslq %ebx,%rdi
  shl    $0x5,%rdi
  add    %rbp,%rdi
  call   <SphGenOh@plt>
  pxor   %xmm3,%xmm3
  mov    $0x3,%esi
  movsd  D13(%rip),%xmm2
  add    %eax,%ebx
  movsd  D86(%rip),%xmm0
  movapd %xmm3,%xmm1
  movslq %ebx,%rdi
  shl    $0x5,%rdi
  add    %rbp,%rdi
  call   <SphGenOh@plt>
  pxor   %xmm3,%xmm3
  mov    $0x3,%esi
  movsd  D118(%rip),%xmm2
  add    %eax,%ebx
  movsd  D58(%rip),%xmm0
  movapd %xmm3,%xmm1
  movslq %ebx,%rdi
  shl    $0x5,%rdi
  add    %rbp,%rdi
  call   <SphGenOh@plt>
  pxor   %xmm3,%xmm3
  mov    $0x3,%esi
  movsd  D25(%rip),%xmm2
  add    %eax,%ebx
  movsd  D79(%rip),%xmm0
  movapd %xmm3,%xmm1
  movslq %ebx,%rdi
  shl    $0x5,%rdi
  add    %rbp,%rdi
  call   <SphGenOh@plt>
  movsd  D66(%rip),%xmm2
  mov    $0x5,%esi
  movsd  D65(%rip),%xmm1
  add    %eax,%ebx
  movsd  D62(%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: unpack_data
arguments: data_label: D0
type: byte[8]
name: unpack_data
arguments: data_label: D80
type: byte[8]
name: unpack_data
arguments: data_label: D81
type: byte[8]
name: unpack_data
arguments: data_label: D13
type: byte[8]
name: unpack_data
arguments: data_label: D86
type: byte[8]
name: unpack_data
arguments: data_label: D118
type: byte[8]
name: unpack_data
arguments: data_label: D58
type: byte[8]
name: unpack_data
arguments: data_label: D25
type: byte[8]
name: unpack_data
arguments: data_label: D79
type: byte[8]
name: unpack_data
arguments: data_label: D66
type: byte[8]
name: unpack_data
arguments: data_label: D65
type: byte[8]
name: unpack_data
arguments: data_label: D62
type: byte[8]

tool: {"D0": [0x7c,0xb9,0x38,0x8f,0x12,0xa6,0x43,0x3f]}

tool: {"D80": [0x35,0x67,0xa3,0x8a,0x26,0x33,0x7e,0x3f]}

tool: {"D81": [0xf4,0xc7,0x8b,0xfa,0xc5,0x88,0x7d,0x3f]}

tool: {"D13": [0x34,0x20,0xc1,0x21,0x0a,0x26,0x7d,0x3f]}

tool: {"D86": [0x85,0xae,0x10,0xae,0x67,0xa5,0xe5,0x3f]}

tool: {"D118": [0xbf,0x81,0x43,0x4c,0xe7,0xa9,0x7b,0x3f]}

tool: {"D58": [0xb1,0x8c,0x67,0xa8,0x41,0xb8,0xda,0x3f]}

tool: {"D25": [0x02,0xd1,0x33,0xf3,0x53,0x06,0x7f,0x3f]}

tool: {"D79": [0xb2,0xba,0x68,0x88,0xe6,0x27,0xc4,0x3f]}

tool: {"D66": [0x28,0x13,0xbc,0xb8,0xaf,0xa2,0x7c,0x3f]}

tool: {"D65": [0xbd,0x40,0xf7,0x7e,0xde,0xc1,0xdc,0x3f]}

tool: {"D62": [0x08,0x66,0xf9,0x45,0x2a,0xf7,0xc1,0x3f]}

assistant: ```c
int MakeAngularGrid_146(double (*pOut)[4]) {
  double a = 0, b = 0, v;
  int N = 0;
  v = 0.5996313688621381e-3;
  N += SphGenOh(&pOut[N][0], 0, a, b, v);
  v = 0.7372999718620756e-2;
  N += SphGenOh(&pOut[N][0], 1, a, b, v);
  v = 0.7210515360144488e-2;
  N += SphGenOh(&pOut[N][0], 2, a, b, v);
  a = 0.6764410400114264e+0;
  v = 0.7116355493117555e-2;
  N += SphGenOh(&pOut[N][0], 3, a, b, v);
  a = 0.4174961227965453e+0;
  v = 0.6753829486314477e-2;
  N += SphGenOh(&pOut[N][0], 3, a, b, v);
  a = 0.1574676672039082e+0;
  v = 0.7574394159054034e-2;
  N += SphGenOh(&pOut[N][0], 3, a, b, v);
  a = 0.1403553811713183e+0;
  b = 0.4493328323269557e+0;
  v = 0.6991087353303262e-2;
  N += SphGenOh(&pOut[N][0], 5, a, b, v);
  return N;
}
```