user: Converte this assembly snippet into its equivalent C code:

```asm
<rg4th>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0xf8,%rsp
  mov    %rdi,%r12
  mov    %rsi,%rbp
  mov    %rdx,%rbx
  mov    %fs:0x28,%rax
  mov    %rax,0xe8(%rsp)
  xor    %eax,%eax
  cvtss2sd %xmm3,%xmm3
  movq   %xmm3,%r14
  cvtss2sd %xmm2,%xmm2
  movq   %xmm2,%r15
  cvtss2sd %xmm1,%xmm1
  movq   %xmm1,%r13
  pxor   %xmm4,%xmm4
  cvtss2sd %xmm0,%xmm4
  movsd  %xmm4,0x8(%rsp)
  lea    0x70(%rsp),%rdi
  movapd %xmm4,%xmm0
  mov    $0x4,%eax
  call   <aceleracion@plt>
  mov    $0x0,%eax
  movss  D6(%rip),%xmm2
L36:
  movss  (%rbx,%rax,1),%xmm0
  mov    0x70(%rsp,%rax,2),%rdx
  movaps %xmm2,%xmm1
  mulss  (%rdx),%xmm1
  addss  %xmm0,%xmm1
  movss  %xmm1,0x10(%rsp,%rax,1)
  mulss  %xmm2,%xmm0
  addss  0x0(%rbp,%rax,1),%xmm0
  movss  %xmm0,0x1c(%rsp,%rax,1)
  add    $0x4,%rax
  cmp    $0xc,%rax
  jne    L36
  lea    0x10(%rsp),%rdx
  lea    0x1c(%rsp),%rsi
  lea    0x90(%rsp),%rdi
  movq   %r14,%xmm3
  movq   %r15,%xmm2
  movq   %r13,%xmm1
  movsd  0x8(%rsp),%xmm0
  mov    $0x4,%eax
  call   <aceleracion@plt>
  mov    $0x0,%eax
  movss  D6(%rip),%xmm1
L19:
  mov    0x90(%rsp,%rax,2),%rdx
  movaps %xmm1,%xmm0
  mulss  (%rdx),%xmm0
  addss  (%rbx,%rax,1),%xmm0
  movss  %xmm0,0x28(%rsp,%rax,1)
  movaps %xmm1,%xmm0
  mulss  0x10(%rsp,%rax,1),%xmm0
  addss  0x0(%rbp,%rax,1),%xmm0
  movss  %xmm0,0x34(%rsp,%rax,1)
  add    $0x4,%rax
  cmp    $0xc,%rax
  jne    L19
  lea    0x28(%rsp),%rdx
  lea    0x34(%rsp),%rsi
  lea    0xb0(%rsp),%rdi
  movq   %r14,%xmm3
  movq   %r15,%xmm2
  movq   %r13,%xmm1
  movsd  0x8(%rsp),%xmm0
  mov    $0x4,%eax
  call   <aceleracion@plt>
  mov    $0x0,%eax
  lea    0x28(%rsp),%rcx
L37:
  mov    0xb0(%rsp,%rax,2),%rdx
  movss  (%rdx),%xmm0
  addss  (%rbx,%rax,1),%xmm0
  movss  %xmm0,0x40(%rsp,%rax,1)
  movss  0x0(%rbp,%rax,1),%xmm0
  addss  (%rax,%rcx,1),%xmm0
  movss  %xmm0,0x4c(%rsp,%rax,1)
  add    $0x4,%rax
  cmp    $0xc,%rax
  jne    L37
  lea    0x40(%rsp),%rdx
  lea    0x4c(%rsp),%rsi
  lea    0xd0(%rsp),%rdi
  movq   %r14,%xmm3
  movq   %r15,%xmm2
  movq   %r13,%xmm1
  movsd  0x8(%rsp),%xmm0
  mov    $0x4,%eax
  call   <aceleracion@plt>
  mov    $0x0,%eax
  movsd  D29(%rip),%xmm2
  lea    0x10(%rsp),%rdi
  lea    0x28(%rsp),%rsi
  lea    0x40(%rsp),%rcx
L22:
  mov    0x90(%rsp,%rax,2),%rdx
  pxor   %xmm0,%xmm0
  cvtss2sd (%rdx),%xmm0
  addsd  %xmm0,%xmm0
  mov    0x70(%rsp,%rax,2),%rdx
  pxor   %xmm1,%xmm1
  cvtss2sd (%rdx),%xmm1
  addsd  %xmm1,%xmm0
  mov    0xb0(%rsp,%rax,2),%rdx
  pxor   %xmm1,%xmm1
  cvtss2sd (%rdx),%xmm1
  addsd  %xmm1,%xmm1
  addsd  %xmm1,%xmm0
  mov    0xd0(%rsp,%rax,2),%rdx
  pxor   %xmm1,%xmm1
  cvtss2sd (%rdx),%xmm1
  addsd  %xmm1,%xmm0
  mulsd  %xmm2,%xmm0
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,0x58(%rsp,%rax,1)
  pxor   %xmm0,%xmm0
  cvtss2sd (%rax,%rdi,1),%xmm0
  addsd  %xmm0,%xmm0
  pxor   %xmm1,%xmm1
  cvtss2sd (%rbx,%rax,1),%xmm1
  addsd  %xmm1,%xmm0
  pxor   %xmm1,%xmm1
  cvtss2sd (%rax,%rsi,1),%xmm1
  addsd  %xmm1,%xmm1
  addsd  %xmm1,%xmm0
  pxor   %xmm1,%xmm1
  cvtss2sd (%rax,%rcx,1),%xmm1
  addsd  %xmm1,%xmm0
  mulsd  %xmm2,%xmm0
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,0x64(%rsp,%rax,1)
  add    $0x4,%rax
  cmp    $0xc,%rax
  jne    L22
  mov    (%r12),%rax
  movss  0x0(%rbp),%xmm0
  addss  0x64(%rsp),%xmm0
  movss  %xmm0,(%rax)
  mov    0x8(%r12),%rax
  movss  0x4(%rbp),%xmm0
  addss  0x68(%rsp),%xmm0
  movss  %xmm0,(%rax)
  mov    0x10(%r12),%rax
  movss  0x8(%rbp),%xmm0
  addss  0x6c(%rsp),%xmm0
  movss  %xmm0,(%rax)
  mov    0x18(%r12),%rax
  movss  (%rbx),%xmm0
  addss  0x58(%rsp),%xmm0
  movss  %xmm0,(%rax)
  mov    0x20(%r12),%rax
  movss  0x4(%rbx),%xmm0
  addss  0x5c(%rsp),%xmm0
  movss  %xmm0,(%rax)
  mov    0x28(%r12),%rax
  movss  0x8(%rbx),%xmm0
  addss  0x60(%rsp),%xmm0
  movss  %xmm0,(%rax)
  mov    0xe8(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L46
  add    $0xf8,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L46:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: parse_data
arguments: data_label: D6
data_type: byte[4]
name: parse_data
arguments: data_label: D29
data_type: byte[8]

tool: {"D6": [0x00,0x00,0x00,0x3f]}

tool: {"D29": [0x55,0x55,0x55,0x55,0x55,0x55,0xc5,0x3f]}

assistant: ```c
void rg4th(float *pyv[6], float pos[3], float vel[3], float m, float gamma, float q, float rt) {
  int i;
  float v1[3];
  float r1[3];
  float v2[3];
  float r2[3];
  float v3[3];
  float r3[3];
  float *ace1[3];
  float *ace2[3];
  float *ace3[3];
  float *ace4[3];
  aceleracion(ace1, pos, vel, m, gamma, q, rt);
  for (i = 0; i < 3; i++) {
    v1[i] = vel[i] + *ace1[i] / 2;
    r1[i] = pos[i] + vel[i] / 2;
  }
  aceleracion(ace2, r1, v1, m, gamma, q, rt);
  for (i = 0; i < 3; i++) {
    v2[i] = vel[i] + *ace2[i] / 2;
    r2[i] = pos[i] + v1[i] / 2;
  }
  aceleracion(ace3, r2, v2, m, gamma, q, rt);
  for (i = 0; i < 3; i++) {
    v3[i] = vel[i] + *ace3[i];
    r3[i] = pos[i] + v2[i];
  }
  aceleracion(ace4, r3, v3, m, gamma, q, rt);
  float va[3];
  float ra[3];
  for (i = 0; i < 3; i++) {
    va[i] = (1.0 / 6.0) * (*ace1[i] + 2.0 * (*ace2[i]) + 2.0 * (*ace3[i]) + *ace4[i]);
    ra[i] = (1.0 / 6.0) * (vel[i] + 2.0 * (v1[i]) + 2.0 * (v2[i]) + v3[i]);
  }
  *pyv[0] = pos[0] + ra[0];
  *pyv[1] = pos[1] + ra[1];
  *pyv[2] = pos[2] + ra[2];
  *pyv[3] = vel[0] + va[0];
  *pyv[4] = vel[1] + va[1];
  *pyv[5] = vel[2] + va[2];
}
```