user: Demonstrate the C code that generates the assembly output below:

```asm
<get_stat_network>:
  endbr64
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x170,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x168(%rsp)
  xor    %eax,%eax
  lea    D48(%rip),%rsi
  lea    D59(%rip),%rdi
  call   <fopen@plt>
  test   %rax,%rax
  je     L13
  mov    %rax,%rbp
  lea    D70(%rip),%r12
L10:
  lea    0x60(%rsp),%rbx
  mov    %rbp,%rdx
  mov    $0x100,%esi
  mov    %rbx,%rdi
  call   <fgets@plt>
  mov    %r12,%rsi
  mov    %rbx,%rdi
  call   <strstr@plt>
  test   %rax,%rax
  je     L10
  mov    %rbp,%rdi
  call   <fclose@plt>
  mov    %rbx,%rdi
  lea    D33(%rip),%rsi
  call   <strstr@plt>
  test   %rax,%rax
  je     L36
  lea    0x10(%rsp),%rcx
  lea    0x8(%rsp),%rdx
  mov    %rbx,%rdi
  sub    $0x8,%rsp
  lea    0x50(%rsp),%rax
  push   %rax
  lea    0x50(%rsp),%rax
  push   %rax
  lea    0x50(%rsp),%rax
  push   %rax
  lea    0x50(%rsp),%rax
  push   %rax
  lea    0x50(%rsp),%rax
  push   %rax
  lea    0x50(%rsp),%r9
  lea    0x48(%rsp),%r8
  lea    D75(%rip),%rsi
  call   <sscanf@plt>
  add    $0x30,%rsp
L8:
  mov    0x8(%rsp),%rbx
  mov    0x48(%rsp),%rbp
  lea    0x50(%rsp),%rdi
  mov    $0x0,%esi
  call   <gettimeofday@plt>
  lea    0x0(,%rbp,8),%rdx
  lea    0x0(,%rbx,8),%rsi
  pxor   %xmm0,%xmm0
  cvtsi2sdq 0x50(%rsp),%xmm0
  divsd  D8(%rip),%xmm0
  pxor   %xmm1,%xmm1
  cvtsi2sdq 0x58(%rsp),%xmm1
  addsd  %xmm1,%xmm0
  lea    D0(%rip),%rdi
  call   <printf@plt>
L13:
  mov    0x168(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L6
  add    $0x170,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  ret
L36:
  lea    0x60(%rsp),%rdi
  lea    D18(%rip),%rsi
  call   <strstr@plt>
  test   %rax,%rax
  je     L8
  lea    0x10(%rsp),%rcx
  lea    0x8(%rsp),%rdx
  lea    0x60(%rsp),%rdi
  sub    $0x8,%rsp
  lea    0x50(%rsp),%rax
  push   %rax
  lea    0x50(%rsp),%rax
  push   %rax
  lea    0x50(%rsp),%rax
  push   %rax
  lea    0x50(%rsp),%rax
  push   %rax
  lea    0x50(%rsp),%rax
  push   %rax
  lea    0x50(%rsp),%r9
  lea    0x48(%rsp),%r8
  lea    D80(%rip),%rsi
  call   <sscanf@plt>
  add    $0x30,%rsp
  jmp    L8
L6:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: unpack_data
arguments: data_label: D48
type: string
name: unpack_data
arguments: data_label: D59
type: string
name: unpack_data
arguments: data_label: D70
type: string
name: unpack_data
arguments: data_label: D33
type: string
name: unpack_data
arguments: data_label: D75
type: string
name: unpack_data
arguments: data_label: D8
type: f64
name: unpack_data
arguments: data_label: D0
type: string
name: unpack_data
arguments: data_label: D18
type: string
name: unpack_data
arguments: data_label: D80
type: string

tool: D48: r

tool: D59: /proc/net/dev

tool: D70: eth0

tool: D33: eth0: 

tool: D75: %*[ ]eth0:%*[ ]%llu%*[ ]%llu%*[ ]%llu%*[ ]%llu%*[ ]%llu%*[ ]%llu%*[ ]%llu%*[ ]%llu%*[ ]%llu

tool: D8: 1000000

tool: D0: %lf|%llu|%llu


tool: D18: eth0:

tool: D80: %*[ ]eth0:%llu%*[ ]%llu%*[ ]%llu%*[ ]%llu%*[ ]%llu%*[ ]%llu%*[ ]%llu%*[ ]%llu%*[ ]%llu

assistant: ```c
void get_stat_network() {
  FILE *f;
  char line[256];
  unsigned long long c1, c2, c3, c4, c5, c6, c7, c8, c9;
  unsigned long long tx, rx;
  struct timeval tv;
  double uusec;
  f = fopen("/proc/net/dev", "r");
  if (f) {
    do {
      fgets(line, 256, f);
    } while (strstr(line, "eth0") == NULL);
    fclose(f);
    if (strstr(line, "eth0: ")) {
      sscanf(line, "%*[ ]eth0:%*[ ]%llu%*[ ]%llu%*[ ]%llu%*[ ]%llu%*[ ]%llu%*[ ]%llu%*[ ]%llu%*[ ]%llu%*[ ]%llu", &c1, &c2, &c3, &c4, &c5, &c6, &c7, &c8, &c9);
    } else if (strstr(line, "eth0:")) {
      sscanf(line, "%*[ ]eth0:%llu%*[ ]%llu%*[ ]%llu%*[ ]%llu%*[ ]%llu%*[ ]%llu%*[ ]%llu%*[ ]%llu%*[ ]%llu", &c1, &c2, &c3, &c4, &c5, &c6, &c7, &c8, &c9);
    }
    rx = c1;
    tx = c9;
    gettimeofday(&tv, NULL);
    uusec = (double)tv.tv_sec + (double)tv.tv_usec / 1000000.0;
    printf("%lf|%llu|%llu\n", uusec, rx * 8, tx * 8);
  }
}
```