user: 这段汇编代码用C语言表示是什么样的：

```asm
<shove1010102>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x20,%rsp
  mov    %rdi,-0x8(%rbp)
  mov    %esi,-0xc(%rbp)
  mov    %rdx,-0x18(%rbp)
  mov    -0x8(%rbp),%rax
  movsd  (%rax),%xmm0
  pxor   %xmm1,%xmm1
  comisd %xmm1,%xmm0
  jb     L3
  mov    -0x8(%rbp),%rax
  movsd  (%rax),%xmm1
  movsd  D102(%rip),%xmm0
  comisd %xmm1,%xmm0
  jb     L3
  mov    $0x1,%eax
  jmp    L20
L3:
  mov    $0x0,%eax
L20:
  mov    %eax,%edi
  call   <assert@plt>
  mov    -0x8(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm0
  pxor   %xmm1,%xmm1
  comisd %xmm1,%xmm0
  jb     L92
  mov    -0x8(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm1
  movsd  D102(%rip),%xmm0
  comisd %xmm1,%xmm0
  jb     L92
  mov    $0x1,%eax
  jmp    L0
L92:
  mov    $0x0,%eax
L0:
  mov    %eax,%edi
  call   <assert@plt>
  mov    -0x8(%rbp),%rax
  add    $0x10,%rax
  movsd  (%rax),%xmm0
  pxor   %xmm1,%xmm1
  comisd %xmm1,%xmm0
  jb     L43
  mov    -0x8(%rbp),%rax
  add    $0x10,%rax
  movsd  (%rax),%xmm1
  movsd  D102(%rip),%xmm0
  comisd %xmm1,%xmm0
  jb     L43
  mov    $0x1,%eax
  jmp    L4
L43:
  mov    $0x0,%eax
L4:
  mov    %eax,%edi
  call   <assert@plt>
  mov    -0x8(%rbp),%rax
  add    $0x18,%rax
  movsd  (%rax),%xmm0
  pxor   %xmm1,%xmm1
  comisd %xmm1,%xmm0
  jb     L49
  mov    -0x8(%rbp),%rax
  add    $0x18,%rax
  movsd  (%rax),%xmm1
  movsd  D102(%rip),%xmm0
  comisd %xmm1,%xmm0
  jb     L49
  mov    $0x1,%eax
  jmp    L2
L49:
  mov    $0x0,%eax
L2:
  mov    %eax,%edi
  call   <assert@plt>
  mov    -0x8(%rbp),%rax
  movsd  (%rax),%xmm1
  movsd  D94(%rip),%xmm0
  mulsd  %xmm0,%xmm1
  movsd  D8(%rip),%xmm0
  addsd  %xmm1,%xmm0
  cvttsd2si %xmm0,%edx
  mov    -0xc(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rcx
  mov    -0x18(%rbp),%rax
  add    %rcx,%rax
  shl    $0x16,%edx
  mov    %edx,(%rax)
  mov    -0xc(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%edx
  mov    -0x8(%rbp),%rax
  add    $0x8,%rax
  movsd  (%rax),%xmm1
  movsd  D94(%rip),%xmm0
  mulsd  %xmm0,%xmm1
  movsd  D8(%rip),%xmm0
  addsd  %xmm1,%xmm0
  cvttsd2si %xmm0,%eax
  shl    $0xc,%eax
  and    $0x3ff000,%eax
  mov    %eax,%ecx
  mov    -0xc(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rsi
  mov    -0x18(%rbp),%rax
  add    %rsi,%rax
  or     %ecx,%edx
  mov    %edx,(%rax)
  mov    -0xc(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%edx
  mov    -0x8(%rbp),%rax
  add    $0x10,%rax
  movsd  (%rax),%xmm1
  movsd  D94(%rip),%xmm0
  mulsd  %xmm0,%xmm1
  movsd  D8(%rip),%xmm0
  addsd  %xmm1,%xmm0
  cvttsd2si %xmm0,%eax
  shl    $0x2,%eax
  and    $0xffc,%eax
  mov    %eax,%ecx
  mov    -0xc(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rsi
  mov    -0x18(%rbp),%rax
  add    %rsi,%rax
  or     %ecx,%edx
  mov    %edx,(%rax)
  mov    -0xc(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%edx
  mov    -0x8(%rbp),%rax
  add    $0x18,%rax
  movsd  (%rax),%xmm1
  movsd  D4(%rip),%xmm0
  mulsd  %xmm0,%xmm1
  movsd  D8(%rip),%xmm0
  addsd  %xmm1,%xmm0
  cvttsd2si %xmm0,%eax
  and    $0x3,%eax
  mov    %eax,%ecx
  mov    -0xc(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rsi
  mov    -0x18(%rbp),%rax
  add    %rsi,%rax
  or     %ecx,%edx
  mov    %edx,(%rax)
  nop
  leave
  ret
```

tool_calls: name: extract_symbolic_data
arguments: tag: D102
data_type: f64
name: extract_symbolic_data
arguments: tag: D94
data_type: f32[2]
name: extract_symbolic_data
arguments: tag: D8
data_type: f64
name: extract_symbolic_data
arguments: tag: D4
data_type: f32[2]

tool: D102: 1

tool: {"D94": [0.0,4.4990234375]}

tool: D8: 0.5

tool: {"D4": [0.0,2.125]}

assistant: ```c
void shove1010102(const GLfloat shoveComponents[], int index, void *packedPixel) {
  assert(0.0 <= shoveComponents[0] && shoveComponents[0] <= 1.0);
  assert(0.0 <= shoveComponents[1] && shoveComponents[1] <= 1.0);
  assert(0.0 <= shoveComponents[2] && shoveComponents[2] <= 1.0);
  assert(0.0 <= shoveComponents[3] && shoveComponents[3] <= 1.0);
  ((GLuint *)packedPixel)[index] = ((GLuint)((shoveComponents[0] * 1023) + 0.5) << 22) & 0xffc00000;
  ((GLuint *)packedPixel)[index] |= ((GLuint)((shoveComponents[1] * 1023) + 0.5) << 12) & 0x003ff000;
  ((GLuint *)packedPixel)[index] |= ((GLuint)((shoveComponents[2] * 1023) + 0.5) << 2) & 0x00000ffc;
  ((GLuint *)packedPixel)[index] |= ((GLuint)((shoveComponents[3] * 3) + 0.5)) & 0x00000003;
}
```