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

```asm
<Get_var_units>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x20,%rsp
  mov    %rdi,-0x8(%rbp)
  mov    %rsi,-0x10(%rbp)
  mov    %rdx,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  lea    D116(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L88
  mov    -0x18(%rbp),%rax
  mov    $0x800,%edx
  lea    D123(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncpy@plt>
  mov    $0x0,%eax
  jmp    L139
L88:
  mov    -0x10(%rbp),%rax
  lea    D104(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L179
  mov    -0x18(%rbp),%rax
  mov    $0x800,%edx
  lea    D123(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncpy@plt>
  mov    $0x0,%eax
  jmp    L139
L179:
  mov    -0x10(%rbp),%rax
  lea    D87(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L132
  mov    -0x18(%rbp),%rax
  mov    $0x800,%edx
  lea    D11(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncpy@plt>
  mov    $0x0,%eax
  jmp    L139
L132:
  mov    -0x10(%rbp),%rax
  lea    D29(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L142
  mov    -0x18(%rbp),%rax
  mov    $0x800,%edx
  lea    D21(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncpy@plt>
  mov    $0x0,%eax
  jmp    L139
L142:
  mov    -0x10(%rbp),%rax
  lea    D115(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L135
  mov    -0x18(%rbp),%rax
  mov    $0x800,%edx
  lea    D126(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncpy@plt>
  mov    $0x0,%eax
  jmp    L139
L135:
  mov    -0x10(%rbp),%rax
  lea    D39(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L133
  mov    -0x18(%rbp),%rax
  mov    $0x800,%edx
  lea    D126(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncpy@plt>
  mov    $0x0,%eax
  jmp    L139
L133:
  mov    -0x10(%rbp),%rax
  lea    D69(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L107
  mov    -0x18(%rbp),%rax
  mov    $0x800,%edx
  lea    D13(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncpy@plt>
  mov    $0x0,%eax
  jmp    L139
L107:
  mov    -0x10(%rbp),%rax
  lea    D131(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L50
  mov    -0x18(%rbp),%rax
  mov    $0x800,%edx
  lea    D13(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncpy@plt>
  mov    $0x0,%eax
  jmp    L139
L50:
  mov    -0x10(%rbp),%rax
  lea    D154(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L80
  mov    -0x18(%rbp),%rax
  mov    $0x800,%edx
  lea    D11(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncpy@plt>
  mov    $0x0,%eax
  jmp    L139
L80:
  mov    -0x10(%rbp),%rax
  lea    D149(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L166
  mov    -0x18(%rbp),%rax
  mov    $0x800,%edx
  lea    D11(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncpy@plt>
  mov    $0x0,%eax
  jmp    L139
L166:
  mov    -0x18(%rbp),%rax
  movb   $0x0,(%rax)
  mov    $0x1,%eax
L139:
  leave
  ret
```

tool_calls: name: read_data
arguments: data_tag: D116
datatype: string
name: read_data
arguments: data_tag: D123
datatype: string
name: read_data
arguments: data_tag: D104
datatype: string
name: read_data
arguments: data_tag: D87
datatype: string
name: read_data
arguments: data_tag: D11
datatype: string
name: read_data
arguments: data_tag: D29
datatype: string
name: read_data
arguments: data_tag: D21
datatype: string
name: read_data
arguments: data_tag: D115
datatype: string
name: read_data
arguments: data_tag: D126
datatype: string
name: read_data
arguments: data_tag: D39
datatype: string
name: read_data
arguments: data_tag: D69
datatype: string
name: read_data
arguments: data_tag: D13
datatype: string
name: read_data
arguments: data_tag: D131
datatype: string
name: read_data
arguments: data_tag: D154
datatype: string
name: read_data
arguments: data_tag: D149
datatype: string

tool: D116: model_grid_cell__row_index

tool: D123: count

tool: D104: model_grid_cell__column_index

tool: D87: cyclone__magnitude_of_velocity

tool: D11: meters second-1

tool: D29: cyclone__azimuth_angle_of_velocity

tool: D21: degrees

tool: D115: atmosphere_bottom_air__pressure

tool: D126: pascals

tool: D39: atmosphere_bottom_air__reference_pressure

tool: D69: cyclone_air_flow_max_speed__radius

tool: D13: meters

tool: D131: cyclone__radius

tool: D154: atmosphere_air_flow__east_component_of_velocity

tool: D149: atmosphere_air_flow__north_component_of_velocity

assistant: ```c
int Get_var_units(void *self, const char *name, char *units) {
  if (strcmp(name, "model_grid_cell__row_index") == 0) {
    strncpy(units, "count", (2048));
    return (0);
  } else if (strcmp(name, "model_grid_cell__column_index") == 0) {
    strncpy(units, "count", (2048));
    return (0);
  } else if (strcmp(name, "cyclone__magnitude_of_velocity") == 0) {
    strncpy(units, "meters second-1", (2048));
    return (0);
  } else if (strcmp(name, "cyclone__azimuth_angle_of_velocity") == 0) {
    strncpy(units, "degrees", (2048));
    return (0);
  } else if (strcmp(name, "atmosphere_bottom_air__pressure") == 0) {
    strncpy(units, "pascals", (2048));
    return (0);
  } else if (strcmp(name, "atmosphere_bottom_air__reference_pressure") == 0) {
    strncpy(units, "pascals", (2048));
    return (0);
  } else if (strcmp(name, "cyclone_air_flow_max_speed__radius") == 0) {
    strncpy(units, "meters", (2048));
    return (0);
  } else if (strcmp(name, "cyclone__radius") == 0) {
    strncpy(units, "meters", (2048));
    return (0);
  } else if (strcmp(name, "atmosphere_air_flow__east_component_of_velocity") == 0) {
    strncpy(units, "meters second-1", (2048));
    return (0);
  } else if (strcmp(name, "atmosphere_air_flow__north_component_of_velocity") == 0) {
    strncpy(units, "meters second-1", (2048));
    return (0);
  } else {
    units[0] = '\0';
    return (1);
  }
}
```