user: 请将以下的汇编代码转换成C语言代码:

```asm
<GetColor>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x10,%rsp
  mov    %rdi,-0x8(%rbp)
  mov    $0x0,%edi
  mov    $0x0,%eax
  call   <RemoveEqualsSign@plt>
  test   %eax,%eax
  je     L173
  lea    D264(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <CheckTokenStr@plt>
  test   %eax,%eax
  je     L64
  mov    -0x8(%rbp),%rax
  pxor   %xmm0,%xmm0
  movss  %xmm0,(%rax)
  jmp    L51
L64:
  lea    D286(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <CheckTokenStr@plt>
  test   %eax,%eax
  je     L16
  mov    -0x8(%rbp),%rax
  movss  D49(%rip),%xmm0
  movss  %xmm0,(%rax)
  jmp    L51
L16:
  lea    D197(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <CheckTokenStr@plt>
  test   %eax,%eax
  je     L73
  mov    -0x8(%rbp),%rax
  movss  D324(%rip),%xmm0
  movss  %xmm0,(%rax)
  jmp    L51
L73:
  lea    D22(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <CheckTokenStr@plt>
  test   %eax,%eax
  je     L283
  mov    -0x8(%rbp),%rax
  movss  D7(%rip),%xmm0
  movss  %xmm0,(%rax)
  jmp    L51
L283:
  lea    D274(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <CheckTokenStr@plt>
  test   %eax,%eax
  je     L7
  mov    -0x8(%rbp),%rax
  movss  D213(%rip),%xmm0
  movss  %xmm0,(%rax)
  jmp    L51
L7:
  lea    D204(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <CheckTokenStr@plt>
  test   %eax,%eax
  je     L195
  mov    -0x8(%rbp),%rax
  movss  D230(%rip),%xmm0
  movss  %xmm0,(%rax)
  jmp    L51
L195:
  lea    D292(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <CheckTokenStr@plt>
  test   %eax,%eax
  je     L306
  mov    -0x8(%rbp),%rax
  movss  D322(%rip),%xmm0
  movss  %xmm0,(%rax)
  jmp    L51
L306:
  lea    D320(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <CheckTokenStr@plt>
  test   %eax,%eax
  je     L275
  mov    -0x8(%rbp),%rax
  movss  D319(%rip),%xmm0
  movss  %xmm0,(%rax)
  jmp    L51
L275:
  lea    D21(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <CheckTokenStr@plt>
  test   %eax,%eax
  je     L85
  mov    -0x8(%rbp),%rax
  movss  D189(%rip),%xmm0
  movss  %xmm0,(%rax)
  jmp    L51
L85:
  lea    D43(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <CheckTokenStr@plt>
  test   %eax,%eax
  je     L339
  mov    -0x8(%rbp),%rax
  movss  D15(%rip),%xmm0
  movss  %xmm0,(%rax)
  jmp    L51
L339:
  lea    D296(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <CheckTokenStr@plt>
  test   %eax,%eax
  je     L171
  mov    -0x8(%rbp),%rax
  movss  D18(%rip),%xmm0
  movss  %xmm0,(%rax)
  jmp    L51
L171:
  lea    D106(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <CheckTokenStr@plt>
  test   %eax,%eax
  je     L135
  mov    -0x8(%rbp),%rax
  movss  D28(%rip),%xmm0
  movss  %xmm0,(%rax)
  jmp    L51
L135:
  lea    D291(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <CheckTokenStr@plt>
  test   %eax,%eax
  je     L74
  mov    -0x8(%rbp),%rax
  movss  D172(%rip),%xmm0
  movss  %xmm0,(%rax)
  jmp    L51
L74:
  lea    D263(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <CheckTokenStr@plt>
  test   %eax,%eax
  je     L128
  mov    -0x8(%rbp),%rax
  movss  D3(%rip),%xmm0
  movss  %xmm0,(%rax)
  jmp    L51
L128:
  lea    D29(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <CheckTokenStr@plt>
  test   %eax,%eax
  je     L236
  mov    -0x8(%rbp),%rax
  movss  D98(%rip),%xmm0
  movss  %xmm0,(%rax)
  jmp    L51
L236:
  lea    D184(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <CheckTokenStr@plt>
  test   %eax,%eax
  je     L246
  mov    -0x8(%rbp),%rax
  movss  D255(%rip),%xmm0
  movss  %xmm0,(%rax)
  jmp    L51
L246:
  mov    $0x1,%esi
  lea    D117(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <ErrMsg@plt>
  jmp    L51
L173:
  mov    $0x1,%esi
  lea    D41(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <ErrMsg@plt>
L51:
  nop
  leave
  ret
```

