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

```asm
<print_mxcsr>:
  endbr64
  push   %r13
  mov    %esi,%edx
  xor    %eax,%eax
  lea    D77(%rip),%r13
  push   %r12
  lea    D71(%rip),%r12
  push   %rbp
  mov    %rdi,%rbp
  push   %rbx
  mov    %esi,%ebx
  lea    D90(%rip),%rsi
  sub    $0x8,%rsp
  call   <fprintf@plt>
  mov    %rbp,%rcx
  mov    $0xd,%edx
  mov    $0x1,%esi
  lea    D50(%rip),%rdi
  call   <fwrite@plt>
  test   $0x80,%bh
  mov    %r13,%rdx
  mov    %rbp,%rdi
  cmovne %r12,%rdx
  lea    D44(%rip),%rsi
  xor    %eax,%eax
  call   <fprintf@plt>
  test   $0x40,%bl
  mov    %r13,%rdx
  mov    %rbp,%rdi
  cmovne %r12,%rdx
  lea    D54(%rip),%rsi
  xor    %eax,%eax
  call   <fprintf@plt>
  mov    %ebx,%esi
  mov    %rbp,%rdi
  call   <print_mxcsr_exception_flags@plt>
  mov    %rbp,%rcx
  mov    $0x10,%edx
  mov    $0x1,%esi
  lea    D79(%rip),%rdi
  call   <fwrite@plt>
  test   $0x10,%bh
  mov    %r13,%rdx
  mov    %rbp,%rdi
  cmovne %r12,%rdx
  lea    D53(%rip),%rsi
  xor    %eax,%eax
  call   <fprintf@plt>
  test   $0x8,%bh
  mov    %r13,%rdx
  mov    %rbp,%rdi
  cmovne %r12,%rdx
  lea    D26(%rip),%rsi
  xor    %eax,%eax
  call   <fprintf@plt>
  test   $0x4,%bh
  mov    %r13,%rdx
  mov    %rbp,%rdi
  cmovne %r12,%rdx
  lea    D25(%rip),%rsi
  xor    %eax,%eax
  call   <fprintf@plt>
  test   $0x2,%bh
  mov    %r13,%rdx
  mov    %rbp,%rdi
  cmovne %r12,%rdx
  lea    D64(%rip),%rsi
  xor    %eax,%eax
  call   <fprintf@plt>
  test   $0x1,%bh
  mov    %r13,%rdx
  mov    %rbp,%rdi
  cmovne %r12,%rdx
  lea    D48(%rip),%rsi
  xor    %eax,%eax
  call   <fprintf@plt>
  and    $0x80,%ebx
  mov    %r13,%rdx
  mov    %rbp,%rdi
  cmovne %r12,%rdx
  add    $0x8,%rsp
  lea    D104(%rip),%rsi
  xor    %eax,%eax
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  jmp    1080 <fprintf@plt>
```

tool_calls: name: unpack_data
arguments: tag: D77
type: string
name: unpack_data
arguments: tag: D71
type: string
name: unpack_data
arguments: tag: D90
type: string
name: unpack_data
arguments: tag: D50
type: string
name: unpack_data
arguments: tag: D44
type: string
name: unpack_data
arguments: tag: D54
type: string
name: unpack_data
arguments: tag: D79
type: string
name: unpack_data
arguments: tag: D53
type: string
name: unpack_data
arguments: tag: D26
type: string
name: unpack_data
arguments: tag: D25
type: string
name: unpack_data
arguments: tag: D64
type: string
name: unpack_data
arguments: tag: D48
type: string
name: unpack_data
arguments: tag: D104
type: string

tool: D77: no

tool: D71: yes

tool: D90: value: %04x


tool: D50: Calculations


tool: D44: * flush to zero     : %s


tool: D54: * denormals are zero: %s


tool: D79: Exception masks


tool: D53: * precision         : %s


tool: D26: * underflow         : %s


tool: D25: * overflow          : %s


tool: D64: * divide by zero    : %s


tool: D48: * denormal          : %s


tool: D104: * invalid operation : %s


assistant: ```c
void print_mxcsr(FILE *f, const uint32_t mxcsr) {
  fprintf(f, "value: %04x\n", mxcsr);
  fprintf(f, "Calculations\n");
  fprintf(f, "* flush to zero     : %s\n", ((mxcsr & (0x8000)) ? "yes" : "no"));
  fprintf(f, "* denormals are zero: %s\n", ((mxcsr & (0x0040)) ? "yes" : "no"));
  print_mxcsr_exception_flags(f, mxcsr);
  fprintf(f, "Exception masks\n");
  fprintf(f, "* precision         : %s\n", ((mxcsr & (0x1000)) ? "yes" : "no"));
  fprintf(f, "* underflow         : %s\n", ((mxcsr & (0x0800)) ? "yes" : "no"));
  fprintf(f, "* overflow          : %s\n", ((mxcsr & (0x0400)) ? "yes" : "no"));
  fprintf(f, "* divide by zero    : %s\n", ((mxcsr & (0x0200)) ? "yes" : "no"));
  fprintf(f, "* denormal          : %s\n", ((mxcsr & (0x0100)) ? "yes" : "no"));
  fprintf(f, "* invalid operation : %s\n", ((mxcsr & (0x0080)) ? "yes" : "no"));
}
```