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

```asm
<reb_string_for_particle_error>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  mov    %edi,-0x4(%rbp)
  cmpl   $0x1,-0x4(%rbp)
  jne    L220
  lea    D121(%rip),%rax
  jmp    L6
L220:
  cmpl   $0x2,-0x4(%rbp)
  jne    L271
  lea    D58(%rip),%rax
  jmp    L6
L271:
  cmpl   $0x3,-0x4(%rbp)
  jne    L192
  lea    D61(%rip),%rax
  jmp    L6
L192:
  cmpl   $0x4,-0x4(%rbp)
  jne    L276
  lea    D136(%rip),%rax
  jmp    L6
L276:
  cmpl   $0x5,-0x4(%rbp)
  jne    L65
  lea    D105(%rip),%rax
  jmp    L6
L65:
  cmpl   $0x6,-0x4(%rbp)
  jne    L236
  lea    D71(%rip),%rax
  jmp    L6
L236:
  cmpl   $0x7,-0x4(%rbp)
  jne    L267
  lea    D130(%rip),%rax
  jmp    L6
L267:
  cmpl   $0x8,-0x4(%rbp)
  jne    L52
  lea    D36(%rip),%rax
  jmp    L6
L52:
  cmpl   $0x9,-0x4(%rbp)
  jne    L132
  lea    D110(%rip),%rax
  jmp    L6
L132:
  cmpl   $0xa,-0x4(%rbp)
  jne    L113
  lea    D57(%rip),%rax
  jmp    L6
L113:
  cmpl   $0xb,-0x4(%rbp)
  jne    L231
  lea    D129(%rip),%rax
  jmp    L6
L231:
  cmpl   $0xc,-0x4(%rbp)
  jne    L60
  lea    D40(%rip),%rax
  jmp    L6
L60:
  cmpl   $0xd,-0x4(%rbp)
  jne    L272
  lea    D18(%rip),%rax
  jmp    L6
L272:
  cmpl   $0xe,-0x4(%rbp)
  jne    L26
  lea    D123(%rip),%rax
  jmp    L6
L26:
  lea    D5(%rip),%rax
L6:
  pop    %rbp
  ret
```

tool_calls: name: retrieve_data
arguments: data_tag: D121
type_infered: string
name: retrieve_data
arguments: data_tag: D58
type_infered: string
name: retrieve_data
arguments: data_tag: D61
type_infered: string
name: retrieve_data
arguments: data_tag: D136
type_infered: string
name: retrieve_data
arguments: data_tag: D105
type_infered: string
name: retrieve_data
arguments: data_tag: D71
type_infered: string
name: retrieve_data
arguments: data_tag: D130
type_infered: string
name: retrieve_data
arguments: data_tag: D36
type_infered: string
name: retrieve_data
arguments: data_tag: D110
type_infered: string
name: retrieve_data
arguments: data_tag: D57
type_infered: string
name: retrieve_data
arguments: data_tag: D129
type_infered: string
name: retrieve_data
arguments: data_tag: D40
type_infered: string
name: retrieve_data
arguments: data_tag: D18
type_infered: string
name: retrieve_data
arguments: data_tag: D123
type_infered: string
name: retrieve_data
arguments: data_tag: D5
type_infered: string

tool: D121: Cannot set e exactly to 1.

tool: D58: Eccentricity must be greater than or equal to zero.

tool: D61: Bound orbit (a > 0) must have e < 1.

tool: D136: Unbound orbit (a < 0) must have e > 1.

tool: D105: Unbound orbit can't have f beyond the range allowed by the asymptotes set by the hyperbola.

tool: D71: Primary has no mass.

tool: D130: Cannot mix Pal coordinates (h,k,ix,iy) with certain orbital elements (e, inc, Omega, omega, pomega, f, M, E, theta, T). Use longitude l to indicate the phase.

tool: D36: Cannot pass cartesian coordinates and orbital elements (incl primary) at the same time.

tool: D110: Need to pass reb_simulation object when initializing particle with orbital elements.

tool: D57: Need to pass either semi-major axis or orbital period to initialize particle using orbital elements.

tool: D129: Need to pass either semi-major axis or orbital period, but not both.

tool: D40: (ix, iy) coordinates are not valid. Squared sum exceeds 4.

tool: D18: Cannot pass both (omega, pomega) together.

tool: D123: Can only pass one longitude/anomaly in the set (f, M, E, l, theta, T).

tool: D5: An unknown error occured during reb_add_fmt().

assistant: ```c
const char *reb_string_for_particle_error(int err) {
  if (err == 1)
    return "Cannot set e exactly to 1.";
  if (err == 2)
    return "Eccentricity must be greater than or equal to zero.";
  if (err == 3)
    return "Bound orbit (a > 0) must have e < 1.";
  if (err == 4)
    return "Unbound orbit (a < 0) must have e > 1.";
  if (err == 5)
    return "Unbound orbit can't have f beyond the range allowed by the asymptotes set by the hyperbola.";
  if (err == 6)
    return "Primary has no mass.";
  if (err == 7)
    return "Cannot mix Pal coordinates (h,k,ix,iy) with certain orbital elements (e, inc, Omega, omega, pomega, f, M, E, theta, T). Use longitude l to indicate the phase.";
  if (err == 8)
    return "Cannot pass cartesian coordinates and orbital elements (incl primary) at the same time.";
  if (err == 9)
    return "Need to pass reb_simulation object when initializing particle with orbital elements.";
  if (err == 10)
    return "Need to pass either semi-major axis or orbital period to initialize particle using orbital elements.";
  if (err == 11)
    return "Need to pass either semi-major axis or orbital period, but not both.";
  if (err == 12)
    return "(ix, iy) coordinates are not valid. Squared sum exceeds 4.";
  if (err == 13)
    return "Cannot pass both (omega, pomega) together.";
  if (err == 14)
    return "Can only pass one longitude/anomaly in the set (f, M, E, l, theta, T).";
  return "An unknown error occured during reb_add_fmt().";
}
```