user: What is the c source code of the assembly code below?

```asm
<GetColor>:
  endbr64
  push   %rbx
  xor    %eax,%eax
  mov    %rdi,%rbx
  xor    %edi,%edi
  call   <RemoveEqualsSign@plt>
  test   %eax,%eax
  je     L48
  xor    %eax,%eax
  lea    D129(%rip),%rdi
  call   <CheckTokenStr@plt>
  test   %eax,%eax
  je     L10
  movl   $0x0,(%rbx)
  pop    %rbx
  ret
  nop
L48:
  mov    $0x1,%esi
  lea    D155(%rip),%rdi
  xor    %eax,%eax
  pop    %rbx
  jmp    1080 <ErrMsg@plt>
  nopl   0x0(%rax)
L10:
  xor    %eax,%eax
  lea    D6(%rip),%rdi
  call   <CheckTokenStr@plt>
  test   %eax,%eax
  je     L132
  movl   $0x3f800000,(%rbx)
  pop    %rbx
  ret
  nopw   0x0(%rax,%rax,1)
L132:
  xor    %eax,%eax
  lea    D156(%rip),%rdi
  call   <CheckTokenStr@plt>
  test   %eax,%eax
  je     L149
  movl   $0x40000000,(%rbx)
  pop    %rbx
  ret
  nopw   0x0(%rax,%rax,1)
L149:
  xor    %eax,%eax
  lea    D130(%rip),%rdi
  call   <CheckTokenStr@plt>
  test   %eax,%eax
  je     L70
  movl   $0x40400000,(%rbx)
  pop    %rbx
  ret
L70:
  xor    %eax,%eax
  lea    D99(%rip),%rdi
  call   <CheckTokenStr@plt>
  test   %eax,%eax
  je     L120
  movl   $0x40800000,(%rbx)
  pop    %rbx
  ret
L120:
  xor    %eax,%eax
  lea    D50(%rip),%rdi
  call   <CheckTokenStr@plt>
  test   %eax,%eax
  je     L160
  movl   $0x40a00000,(%rbx)
  pop    %rbx
  ret
L160:
  xor    %eax,%eax
  lea    D10(%rip),%rdi
  call   <CheckTokenStr@plt>
  test   %eax,%eax
  je     L94
  movl   $0x40c00000,(%rbx)
  pop    %rbx
  ret
L94:
  xor    %eax,%eax
  lea    D77(%rip),%rdi
  call   <CheckTokenStr@plt>
  test   %eax,%eax
  je     L117
  movl   $0x40e00000,(%rbx)
  pop    %rbx
  ret
L117:
  xor    %eax,%eax
  lea    D139(%rip),%rdi
  call   <CheckTokenStr@plt>
  test   %eax,%eax
  je     L136
  movl   $0x41700000,(%rbx)
  pop    %rbx
  ret
L136:
  xor    %eax,%eax
  lea    D33(%rip),%rdi
  call   <CheckTokenStr@plt>
  test   %eax,%eax
  je     L80
  movl   $0x41800000,(%rbx)
  pop    %rbx
  ret
L80:
  xor    %eax,%eax
  lea    D141(%rip),%rdi
  call   <CheckTokenStr@plt>
  test   %eax,%eax
  je     L144
  movl   $0x41880000,(%rbx)
  pop    %rbx
  ret
L144:
  xor    %eax,%eax
  lea    D92(%rip),%rdi
  call   <CheckTokenStr@plt>
  test   %eax,%eax
  je     L119
  movl   $0x41900000,(%rbx)
  pop    %rbx
  ret
L119:
  xor    %eax,%eax
  lea    D69(%rip),%rdi
  call   <CheckTokenStr@plt>
  test   %eax,%eax
  je     L113
  movl   $0x41980000,(%rbx)
  pop    %rbx
  ret
L113:
  xor    %eax,%eax
  lea    D165(%rip),%rdi
  call   <CheckTokenStr@plt>
  test   %eax,%eax
  je     L152
  movl   $0x41a00000,(%rbx)
  pop    %rbx
  ret
L152:
  xor    %eax,%eax
  lea    D106(%rip),%rdi
  call   <CheckTokenStr@plt>
  test   %eax,%eax
  je     L73
  movl   $0x41a80000,(%rbx)
  pop    %rbx
  ret
L73:
  xor    %eax,%eax
  lea    D91(%rip),%rdi
  call   <CheckTokenStr@plt>
  test   %eax,%eax
  je     L24
  movl   $0x41b00000,(%rbx)
  pop    %rbx
  ret
L24:
  mov    $0x1,%esi
  lea    D26(%rip),%rdi
  xor    %eax,%eax
  pop    %rbx
  jmp    1080 <ErrMsg@plt>
```

tool_calls: name: retrieve_data
arguments: data_label: D129
datatype: string
name: retrieve_data
arguments: data_label: D155
datatype: string
name: retrieve_data
arguments: data_label: D6
datatype: string
name: retrieve_data
arguments: data_label: D156
datatype: string
name: retrieve_data
arguments: data_label: D130
datatype: string
name: retrieve_data
arguments: data_label: D99
datatype: string
name: retrieve_data
arguments: data_label: D50
datatype: string
name: retrieve_data
arguments: data_label: D10
datatype: string
name: retrieve_data
arguments: data_label: D77
datatype: string
name: retrieve_data
arguments: data_label: D139
datatype: string
name: retrieve_data
arguments: data_label: D33
datatype: string
name: retrieve_data
arguments: data_label: D141
datatype: string
name: retrieve_data
arguments: data_label: D92
datatype: string
name: retrieve_data
arguments: data_label: D69
datatype: string
name: retrieve_data
arguments: data_label: D165
datatype: string
name: retrieve_data
arguments: data_label: D106
datatype: string
name: retrieve_data
arguments: data_label: D91
datatype: string
name: retrieve_data
arguments: data_label: D26
datatype: string

tool: D129: BLACK

tool: D155: Missing Equals Sign in Color Assignment

tool: D6: RED

tool: D156: GREEN

tool: D130: BLUE

tool: D99: CYAN

tool: D50: YELLOW

tool: D10: PURPLE

tool: D77: WHITE

tool: D139: CUST1

tool: D33: CUST2

tool: D141: CUST3

tool: D92: CUST4

tool: D69: CUST5

tool: D165: CUST6

tool: D106: CUST7

tool: D91: CUST8

tool: D26: Invalid Color

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);
}
```