user: 这段汇编代码用C语言表示是什么样的?

```asm
<print_control1_reg>:
  endbr64
  push   %rbx
  mov    0x2c(%rdi),%ebx
  lea    D60(%rip),%rdi
  call   <puts@plt>
  mov    %ebx,%esi
  sar    $0x1a,%esi
  and    $0x1,%esi
  lea    D15(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    %ebx,%esi
  sar    $0x19,%esi
  and    $0x1,%esi
  lea    D8(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    %ebx,%esi
  sar    $0x18,%esi
  and    $0x1,%esi
  lea    D105(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    %ebx,%esi
  sar    $0x10,%esi
  and    $0xf,%esi
  lea    D88(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  movzbl %bh,%esi
  lea    D25(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    %ebx,%esi
  sar    $0x6,%esi
  and    $0x3,%esi
  lea    D46(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    %ebx,%esi
  sar    $0x5,%esi
  and    $0x1,%esi
  lea    D97(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    %ebx,%esi
  sar    $0x2,%esi
  and    $0x1,%esi
  lea    D33(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    %ebx,%esi
  sar    %esi
  and    $0x1,%esi
  lea    D4(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  and    $0x1,%ebx
  mov    %ebx,%esi
  lea    D84(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  pop    %rbx
  ret
```

tool_calls: name: parse_data
arguments: data_label: D60
type_guessed: string
name: parse_data
arguments: data_label: D15
type_guessed: string
name: parse_data
arguments: data_label: D8
type_guessed: string
name: parse_data
arguments: data_label: D105
type_guessed: string
name: parse_data
arguments: data_label: D88
type_guessed: string
name: parse_data
arguments: data_label: D25
type_guessed: string
name: parse_data
arguments: data_label: D46
type_guessed: string
name: parse_data
arguments: data_label: D97
type_guessed: string
name: parse_data
arguments: data_label: D33
type_guessed: string
name: parse_data
arguments: data_label: D4
type_guessed: string
name: parse_data
arguments: data_label: D84
type_guessed: string

tool: D60: CONTROL1:--------------------------------------

tool: D15: SRST_DATA:     %i


tool: D8: SRST_CMD:      %i


tool: D105: SRST_HC:       %i


tool: D88: DATA_TOUNIT:   %i


tool: D25: CLK_FREQ8:     %i


tool: D46: CLK_FREQ_MS2:  %i


tool: D97: CLK_GENSEL:    %i


tool: D33: CLK_EN:        %i


tool: D4: CLK_STABLE:    %i


tool: D84: CLK_INTLEN:    %i


assistant: ```c
void print_control1_reg(uint32_t *emmc) {
  uint32_t ctrl1 = (*(emmc + 0x2C / 4));
  printf("CONTROL1:--------------------------------------\n");
  printf("SRST_DATA:     %i\n", ((ctrl1 & (1 << 26)) != 0) ? 1 : 0);
  printf("SRST_CMD:      %i\n", ((ctrl1 & (1 << 25)) != 0) ? 1 : 0);
  printf("SRST_HC:       %i\n", ((ctrl1 & (1 << 24)) != 0) ? 1 : 0);
  printf("DATA_TOUNIT:   %i\n", ((ctrl1 & 0x0F0000) >> 16));
  printf("CLK_FREQ8:     %i\n", ((ctrl1 & 0xFF00) >> 8));
  printf("CLK_FREQ_MS2:  %i\n", ((ctrl1 & 0xC0) >> 6));
  printf("CLK_GENSEL:    %i\n", ((ctrl1 & (1 << 5)) != 0) ? 1 : 0);
  printf("CLK_EN:        %i\n", ((ctrl1 & (1 << 2)) != 0) ? 1 : 0);
  printf("CLK_STABLE:    %i\n", ((ctrl1 & (1 << 1)) != 0) ? 1 : 0);
  printf("CLK_INTLEN:    %i\n", ((ctrl1 & (1 << 0)) != 0) ? 1 : 0);
}
```