user: 下面的汇编指令对应的C源代码是什么：

```asm
<data_abort>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x30,%rsp
  mov    %rdi,-0x8(%rbp)
  mov    %rsi,-0x10(%rbp)
  mov    %rdx,-0x18(%rbp)
  mov    %rcx,-0x20(%rbp)
  mov    %r8,-0x28(%rbp)
  mov    %r9,-0x30(%rbp)
  lea    D77(%rip),%rax
  mov    %rax,%rdi
  call   <uart0_write@plt>
  lea    D52(%rip),%rax
  mov    %rax,%rdi
  call   <uart0_write@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rdi
  call   <uart0_write_hex@plt>
  lea    D141(%rip),%rax
  mov    %rax,%rdi
  call   <uart0_write@plt>
  mov    -0x10(%rbp),%rax
  mov    %rax,%rdi
  call   <uart0_write_hex@plt>
  lea    D153(%rip),%rax
  mov    %rax,%rdi
  call   <uart0_write@plt>
  mov    -0x18(%rbp),%rax
  mov    %rax,%rdi
  call   <uart0_write_hex@plt>
  lea    D40(%rip),%rax
  mov    %rax,%rdi
  call   <uart0_write@plt>
  mov    -0x20(%rbp),%rax
  mov    %rax,%rdi
  call   <uart0_write_hex@plt>
  lea    D80(%rip),%rax
  mov    %rax,%rdi
  call   <uart0_write@plt>
  mov    -0x30(%rbp),%rax
  mov    %rax,%rdi
  call   <uart0_write_hex@plt>
  lea    D65(%rip),%rax
  mov    %rax,%rdi
  call   <uart0_write@plt>
  mov    0x10(%rbp),%rdi
  call   <uart0_write_hex@plt>
  lea    D59(%rip),%rax
  mov    %rax,%rdi
  call   <uart0_write@plt>
  mov    0x18(%rbp),%rax
  mov    %rax,%rdi
  call   <uart0_write_hex@plt>
  lea    D33(%rip),%rax
  mov    %rax,%rdi
  call   <uart0_write@plt>
  mov    0x20(%rbp),%rax
  mov    %rax,%rdi
  call   <uart0_write_hex@plt>
  lea    D18(%rip),%rax
  mov    %rax,%rdi
  call   <uart0_write@plt>
  mov    0x28(%rbp),%rax
  mov    %rax,%rdi
  call   <uart0_write_hex@plt>
  lea    D21(%rip),%rax
  mov    %rax,%rdi
  call   <uart0_write@plt>
  mov    0x30(%rbp),%rax
  mov    %rax,%rdi
  call   <uart0_write_hex@plt>
  lea    D42(%rip),%rax
  mov    %rax,%rdi
  call   <uart0_write@plt>
  mov    0x38(%rbp),%rax
  mov    %rax,%rdi
  call   <uart0_write_hex@plt>
  lea    D133(%rip),%rax
  mov    %rax,%rdi
  call   <uart0_write@plt>
  mov    0x40(%rbp),%rax
  mov    %rax,%rdi
  call   <uart0_write_hex@plt>
  lea    D123(%rip),%rax
  mov    %rax,%rdi
  call   <uart0_write@plt>
  mov    0x48(%rbp),%rax
  mov    %rax,%rdi
  call   <uart0_write_hex@plt>
  lea    D53(%rip),%rax
  mov    %rax,%rdi
  call   <uart0_write@plt>
  mov    0x50(%rbp),%rax
  mov    %rax,%rdi
  call   <uart0_write_hex@plt>
  lea    D67(%rip),%rax
  mov    %rax,%rdi
  call   <uart0_write@plt>
  mov    -0x28(%rbp),%rax
  mov    %rax,%rdi
  call   <uart0_write_hex@plt>
  mov    $0x5dc,%edi
  call   <panic_blink@plt>
  nop
  leave
  ret
```

tool_calls: name: retrieve_data
arguments: data_label: D77
data_type: string
name: retrieve_data
arguments: data_label: D52
data_type: string
name: retrieve_data
arguments: data_label: D141
data_type: string
name: retrieve_data
arguments: data_label: D153
data_type: string
name: retrieve_data
arguments: data_label: D40
data_type: string
name: retrieve_data
arguments: data_label: D80
data_type: string
name: retrieve_data
arguments: data_label: D65
data_type: string
name: retrieve_data
arguments: data_label: D59
data_type: string
name: retrieve_data
arguments: data_label: D33
data_type: string
name: retrieve_data
arguments: data_label: D18
data_type: string
name: retrieve_data
arguments: data_label: D21
data_type: string
name: retrieve_data
arguments: data_label: D42
data_type: string
name: retrieve_data
arguments: data_label: D133
data_type: string
name: retrieve_data
arguments: data_label: D123
data_type: string
name: retrieve_data
arguments: data_label: D53
data_type: string
name: retrieve_data
arguments: data_label: D67
data_type: string

tool: D77: data abort!


tool: D52:  r0   

tool: D141:  r1   

tool: D153:  r2   

tool: D40:  r3   

tool: D80:  r4   

tool: D65:  r5   

tool: D59:  r6   

tool: D33:  r7   

tool: D18:  r8   

tool: D21:  r9   

tool: D42:  r10  

tool: D133:  r11  

tool: D123:  ip   

tool: D53:  pc   

tool: D67:  cpsr 

assistant: ```c
void data_abort(long r_0, long r_1, long r_2, long r_3, long spsr, long r_4, long r_5, long r_6, long r_7, long r_8, long r_9, long r_10, long r_11, long r_12, long prev_pc) {
  uart0_write("data abort!\r\n");
  uart0_write(" r0   ");
  uart0_write_hex(r_0);
  uart0_write(" r1   ");
  uart0_write_hex(r_1);
  uart0_write(" r2   ");
  uart0_write_hex(r_2);
  uart0_write(" r3   ");
  uart0_write_hex(r_3);
  uart0_write(" r4   ");
  uart0_write_hex(r_4);
  uart0_write(" r5   ");
  uart0_write_hex(r_5);
  uart0_write(" r6   ");
  uart0_write_hex(r_6);
  uart0_write(" r7   ");
  uart0_write_hex(r_7);
  uart0_write(" r8   ");
  uart0_write_hex(r_8);
  uart0_write(" r9   ");
  uart0_write_hex(r_9);
  uart0_write(" r10  ");
  uart0_write_hex(r_10);
  uart0_write(" r11  ");
  uart0_write_hex(r_11);
  uart0_write(" ip   ");
  uart0_write_hex(r_12);
  uart0_write(" pc   ");
  uart0_write_hex(prev_pc);
  uart0_write(" cpsr ");
  uart0_write_hex(spsr);
  panic_blink(1500);
}
```