tool_calls: name: retrieve_data
arguments: data_tag: D264
type_infered: string
name: retrieve_data
arguments: data_tag: D286
type_infered: string
name: retrieve_data
arguments: data_tag: D49
type_infered: f32
name: retrieve_data
arguments: data_tag: D197
type_infered: string
name: retrieve_data
arguments: data_tag: D324
type_infered: f32
name: retrieve_data
arguments: data_tag: D22
type_infered: string
name: retrieve_data
arguments: data_tag: D7
type_infered: f32
name: retrieve_data
arguments: data_tag: D274
type_infered: string
name: retrieve_data
arguments: data_tag: D213
type_infered: f32
name: retrieve_data
arguments: data_tag: D204
type_infered: string
name: retrieve_data
arguments: data_tag: D230
type_infered: f32
name: retrieve_data
arguments: data_tag: D292
type_infered: string
name: retrieve_data
arguments: data_tag: D322
type_infered: f32
name: retrieve_data
arguments: data_tag: D320
type_infered: string
name: retrieve_data
arguments: data_tag: D319
type_infered: f32
name: retrieve_data
arguments: data_tag: D21
type_infered: string
name: retrieve_data
arguments: data_tag: D189
type_infered: byte[4]
name: retrieve_data
arguments: data_tag: D43
type_infered: string
name: retrieve_data
arguments: data_tag: D15
type_infered: byte[4]
name: retrieve_data
arguments: data_tag: D296
type_infered: string
name: retrieve_data
arguments: data_tag: D18
type_infered: byte[4]
name: retrieve_data
arguments: data_tag: D106
type_infered: string
name: retrieve_data
arguments: data_tag: D28
type_infered: byte[4]
name: retrieve_data
arguments: data_tag: D291
type_infered: string
name: retrieve_data
arguments: data_tag: D172
type_infered: byte[4]
name: retrieve_data
arguments: data_tag: D263
type_infered: string
name: retrieve_data
arguments: data_tag: D3
type_infered: byte[4]
name: retrieve_data
arguments: data_tag: D29
type_infered: string
name: retrieve_data
arguments: data_tag: D98
type_infered: byte[4]
name: retrieve_data
arguments: data_tag: D184
type_infered: string
name: retrieve_data
arguments: data_tag: D255
type_infered: byte[4]
name: retrieve_data
arguments: data_tag: D117
type_infered: string
name: retrieve_data
arguments: data_tag: D41
type_infered: string

tool: D264: BLACK

tool: D286: RED

tool: D49: 1

tool: D197: GREEN

tool: D324: 2

tool: D22: BLUE

tool: D7: 3

tool: D274: CYAN

tool: D213: 4

tool: D204: YELLOW

tool: D230: 5

tool: D292: PURPLE

tool: D322: 6

tool: D320: WHITE

tool: D319: 7

tool: D21: CUST1

tool: {"D189": [0x00,0x00,0x70,0x41]}

tool: D43: CUST2

tool: {"D15": [0x00,0x00,0x80,0x41]}

tool: D296: CUST3

tool: {"D18": [0x00,0x00,0x88,0x41]}

tool: D106: CUST4

tool: {"D28": [0x00,0x00,0x90,0x41]}

tool: D291: CUST5

tool: {"D172": [0x00,0x00,0x98,0x41]}

tool: D263: CUST6

tool: {"D3": [0x00,0x00,0xa0,0x41]}

tool: D29: CUST7

tool: {"D98": [0x00,0x00,0xa8,0x41]}

tool: D184: CUST8

tool: {"D255": [0x00,0x00,0xb0,0x41]}

tool: D117: Invalid Color

tool: D41: Missing Equals Sign in Color Assignment

assistant: ```c
void GetColor(C) float *C;
{
  if (RemoveEqualsSign(0)) {
    if (CheckTokenStr("BLACK"))
      *C = 0.0;
    else if (CheckTokenStr("RED"))
      *C = 1.0;
    else if (CheckTokenStr("GREEN"))
      *C = 2.0;
    else if (CheckTokenStr("BLUE"))
      *C = 3.0;
    else if (CheckTokenStr("CYAN"))
      *C = 4.0;
    else if (CheckTokenStr("YELLOW"))
      *C = 5.0;
    else if (CheckTokenStr("PURPLE"))
      *C = 6.0;
    else if (CheckTokenStr("WHITE"))
      *C = 7.0;
    else if (CheckTokenStr("CUST1"))
      *C = 15;
    else if (CheckTokenStr("CUST2"))
      *C = 15 + 1;
    else if (CheckTokenStr("CUST3"))
      *C = 15 + 2;
    else if (CheckTokenStr("CUST4"))
      *C = 15 + 3;
    else if (CheckTokenStr("CUST5"))
      *C = 15 + 4;
    else if (CheckTokenStr("CUST6"))
      *C = 15 + 5;
    else if (CheckTokenStr("CUST7"))
      *C = 15 + 6;
    else if (CheckTokenStr("CUST8"))
      *C = 15 + 7;
    else
      ErrMsg("Invalid Color", 1);
  } else
    ErrMsg("Missing Equals Sign in Color Assignment", 1);
}
```