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

```asm
<Platform_DisplayHaltCode>:
  endbr64
  lea    0x14(%rdi),%rax
  cmp    $0xffffffffffffffec,%rdi
  jb     L0
  lea    D13(%rip),%rdx
  movslq (%rdx,%rax,4),%rax
  add    %rdx,%rax
  notrack jmp *%rax
  nop
L0:
  ret
  nopl   0x0(%rax)
  mov    $0x3b,%edx
  lea    D143(%rip),%rsi
  mov    $0x1,%edi
  jmp    1050 <write@plt>
  xchg   %ax,%ax
  mov    $0x33,%edx
  lea    D110(%rip),%rsi
  mov    $0x1,%edi
  jmp    1050 <write@plt>
  cs nopw 0x0(%rax,%rax,1)
  mov    $0x1a,%edx
  lea    D37(%rip),%rsi
  mov    $0x1,%edi
  jmp    1050 <write@plt>
  cs nopw 0x0(%rax,%rax,1)
  mov    $0x1e,%edx
  lea    D58(%rip),%rsi
  mov    $0x1,%edi
  jmp    1050 <write@plt>
  cs nopw 0x0(%rax,%rax,1)
  mov    $0xf,%edx
  lea    D54(%rip),%rsi
  mov    $0x1,%edi
  jmp    1050 <write@plt>
  cs nopw 0x0(%rax,%rax,1)
  mov    $0x10,%edx
  lea    D164(%rip),%rsi
  mov    $0x1,%edi
  jmp    1050 <write@plt>
  cs nopw 0x0(%rax,%rax,1)
  mov    $0xb,%edx
  lea    D80(%rip),%rsi
  mov    $0x1,%edi
  jmp    1050 <write@plt>
  cs nopw 0x0(%rax,%rax,1)
  mov    $0x3b,%edx
  lea    D89(%rip),%rsi
  mov    $0x1,%edi
  jmp    1050 <write@plt>
  cs nopw 0x0(%rax,%rax,1)
  mov    $0x13,%edx
  lea    D28(%rip),%rsi
  mov    $0x1,%edi
  jmp    1050 <write@plt>
  cs nopw 0x0(%rax,%rax,1)
  mov    $0x1f,%edx
  lea    D112(%rip),%rsi
  mov    $0x1,%edi
  jmp    1050 <write@plt>
  cs nopw 0x0(%rax,%rax,1)
  mov    $0x30,%edx
  lea    D159(%rip),%rsi
  mov    $0x1,%edi
  jmp    1050 <write@plt>
  cs nopw 0x0(%rax,%rax,1)
  mov    $0x12,%edx
  lea    D167(%rip),%rsi
  mov    $0x1,%edi
  jmp    1050 <write@plt>
  cs nopw 0x0(%rax,%rax,1)
  mov    $0x2e,%edx
  lea    D130(%rip),%rsi
  mov    $0x1,%edi
  jmp    1050 <write@plt>
  cs nopw 0x0(%rax,%rax,1)
  mov    $0x30,%edx
  lea    D126(%rip),%rsi
  mov    $0x1,%edi
  jmp    1050 <write@plt>
  cs nopw 0x0(%rax,%rax,1)
  mov    $0x13,%edx
  lea    D26(%rip),%rsi
  mov    $0x1,%edi
  jmp    1050 <write@plt>
  cs nopw 0x0(%rax,%rax,1)
  mov    $0x12,%edx
  lea    D113(%rip),%rsi
  mov    $0x1,%edi
  jmp    1050 <write@plt>
```

tool_calls: name: unpack_data
arguments: tag: D143
type: string
name: unpack_data
arguments: tag: D110
type: string
name: unpack_data
arguments: tag: D37
type: string
name: unpack_data
arguments: tag: D58
type: string
name: unpack_data
arguments: tag: D54
type: string
name: unpack_data
arguments: tag: D164
type: string
name: unpack_data
arguments: tag: D80
type: string
name: unpack_data
arguments: tag: D89
type: string
name: unpack_data
arguments: tag: D28
type: string
name: unpack_data
arguments: tag: D112
type: string
name: unpack_data
arguments: tag: D159
type: string
name: unpack_data
arguments: tag: D167
type: string
name: unpack_data
arguments: tag: D130
type: string
name: unpack_data
arguments: tag: D126
type: string
name: unpack_data
arguments: tag: D26
type: string
name: unpack_data
arguments: tag: D113
type: string

tool: D143: Too many, or negative number of, elements in dynamic array.

tool: D110: Internal error, e.g. Type descriptor size mismatch.

tool: D37: Invalid function argument.

tool: D58: Arithmetic overflow/underflow.

tool: D54: Divide by zero.

tool: D164: Alignment error.

tool: D80: NIL access.

tool: D89: Heap interrupted while locked, but lockdepth = 0 at unlock.

tool: D28: Value out of range.

tool: D112: Invalid case in WITH statement.

tool: D159: Implicit type guard in record assignment failed.

tool: D167: Type guard failed.

tool: D130: CASE statement: no matching label and no ELSE.

tool: D126: Reached end of function without reaching RETURN.

tool: D26: Index out of range.

tool: D113: Assertion failure.

assistant: ```c
void Platform_DisplayHaltCode(long long code) {
  switch (code) {
  case -1:
    write(1, (unsigned char *)"Assertion failure.", (long long)19 - 1);
    break;
  case -2:
    write(1, (unsigned char *)"Index out of range.", (long long)20 - 1);
    break;
  case -3:
    write(1, (unsigned char *)"Reached end of function without reaching RETURN.", (long long)49 - 1);
    break;
  case -4:
    write(1, (unsigned char *)"CASE statement: no matching label and no ELSE.", (long long)47 - 1);
    break;
  case -5:
    write(1, (unsigned char *)"Type guard failed.", (long long)19 - 1);
    break;
  case -6:
    write(1, (unsigned char *)"Implicit type guard in record assignment failed.", (long long)49 - 1);
    break;
  case -7:
    write(1, (unsigned char *)"Invalid case in WITH statement.", (long long)32 - 1);
    break;
  case -8:
    write(1, (unsigned char *)"Value out of range.", (long long)20 - 1);
    break;
  case -9:
    write(1, (unsigned char *)"Heap interrupted while locked, but lockdepth = 0 at unlock.", (long long)60 - 1);
    break;
  case -10:
    write(1, (unsigned char *)"NIL access.", (long long)12 - 1);
    break;
  case -11:
    write(1, (unsigned char *)"Alignment error.", (long long)17 - 1);
    break;
  case -12:
    write(1, (unsigned char *)"Divide by zero.", (long long)16 - 1);
    break;
  case -13:
    write(1, (unsigned char *)"Arithmetic overflow/underflow.", (long long)31 - 1);
    break;
  case -14:
    write(1, (unsigned char *)"Invalid function argument.", (long long)27 - 1);
    break;
  case -15:
    write(1, (unsigned char *)"Internal error, e.g. Type descriptor size mismatch.", (long long)52 - 1);
    break;
  case -20:
    write(1, (unsigned char *)"Too many, or negative number of, elements in dynamic array.", (long long)60 - 1);
    break;
  default:
    break;
  }
}
```