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

```asm
<exception_words>:
  endbr64
  push   %r15
  lea    D123(%rip),%r15
  push   %r14
  lea    D145(%rip),%r14
  push   %r13
  lea    D64(%rip),%r13
  push   %r12
  lea    D161(%rip),%r12
  push   %rbp
  lea    D163(%rip),%rbp
  push   %rbx
  mov    %rbp,%rdi
  lea    D251(%rip),%rbx
  sub    $0x8,%rsp
  call   <Variable@plt>
  lea    D114(%rip),%rdi
  call   <Colon@plt>
  lea    D259(%rip),%rdi
  call   <c@plt>
  mov    %r15,%rdi
  call   <c@plt>
  mov    %rbp,%rdi
  call   <c@plt>
  lea    D205(%rip),%r9
  mov    %r9,%rdi
  call   <c@plt>
  mov    %r15,%rdi
  call   <c@plt>
  lea    D179(%rip),%rdi
  call   <c@plt>
  mov    %rbp,%rdi
  call   <c@plt>
  mov    %rbx,%rdi
  call   <c@plt>
  lea    D221(%rip),%rdi
  call   <c@plt>
  mov    %r12,%rdi
  call   <c@plt>
  mov    %rbp,%rdi
  call   <c@plt>
  mov    %rbx,%rdi
  call   <c@plt>
  mov    %r12,%rdi
  call   <c@plt>
  mov    %r13,%rdi
  call   <c@plt>
  lea    D198(%rip),%rdi
  call   <c@plt>
  xor    %eax,%eax
  call   <End@plt>
  mov    %r14,%rdi
  call   <Colon@plt>
  lea    D37(%rip),%r8
  mov    %r8,%rdi
  call   <c@plt>
  lea    D152(%rip),%rdi
  call   <c@plt>
  xor    %eax,%eax
  call   <If@plt>
  mov    %r13,%rdi
  call   <c@plt>
  lea    D35(%rip),%rdi
  call   <c@plt>
  xor    %eax,%eax
  call   <Then@plt>
  mov    %rbp,%rdi
  call   <c@plt>
  lea    D205(%rip),%r9
  mov    %r9,%rdi
  call   <c@plt>
  lea    D188(%rip),%rdi
  call   <c@plt>
  mov    %r12,%rdi
  call   <c@plt>
  mov    %rbp,%rdi
  lea    D38(%rip),%rbp
  call   <c@plt>
  mov    %rbx,%rdi
  call   <c@plt>
  mov    %r12,%rdi
  call   <c@plt>
  mov    %rbp,%rdi
  call   <c@plt>
  mov    %r15,%rdi
  call   <c@plt>
  lea    D20(%rip),%rdi
  call   <c@plt>
  mov    %r13,%rdi
  call   <c@plt>
  mov    %r12,%rdi
  call   <c@plt>
  xor    %eax,%eax
  call   <End@plt>
  lea    D212(%rip),%rdi
  call   <Colon@plt>
  lea    D166(%rip),%rdi
  call   <c@plt>
  mov    %r14,%rdi
  call   <c@plt>
  xor    %eax,%eax
  call   <End@plt>
  lea    D216(%rip),%rdi
  call   <Colon@plt>
  lea    D275(%rip),%rdi
  call   <c@plt>
  lea    D37(%rip),%r8
  mov    %r8,%rdi
  call   <c@plt>
  lea    D108(%rip),%rdi
  call   <c@plt>
  lea    D49(%rip),%rdi
  call   <c@plt>
  lea    D214(%rip),%rdi
  call   <c@plt>
  lea    D88(%rip),%rdi
  call   <c@plt>
  mov    %rbp,%rdi
  call   <c@plt>
  xor    %eax,%eax
  call   <If@plt>
  mov    %r14,%rdi
  call   <c@plt>
  xor    %eax,%eax
  call   <Then@plt>
  mov    %r13,%rdi
  call   <c@plt>
  add    $0x8,%rsp
  xor    %eax,%eax
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  jmp    10a0 <End@plt>
```

tool_calls: name: disassemble_data
arguments: label: D123
data_type: string
name: disassemble_data
arguments: label: D145
data_type: string
name: disassemble_data
arguments: label: D64
data_type: string
name: disassemble_data
arguments: label: D161
data_type: string
name: disassemble_data
arguments: label: D163
data_type: string
name: disassemble_data
arguments: label: D251
data_type: string
name: disassemble_data
arguments: label: D114
data_type: string
name: disassemble_data
arguments: label: D259
data_type: string
name: disassemble_data
arguments: label: D205
data_type: string
name: disassemble_data
arguments: label: D179
data_type: string
name: disassemble_data
arguments: label: D221
data_type: string
name: disassemble_data
arguments: label: D198
data_type: string
name: disassemble_data
arguments: label: D37
data_type: string
name: disassemble_data
arguments: label: D152
data_type: string
name: disassemble_data
arguments: label: D35
data_type: string
name: disassemble_data
arguments: label: D188
data_type: string
name: disassemble_data
arguments: label: D38
data_type: string
name: disassemble_data
arguments: label: D20
data_type: string
name: disassemble_data
arguments: label: D212
data_type: string
name: disassemble_data
arguments: label: D166
data_type: string
name: disassemble_data
arguments: label: D216
data_type: string
name: disassemble_data
arguments: label: D275
data_type: string
name: disassemble_data
arguments: label: D108
data_type: string
name: disassemble_data
arguments: label: D49
data_type: string
name: disassemble_data
arguments: label: D214
data_type: string
name: disassemble_data
arguments: label: D88
data_type: string

tool: D123: >r

tool: D145: throw

tool: D64: drop

tool: D161: r>

tool: D163: 'exception

tool: D251: !

tool: D114: catch

tool: D259: sp@

tool: D205: @

tool: D179: rp@

tool: D221: execute

tool: D198: false

tool: D37: dup

tool: D152: 0=

tool: D35: exit

tool: D188: rp!

tool: D38: swap

tool: D20: sp!

tool: D212: abort

tool: D166: -1

tool: D216: (abort")

tool: D275: ip>

tool: D108: count

tool: D49: +

tool: D214: talign

tool: D88: >ip

assistant: ```c
void exception_words() {
  Variable("'exception");
  Colon("catch");
  c("sp@");
  c(">r");
  c("'exception");
  c("@");
  c(">r");
  c("rp@");
  c("'exception");
  c("!");
  c("execute");
  c("r>");
  c("'exception");
  c("!");
  c("r>");
  c("drop");
  c("false");
  End();
  Colon("throw");
  c("dup");
  c("0=");
  If();
  c("drop");
  c("exit");
  Then();
  c("'exception");
  c("@");
  c("rp!");
  c("r>");
  c("'exception");
  c("!");
  c("r>");
  c("swap");
  c(">r");
  c("sp!");
  c("drop");
  c("r>");
  End();
  Colon("abort");
  c("-1");
  c("throw");
  End();
  Colon("(abort\")");
  c("ip>");
  c("dup");
  c("count");
  c("+");
  c("talign");
  c(">ip");
  c("swap");
  If();
  c("throw");
  Then();
  c("drop");
  End();
}
```