user: Please show me the C implementation that matches the assembly code listed below:

```asm
<sasl_errstring>:
  endbr64
  test   %rdx,%rdx
  je     L13
  lea    D194(%rip),%rax
  mov    %rax,(%rdx)
L13:
  add    $0x1c,%edi
  cmp    $0x1e,%edi
  ja     L14
  lea    D50(%rip),%rdx
  movslq (%rdx,%rdi,4),%rax
  add    %rdx,%rax
  notrack jmp *%rax
  lea    D196(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D125(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D186(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D97(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D8(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D227(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D33(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D161(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D159(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D177(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D68(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D141(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D142(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D98(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D91(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D283(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D160(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D187(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D181(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D315(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D126(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D110(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D268(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D153(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D273(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D101(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D310(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D114(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D276(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D282(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
L14:
  lea    D74(%rip),%rax
  ret
```

tool_calls: name: parse_data
arguments: data_label: D194
type_infered: string
name: parse_data
arguments: data_label: D196
type_infered: string
name: parse_data
arguments: data_label: D125
type_infered: string
name: parse_data
arguments: data_label: D186
type_infered: string
name: parse_data
arguments: data_label: D97
type_infered: string
name: parse_data
arguments: data_label: D8
type_infered: string
name: parse_data
arguments: data_label: D227
type_infered: string
name: parse_data
arguments: data_label: D33
type_infered: string
name: parse_data
arguments: data_label: D161
type_infered: string
name: parse_data
arguments: data_label: D159
type_infered: string
name: parse_data
arguments: data_label: D177
type_infered: string
name: parse_data
arguments: data_label: D68
type_infered: string
name: parse_data
arguments: data_label: D141
type_infered: string
name: parse_data
arguments: data_label: D142
type_infered: string
name: parse_data
arguments: data_label: D98
type_infered: string
name: parse_data
arguments: data_label: D91
type_infered: string
name: parse_data
arguments: data_label: D283
type_infered: string
name: parse_data
arguments: data_label: D160
type_infered: string
name: parse_data
arguments: data_label: D187
type_infered: string
name: parse_data
arguments: data_label: D181
type_infered: string
name: parse_data
arguments: data_label: D315
type_infered: string
name: parse_data
arguments: data_label: D126
type_infered: string
name: parse_data
arguments: data_label: D110
type_infered: string
name: parse_data
arguments: data_label: D268
type_infered: string
name: parse_data
arguments: data_label: D153
type_infered: string
name: parse_data
arguments: data_label: D273
type_infered: string
name: parse_data
arguments: data_label: D101
type_infered: string
name: parse_data
arguments: data_label: D310
type_infered: string
name: parse_data
arguments: data_label: D114
type_infered: string
name: parse_data
arguments: data_label: D276
type_infered: string
name: parse_data
arguments: data_label: D282
type_infered: string
name: parse_data
arguments: data_label: D74
type_infered: string

tool: D194: en-us

tool: D196: another step is needed in authentication

tool: D125: successful result

tool: D186: generic failure

tool: D97: no memory available

tool: D8: overflowed buffer

tool: D227: no mechanism available

tool: D33: bad protocol / cancel

tool: D161: can't request info until later in exchange

tool: D159: invalid parameter supplied

tool: D177: transient failure (e.g., weak key)

tool: D68: integrity check failed

tool: D141: server failed mutual authentication step

tool: D142: mechanism doesn't support requested feature

tool: D98: SASL library not initialized

tool: D91: authentication failure

tool: D283: authorization failure

tool: D160: mechanism too weak for this user

tool: D187: encryption needed to use mechanism

tool: D181: One time use of a plaintext password will enable requested mechanism for user

tool: D315: passphrase expired, has to be reset

tool: D126: account disabled

tool: D110: user not found

tool: D268: passphrase locked

tool: D153: requested change was not needed

tool: D273: version mismatch with plug-in

tool: D101: remote authentication server unavailable

tool: D310: user exists, but no verifier for user

tool: D114: passphrase is too weak for security policy

tool: D276: user supplied passwords are not permitted

tool: D282: needs user interaction

tool: D74: undefined error!

assistant: ```c
const char *sasl_errstring(int saslerr, const char *langlist __attribute__((unused)), const char **outlang) {
  if (outlang)
    *outlang = "en-us";
  switch (saslerr) {
  case 1:
    return "another step is needed in authentication";
  case 0:
    return "successful result";
  case -1:
    return "generic failure";
  case -2:
    return "no memory available";
  case -3:
    return "overflowed buffer";
  case -4:
    return "no mechanism available";
  case -5:
    return "bad protocol / cancel";
  case -6:
    return "can't request info until later in exchange";
  case -7:
    return "invalid parameter supplied";
  case -8:
    return "transient failure (e.g., weak key)";
  case -9:
    return "integrity check failed";
  case -12:
    return "SASL library not initialized";
  case 2:
    return "needs user interaction";
  case -10:
    return "server failed mutual authentication step";
  case -11:
    return "mechanism doesn't support requested feature";
  case -13:
    return "authentication failure";
  case -14:
    return "authorization failure";
  case -15:
    return "mechanism too weak for this user";
  case -16:
    return "encryption needed to use mechanism";
  case -17:
    return "One time use of a plaintext password will enable requested mechanism for user";
  case -18:
    return "passphrase expired, has to be reset";
  case -19:
    return "account disabled";
  case -20:
    return "user not found";
  case -23:
    return "version mismatch with plug-in";
  case -24:
    return "remote authentication server unavailable";
  case -26:
    return "user exists, but no verifier for user";
  case -21:
    return "passphrase locked";
  case -22:
    return "requested change was not needed";
  case -27:
    return "passphrase is too weak for security policy";
  case -28:
    return "user supplied passwords are not permitted";
  default:
    return "undefined error!";
  }
}
```