user: Converte this assembly snippet into its equivalent C code:

```asm
<GetColor>:
  endbr64
  push   %rbx
  mov    %rdi,%rbx
  mov    $0x0,%edi
  mov    $0x0,%eax
  call   <RemoveEqualsSign@plt>
  test   %eax,%eax
  je     L88
  lea    D73(%rip),%rdi
  mov    $0x0,%eax
  call   <CheckTokenStr@plt>
  test   %eax,%eax
  je     L207
  movl   $0x0,(%rbx)
  jmp    L189
L207:
  lea    D31(%rip),%rdi
  mov    $0x0,%eax
  call   <CheckTokenStr@plt>
  test   %eax,%eax
  je     L215
  movl   $0x3f800000,(%rbx)
  jmp    L189
L215:
  lea    D105(%rip),%rdi
  mov    $0x0,%eax
  call   <CheckTokenStr@plt>
  test   %eax,%eax
  je     L84
  movl   $0x40000000,(%rbx)
  jmp    L189
L84:
  lea    D48(%rip),%rdi
  mov    $0x0,%eax
  call   <CheckTokenStr@plt>
  test   %eax,%eax
  je     L142
  movl   $0x40400000,(%rbx)
  jmp    L189
L142:
  lea    D128(%rip),%rdi
  mov    $0x0,%eax
  call   <CheckTokenStr@plt>
  test   %eax,%eax
  je     L300
  movl   $0x40800000,(%rbx)
  jmp    L189
L300:
  lea    D162(%rip),%rdi
  mov    $0x0,%eax
  call   <CheckTokenStr@plt>
  test   %eax,%eax
  je     L3
  movl   $0x40a00000,(%rbx)
  jmp    L189
L3:
  lea    D173(%rip),%rdi
  mov    $0x0,%eax
  call   <CheckTokenStr@plt>
  test   %eax,%eax
  je     L167
  movl   $0x40c00000,(%rbx)
  jmp    L189
L167:
  lea    D176(%rip),%rdi
  mov    $0x0,%eax
  call   <CheckTokenStr@plt>
  test   %eax,%eax
  je     L82
  movl   $0x40e00000,(%rbx)
  jmp    L189
L82:
  lea    D129(%rip),%rdi
  mov    $0x0,%eax
  call   <CheckTokenStr@plt>
  test   %eax,%eax
  je     L79
  movl   $0x41700000,(%rbx)
  jmp    L189
L79:
  lea    D150(%rip),%rdi
  mov    $0x0,%eax
  call   <CheckTokenStr@plt>
  test   %eax,%eax
  je     L163
  movl   $0x41800000,(%rbx)
  jmp    L189
L163:
  lea    D141(%rip),%rdi
  mov    $0x0,%eax
  call   <CheckTokenStr@plt>
  test   %eax,%eax
  je     L229
  movl   $0x41880000,(%rbx)
  jmp    L189
L229:
  lea    D27(%rip),%rdi
  mov    $0x0,%eax
  call   <CheckTokenStr@plt>
  test   %eax,%eax
  je     L172
  movl   $0x41900000,(%rbx)
  jmp    L189
L172:
  lea    D152(%rip),%rdi
  mov    $0x0,%eax
  call   <CheckTokenStr@plt>
  test   %eax,%eax
  je     L53
  movl   $0x41980000,(%rbx)
  jmp    L189
L53:
  lea    D70(%rip),%rdi
  mov    $0x0,%eax
  call   <CheckTokenStr@plt>
  test   %eax,%eax
  je     L24
  movl   $0x41a00000,(%rbx)
  jmp    L189
L24:
  lea    D17(%rip),%rdi
  mov    $0x0,%eax
  call   <CheckTokenStr@plt>
  test   %eax,%eax
  je     L101
  movl   $0x41a80000,(%rbx)
  jmp    L189
L101:
  lea    D106(%rip),%rdi
  mov    $0x0,%eax
  call   <CheckTokenStr@plt>
  test   %eax,%eax
  je     L63
  movl   $0x41b00000,(%rbx)
  jmp    L189
L63:
  mov    $0x1,%esi
  lea    D1(%rip),%rdi
  mov    $0x0,%eax
  call   <ErrMsg@plt>
  jmp    L189
L88:
  mov    $0x1,%esi
  lea    D20(%rip),%rdi
  mov    $0x0,%eax
  call   <ErrMsg@plt>
L189:
  pop    %rbx
  ret
```

tool_calls: name: unpack_data
arguments: label: D73
data_type: string
name: unpack_data
arguments: label: D31
data_type: string
name: unpack_data
arguments: label: D105
data_type: string
name: unpack_data
arguments: label: D48
data_type: string
name: unpack_data
arguments: label: D128
data_type: string
name: unpack_data
arguments: label: D162
data_type: string
name: unpack_data
arguments: label: D173
data_type: string
name: unpack_data
arguments: label: D176
data_type: string
name: unpack_data
arguments: label: D129
data_type: string
name: unpack_data
arguments: label: D150
data_type: string
name: unpack_data
arguments: label: D141
data_type: string
name: unpack_data
arguments: label: D27
data_type: string
name: unpack_data
arguments: label: D152
data_type: string
name: unpack_data
arguments: label: D70
data_type: string
name: unpack_data
arguments: label: D17
data_type: string
name: unpack_data
arguments: label: D106
data_type: string
name: unpack_data
arguments: label: D1
data_type: string
name: unpack_data
arguments: label: D20
data_type: string

tool: D73: BLACK

tool: D31: RED

tool: D105: GREEN

tool: D48: BLUE

tool: D128: CYAN

tool: D162: YELLOW

tool: D173: PURPLE

tool: D176: WHITE

tool: D129: CUST1

tool: D150: CUST2

tool: D141: CUST3

tool: D27: CUST4

tool: D152: CUST5

tool: D70: CUST6

tool: D17: CUST7

tool: D106: CUST8

tool: D1: Invalid Color

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