user: What would the C source look like for the assembly code provided here:

```asm
<Platform_DisplayHaltCode>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x10,%rsp
  mov    %rdi,-0x8(%rbp)
  mov    -0x8(%rbp),%rax
  add    $0x14,%rax
  cmp    $0x13,%rax
  ja     L92
  lea    0x0(,%rax,4),%rdx
  lea    D12(%rip),%rax
  mov    (%rdx,%rax,1),%eax
  cltq
  lea    D12(%rip),%rdx
  add    %rdx,%rax
  notrack jmp *%rax
  mov    $0x12,%edx
  lea    D149(%rip),%rax
  mov    %rax,%rsi
  mov    $0x1,%edi
  call   <write@plt>
  jmp    L78
  mov    $0x13,%edx
  lea    D102(%rip),%rax
  mov    %rax,%rsi
  mov    $0x1,%edi
  call   <write@plt>
  jmp    L78
  mov    $0x30,%edx
  lea    D57(%rip),%rax
  mov    %rax,%rsi
  mov    $0x1,%edi
  call   <write@plt>
  jmp    L78
  mov    $0x2e,%edx
  lea    D0(%rip),%rax
  mov    %rax,%rsi
  mov    $0x1,%edi
  call   <write@plt>
  jmp    L78
  mov    $0x12,%edx
  lea    D76(%rip),%rax
  mov    %rax,%rsi
  mov    $0x1,%edi
  call   <write@plt>
  jmp    L78
  mov    $0x30,%edx
  lea    D106(%rip),%rax
  mov    %rax,%rsi
  mov    $0x1,%edi
  call   <write@plt>
  jmp    L78
  mov    $0x1f,%edx
  lea    D141(%rip),%rax
  mov    %rax,%rsi
  mov    $0x1,%edi
  call   <write@plt>
  jmp    L78
  mov    $0x13,%edx
  lea    D10(%rip),%rax
  mov    %rax,%rsi
  mov    $0x1,%edi
  call   <write@plt>
  jmp    L78
  mov    $0x3b,%edx
  lea    D39(%rip),%rax
  mov    %rax,%rsi
  mov    $0x1,%edi
  call   <write@plt>
  jmp    L78
  mov    $0xb,%edx
  lea    D156(%rip),%rax
  mov    %rax,%rsi
  mov    $0x1,%edi
  call   <write@plt>
  jmp    L78
  mov    $0x10,%edx
  lea    D25(%rip),%rax
  mov    %rax,%rsi
  mov    $0x1,%edi
  call   <write@plt>
  jmp    L78
  mov    $0xf,%edx
  lea    D24(%rip),%rax
  mov    %rax,%rsi
  mov    $0x1,%edi
  call   <write@plt>
  jmp    L78
  mov    $0x1e,%edx
  lea    D40(%rip),%rax
  mov    %rax,%rsi
  mov    $0x1,%edi
  call   <write@plt>
  jmp    L78
  mov    $0x1a,%edx
  lea    D53(%rip),%rax
  mov    %rax,%rsi
  mov    $0x1,%edi
  call   <write@plt>
  jmp    L78
  mov    $0x33,%edx
  lea    D173(%rip),%rax
  mov    %rax,%rsi
  mov    $0x1,%edi
  call   <write@plt>
  jmp    L78
  mov    $0x3b,%edx
  lea    D112(%rip),%rax
  mov    %rax,%rsi
  mov    $0x1,%edi
  call   <write@plt>
  jmp    L78
L92:
  nop
L78:
  nop
  leave
  ret
```

tool_calls: name: disassemble_data
arguments: data_tag: D149
type_guessed: string
name: disassemble_data
arguments: data_tag: D102
type_guessed: string
name: disassemble_data
arguments: data_tag: D57
type_guessed: string
name: disassemble_data
arguments: data_tag: D0
type_guessed: string
name: disassemble_data
arguments: data_tag: D76
type_guessed: string
name: disassemble_data
arguments: data_tag: D106
type_guessed: string
name: disassemble_data
arguments: data_tag: D141
type_guessed: string
name: disassemble_data
arguments: data_tag: D10
type_guessed: string
name: disassemble_data
arguments: data_tag: D39
type_guessed: string
name: disassemble_data
arguments: data_tag: D156
type_guessed: string
name: disassemble_data
arguments: data_tag: D25
type_guessed: string
name: disassemble_data
arguments: data_tag: D24
type_guessed: string
name: disassemble_data
arguments: data_tag: D40
type_guessed: string
name: disassemble_data
arguments: data_tag: D53
type_guessed: string
name: disassemble_data
arguments: data_tag: D173
type_guessed: string
name: disassemble_data
arguments: data_tag: D112
type_guessed: string

tool: D149: Assertion failure.

tool: D102: Index out of range.

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

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

tool: D76: Type guard failed.

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

tool: D141: Invalid case in WITH statement.

tool: D10: Value out of range.

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

tool: D156: NIL access.

tool: D25: Alignment error.

tool: D24: Divide by zero.

tool: D40: Arithmetic overflow/underflow.

tool: D53: Invalid function argument.

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

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

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;
  }
}
```