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

```asm
<set_tcp_record>:
  endbr64
  mov    %rcx,%rax
  mov    (%rdx),%rdi
  mov    (%rcx),%rcx
  cmp    %rcx,%rdi
  ja     L47
  sub    %rdi,%rcx
  js     L96
  pxor   %xmm0,%xmm0
  cvtsi2sd %rcx,%xmm0
L250:
  pxor   %xmm1,%xmm1
  cvtsi2sd %r8d,%xmm1
  divsd  %xmm1,%xmm0
  movsd  %xmm0,(%rsi)
L47:
  mov    0x8(%rax),%rcx
  mov    0x8(%rdx),%rdi
  cmp    %rdi,%rcx
  jb     L191
  sub    %rdi,%rcx
  js     L92
  pxor   %xmm0,%xmm0
  cvtsi2sd %rcx,%xmm0
L16:
  pxor   %xmm1,%xmm1
  cvtsi2sd %r8d,%xmm1
  divsd  %xmm1,%xmm0
  movsd  %xmm0,0x8(%rsi)
L191:
  mov    0x10(%rax),%rcx
  mov    0x10(%rdx),%rdi
  cmp    %rdi,%rcx
  jb     L52
  sub    %rdi,%rcx
  js     L1
  pxor   %xmm0,%xmm0
  cvtsi2sd %rcx,%xmm0
L94:
  pxor   %xmm1,%xmm1
  cvtsi2sd %r8d,%xmm1
  divsd  %xmm1,%xmm0
  movsd  %xmm0,0x10(%rsi)
L52:
  mov    0x18(%rax),%rcx
  mov    0x18(%rdx),%r9
  cmp    %r9,%rcx
  jb     L133
  mov    %rcx,%rdi
  sub    %r9,%rdi
  js     L0
  pxor   %xmm0,%xmm0
  cvtsi2sd %rdi,%xmm0
L104:
  pxor   %xmm1,%xmm1
  cvtsi2sd %r8d,%xmm1
  divsd  %xmm1,%xmm0
  movsd  %xmm0,0x18(%rsi)
L133:
  mov    0x20(%rax),%rdi
  mov    0x20(%rdx),%r10
  cmp    %r10,%rdi
  jb     L64
  sub    %r10,%rdi
  js     L244
  pxor   %xmm0,%xmm0
  cvtsi2sd %rdi,%xmm0
L240:
  pxor   %xmm1,%xmm1
  cvtsi2sd %r8d,%xmm1
  divsd  %xmm1,%xmm0
  movsd  %xmm0,0x20(%rsi)
L64:
  mov    0x28(%rax),%rdi
  mov    0x28(%rdx),%r10
  cmp    %r10,%rdi
  jb     L27
  sub    %r10,%rdi
  js     L118
  pxor   %xmm0,%xmm0
  cvtsi2sd %rdi,%xmm0
L117:
  pxor   %xmm1,%xmm1
  cvtsi2sd %r8d,%xmm1
  divsd  %xmm1,%xmm0
  movsd  %xmm0,0x28(%rsi)
L27:
  mov    0x30(%rax),%rdi
  test   %rdi,%rdi
  js     L194
  pxor   %xmm0,%xmm0
  cvtsi2sd %rdi,%xmm0
L87:
  mov    0x38(%rax),%rax
  mov    0x38(%rdx),%rdx
  movsd  %xmm0,0x30(%rsi)
  cmp    %rdx,%rax
  jb     L136
  cmp    %r9,%rcx
  ja     L97
L136:
  movsd  0x38(%rsi),%xmm0
  movsd  D3(%rip),%xmm1
L135:
  comisd %xmm1,%xmm0
  jbe    L169
  movsd  %xmm1,0x38(%rsi)
L169:
  ret
  nopl   0x0(%rax,%rax,1)
L97:
  sub    %rdx,%rax
  js     L67
  pxor   %xmm0,%xmm0
  cvtsi2sd %rax,%xmm0
L227:
  movsd  D3(%rip),%xmm1
  mulsd  %xmm1,%xmm0
  sub    %r9,%rcx
  js     L220
  pxor   %xmm2,%xmm2
  cvtsi2sd %rcx,%xmm2
L34:
  divsd  %xmm2,%xmm0
  movsd  %xmm0,0x38(%rsi)
  jmp    L135
  nopl   0x0(%rax,%rax,1)
L92:
  mov    %rcx,%rdi
  and    $0x1,%ecx
  pxor   %xmm0,%xmm0
  shr    %rdi
  or     %rcx,%rdi
  cvtsi2sd %rdi,%xmm0
  addsd  %xmm0,%xmm0
  jmp    L16
  cs nopw 0x0(%rax,%rax,1)
L96:
  mov    %rcx,%rdi
  and    $0x1,%ecx
  pxor   %xmm0,%xmm0
  shr    %rdi
  or     %rcx,%rdi
  cvtsi2sd %rdi,%xmm0
  addsd  %xmm0,%xmm0
  jmp    L250
  xchg   %ax,%ax
L118:
  mov    %rdi,%r10
  and    $0x1,%edi
  pxor   %xmm0,%xmm0
  shr    %r10
  or     %rdi,%r10
  cvtsi2sd %r10,%xmm0
  addsd  %xmm0,%xmm0
  jmp    L117
  xchg   %ax,%ax
L244:
  mov    %rdi,%r10
  and    $0x1,%edi
  pxor   %xmm0,%xmm0
  shr    %r10
  or     %rdi,%r10
  cvtsi2sd %r10,%xmm0
  addsd  %xmm0,%xmm0
  jmp    L240
  xchg   %ax,%ax
L0:
  mov    %rdi,%r10
  and    $0x1,%edi
  pxor   %xmm0,%xmm0
  shr    %r10
  or     %rdi,%r10
  cvtsi2sd %r10,%xmm0
  addsd  %xmm0,%xmm0
  jmp    L104
  xchg   %ax,%ax
L1:
  mov    %rcx,%rdi
  and    $0x1,%ecx
  pxor   %xmm0,%xmm0
  shr    %rdi
  or     %rcx,%rdi
  cvtsi2sd %rdi,%xmm0
  addsd  %xmm0,%xmm0
  jmp    L94
  xchg   %ax,%ax
L194:
  mov    %rdi,%r8
  and    $0x1,%edi
  pxor   %xmm0,%xmm0
  shr    %r8
  or     %rdi,%r8
  cvtsi2sd %r8,%xmm0
  addsd  %xmm0,%xmm0
  jmp    L87
  xchg   %ax,%ax
L67:
  mov    %rax,%rdx
  and    $0x1,%eax
  pxor   %xmm0,%xmm0
  shr    %rdx
  or     %rax,%rdx
  cvtsi2sd %rdx,%xmm0
  addsd  %xmm0,%xmm0
  jmp    L227
  xchg   %ax,%ax
L220:
  mov    %rcx,%rax
  and    $0x1,%ecx
  pxor   %xmm2,%xmm2
  shr    %rax
  or     %rcx,%rax
  cvtsi2sd %rax,%xmm2
  addsd  %xmm2,%xmm2
  jmp    L34
```

tool_calls: name: retrieve_data
arguments: label: D3
type_guessed: f64

tool: D3: 100

assistant: ```c
void set_tcp_record(struct module *mod, double st_array[], unsigned long long pre_array[], unsigned long long cur_array[], int inter) {
  int i;
  for (i = 0; i < 6; i++) {
    if (cur_array[i] >= pre_array[i]) {
      st_array[i] = (cur_array[i] - pre_array[i]) * 1.0 / inter;
    }
  }
  st_array[6] = cur_array[6];
  if ((cur_array[7] >= pre_array[7]) && (cur_array[3] > pre_array[3])) {
    st_array[7] = (cur_array[7] - pre_array[7]) * 100.0 / (cur_array[3] - pre_array[3]);
  }
  if (st_array[7] > 100.0) {
    st_array[7] = 100.0;
  }
}
```