user: 请将这段汇编代码片段转换成等效的C代码:

```asm
<draw_block>:
  endbr64
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x18,%rsp
  mov    %edi,%ebp
  mov    %esi,%ebx
  movss  0x8(%rdx),%xmm2
  movss  0x4(%rdx),%xmm1
  movss  (%rdx),%xmm0
  call   <glColor3f@plt>
  pxor   %xmm3,%xmm3
  cvtsi2ss %ebp,%xmm3
  pxor   %xmm0,%xmm0
  movss  %xmm3,0x8(%rsp)
  movaps %xmm3,%xmm1
  addss  %xmm0,%xmm1
  cvttss2si %xmm1,%r12d
  pxor   %xmm4,%xmm4
  cvtsi2ss %ebx,%xmm4
  movss  %xmm4,0xc(%rsp)
  addss  %xmm4,%xmm0
  cvttss2si %xmm0,%ebx
  movss  D76(%rip),%xmm0
  mov    %r12d,%esi
  mov    %ebx,%edi
  call   <glVertex3f@plt>
  movss  D52(%rip),%xmm0
  addss  0xc(%rsp),%xmm0
  cvttss2si %xmm0,%r13d
  movss  D76(%rip),%xmm0
  mov    %r12d,%esi
  mov    %r13d,%edi
  call   <glVertex3f@plt>
  movss  D52(%rip),%xmm0
  addss  0x8(%rsp),%xmm0
  cvttss2si %xmm0,%ebp
  movss  D76(%rip),%xmm0
  mov    %ebp,%esi
  mov    %r13d,%edi
  call   <glVertex3f@plt>
  movss  D76(%rip),%xmm0
  mov    %ebp,%esi
  mov    %ebx,%edi
  call   <glVertex3f@plt>
  movss  D68(%rip),%xmm0
  mov    %r12d,%esi
  mov    %ebx,%edi
  call   <glVertex3f@plt>
  movss  D68(%rip),%xmm0
  mov    %r12d,%esi
  mov    %r13d,%edi
  call   <glVertex3f@plt>
  movss  D76(%rip),%xmm0
  mov    %r12d,%esi
  mov    %r13d,%edi
  call   <glVertex3f@plt>
  movss  D76(%rip),%xmm0
  mov    %r12d,%esi
  mov    %ebx,%edi
  call   <glVertex3f@plt>
  movss  D68(%rip),%xmm0
  mov    %r12d,%esi
  mov    %r13d,%edi
  call   <glVertex3f@plt>
  movss  D68(%rip),%xmm0
  mov    %ebp,%esi
  mov    %r13d,%edi
  call   <glVertex3f@plt>
  movss  D76(%rip),%xmm0
  mov    %ebp,%esi
  mov    %r13d,%edi
  call   <glVertex3f@plt>
  movss  D76(%rip),%xmm0
  mov    %r12d,%esi
  mov    %r13d,%edi
  call   <glVertex3f@plt>
  movss  D68(%rip),%xmm0
  mov    %ebp,%esi
  mov    %ebx,%edi
  call   <glVertex3f@plt>
  movss  D68(%rip),%xmm0
  mov    %ebp,%esi
  mov    %r13d,%edi
  call   <glVertex3f@plt>
  movss  D76(%rip),%xmm0
  mov    %ebp,%esi
  mov    %r13d,%edi
  call   <glVertex3f@plt>
  movss  D76(%rip),%xmm0
  mov    %ebp,%esi
  mov    %ebx,%edi
  call   <glVertex3f@plt>
  movss  D68(%rip),%xmm0
  mov    %r12d,%esi
  mov    %ebx,%edi
  call   <glVertex3f@plt>
  movss  D76(%rip),%xmm0
  mov    %r12d,%esi
  mov    %ebx,%edi
  call   <glVertex3f@plt>
  movss  D76(%rip),%xmm0
  mov    %ebp,%esi
  mov    %ebx,%edi
  call   <glVertex3f@plt>
  movss  D68(%rip),%xmm0
  mov    %ebp,%esi
  mov    %ebx,%edi
  call   <glVertex3f@plt>
  add    $0x18,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  ret
```

tool_calls: name: unpack_data
arguments: label: D76
type_guessed: byte[4]
name: unpack_data
arguments: label: D52
type_guessed: f32
name: unpack_data
arguments: label: D68
type_guessed: byte[4]

tool: {"D76": [0xcd,0xcc,0x4c,0x3f]}

tool: D52: 1

tool: {"D68": [0xcd,0xcc,0xcc,0x3d]}

assistant: ```c
void draw_block(int i, int j, float color[3]) {
  float x = 0, y = 1, z1 = 0.1f, z2 = 0.8f;
  glColor3f(color[0], color[1], color[2]);
  glVertex3f(j + x, i + x, z2);
  glVertex3f(j + y, i + x, z2);
  glVertex3f(j + y, i + y, z2);
  glVertex3f(j + x, i + y, z2);
  glVertex3f(j + x, i + x, z1);
  glVertex3f(j + y, i + x, z1);
  glVertex3f(j + y, i + x, z2);
  glVertex3f(j + x, i + x, z2);
  glVertex3f(j + y, i + x, z1);
  glVertex3f(j + y, i + y, z1);
  glVertex3f(j + y, i + y, z2);
  glVertex3f(j + y, i + x, z2);
  glVertex3f(j + x, i + y, z1);
  glVertex3f(j + y, i + y, z1);
  glVertex3f(j + y, i + y, z2);
  glVertex3f(j + x, i + y, z2);
  glVertex3f(j + x, i + x, z1);
  glVertex3f(j + x, i + x, z2);
  glVertex3f(j + x, i + y, z2);
  glVertex3f(j + x, i + y, z1);
}
```