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

```asm
<draw_logo_shadow>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  movsd  D211(%rip),%xmm1
  movsd  D324(%rip),%xmm0
  mov    D136(%rip),%rax
  movapd %xmm1,%xmm2
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <glTranslatef@plt>
  movsd  D314(%rip),%xmm0
  movapd %xmm0,%xmm2
  pxor   %xmm1,%xmm1
  mov    D282(%rip),%rax
  movq   %rax,%xmm0
  call   <glTranslatef@plt>
  mov    $0x0,%eax
  call   <draw_double_cylinder@plt>
  mov    $0x0,%eax
  call   <bend_forward@plt>
  mov    $0x0,%eax
  call   <draw_elbow@plt>
  movsd  D314(%rip),%xmm0
  movapd %xmm0,%xmm2
  pxor   %xmm1,%xmm1
  mov    D282(%rip),%rax
  movq   %rax,%xmm0
  call   <glTranslatef@plt>
  mov    $0x0,%eax
  call   <draw_double_cylinder@plt>
  mov    $0x0,%eax
  call   <bend_forward@plt>
  mov    $0x0,%eax
  call   <draw_elbow@plt>
  movsd  D131(%rip),%xmm0
  movapd %xmm0,%xmm2
  pxor   %xmm1,%xmm1
  mov    D282(%rip),%rax
  movq   %rax,%xmm0
  call   <glTranslatef@plt>
  mov    $0x0,%eax
  call   <draw_single_cylinder@plt>
  mov    $0x0,%eax
  call   <bend_right@plt>
  mov    $0x0,%eax
  call   <draw_elbow@plt>
  movsd  D314(%rip),%xmm0
  movapd %xmm0,%xmm2
  pxor   %xmm1,%xmm1
  mov    D282(%rip),%rax
  movq   %rax,%xmm0
  call   <glTranslatef@plt>
  mov    $0x0,%eax
  call   <draw_double_cylinder@plt>
  mov    $0x0,%eax
  call   <bend_forward@plt>
  mov    $0x0,%eax
  call   <draw_elbow@plt>
  movsd  D314(%rip),%xmm0
  movapd %xmm0,%xmm2
  pxor   %xmm1,%xmm1
  mov    D282(%rip),%rax
  movq   %rax,%xmm0
  call   <glTranslatef@plt>
  mov    $0x0,%eax
  call   <draw_double_cylinder@plt>
  mov    $0x0,%eax
  call   <bend_forward@plt>
  mov    $0x0,%eax
  call   <draw_elbow@plt>
  movsd  D131(%rip),%xmm0
  movapd %xmm0,%xmm2
  pxor   %xmm1,%xmm1
  mov    D282(%rip),%rax
  movq   %rax,%xmm0
  call   <glTranslatef@plt>
  mov    $0x0,%eax
  call   <draw_single_cylinder@plt>
  mov    $0x0,%eax
  call   <bend_left@plt>
  mov    $0x0,%eax
  call   <draw_elbow@plt>
  movsd  D314(%rip),%xmm0
  movapd %xmm0,%xmm2
  pxor   %xmm1,%xmm1
  mov    D282(%rip),%rax
  movq   %rax,%xmm0
  call   <glTranslatef@plt>
  mov    $0x0,%eax
  call   <draw_double_cylinder@plt>
  mov    $0x0,%eax
  call   <bend_forward@plt>
  mov    $0x0,%eax
  call   <draw_elbow@plt>
  movsd  D314(%rip),%xmm0
  movapd %xmm0,%xmm2
  pxor   %xmm1,%xmm1
  mov    D282(%rip),%rax
  movq   %rax,%xmm0
  call   <glTranslatef@plt>
  mov    $0x0,%eax
  call   <draw_double_cylinder@plt>
  mov    $0x0,%eax
  call   <bend_forward@plt>
  mov    $0x0,%eax
  call   <draw_elbow@plt>
  movsd  D131(%rip),%xmm0
  movapd %xmm0,%xmm2
  pxor   %xmm1,%xmm1
  mov    D282(%rip),%rax
  movq   %rax,%xmm0
  call   <glTranslatef@plt>
  mov    $0x0,%eax
  call   <draw_single_cylinder@plt>
  mov    $0x0,%eax
  call   <bend_right@plt>
  mov    $0x0,%eax
  call   <draw_elbow@plt>
  movsd  D314(%rip),%xmm0
  movapd %xmm0,%xmm2
  pxor   %xmm1,%xmm1
  mov    D282(%rip),%rax
  movq   %rax,%xmm0
  call   <glTranslatef@plt>
  mov    $0x0,%eax
  call   <draw_double_cylinder@plt>
  mov    $0x0,%eax
  call   <bend_forward@plt>
  mov    $0x0,%eax
  call   <draw_elbow@plt>
  movsd  D314(%rip),%xmm0
  movapd %xmm0,%xmm2
  pxor   %xmm1,%xmm1
  mov    D282(%rip),%rax
  movq   %rax,%xmm0
  call   <glTranslatef@plt>
  mov    $0x0,%eax
  call   <draw_double_cylinder@plt>
  mov    $0x0,%eax
  call   <bend_forward@plt>
  mov    $0x0,%eax
  call   <draw_elbow@plt>
  movsd  D131(%rip),%xmm0
  movapd %xmm0,%xmm2
  pxor   %xmm1,%xmm1
  mov    D282(%rip),%rax
  movq   %rax,%xmm0
  call   <glTranslatef@plt>
  mov    $0x0,%eax
  call   <draw_single_cylinder@plt>
  mov    $0x0,%eax
  call   <bend_left@plt>
  mov    $0x0,%eax
  call   <draw_elbow@plt>
  movsd  D314(%rip),%xmm0
  movapd %xmm0,%xmm2
  pxor   %xmm1,%xmm1
  mov    D282(%rip),%rax
  movq   %rax,%xmm0
  call   <glTranslatef@plt>
  mov    $0x0,%eax
  call   <draw_double_cylinder@plt>
  mov    $0x0,%eax
  call   <bend_forward@plt>
  mov    $0x0,%eax
  call   <draw_elbow@plt>
  movsd  D314(%rip),%xmm0
  movapd %xmm0,%xmm2
  pxor   %xmm1,%xmm1
  mov    D282(%rip),%rax
  movq   %rax,%xmm0
  call   <glTranslatef@plt>
  mov    $0x0,%eax
  call   <draw_double_cylinder@plt>
  mov    $0x0,%eax
  call   <bend_forward@plt>
  mov    $0x0,%eax
  call   <draw_elbow@plt>
  movsd  D131(%rip),%xmm0
  movapd %xmm0,%xmm2
  pxor   %xmm1,%xmm1
  mov    D282(%rip),%rax
  movq   %rax,%xmm0
  call   <glTranslatef@plt>
  mov    $0x0,%eax
  call   <draw_single_cylinder@plt>
  mov    $0x0,%eax
  call   <bend_right@plt>
  mov    $0x0,%eax
  call   <draw_elbow@plt>
  movsd  D314(%rip),%xmm0
  movapd %xmm0,%xmm2
  pxor   %xmm1,%xmm1
  mov    D282(%rip),%rax
  movq   %rax,%xmm0
  call   <glTranslatef@plt>
  mov    $0x0,%eax
  call   <draw_double_cylinder@plt>
  mov    $0x0,%eax
  call   <bend_forward@plt>
  mov    $0x0,%eax
  call   <draw_elbow@plt>
  movsd  D314(%rip),%xmm0
  movapd %xmm0,%xmm2
  pxor   %xmm1,%xmm1
  mov    D282(%rip),%rax
  movq   %rax,%xmm0
  call   <glTranslatef@plt>
  mov    $0x0,%eax
  call   <draw_double_cylinder@plt>
  mov    $0x0,%eax
  call   <bend_forward@plt>
  mov    $0x0,%eax
  call   <draw_elbow@plt>
  movsd  D131(%rip),%xmm0
  movapd %xmm0,%xmm2
  pxor   %xmm1,%xmm1
  mov    D282(%rip),%rax
  movq   %rax,%xmm0
  call   <glTranslatef@plt>
  mov    $0x0,%eax
  call   <draw_single_cylinder@plt>
  mov    $0x0,%eax
  call   <bend_left@plt>
  mov    $0x0,%eax
  call   <draw_elbow@plt>
  nop
  pop    %rbp
  ret
```

