user: Translate the below assembly code into C programming language:

```asm
<MakeAngularGrid_146>:
  endbr64
  push   %rbp
  push   %rbx
  sub    $0x8,%rsp
  mov    %rdi,%rbp
  movsd  D10(%rip),%xmm2
  pxor   %xmm1,%xmm1
  pxor   %xmm0,%xmm0
  mov    $0x0,%esi
  call   <SphGenOh@plt>
  mov    %rax,%rbx
  movslq %eax,%rdi
  shl    $0x5,%rdi
  add    %rbp,%rdi
  movsd  D22(%rip),%xmm2
  pxor   %xmm1,%xmm1
  movapd %xmm1,%xmm0
  mov    $0x1,%esi
  call   <SphGenOh@plt>
  add    %eax,%ebx
  movslq %ebx,%rdi
  shl    $0x5,%rdi
  add    %rbp,%rdi
  movsd  D85(%rip),%xmm2
  pxor   %xmm1,%xmm1
  movapd %xmm1,%xmm0
  mov    $0x2,%esi
  call   <SphGenOh@plt>
  add    %eax,%ebx
  movslq %ebx,%rdi
  shl    $0x5,%rdi
  add    %rbp,%rdi
  movsd  D57(%rip),%xmm2
  pxor   %xmm1,%xmm1
  movsd  D36(%rip),%xmm0
  mov    $0x3,%esi
  call   <SphGenOh@plt>
  add    %eax,%ebx
  movslq %ebx,%rdi
  shl    $0x5,%rdi
  add    %rbp,%rdi
  movsd  D60(%rip),%xmm2
  pxor   %xmm1,%xmm1
  movsd  D114(%rip),%xmm0
  mov    $0x3,%esi
  call   <SphGenOh@plt>
  add    %eax,%ebx
  movslq %ebx,%rdi
  shl    $0x5,%rdi
  add    %rbp,%rdi
  movsd  D20(%rip),%xmm2
  pxor   %xmm1,%xmm1
  movsd  D70(%rip),%xmm0
  mov    $0x3,%esi
  call   <SphGenOh@plt>
  add    %eax,%ebx
  movslq %ebx,%rax
  shl    $0x5,%rax
  lea    0x0(%rbp,%rax,1),%rdi
  movsd  D77(%rip),%xmm2
  movsd  D88(%rip),%xmm1
  movsd  D90(%rip),%xmm0
  mov    $0x5,%esi
  call   <SphGenOh@plt>
  add    %ebx,%eax
  add    $0x8,%rsp
  pop    %rbx
  pop    %rbp
  ret
```

tool_calls: name: read_data
arguments: data_tag: D10
type: byte[8]
name: read_data
arguments: data_tag: D22
type: byte[8]
name: read_data
arguments: data_tag: D85
type: byte[8]
name: read_data
arguments: data_tag: D57
type: byte[8]
name: read_data
arguments: data_tag: D36
type: byte[8]
name: read_data
arguments: data_tag: D60
type: byte[8]
name: read_data
arguments: data_tag: D114
type: byte[8]
name: read_data
arguments: data_tag: D20
type: byte[8]
name: read_data
arguments: data_tag: D70
type: byte[8]
name: read_data
arguments: data_tag: D77
type: byte[8]
name: read_data
arguments: data_tag: D88
type: byte[8]
name: read_data
arguments: data_tag: D90
type: byte[8]

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

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

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

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

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

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

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

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

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

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

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

tool: {"D90": [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;
}
```