user: 下面的汇编指令对应的C源代码是什么：

```asm
<check_load>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0xd0,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  movq   $0x0,-0xc8(%rbp)
  movq   $0x0,-0xa8(%rbp)
  movq   $0x0,-0xa0(%rbp)
  movq   $0x0,-0x98(%rbp)
  movq   $0x0,-0x90(%rbp)
  movq   $0x0,-0x88(%rbp)
  movq   $0x0,-0x80(%rbp)
  movq   $0x0,-0x78(%rbp)
  movq   $0x0,-0x70(%rbp)
  movq   $0x0,-0x68(%rbp)
  movq   $0x0,-0x60(%rbp)
  movq   $0x0,-0x58(%rbp)
  movq   $0x0,-0x50(%rbp)
  movq   $0x0,-0x48(%rbp)
  movq   $0x0,-0x40(%rbp)
  movq   $0x0,-0x38(%rbp)
  movq   $0x0,-0x30(%rbp)
  movq   $0x0,-0x28(%rbp)
  movq   $0x0,-0x20(%rbp)
  movq   $0x0,-0x18(%rbp)
  movl   $0x0,-0x10(%rbp)
  movw   $0x0,-0xc(%rbp)
  lea    D9(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  movl   $0x0,-0xcc(%rbp)
  jmp    L116
L110:
  movq   $0x0,-0xc8(%rbp)
  lea    D72(%rip),%rax
  mov    %rax,%rsi
  lea    D61(%rip),%rax
  mov    %rax,%rdi
  call   <popen@plt>
  mov    %rax,-0xc8(%rbp)
  cmpq   $0x0,-0xc8(%rbp)
  jne    L93
  lea    D4(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
L93:
  lea    -0xa8(%rbp),%rax
  mov    $0x8,%edx
  mov    $0x0,%esi
  mov    %rax,%rdi
  call   <memset@plt>
  mov    -0xc8(%rbp),%rdx
  lea    -0xa8(%rbp),%rax
  mov    %rdx,%rcx
  mov    $0x8,%edx
  mov    $0x1,%esi
  mov    %rax,%rdi
  call   <fread@plt>
  movb   $0x0,-0xa1(%rbp)
  lea    -0xc0(%rbp),%rdx
  mov    -0xcc(%rbp),%eax
  cltq
  shl    $0x2,%rax
  add    %rax,%rdx
  lea    -0xa8(%rbp),%rax
  lea    D54(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <sscanf@plt>
  mov    -0xc8(%rbp),%rax
  mov    %rax,%rdi
  call   <pclose@plt>
  mov    -0xcc(%rbp),%eax
  cltq
  movss  -0xc0(%rbp,%rax,4),%xmm0
  pxor   %xmm5,%xmm5
  cvtss2sd %xmm0,%xmm5
  movq   %xmm5,%rdx
  mov    -0xcc(%rbp),%eax
  movq   %rdx,%xmm0
  mov    %eax,%esi
  lea    D45(%rip),%rax
  mov    %rax,%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  cmpl   $0x3,-0xcc(%rbp)
  jg     L20
  mov    $0xa,%edi
  call   <sleep@plt>
L20:
  addl   $0x1,-0xcc(%rbp)
L116:
  cmpl   $0x4,-0xcc(%rbp)
  jle    L110
  movss  -0xc0(%rbp),%xmm0
  cvtss2sd %xmm0,%xmm0
  comisd D50(%rip),%xmm0
  jbe    L11
  movss  -0xb0(%rbp),%xmm3
  movss  -0xb4(%rbp),%xmm2
  movss  -0xb8(%rbp),%xmm1
  movss  -0xbc(%rbp),%xmm0
  mov    -0xc0(%rbp),%edx
  lea    -0xa0(%rbp),%rax
  movaps %xmm3,%xmm4
  movaps %xmm2,%xmm3
  movaps %xmm1,%xmm2
  movaps %xmm0,%xmm1
  movd   %edx,%xmm0
  lea    D40(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <sprintf@plt>
  lea    -0xa0(%rbp),%rax
  mov    %rax,%rdi
  call   <sys_log@plt>
L11:
  movss  -0xc0(%rbp),%xmm1
  movss  -0xbc(%rbp),%xmm0
  comiss %xmm1,%xmm0
  jbe    L90
  movss  -0xbc(%rbp),%xmm1
  movss  -0xb8(%rbp),%xmm0
  comiss %xmm1,%xmm0
  jbe    L90
  movss  -0xb8(%rbp),%xmm1
  movss  -0xb4(%rbp),%xmm0
  comiss %xmm1,%xmm0
  jbe    L90
  movss  -0xb4(%rbp),%xmm1
  movss  -0xb0(%rbp),%xmm0
  comiss %xmm1,%xmm0
  jbe    L90
  lea    D78(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  movss  -0xc0(%rbp),%xmm0
  comiss D76(%rip),%xmm0
  jbe    L90
  mov    $0x1,%eax
  jmp    L44
L90:
  mov    $0x0,%eax
L44:
  mov    -0x8(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L107
  call   <__stack_chk_fail@plt>
L107:
  leave
  ret
```

tool_calls: name: extract_symbolic_data
arguments: data_label: D9
data_type: string
name: extract_symbolic_data
arguments: data_label: D72
data_type: string
name: extract_symbolic_data
arguments: data_label: D61
data_type: string
name: extract_symbolic_data
arguments: data_label: D4
data_type: string
name: extract_symbolic_data
arguments: data_label: D54
data_type: string
name: extract_symbolic_data
arguments: data_label: D45
data_type: string
name: extract_symbolic_data
arguments: data_label: D50
data_type: f64
name: extract_symbolic_data
arguments: data_label: D40
data_type: string
name: extract_symbolic_data
arguments: data_label: D78
data_type: string
name: extract_symbolic_data
arguments: data_label: D76
data_type: byte[4]

tool: D9: 
---------check load average-----------

tool: D72: r

tool: D61: cat /proc/loadavg | awk '{print $1}'

tool: D4: popen failed

tool: D54: %f

tool: D45: load[%d] : %.2f


tool: D50: 0.8

tool: D40: load : %.2f  %.2f  %.2f  %.2f  %.2f

tool: D78: loadavg is increasing...

tool: {"D76": [0x00,0x00,0x40,0x40]}

assistant: ```c
int check_load() {
  FILE *stream = NULL;
  char buf[8] = {0};
  float load[5];
  char loadinfo[150] = {0};
  int i;
  printf("\n---------check load average-----------\n");
  for (i = 0; i < 5; i++) {
    stream = NULL;
    if ((stream = popen("cat /proc/loadavg | awk '{print $1}'", "r")) == NULL)
      printf("popen failed\n");
    memset(buf, 0, sizeof(buf));
    fread(buf, sizeof(char), sizeof(buf), stream);
    buf[7] = '\0';
    sscanf(buf, "%f", &load[i]);
    pclose(stream);
    printf("load[%d] : %.2f\n", i, load[i]);
    if (i < 4)
      sleep(10);
  }
  if (load[0] > 0.8) {
    sprintf(loadinfo, "load : %.2f  %.2f  %.2f  %.2f  %.2f", load[0], load[1], load[2], load[3], load[4]);
    sys_log(loadinfo);
  }
  if ((load[0] < load[1]) && (load[1] < load[2]) && (load[2] < load[3]) && (load[3] < load[4])) {
    printf("loadavg is increasing...\n");
    if (load[0] > 3) {
      return 1;
    }
  }
  return 0;
}
```