user: Please show me the C implementation that matches the assembly code listed below:

```asm
<printRusage>:
  endbr64
  push   %rbp
  xor    %eax,%eax
  mov    %rdi,%rbp
  push   %rbx
  mov    %rsi,%rbx
  sub    $0x8,%rsp
  mov    0x40(%rsi),%ecx
  mov    0x44(%rsi),%edx
  lea    D0(%rip),%rsi
  call   <fprintf@plt>
  mov    0x38(%rbx),%ecx
  mov    0x3c(%rbx),%edx
  mov    %rbp,%rdi
  lea    D5(%rip),%rsi
  xor    %eax,%eax
  call   <fprintf@plt>
  mov    0x34(%rbx),%edx
  mov    %rbp,%rdi
  xor    %eax,%eax
  lea    D21(%rip),%rsi
  call   <fprintf@plt>
  mov    0x30(%rbx),%edx
  mov    %rbp,%rdi
  xor    %eax,%eax
  lea    D110(%rip),%rsi
  call   <fprintf@plt>
  mov    0x2c(%rbx),%edx
  mov    %rbp,%rdi
  xor    %eax,%eax
  lea    D31(%rip),%rsi
  call   <fprintf@plt>
  mov    0x28(%rbx),%edx
  mov    %rbp,%rdi
  xor    %eax,%eax
  lea    D88(%rip),%rsi
  call   <fprintf@plt>
  mov    0x24(%rbx),%edx
  mov    %rbp,%rdi
  xor    %eax,%eax
  lea    D107(%rip),%rsi
  call   <fprintf@plt>
  mov    0x20(%rbx),%edx
  mov    %rbp,%rdi
  xor    %eax,%eax
  lea    D133(%rip),%rsi
  call   <fprintf@plt>
  mov    0x1c(%rbx),%edx
  mov    %rbp,%rdi
  xor    %eax,%eax
  lea    D104(%rip),%rsi
  call   <fprintf@plt>
  mov    0x18(%rbx),%edx
  mov    %rbp,%rdi
  xor    %eax,%eax
  lea    D98(%rip),%rsi
  call   <fprintf@plt>
  mov    0x14(%rbx),%edx
  mov    %rbp,%rdi
  xor    %eax,%eax
  lea    D20(%rip),%rsi
  call   <fprintf@plt>
  mov    0x10(%rbx),%edx
  mov    %rbp,%rdi
  xor    %eax,%eax
  lea    D137(%rip),%rsi
  call   <fprintf@plt>
  mov    0xc(%rbx),%edx
  mov    %rbp,%rdi
  xor    %eax,%eax
  lea    D96(%rip),%rsi
  call   <fprintf@plt>
  mov    0x8(%rbx),%edx
  mov    %rbp,%rdi
  xor    %eax,%eax
  lea    D106(%rip),%rsi
  call   <fprintf@plt>
  mov    0x4(%rbx),%edx
  mov    %rbp,%rdi
  xor    %eax,%eax
  lea    D139(%rip),%rsi
  call   <fprintf@plt>
  mov    (%rbx),%edx
  xor    %eax,%eax
  add    $0x8,%rsp
  mov    %rbp,%rdi
  pop    %rbx
  lea    D157(%rip),%rsi
  pop    %rbp
  jmp    1050 <fprintf@plt>
```

tool_calls: name: disassemble_data
arguments: tag: D0
data_type: string
name: disassemble_data
arguments: tag: D5
data_type: string
name: disassemble_data
arguments: tag: D21
data_type: string
name: disassemble_data
arguments: tag: D110
data_type: string
name: disassemble_data
arguments: tag: D31
data_type: string
name: disassemble_data
arguments: tag: D88
data_type: string
name: disassemble_data
arguments: tag: D107
data_type: string
name: disassemble_data
arguments: tag: D133
data_type: string
name: disassemble_data
arguments: tag: D104
data_type: string
name: disassemble_data
arguments: tag: D98
data_type: string
name: disassemble_data
arguments: tag: D20
data_type: string
name: disassemble_data
arguments: tag: D137
data_type: string
name: disassemble_data
arguments: tag: D96
data_type: string
name: disassemble_data
arguments: tag: D106
data_type: string
name: disassemble_data
arguments: tag: D139
data_type: string
name: disassemble_data
arguments: tag: D157
data_type: string

tool: D0: ru_utime:%ld.%06ld


tool: D5: ru_stime:%ld.%06ld


tool: D21: ru_maxrss:%lu


tool: D110: ru_ixrss:%lu


tool: D31: ru_idrss:%lu


tool: D88: ru_isrss:%lu


tool: D107: ru_minflt:%lu


tool: D133: ru_maxflt:%lu


tool: D104: ru_nswap:%lu


tool: D98: ru_inblock:%lu


tool: D20: ru_oublock:%lu


tool: D137: ru_msgsnd:%lu


tool: D96: ru_msgrcv:%lu


tool: D106: ru_nsignals:%lu


tool: D139: ru_nvcsw:%lu


tool: D157: ru_nivcsw:%lu


assistant: ```c
void printRusage(FILE *out, struct rusage *stuff) {
  fprintf(out, "ru_utime:%ld.%06ld\n", stuff->ru_utime.tv_sec, stuff->ru_utime.tv_usec);
  fprintf(out, "ru_stime:%ld.%06ld\n", stuff->ru_stime.tv_sec, stuff->ru_stime.tv_usec);
  fprintf(out, "ru_maxrss:%lu\n", stuff->ru_maxrss);
  fprintf(out, "ru_ixrss:%lu\n", stuff->ru_ixrss);
  fprintf(out, "ru_idrss:%lu\n", stuff->ru_idrss);
  fprintf(out, "ru_isrss:%lu\n", stuff->ru_isrss);
  fprintf(out, "ru_minflt:%lu\n", stuff->ru_minflt);
  fprintf(out, "ru_maxflt:%lu\n", stuff->ru_majflt);
  fprintf(out, "ru_nswap:%lu\n", stuff->ru_nswap);
  fprintf(out, "ru_inblock:%lu\n", stuff->ru_inblock);
  fprintf(out, "ru_oublock:%lu\n", stuff->ru_oublock);
  fprintf(out, "ru_msgsnd:%lu\n", stuff->ru_msgsnd);
  fprintf(out, "ru_msgrcv:%lu\n", stuff->ru_msgrcv);
  fprintf(out, "ru_nsignals:%lu\n", stuff->ru_nsignals);
  fprintf(out, "ru_nvcsw:%lu\n", stuff->ru_nvcsw);
  fprintf(out, "ru_nivcsw:%lu\n", stuff->ru_nivcsw);
}
```