tool_calls: name: read_data
arguments: data_label: D211
type: f64
name: read_data
arguments: data_label: D324
type: f32[2]
name: read_data
arguments: data_label: D136
type: f64
name: read_data
arguments: data_label: D314
type: f32[2]
name: read_data
arguments: data_label: D282
type: f32[2]
name: read_data
arguments: data_label: D131
type: f32[2]

tool: D211: 4.5

tool: {"D324": [0.0,-2.1875]}

tool: D136: 5.5

tool: {"D314": [0.0,-2.4375]}

tool: {"D282": [0.0,0.0]}

tool: {"D131": [0.0,-2.3125]}

assistant: ```c
void draw_logo_shadow(void) {
  glTranslatef(5.500000, -3.500000, 4.500000);
  glTranslatef(0.0, 0.0, -7.000000);
  draw_double_cylinder();
  bend_forward();
  draw_elbow();
  glTranslatef(0.0, 0.0, -7.000000);
  draw_double_cylinder();
  bend_forward();
  draw_elbow();
  glTranslatef(0.0, 0.0, -5.000000);
  draw_single_cylinder();
  bend_right();
  draw_elbow();
  glTranslatef(0.0, 0.0, -7.000000);
  draw_double_cylinder();
  bend_forward();
  draw_elbow();
  glTranslatef(0.0, 0.0, -7.000000);
  draw_double_cylinder();
  bend_forward();
  draw_elbow();
  glTranslatef(0.0, 0.0, -5.000000);
  draw_single_cylinder();
  bend_left();
  draw_elbow();
  glTranslatef(0.0, 0.0, -7.000000);
  draw_double_cylinder();
  bend_forward();
  draw_elbow();
  glTranslatef(0.0, 0.0, -7.000000);
  draw_double_cylinder();
  bend_forward();
  draw_elbow();
  glTranslatef(0.0, 0.0, -5.000000);
  draw_single_cylinder();
  bend_right();
  draw_elbow();
  glTranslatef(0.0, 0.0, -7.000000);
  draw_double_cylinder();
  bend_forward();
  draw_elbow();
  glTranslatef(0.0, 0.0, -7.000000);
  draw_double_cylinder();
  bend_forward();
  draw_elbow();
  glTranslatef(0.0, 0.0, -5.000000);
  draw_single_cylinder();
  bend_left();
  draw_elbow();
  glTranslatef(0.0, 0.0, -7.000000);
  draw_double_cylinder();
  bend_forward();
  draw_elbow();
  glTranslatef(0.0, 0.0, -7.000000);
  draw_double_cylinder();
  bend_forward();
  draw_elbow();
  glTranslatef(0.0, 0.0, -5.000000);
  draw_single_cylinder();
  bend_right();
  draw_elbow();
  glTranslatef(0.0, 0.0, -7.000000);
  draw_double_cylinder();
  bend_forward();
  draw_elbow();
  glTranslatef(0.0, 0.0, -7.000000);
  draw_double_cylinder();
  bend_forward();
  draw_elbow();
  glTranslatef(0.0, 0.0, -5.000000);
  draw_single_cylinder();
  bend_left();
  draw_elbow();
}
```