user: 下面的汇编指令对应的C源代码是什么：

```asm
<draw_line>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x20,%rsp
  mov    %edi,-0x14(%rbp)
  mov    %esi,-0x18(%rbp)
  mov    %edx,-0x1c(%rbp)
  movss  D15(%rip),%xmm0
  movss  %xmm0,-0x10(%rbp)
  movss  D11(%rip),%xmm0
  movss  %xmm0,-0xc(%rbp)
  movss  D36(%rip),%xmm0
  movss  %xmm0,-0x8(%rbp)
  movss  D7(%rip),%xmm0
  movss  %xmm0,-0x4(%rbp)
  mov    -0x14(%rbp),%eax
  and    $0x100,%eax
  test   %eax,%eax
  je     L94
  pxor   %xmm0,%xmm0
  cvtsi2ssl -0x18(%rbp),%xmm0
  addss  -0x10(%rbp),%xmm0
  cvttss2si %xmm0,%edx
  pxor   %xmm0,%xmm0
  cvtsi2ssl -0x1c(%rbp),%xmm0
  addss  -0x10(%rbp),%xmm0
  cvttss2si %xmm0,%eax
  mov    -0x8(%rbp),%ecx
  movd   %ecx,%xmm0
  mov    %edx,%esi
  mov    %eax,%edi
  call   <glVertex3f@plt>
  pxor   %xmm0,%xmm0
  cvtsi2ssl -0x18(%rbp),%xmm0
  addss  -0x10(%rbp),%xmm0
  cvttss2si %xmm0,%edx
  pxor   %xmm0,%xmm0
  cvtsi2ssl -0x1c(%rbp),%xmm0
  addss  -0xc(%rbp),%xmm0
  cvttss2si %xmm0,%eax
  mov    -0x8(%rbp),%ecx
  movd   %ecx,%xmm0
  mov    %edx,%esi
  mov    %eax,%edi
  call   <glVertex3f@plt>
L94:
  mov    -0x14(%rbp),%eax
  and    $0x200,%eax
  test   %eax,%eax
  je     L70
  pxor   %xmm0,%xmm0
  cvtsi2ssl -0x18(%rbp),%xmm0
  addss  -0x10(%rbp),%xmm0
  cvttss2si %xmm0,%edx
  pxor   %xmm0,%xmm0
  cvtsi2ssl -0x1c(%rbp),%xmm0
  addss  -0xc(%rbp),%xmm0
  cvttss2si %xmm0,%eax
  mov    -0x8(%rbp),%ecx
  movd   %ecx,%xmm0
  mov    %edx,%esi
  mov    %eax,%edi
  call   <glVertex3f@plt>
  pxor   %xmm0,%xmm0
  cvtsi2ssl -0x18(%rbp),%xmm0
  addss  -0x10(%rbp),%xmm0
  cvttss2si %xmm0,%edx
  pxor   %xmm0,%xmm0
  cvtsi2ssl -0x1c(%rbp),%xmm0
  addss  -0xc(%rbp),%xmm0
  cvttss2si %xmm0,%eax
  mov    -0x4(%rbp),%ecx
  movd   %ecx,%xmm0
  mov    %edx,%esi
  mov    %eax,%edi
  call   <glVertex3f@plt>
L70:
  mov    -0x14(%rbp),%eax
  and    $0x400,%eax
  test   %eax,%eax
  je     L116
  pxor   %xmm0,%xmm0
  cvtsi2ssl -0x18(%rbp),%xmm0
  addss  -0x10(%rbp),%xmm0
  cvttss2si %xmm0,%edx
  pxor   %xmm0,%xmm0
  cvtsi2ssl -0x1c(%rbp),%xmm0
  addss  -0xc(%rbp),%xmm0
  cvttss2si %xmm0,%eax
  mov    -0x4(%rbp),%ecx
  movd   %ecx,%xmm0
  mov    %edx,%esi
  mov    %eax,%edi
  call   <glVertex3f@plt>
  pxor   %xmm0,%xmm0
  cvtsi2ssl -0x18(%rbp),%xmm0
  addss  -0x10(%rbp),%xmm0
  cvttss2si %xmm0,%edx
  pxor   %xmm0,%xmm0
  cvtsi2ssl -0x1c(%rbp),%xmm0
  addss  -0x10(%rbp),%xmm0
  cvttss2si %xmm0,%eax
  mov    -0x4(%rbp),%ecx
  movd   %ecx,%xmm0
  mov    %edx,%esi
  mov    %eax,%edi
  call   <glVertex3f@plt>
L116:
  mov    -0x14(%rbp),%eax
  and    $0x800,%eax
  test   %eax,%eax
  je     L108
  pxor   %xmm0,%xmm0
  cvtsi2ssl -0x18(%rbp),%xmm0
  addss  -0x10(%rbp),%xmm0
  cvttss2si %xmm0,%edx
  pxor   %xmm0,%xmm0
  cvtsi2ssl -0x1c(%rbp),%xmm0
  addss  -0x10(%rbp),%xmm0
  cvttss2si %xmm0,%eax
  mov    -0x4(%rbp),%ecx
  movd   %ecx,%xmm0
  mov    %edx,%esi
  mov    %eax,%edi
  call   <glVertex3f@plt>
  pxor   %xmm0,%xmm0
  cvtsi2ssl -0x18(%rbp),%xmm0
  addss  -0x10(%rbp),%xmm0
  cvttss2si %xmm0,%edx
  pxor   %xmm0,%xmm0
  cvtsi2ssl -0x1c(%rbp),%xmm0
  addss  -0x10(%rbp),%xmm0
  cvttss2si %xmm0,%eax
  mov    -0x8(%rbp),%ecx
  movd   %ecx,%xmm0
  mov    %edx,%esi
  mov    %eax,%edi
  call   <glVertex3f@plt>
L108:
  mov    -0x14(%rbp),%eax
  and    $0x20,%eax
  test   %eax,%eax
  je     L131
  pxor   %xmm0,%xmm0
  cvtsi2ssl -0x18(%rbp),%xmm0
  addss  -0x10(%rbp),%xmm0
  cvttss2si %xmm0,%edx
  pxor   %xmm0,%xmm0
  cvtsi2ssl -0x1c(%rbp),%xmm0
  addss  -0xc(%rbp),%xmm0
  cvttss2si %xmm0,%eax
  mov    -0x8(%rbp),%ecx
  movd   %ecx,%xmm0
  mov    %edx,%esi
  mov    %eax,%edi
  call   <glVertex3f@plt>
  pxor   %xmm0,%xmm0
  cvtsi2ssl -0x18(%rbp),%xmm0
  addss  -0xc(%rbp),%xmm0
  cvttss2si %xmm0,%edx
  pxor   %xmm0,%xmm0
  cvtsi2ssl -0x1c(%rbp),%xmm0
  addss  -0xc(%rbp),%xmm0
  cvttss2si %xmm0,%eax
  mov    -0x8(%rbp),%ecx
  movd   %ecx,%xmm0
  mov    %edx,%esi
  mov    %eax,%edi
  call   <glVertex3f@plt>
L131:
  mov    -0x14(%rbp),%eax
  and    $0x2,%eax
  test   %eax,%eax
  je     L55
  pxor   %xmm0,%xmm0
  cvtsi2ssl -0x18(%rbp),%xmm0
  addss  -0xc(%rbp),%xmm0
  cvttss2si %xmm0,%edx
  pxor   %xmm0,%xmm0
  cvtsi2ssl -0x1c(%rbp),%xmm0
  addss  -0xc(%rbp),%xmm0
  cvttss2si %xmm0,%eax
  mov    -0x8(%rbp),%ecx
  movd   %ecx,%xmm0
  mov    %edx,%esi
  mov    %eax,%edi
  call   <glVertex3f@plt>
  pxor   %xmm0,%xmm0
  cvtsi2ssl -0x18(%rbp),%xmm0
  addss  -0xc(%rbp),%xmm0
  cvttss2si %xmm0,%edx
  pxor   %xmm0,%xmm0
  cvtsi2ssl -0x1c(%rbp),%xmm0
  addss  -0xc(%rbp),%xmm0
  cvttss2si %xmm0,%eax
  mov    -0x4(%rbp),%ecx
  movd   %ecx,%xmm0
  mov    %edx,%esi
  mov    %eax,%edi
  call   <glVertex3f@plt>
L55:
  mov    -0x14(%rbp),%eax
  and    $0x40,%eax
  test   %eax,%eax
  je     L129
  pxor   %xmm0,%xmm0
  cvtsi2ssl -0x18(%rbp),%xmm0
  addss  -0xc(%rbp),%xmm0
  cvttss2si %xmm0,%edx
  pxor   %xmm0,%xmm0
  cvtsi2ssl -0x1c(%rbp),%xmm0
  addss  -0xc(%rbp),%xmm0
  cvttss2si %xmm0,%eax
  mov    -0x4(%rbp),%ecx
  movd   %ecx,%xmm0
  mov    %edx,%esi
  mov    %eax,%edi
  call   <glVertex3f@plt>
  pxor   %xmm0,%xmm0
  cvtsi2ssl -0x18(%rbp),%xmm0
  addss  -0x10(%rbp),%xmm0
  cvttss2si %xmm0,%edx
  pxor   %xmm0,%xmm0
  cvtsi2ssl -0x1c(%rbp),%xmm0
  addss  -0xc(%rbp),%xmm0
  cvttss2si %xmm0,%eax
  mov    -0x4(%rbp),%ecx
  movd   %ecx,%xmm0
  mov    %edx,%esi
  mov    %eax,%edi
  call   <glVertex3f@plt>
L129:
  mov    -0x14(%rbp),%eax
  and    $0x200,%eax
  test   %eax,%eax
  je     L112
  pxor   %xmm0,%xmm0
  cvtsi2ssl -0x18(%rbp),%xmm0
  addss  -0x10(%rbp),%xmm0
  cvttss2si %xmm0,%edx
  pxor   %xmm0,%xmm0
  cvtsi2ssl -0x1c(%rbp),%xmm0
  addss  -0xc(%rbp),%xmm0
  cvttss2si %xmm0,%eax
  mov    -0x4(%rbp),%ecx
  movd   %ecx,%xmm0
  mov    %edx,%esi
  mov    %eax,%edi
  call   <glVertex3f@plt>
  pxor   %xmm0,%xmm0
  cvtsi2ssl -0x18(%rbp),%xmm0
  addss  -0x10(%rbp),%xmm0
  cvttss2si %xmm0,%edx
  pxor   %xmm0,%xmm0
  cvtsi2ssl -0x1c(%rbp),%xmm0
  addss  -0xc(%rbp),%xmm0
  cvttss2si %xmm0,%eax
  mov    -0x8(%rbp),%ecx
  movd   %ecx,%xmm0
  mov    %edx,%esi
  mov    %eax,%edi
  call   <glVertex3f@plt>
L112:
  mov    -0x14(%rbp),%eax
  and    $0x1,%eax
  test   %eax,%eax
  je     L29
  pxor   %xmm0,%xmm0
  cvtsi2ssl -0x18(%rbp),%xmm0
  addss  -0xc(%rbp),%xmm0
  cvttss2si %xmm0,%edx
  pxor   %xmm0,%xmm0
  cvtsi2ssl -0x1c(%rbp),%xmm0
  addss  -0x10(%rbp),%xmm0
  cvttss2si %xmm0,%eax
  mov    -0x8(%rbp),%ecx
  movd   %ecx,%xmm0
  mov    %edx,%esi
  mov    %eax,%edi
  call   <glVertex3f@plt>
  pxor   %xmm0,%xmm0
  cvtsi2ssl -0x18(%rbp),%xmm0
  addss  -0xc(%rbp),%xmm0
  cvttss2si %xmm0,%edx
  pxor   %xmm0,%xmm0
  cvtsi2ssl -0x1c(%rbp),%xmm0
  addss  -0xc(%rbp),%xmm0
  cvttss2si %xmm0,%eax
  mov    -0x8(%rbp),%ecx
  movd   %ecx,%xmm0
  mov    %edx,%esi
  mov    %eax,%edi
  call   <glVertex3f@plt>
L29:
  mov    -0x14(%rbp),%eax
  and    $0x2,%eax
  test   %eax,%eax
  je     L77
  pxor   %xmm0,%xmm0
  cvtsi2ssl -0x18(%rbp),%xmm0
  addss  -0xc(%rbp),%xmm0
  cvttss2si %xmm0,%edx
  pxor   %xmm0,%xmm0
  cvtsi2ssl -0x1c(%rbp),%xmm0
  addss  -0xc(%rbp),%xmm0
  cvttss2si %xmm0,%eax
  mov    -0x8(%rbp),%ecx
  movd   %ecx,%xmm0
  mov    %edx,%esi
  mov    %eax,%edi
  call   <glVertex3f@plt>
  pxor   %xmm0,%xmm0
  cvtsi2ssl -0x18(%rbp),%xmm0
  addss  -0xc(%rbp),%xmm0
  cvttss2si %xmm0,%edx
  pxor   %xmm0,%xmm0
  cvtsi2ssl -0x1c(%rbp),%xmm0
  addss  -0xc(%rbp),%xmm0
  cvttss2si %xmm0,%eax
  mov    -0x4(%rbp),%ecx
  movd   %ecx,%xmm0
  mov    %edx,%esi
  mov    %eax,%edi
  call   <glVertex3f@plt>
L77:
  mov    -0x14(%rbp),%eax
  and    $0x4,%eax
  test   %eax,%eax
  je     L159
  pxor   %xmm0,%xmm0
  cvtsi2ssl -0x18(%rbp),%xmm0
  addss  -0xc(%rbp),%xmm0
  cvttss2si %xmm0,%edx
  pxor   %xmm0,%xmm0
  cvtsi2ssl -0x1c(%rbp),%xmm0
  addss  -0xc(%rbp),%xmm0
  cvttss2si %xmm0,%eax
  mov    -0x4(%rbp),%ecx
  movd   %ecx,%xmm0
  mov    %edx,%esi
  mov    %eax,%edi
  call   <glVertex3f@plt>
  pxor   %xmm0,%xmm0
  cvtsi2ssl -0x18(%rbp),%xmm0
  addss  -0xc(%rbp),%xmm0
  cvttss2si %xmm0,%edx
  pxor   %xmm0,%xmm0
  cvtsi2ssl -0x1c(%rbp),%xmm0
  addss  -0x10(%rbp),%xmm0
  cvttss2si %xmm0,%eax
  mov    -0x4(%rbp),%ecx
  movd   %ecx,%xmm0
  mov    %edx,%esi
  mov    %eax,%edi
  call   <glVertex3f@plt>
L159:
  mov    -0x14(%rbp),%eax
  and    $0x8,%eax
  test   %eax,%eax
  je     L150
  pxor   %xmm0,%xmm0
  cvtsi2ssl -0x18(%rbp),%xmm0
  addss  -0xc(%rbp),%xmm0
  cvttss2si %xmm0,%edx
  pxor   %xmm0,%xmm0
  cvtsi2ssl -0x1c(%rbp),%xmm0
  addss  -0x10(%rbp),%xmm0
  cvttss2si %xmm0,%eax
  mov    -0x4(%rbp),%ecx
  movd   %ecx,%xmm0
  mov    %edx,%esi
  mov    %eax,%edi
  call   <glVertex3f@plt>
  pxor   %xmm0,%xmm0
  cvtsi2ssl -0x18(%rbp),%xmm0
  addss  -0xc(%rbp),%xmm0
  cvttss2si %xmm0,%edx
  pxor   %xmm0,%xmm0
  cvtsi2ssl -0x1c(%rbp),%xmm0
  addss  -0x10(%rbp),%xmm0
  cvttss2si %xmm0,%eax
  mov    -0x8(%rbp),%ecx
  movd   %ecx,%xmm0
  mov    %edx,%esi
  mov    %eax,%edi
  call   <glVertex3f@plt>
L150:
  mov    -0x14(%rbp),%eax
  and    $0x800,%eax
  test   %eax,%eax
  je     L0
  pxor   %xmm0,%xmm0
  cvtsi2ssl -0x18(%rbp),%xmm0
  addss  -0x10(%rbp),%xmm0
  cvttss2si %xmm0,%edx
  pxor   %xmm0,%xmm0
  cvtsi2ssl -0x1c(%rbp),%xmm0
  addss  -0x10(%rbp),%xmm0
  cvttss2si %xmm0,%eax
  mov    -0x8(%rbp),%ecx
  movd   %ecx,%xmm0
  mov    %edx,%esi
  mov    %eax,%edi
  call   <glVertex3f@plt>
  pxor   %xmm0,%xmm0
  cvtsi2ssl -0x18(%rbp),%xmm0
  addss  -0x10(%rbp),%xmm0
  cvttss2si %xmm0,%edx
  pxor   %xmm0,%xmm0
  cvtsi2ssl -0x1c(%rbp),%xmm0
  addss  -0x10(%rbp),%xmm0
  cvttss2si %xmm0,%eax
  mov    -0x4(%rbp),%ecx
  movd   %ecx,%xmm0
  mov    %edx,%esi
  mov    %eax,%edi
  call   <glVertex3f@plt>
L0:
  mov    -0x14(%rbp),%eax
  and    $0x80,%eax
  test   %eax,%eax
  je     L13
  pxor   %xmm0,%xmm0
  cvtsi2ssl -0x18(%rbp),%xmm0
  addss  -0x10(%rbp),%xmm0
  cvttss2si %xmm0,%edx
  pxor   %xmm0,%xmm0
  cvtsi2ssl -0x1c(%rbp),%xmm0
  addss  -0x10(%rbp),%xmm0
  cvttss2si %xmm0,%eax
  mov    -0x4(%rbp),%ecx
  movd   %ecx,%xmm0
  mov    %edx,%esi
  mov    %eax,%edi
  call   <glVertex3f@plt>
  pxor   %xmm0,%xmm0
  cvtsi2ssl -0x18(%rbp),%xmm0
  addss  -0xc(%rbp),%xmm0
  cvttss2si %xmm0,%edx
  pxor   %xmm0,%xmm0
  cvtsi2ssl -0x1c(%rbp),%xmm0
  addss  -0x10(%rbp),%xmm0
  cvttss2si %xmm0,%eax
  mov    -0x4(%rbp),%ecx
  movd   %ecx,%xmm0
  mov    %edx,%esi
  mov    %eax,%edi
  call   <glVertex3f@plt>
L13:
  mov    -0x14(%rbp),%eax
  and    $0x8,%eax
  test   %eax,%eax
  je     L45
  pxor   %xmm0,%xmm0
  cvtsi2ssl -0x18(%rbp),%xmm0
  addss  -0xc(%rbp),%xmm0
  cvttss2si %xmm0,%edx
  pxor   %xmm0,%xmm0
  cvtsi2ssl -0x1c(%rbp),%xmm0
  addss  -0x10(%rbp),%xmm0
  cvttss2si %xmm0,%eax
  mov    -0x4(%rbp),%ecx
  movd   %ecx,%xmm0
  mov    %edx,%esi
  mov    %eax,%edi
  call   <glVertex3f@plt>
  pxor   %xmm0,%xmm0
  cvtsi2ssl -0x18(%rbp),%xmm0
  addss  -0xc(%rbp),%xmm0
  cvttss2si %xmm0,%edx
  pxor   %xmm0,%xmm0
  cvtsi2ssl -0x1c(%rbp),%xmm0
  addss  -0x10(%rbp),%xmm0
  cvttss2si %xmm0,%eax
  mov    -0x8(%rbp),%ecx
  movd   %ecx,%xmm0
  mov    %edx,%esi
  mov    %eax,%edi
  call   <glVertex3f@plt>
L45:
  mov    -0x14(%rbp),%eax
  and    $0x10,%eax
  test   %eax,%eax
  je     L135
  pxor   %xmm0,%xmm0
  cvtsi2ssl -0x18(%rbp),%xmm0
  addss  -0xc(%rbp),%xmm0
  cvttss2si %xmm0,%edx
  pxor   %xmm0,%xmm0
  cvtsi2ssl -0x1c(%rbp),%xmm0
  addss  -0x10(%rbp),%xmm0
  cvttss2si %xmm0,%eax
  mov    -0x8(%rbp),%ecx
  movd   %ecx,%xmm0
  mov    %edx,%esi
  mov    %eax,%edi
  call   <glVertex3f@plt>
  pxor   %xmm0,%xmm0
  cvtsi2ssl -0x18(%rbp),%xmm0
  addss  -0x10(%rbp),%xmm0
  cvttss2si %xmm0,%edx
  pxor   %xmm0,%xmm0
  cvtsi2ssl -0x1c(%rbp),%xmm0
  addss  -0x10(%rbp),%xmm0
  cvttss2si %xmm0,%eax
  mov    -0x8(%rbp),%ecx
  movd   %ecx,%xmm0
  mov    %edx,%esi
  mov    %eax,%edi
  call   <glVertex3f@plt>
L135:
  nop
  leave
  ret
```

