user: 请将这段汇编代码片段转换成等效的C代码:

```asm
<printTCPHeader>:
  endbr64
  push   %rbx
  mov    %rdi,%rbx
  lea    D7(%rip),%rdi
  call   <puts@plt>
  mov    $0x40,%esi
  lea    D53(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    (%rbx),%eax
  lea    -0x14(,%rax,4),%esi
  lea    D145(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    0x3c(%rbx),%edi
  call   <ntohs@plt>
  mov    %eax,%esi
  lea    D165(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    0x38(%rbx),%edi
  call   <ntohs@plt>
  mov    %eax,%esi
  lea    D12(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    0x4(%rbx),%esi
  lea    D112(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    (%rbx),%esi
  lea    D92(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    0x8(%rbx),%esi
  lea    D32(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    0xc(%rbx),%esi
  lea    D166(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    0x10(%rbx),%esi
  lea    D163(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    0x14(%rbx),%esi
  lea    D24(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    0x18(%rbx),%esi
  lea    D144(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    0x1c(%rbx),%esi
  lea    D10(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    0x20(%rbx),%esi
  lea    D153(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    0x24(%rbx),%esi
  lea    D40(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    0x28(%rbx),%esi
  lea    D61(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    0x2c(%rbx),%esi
  lea    D4(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    0x30(%rbx),%esi
  lea    D199(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    0x34(%rbx),%esi
  lea    D48(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D2(%rip),%rdi
  call   <puts@plt>
  pop    %rbx
  ret
```

tool_calls: name: parse_data
arguments: label: D7
data_type: string
name: parse_data
arguments: label: D53
data_type: string
name: parse_data
arguments: label: D145
data_type: string
name: parse_data
arguments: label: D165
data_type: string
name: parse_data
arguments: label: D12
data_type: string
name: parse_data
arguments: label: D112
data_type: string
name: parse_data
arguments: label: D92
data_type: string
name: parse_data
arguments: label: D32
data_type: string
name: parse_data
arguments: label: D166
data_type: string
name: parse_data
arguments: label: D163
data_type: string
name: parse_data
arguments: label: D24
data_type: string
name: parse_data
arguments: label: D144
data_type: string
name: parse_data
arguments: label: D10
data_type: string
name: parse_data
arguments: label: D153
data_type: string
name: parse_data
arguments: label: D40
data_type: string
name: parse_data
arguments: label: D61
data_type: string
name: parse_data
arguments: label: D4
data_type: string
name: parse_data
arguments: label: D199
data_type: string
name: parse_data
arguments: label: D48
data_type: string
name: parse_data
arguments: label: D2
data_type: string

tool: D7: ------------TCP Header

tool: D53: tcp header length : %zu


tool: D145: tcp option length : %d


tool: D165: source port: 	%d


tool: D12: dest port: 	%d


tool: D112: ack_seq: 		%d


tool: D92: doff: 		%d


tool: D32: res1: 		%d


tool: D166: cwr: 		%d


tool: D163: ece: 		%d


tool: D24: urg: 		%d


tool: D144: ack: 		%d


tool: D10: psh: 		%d


tool: D153: rst: 		%d


tool: D40: syn: 		%d


tool: D61: fin: 		%d


tool: D4: window: 		%d


tool: D199: check: 		%x


tool: D48: urg_ptr: 		%d


tool: D2: ----------------------


assistant: ```c
void printTCPHeader(struct tcphdr *tcph) {
  printf("------------TCP Header\n");
  printf("tcp header length : %zu\n", sizeof(struct tcphdr));
  printf("tcp option length : %d\n", tcph->doff * 4 - 20);
  printf("source port: \t%d\n", ntohs(tcph->source));
  printf("dest port: \t%d\n", ntohs(tcph->dest));
  printf("ack_seq: \t\t%d\n", tcph->ack_seq);
  printf("doff: \t\t%d\n", tcph->doff);
  printf("res1: \t\t%d\n", tcph->res1);
  printf("cwr: \t\t%d\n", tcph->cwr);
  printf("ece: \t\t%d\n", tcph->ece);
  printf("urg: \t\t%d\n", tcph->urg);
  printf("ack: \t\t%d\n", tcph->ack);
  printf("psh: \t\t%d\n", tcph->psh);
  printf("rst: \t\t%d\n", tcph->rst);
  printf("syn: \t\t%d\n", tcph->syn);
  printf("fin: \t\t%d\n", tcph->fin);
  printf("window: \t\t%d\n", tcph->window);
  printf("check: \t\t%x\n", tcph->check);
  printf("urg_ptr: \t\t%d\n", tcph->urg_ptr);
  printf("----------------------\n\n");
}
```