user: Converte this assembly snippet into its equivalent C code:

```asm
<cmd_read_fsr>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x10,%rsp
  mov    $0x0,%eax
  call   <read_fsr@plt>
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  mov    %eax,%esi
  lea    D104(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    -0x4(%rbp),%eax
  and    $0x80,%eax
  test   %eax,%eax
  je     L95
  lea    D136(%rip),%rax
  jmp    L28
L95:
  lea    D81(%rip),%rax
L28:
  mov    %rax,%rsi
  lea    D54(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    -0x4(%rbp),%eax
  and    $0x40,%eax
  test   %eax,%eax
  je     L91
  lea    D136(%rip),%rax
  jmp    L102
L91:
  lea    D81(%rip),%rax
L102:
  mov    %rax,%rsi
  lea    D85(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    -0x4(%rbp),%eax
  and    $0x20,%eax
  test   %eax,%eax
  je     L68
  lea    D136(%rip),%rax
  jmp    L92
L68:
  lea    D81(%rip),%rax
L92:
  mov    %rax,%rsi
  lea    D141(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    -0x4(%rbp),%eax
  and    $0x10,%eax
  test   %eax,%eax
  je     L47
  lea    D136(%rip),%rax
  jmp    L73
L47:
  lea    D81(%rip),%rax
L73:
  mov    %rax,%rsi
  lea    D30(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    -0x4(%rbp),%eax
  and    $0x8,%eax
  test   %eax,%eax
  je     L86
  lea    D136(%rip),%rax
  jmp    L56
L86:
  lea    D81(%rip),%rax
L56:
  mov    %rax,%rsi
  lea    D128(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    -0x4(%rbp),%eax
  and    $0x4,%eax
  test   %eax,%eax
  je     L8
  lea    D136(%rip),%rax
  jmp    L43
L8:
  lea    D81(%rip),%rax
L43:
  mov    %rax,%rsi
  lea    D102(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  nop
  leave
  ret
```

tool_calls: name: disassemble_data
arguments: data_tag: D104
type_infered: string
name: disassemble_data
arguments: data_tag: D136
type_infered: string
name: disassemble_data
arguments: data_tag: D81
type_infered: string
name: disassemble_data
arguments: data_tag: D54
type_infered: string
name: disassemble_data
arguments: data_tag: D85
type_infered: string
name: disassemble_data
arguments: data_tag: D141
type_infered: string
name: disassemble_data
arguments: data_tag: D30
type_infered: string
name: disassemble_data
arguments: data_tag: D128
type_infered: string
name: disassemble_data
arguments: data_tag: D102
type_infered: string

tool: D104: status register (FSR): 0x%02x


tool: 

tool: D81:  not

tool: D54: ENDEBUG is%s set


tool: D85: STP	is%s set


tool: D141: WEN	is%s set


tool: D30: RDYN	is%s set


tool: D128: INFEN	is%s set


tool: D102: RDISMB	is%s set


assistant: ```c
void cmd_read_fsr() {
  uint8_t fsr;
  fsr = read_fsr();
  printf("status register (FSR): 0x%02x\n", fsr);
  printf("ENDEBUG is%s set\n", (fsr & (1 << 7)) ? "" : " not");
  printf("STP	is%s set\n", (fsr & (1 << 6)) ? "" : " not");
  printf("WEN	is%s set\n", (fsr & (1 << 5)) ? "" : " not");
  printf("RDYN	is%s set\n", (fsr & (1 << 4)) ? "" : " not");
  printf("INFEN	is%s set\n", (fsr & (1 << 3)) ? "" : " not");
  printf("RDISMB	is%s set\n", (fsr & (1 << 2)) ? "" : " not");
}
```