user: Translate the below assembly code into C programming language:

```asm
<print_info>:
  endbr64
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x8,%rsp
  mov    %rdi,%rbp
  mov    %rsi,%rbx
  call   <print_ssid@plt>
  mov    %rax,%rdx
  mov    %rbx,%rsi
  lea    D25(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    %rbx,%rsi
  mov    %rbp,%rdi
  call   <print_bssid@plt>
  mov    %rax,%rsi
  lea    D85(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    %rbx,%rsi
  mov    %rbp,%rdi
  call   <print_frequency@plt>
  mov    %rax,%r13
  mov    %rbx,%rsi
  mov    %rbp,%rdi
  call   <print_channel@plt>
  mov    %rax,%r12
  mov    %rbx,%rsi
  mov    %rbp,%rdi
  call   <print_mode@plt>
  mov    %rax,%rsi
  mov    %r13,%rcx
  mov    %r12,%rdx
  lea    D100(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    %rbx,%rsi
  mov    %rbp,%rdi
  call   <print_quality_max@plt>
  mov    %rax,%r13
  mov    %rbx,%rsi
  mov    %rbp,%rdi
  call   <print_quality@plt>
  mov    %rax,%r12
  mov    %rbx,%rsi
  mov    %rbp,%rdi
  call   <print_txpower@plt>
  mov    %rax,%rsi
  mov    %r13,%rcx
  mov    %r12,%rdx
  lea    D28(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    %rbx,%rsi
  mov    %rbp,%rdi
  call   <print_noise@plt>
  mov    %rax,%r12
  mov    %rbx,%rsi
  mov    %rbp,%rdi
  call   <print_signal@plt>
  mov    %rax,%rsi
  mov    %r12,%rdx
  lea    D65(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    %rbx,%rsi
  mov    %rbp,%rdi
  call   <print_rate@plt>
  mov    %rax,%rsi
  lea    D17(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    %rbx,%rsi
  mov    %rbp,%rdi
  call   <print_encryption@plt>
  mov    %rax,%rsi
  lea    D56(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    %rbx,%rsi
  mov    %rbp,%rdi
  call   <print_hwmodes@plt>
  mov    %rax,%r12
  mov    %rbx,%rsi
  mov    %rbp,%rdi
  call   <print_type@plt>
  mov    %rax,%rsi
  mov    %r12,%rdx
  lea    D44(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    %rbx,%rsi
  mov    %rbp,%rdi
  call   <print_hardware_name@plt>
  mov    %rax,%r12
  mov    %rbx,%rsi
  mov    %rbp,%rdi
  call   <print_hardware_id@plt>
  mov    %rax,%rsi
  mov    %r12,%rdx
  lea    D37(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    %rbx,%rsi
  mov    %rbp,%rdi
  call   <print_txpower_offset@plt>
  mov    %rax,%rsi
  lea    D54(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    %rbx,%rsi
  mov    %rbp,%rdi
  call   <print_frequency_offset@plt>
  mov    %rax,%rsi
  lea    D7(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    %rbx,%rsi
  mov    %rbp,%rdi
  call   <print_phyname@plt>
  mov    %rax,%r12
  mov    %rbx,%rsi
  mov    %rbp,%rdi
  call   <print_mbssid_supp@plt>
  mov    %rax,%rsi
  mov    %r12,%rdx
  lea    D115(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  add    $0x8,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  ret
```

tool_calls: name: extract_symbolic_data
arguments: label: D25
type_guessed: string
name: extract_symbolic_data
arguments: label: D85
type_guessed: string
name: extract_symbolic_data
arguments: label: D100
type_guessed: string
name: extract_symbolic_data
arguments: label: D28
type_guessed: string
name: extract_symbolic_data
arguments: label: D65
type_guessed: string
name: extract_symbolic_data
arguments: label: D17
type_guessed: string
name: extract_symbolic_data
arguments: label: D56
type_guessed: string
name: extract_symbolic_data
arguments: label: D44
type_guessed: string
name: extract_symbolic_data
arguments: label: D37
type_guessed: string
name: extract_symbolic_data
arguments: label: D54
type_guessed: string
name: extract_symbolic_data
arguments: label: D7
type_guessed: string
name: extract_symbolic_data
arguments: label: D115
type_guessed: string

tool: D25: %-9s ESSID: %s


tool: D85:           Access Point: %s


tool: D100:           Mode: %s  Channel: %s (%s)


tool: D28:           Tx-Power: %s  Link Quality: %s/%s


tool: D65:           Signal: %s  Noise: %s


tool: D17:           Bit Rate: %s


tool: D56:           Encryption: %s


tool: D44:           Type: %s  HW Mode(s): %s


tool: D37:           Hardware: %s [%s]


tool: D54:           TX power offset: %s


tool: D7:           Frequency offset: %s


tool: D115:           Supports VAPs: %s  PHY name: %s


assistant: ```c
void print_info(const struct iwinfo_ops *iw, const char *ifname) {
  printf("%-9s ESSID: %s\n", ifname, print_ssid(iw, ifname));
  printf("          Access Point: %s\n", print_bssid(iw, ifname));
  printf("          Mode: %s  Channel: %s (%s)\n", print_mode(iw, ifname), print_channel(iw, ifname), print_frequency(iw, ifname));
  printf("          Tx-Power: %s  Link Quality: %s/%s\n", print_txpower(iw, ifname), print_quality(iw, ifname), print_quality_max(iw, ifname));
  printf("          Signal: %s  Noise: %s\n", print_signal(iw, ifname), print_noise(iw, ifname));
  printf("          Bit Rate: %s\n", print_rate(iw, ifname));
  printf("          Encryption: %s\n", print_encryption(iw, ifname));
  printf("          Type: %s  HW Mode(s): %s\n", print_type(iw, ifname), print_hwmodes(iw, ifname));
  printf("          Hardware: %s [%s]\n", print_hardware_id(iw, ifname), print_hardware_name(iw, ifname));
  printf("          TX power offset: %s\n", print_txpower_offset(iw, ifname));
  printf("          Frequency offset: %s\n", print_frequency_offset(iw, ifname));
  printf("          Supports VAPs: %s  PHY name: %s\n", print_mbssid_supp(iw, ifname), print_phyname(iw, ifname));
}
```