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

```asm
<set_proc_record>:
  endbr64
  mov    %rcx,%rax
  mov    0x10(%rdx),%rdi
  mov    0x10(%rcx),%rcx
  cmp    %rdi,%rcx
  jbe    L129
  sub    %rdi,%rcx
  js     L45
  pxor   %xmm2,%xmm2
  mov    (%rdx),%rdi
  cvtsi2sd %rcx,%xmm2
  mov    (%rax),%rcx
  movsd  %xmm2,0x10(%rsi)
  cmp    %rdi,%rcx
  jae    L8
L150:
  movsd  D6(%rip),%xmm0
  pxor   %xmm1,%xmm1
L112:
  mov    0x8(%rax),%rcx
  mov    0x8(%rdx),%rdi
  movsd  %xmm1,(%rsi)
  pxor   %xmm1,%xmm1
  cmp    %rdi,%rcx
  jb     L56
  sub    %rdi,%rcx
  js     L32
  pxor   %xmm1,%xmm1
  cvtsi2sd %rcx,%xmm1
L86:
  mulsd  %xmm0,%xmm1
  divsd  %xmm2,%xmm1
L56:
  mov    0x20(%rax),%rcx
  movsd  %xmm1,0x8(%rsi)
  test   %rcx,%rcx
  js     L158
  pxor   %xmm1,%xmm1
  cvtsi2sd %rcx,%xmm1
L52:
  mov    0x18(%rax),%rcx
  mulsd  %xmm1,%xmm0
  test   %rcx,%rcx
  js     L181
  pxor   %xmm2,%xmm2
  cvtsi2sd %rcx,%xmm2
L134:
  mov    0x28(%rax),%rcx
  mov    0x28(%rdx),%rdi
  divsd  %xmm2,%xmm0
  unpcklpd %xmm1,%xmm0
  movups %xmm0,0x18(%rsi)
  pxor   %xmm0,%xmm0
  cmp    %rdi,%rcx
  jb     L39
  sub    %rdi,%rcx
  js     L168
  pxor   %xmm0,%xmm0
  cvtsi2sd %rcx,%xmm0
L15:
  pxor   %xmm1,%xmm1
  cvtsi2sd %r8d,%xmm1
  divsd  %xmm1,%xmm0
L39:
  mov    0x30(%rax),%rax
  mov    0x30(%rdx),%rdx
  movsd  %xmm0,0x28(%rsi)
  cmp    %rdx,%rax
  jb     L166
  sub    %rdx,%rax
  js     L82
  pxor   %xmm0,%xmm0
  pxor   %xmm1,%xmm1
  cvtsi2sd %rax,%xmm0
  cvtsi2sd %r8d,%xmm1
  divsd  %xmm1,%xmm0
  movsd  %xmm0,0x30(%rsi)
  ret
  nopl   (%rax)
L45:
  mov    %rcx,%rdi
  and    $0x1,%ecx
  pxor   %xmm2,%xmm2
  shr    %rdi
  or     %rcx,%rdi
  mov    (%rax),%rcx
  cvtsi2sd %rdi,%xmm2
  mov    (%rdx),%rdi
  addsd  %xmm2,%xmm2
  movsd  %xmm2,0x10(%rsi)
  cmp    %rdi,%rcx
  jb     L150
L8:
  sub    %rdi,%rcx
  js     L128
  pxor   %xmm1,%xmm1
  cvtsi2sd %rcx,%xmm1
L144:
  movsd  D6(%rip),%xmm0
  mulsd  %xmm0,%xmm1
  divsd  %xmm2,%xmm1
  jmp    L112
  nopl   0x0(%rax)
L129:
  movq   $0x0,0x10(%rsi)
  ret
  nopl   0x0(%rax)
L166:
  movq   $0x0,0x28(%rsi)
  ret
  nopl   0x0(%rax)
L181:
  mov    %rcx,%rdi
  and    $0x1,%ecx
  pxor   %xmm2,%xmm2
  shr    %rdi
  or     %rcx,%rdi
  cvtsi2sd %rdi,%xmm2
  addsd  %xmm2,%xmm2
  jmp    L134
  xchg   %ax,%ax
L158:
  mov    %rcx,%rdi
  and    $0x1,%ecx
  pxor   %xmm1,%xmm1
  shr    %rdi
  or     %rcx,%rdi
  cvtsi2sd %rdi,%xmm1
  addsd  %xmm1,%xmm1
  jmp    L52
  xchg   %ax,%ax
L168:
  mov    %rcx,%rdi
  and    $0x1,%ecx
  pxor   %xmm0,%xmm0
  shr    %rdi
  or     %rcx,%rdi
  cvtsi2sd %rdi,%xmm0
  addsd  %xmm0,%xmm0
  jmp    L15
  xchg   %ax,%ax
L32:
  mov    %rcx,%rdi
  and    $0x1,%ecx
  pxor   %xmm1,%xmm1
  shr    %rdi
  or     %rcx,%rdi
  cvtsi2sd %rdi,%xmm1
  addsd  %xmm1,%xmm1
  jmp    L86
  xchg   %ax,%ax
L128:
  mov    %rcx,%rdi
  and    $0x1,%ecx
  pxor   %xmm1,%xmm1
  shr    %rdi
  or     %rcx,%rdi
  cvtsi2sd %rdi,%xmm1
  addsd  %xmm1,%xmm1
  jmp    L144
  xchg   %ax,%ax
L82:
  mov    %rax,%rdx
  pxor   %xmm0,%xmm0
  pxor   %xmm1,%xmm1
  and    $0x1,%eax
  shr    %rdx
  cvtsi2sd %r8d,%xmm1
  or     %rax,%rdx
  cvtsi2sd %rdx,%xmm0
  addsd  %xmm0,%xmm0
  divsd  %xmm1,%xmm0
  movsd  %xmm0,0x30(%rsi)
  ret
```

tool_calls: name: unpack_data
arguments: data_tag: D6
type_guessed: f64

tool: D6: 100

assistant: ```c
void set_proc_record(struct module *mod, double st_array[], unsigned long long pre_array[], unsigned long long cur_array[], int inter) {
  if (cur_array[2] > pre_array[2]) {
    st_array[2] = cur_array[2] - pre_array[2];
  } else {
    st_array[2] = 0;
    return;
  }
  if (cur_array[0] >= pre_array[0]) {
    st_array[0] = (cur_array[0] - pre_array[0]) * 100.0 / st_array[2];
  } else {
    st_array[0] = 0;
  }
  if (cur_array[1] >= pre_array[1]) {
    st_array[1] = (cur_array[1] - pre_array[1]) * 100.0 / st_array[2];
  } else {
    st_array[1] = 0;
  }
  st_array[3] = cur_array[4] * 100.0 / cur_array[3];
  st_array[4] = cur_array[4];
  if (cur_array[5] >= pre_array[5]) {
    st_array[5] = (cur_array[5] - pre_array[5]) * 1.0 / inter;
  } else {
    st_array[5] = 0;
  }
  if (cur_array[6] >= pre_array[6]) {
    st_array[6] = (cur_array[6] - pre_array[6]) * 1.0 / inter;
  } else {
    st_array[5] = 0;
  }
}
```