tool_calls: name: parse_data
arguments: data_label: D15
datatype: byte[4]
name: parse_data
arguments: data_label: D11
datatype: byte[4]
name: parse_data
arguments: data_label: D36
datatype: byte[4]
name: parse_data
arguments: data_label: D7
datatype: byte[4]

tool: {"D15": [0x0a,0xd7,0x23,0xbc]}

tool: {"D11": [0xae,0x47,0x81,0x3f]}

tool: {"D36": [0xec,0x51,0xb8,0x3d]}

tool: {"D7": [0x29,0x5c,0x4f,0x3f]}

assistant: ```c
void draw_line(int mask, int i, int j) {
  float x = -0.01f, y = 1.01f, z1 = 0.09f, z2 = 0.81f;
  if ((mask & (1 << 8)) == (1 << 8)) {
    glVertex3f(j + x, i + x, z1);
    glVertex3f(j + y, i + x, z1);
  }
  if ((mask & (1 << 9)) == (1 << 9)) {
    glVertex3f(j + y, i + x, z1);
    glVertex3f(j + y, i + x, z2);
  }
  if ((mask & (1 << 10)) == (1 << 10)) {
    glVertex3f(j + y, i + x, z2);
    glVertex3f(j + x, i + x, z2);
  }
  if ((mask & (1 << 11)) == (1 << 11)) {
    glVertex3f(j + x, i + x, z2);
    glVertex3f(j + x, i + x, z1);
  }
  if ((mask & (1 << 5)) == (1 << 5)) {
    glVertex3f(j + y, i + x, z1);
    glVertex3f(j + y, i + y, z1);
  }
  if ((mask & (1 << 1)) == (1 << 1)) {
    glVertex3f(j + y, i + y, z1);
    glVertex3f(j + y, i + y, z2);
  }
  if ((mask & (1 << 6)) == (1 << 6)) {
    glVertex3f(j + y, i + y, z2);
    glVertex3f(j + y, i + x, z2);
  }
  if ((mask & (1 << 9)) == (1 << 9)) {
    glVertex3f(j + y, i + x, z2);
    glVertex3f(j + y, i + x, z1);
  }
  if ((mask & (1 << 0)) == (1 << 0)) {
    glVertex3f(j + x, i + y, z1);
    glVertex3f(j + y, i + y, z1);
  }
  if ((mask & (1 << 1)) == (1 << 1)) {
    glVertex3f(j + y, i + y, z1);
    glVertex3f(j + y, i + y, z2);
  }
  if ((mask & (1 << 2)) == (1 << 2)) {
    glVertex3f(j + y, i + y, z2);
    glVertex3f(j + x, i + y, z2);
  }
  if ((mask & (1 << 3)) == (1 << 3)) {
    glVertex3f(j + x, i + y, z2);
    glVertex3f(j + x, i + y, z1);
  }
  if ((mask & (1 << 11)) == (1 << 11)) {
    glVertex3f(j + x, i + x, z1);
    glVertex3f(j + x, i + x, z2);
  }
  if ((mask & (1 << 7)) == (1 << 7)) {
    glVertex3f(j + x, i + x, z2);
    glVertex3f(j + x, i + y, z2);
  }
  if ((mask & (1 << 3)) == (1 << 3)) {
    glVertex3f(j + x, i + y, z2);
    glVertex3f(j + x, i + y, z1);
  }
  if ((mask & (1 << 4)) == (1 << 4)) {
    glVertex3f(j + x, i + y, z1);
    glVertex3f(j + x, i + x, z1);
  }
}
```