user: 请将这段汇编代码片段转换成等效的C代码:

```asm
<data_abort>:
  endbr64
  push   %r15
  mov    %rdi,%r15
  lea    D124(%rip),%rdi
  push   %r14
  mov    %rsi,%r14
  push   %r13
  mov    %rdx,%r13
  push   %r12
  mov    %rcx,%r12
  push   %rbp
  mov    %r9,%rbp
  push   %rbx
  sub    $0x58,%rsp
  mov    0xa0(%rsp),%rdx
  mov    0x90(%rsp),%rsi
  mov    %r8,0x48(%rsp)
  mov    0x98(%rsp),%rcx
  mov    0xa8(%rsp),%r11
  mov    0xb0(%rsp),%r10
  mov    0xb8(%rsp),%r9
  mov    %rdx,0x30(%rsp)
  mov    0xc0(%rsp),%rax
  mov    0xd0(%rsp),%rdx
  mov    %rsi,0x40(%rsp)
  mov    %rcx,0x38(%rsp)
  mov    0xc8(%rsp),%rbx
  mov    %r11,0x28(%rsp)
  mov    %r10,0x20(%rsp)
  mov    %r9,0x18(%rsp)
  mov    %rdx,0x10(%rsp)
  mov    %rax,0x8(%rsp)
  call   <uart0_write@plt>
  lea    D32(%rip),%rdi
  call   <uart0_write@plt>
  mov    %r15,%rdi
  call   <uart0_write_hex@plt>
  lea    D128(%rip),%rdi
  call   <uart0_write@plt>
  mov    %r14,%rdi
  call   <uart0_write_hex@plt>
  lea    D86(%rip),%rdi
  call   <uart0_write@plt>
  mov    %r13,%rdi
  call   <uart0_write_hex@plt>
  lea    D24(%rip),%rdi
  call   <uart0_write@plt>
  mov    %r12,%rdi
  call   <uart0_write_hex@plt>
  lea    D73(%rip),%rdi
  call   <uart0_write@plt>
  mov    %rbp,%rdi
  call   <uart0_write_hex@plt>
  lea    D120(%rip),%rdi
  call   <uart0_write@plt>
  mov    0x40(%rsp),%rdi
  call   <uart0_write_hex@plt>
  lea    D12(%rip),%rdi
  call   <uart0_write@plt>
  mov    0x38(%rsp),%rdi
  call   <uart0_write_hex@plt>
  lea    D77(%rip),%rdi
  call   <uart0_write@plt>
  mov    0x30(%rsp),%rdi
  call   <uart0_write_hex@plt>
  lea    D16(%rip),%rdi
  call   <uart0_write@plt>
  mov    0x28(%rsp),%rdi
  call   <uart0_write_hex@plt>
  lea    D82(%rip),%rdi
  call   <uart0_write@plt>
  mov    0x20(%rsp),%rdi
  call   <uart0_write_hex@plt>
  lea    D51(%rip),%rdi
  call   <uart0_write@plt>
  mov    0x18(%rsp),%rdi
  call   <uart0_write_hex@plt>
  lea    D68(%rip),%rdi
  call   <uart0_write@plt>
  mov    0x8(%rsp),%rdi
  call   <uart0_write_hex@plt>
  lea    D92(%rip),%rdi
  call   <uart0_write@plt>
  mov    %rbx,%rdi
  call   <uart0_write_hex@plt>
  lea    D8(%rip),%rdi
  call   <uart0_write@plt>
  mov    0x10(%rsp),%rdi
  call   <uart0_write_hex@plt>
  lea    D91(%rip),%rdi
  call   <uart0_write@plt>
  mov    0x48(%rsp),%rdi
  call   <uart0_write_hex@plt>
  add    $0x58,%rsp
  mov    $0x5dc,%edi
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  jmp    1090 <panic_blink@plt>
```

tool_calls: name: disassemble_data
arguments: tag: D124
type: string
name: disassemble_data
arguments: tag: D32
type: string
name: disassemble_data
arguments: tag: D128
type: string
name: disassemble_data
arguments: tag: D86
type: string
name: disassemble_data
arguments: tag: D24
type: string
name: disassemble_data
arguments: tag: D73
type: string
name: disassemble_data
arguments: tag: D120
type: string
name: disassemble_data
arguments: tag: D12
type: string
name: disassemble_data
arguments: tag: D77
type: string
name: disassemble_data
arguments: tag: D16
type: string
name: disassemble_data
arguments: tag: D82
type: string
name: disassemble_data
arguments: tag: D51
type: string
name: disassemble_data
arguments: tag: D68
type: string
name: disassemble_data
arguments: tag: D92
type: string
name: disassemble_data
arguments: tag: D8
type: string
name: disassemble_data
arguments: tag: D91
type: string

tool: D124: data abort!


tool: D32:  r0   

tool: D128:  r1   

tool: D86:  r2   

tool: D24:  r3   

tool: D73:  r4   

tool: D120:  r5   

tool: D12:  r6   

tool: D77:  r7   

tool: D16:  r8   

tool: D82:  r9   

tool: D51:  r10  

tool: D68:  r11  

tool: D92:  ip   

tool: D8:  pc   

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