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

```asm
<exception_words>:
  endbr64
  push   %r15
  lea    D199(%rip),%r15
  push   %r14
  lea    D158(%rip),%r14
  push   %r13
  lea    D216(%rip),%r13
  push   %r12
  lea    D11(%rip),%r12
  push   %rbp
  lea    D138(%rip),%rbp
  push   %rbx
  mov    %rbp,%rdi
  lea    D172(%rip),%rbx
  sub    $0x8,%rsp
  call   <Variable@plt>
  lea    D278(%rip),%rdi
  call   <Colon@plt>
  lea    D48(%rip),%rdi
  call   <c@plt>
  mov    %r15,%rdi
  call   <c@plt>
  mov    %rbp,%rdi
  call   <c@plt>
  lea    D195(%rip),%r9
  mov    %r9,%rdi
  call   <c@plt>
  mov    %r15,%rdi
  call   <c@plt>
  lea    D67(%rip),%rdi
  call   <c@plt>
  mov    %rbp,%rdi
  call   <c@plt>
  mov    %rbx,%rdi
  call   <c@plt>
  lea    D236(%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    D265(%rip),%rdi
  call   <c@plt>
  xor    %eax,%eax
  call   <End@plt>
  mov    %r14,%rdi
  call   <Colon@plt>
  lea    D119(%rip),%r8
  mov    %r8,%rdi
  call   <c@plt>
  lea    D35(%rip),%rdi
  call   <c@plt>
  xor    %eax,%eax
  call   <If@plt>
  mov    %r13,%rdi
  call   <c@plt>
  lea    D183(%rip),%rdi
  call   <c@plt>
  xor    %eax,%eax
  call   <Then@plt>
  mov    %rbp,%rdi
  call   <c@plt>
  lea    D195(%rip),%r9
  mov    %r9,%rdi
  call   <c@plt>
  lea    D101(%rip),%rdi
  call   <c@plt>
  mov    %r12,%rdi
  call   <c@plt>
  mov    %rbp,%rdi
  lea    D233(%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    D50(%rip),%rdi
  call   <c@plt>
  mov    %r13,%rdi
  call   <c@plt>
  mov    %r12,%rdi
  call   <c@plt>
  xor    %eax,%eax
  call   <End@plt>
  lea    D139(%rip),%rdi
  call   <Colon@plt>
  lea    D237(%rip),%rdi
  call   <c@plt>
  mov    %r14,%rdi
  call   <c@plt>
  xor    %eax,%eax
  call   <End@plt>
  lea    D154(%rip),%rdi
  call   <Colon@plt>
  lea    D109(%rip),%rdi
  call   <c@plt>
  lea    D119(%rip),%r8
  mov    %r8,%rdi
  call   <c@plt>
  lea    D33(%rip),%rdi
  call   <c@plt>
  lea    D207(%rip),%rdi
  call   <c@plt>
  lea    D60(%rip),%rdi
  call   <c@plt>
  lea    D3(%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: parse_data
arguments: label: D199
type_guessed: string
name: parse_data
arguments: label: D158
type_guessed: string
name: parse_data
arguments: label: D216
type_guessed: string
name: parse_data
arguments: label: D11
type_guessed: string
name: parse_data
arguments: label: D138
type_guessed: string
name: parse_data
arguments: label: D172
type_guessed: string
name: parse_data
arguments: label: D278
type_guessed: string
name: parse_data
arguments: label: D48
type_guessed: string
name: parse_data
arguments: label: D195
type_guessed: string
name: parse_data
arguments: label: D67
type_guessed: string
name: parse_data
arguments: label: D236
type_guessed: string
name: parse_data
arguments: label: D265
type_guessed: string
name: parse_data
arguments: label: D119
type_guessed: string
name: parse_data
arguments: label: D35
type_guessed: string
name: parse_data
arguments: label: D183
type_guessed: string
name: parse_data
arguments: label: D101
type_guessed: string
name: parse_data
arguments: label: D233
type_guessed: string
name: parse_data
arguments: label: D50
type_guessed: string
name: parse_data
arguments: label: D139
type_guessed: string
name: parse_data
arguments: label: D237
type_guessed: string
name: parse_data
arguments: label: D154
type_guessed: string
name: parse_data
arguments: label: D109
type_guessed: string
name: parse_data
arguments: label: D33
type_guessed: string
name: parse_data
arguments: label: D207
type_guessed: string
name: parse_data
arguments: label: D60
type_guessed: string
name: parse_data
arguments: label: D3
type_guessed: string

tool: D199: >r

tool: D158: throw

tool: D216: drop

tool: D11: r>

tool: D138: 'exception

tool: D172: !

tool: D278: catch

tool: D48: sp@

tool: D195: @

tool: D67: rp@

tool: D236: execute

tool: D265: false

tool: D119: dup

tool: D35: 0=

tool: D183: exit

tool: D101: rp!

tool: D233: swap

tool: D50: sp!

tool: D139: abort

tool: D237: -1

tool: D154: (abort")

tool: D109: ip>

tool: D33: count

tool: D207: +

tool: D60: talign

tool: D3: >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();
}
```