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

```asm
<set_tic>:
  endbr64
  push   %rbp
  push   %rbx
  sub    $0x8,%rsp
  movapd %xmm0,%xmm1
  mov    %edi,%ebx
  movapd %xmm0,%xmm3
  movsd  D7(%rip),%xmm2
  andpd  %xmm2,%xmm0
  movsd  D54(%rip),%xmm4
  ucomisd %xmm0,%xmm4
  jbe    L14
  cvttsd2si %xmm1,%rax
  pxor   %xmm0,%xmm0
  cvtsi2sd %rax,%xmm0
  movapd %xmm0,%xmm3
  cmpnlesd %xmm1,%xmm3
  movsd  D79(%rip),%xmm4
  andpd  %xmm4,%xmm3
  subsd  %xmm3,%xmm0
  andnpd %xmm1,%xmm2
  movapd %xmm0,%xmm3
  orpd   %xmm2,%xmm3
L14:
  cvttsd2si %xmm3,%ebp
  pxor   %xmm0,%xmm0
  cvtsi2sd %ebp,%xmm0
  subsd  %xmm0,%xmm1
  movsd  D70(%rip),%xmm0
  call   <pow@plt>
  pxor   %xmm1,%xmm1
  cvtsi2sd %ebx,%xmm1
  divsd  %xmm0,%xmm1
  mov    D89(%rip),%rbx
  comisd D39(%rip),%xmm1
  ja     L35
  mov    D187(%rip),%rbx
  comisd D162(%rip),%xmm1
  ja     L35
  mov    D3(%rip),%rbx
  comisd D70(%rip),%xmm1
  ja     L35
  mov    D56(%rip),%rbx
  comisd D96(%rip),%xmm1
  ja     L35
  mov    D79(%rip),%rbx
  comisd D79(%rip),%xmm1
  jbe    L77
L35:
  mov    %ebp,%edi
  movsd  D70(%rip),%xmm0
  mov    $0x1,%eax
  call   <dbl_raise@plt>
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  movq   %rbx,%xmm5
  mulsd  %xmm5,%xmm0
  add    $0x8,%rsp
  pop    %rbx
  pop    %rbp
  ret
L77:
  mov    D35(%rip),%rbx
  comisd D56(%rip),%xmm1
  ja     L35
  movapd %xmm0,%xmm3
  movsd  D7(%rip),%xmm2
  movapd %xmm0,%xmm1
  andpd  %xmm2,%xmm1
  movsd  D54(%rip),%xmm4
  ucomisd %xmm1,%xmm4
  jbe    L68
  cvttsd2si %xmm0,%rax
  pxor   %xmm1,%xmm1
  cvtsi2sd %rax,%xmm1
  cmpnlesd %xmm1,%xmm3
  movsd  D79(%rip),%xmm4
  andpd  %xmm4,%xmm3
  addsd  %xmm1,%xmm3
  andnpd %xmm0,%xmm2
  orpd   %xmm2,%xmm3
L68:
  movq   %xmm3,%rbx
  jmp    L35
```

tool_calls: name: read_data
arguments: label: D7
type_infered: byte[8]
name: read_data
arguments: label: D54
type_infered: byte[8]
name: read_data
arguments: label: D79
type_infered: byte[16]
name: read_data
arguments: label: D70
type_infered: f64[2]
name: read_data
arguments: label: D89
type_infered: f64
name: read_data
arguments: label: D39
type_infered: byte[16]
name: read_data
arguments: label: D187
type_infered: f64
name: read_data
arguments: label: D162
type_infered: byte[16]
name: read_data
arguments: label: D3
type_infered: f64
name: read_data
arguments: label: D56
type_infered: f64[2]
name: read_data
arguments: label: D96
type_infered: byte[16]
name: read_data
arguments: label: D35
type_infered: byte[8]

tool: {"D7": [0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f]}

tool: {"D54": [0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x43]}

tool: {"D79": [0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40]}

tool: {"D70": [10.0,40.0]}

tool: D89: 0.05

tool: {"D39": [0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x34,0x40]}

tool: D187: 0.1

tool: {"D162": [0x00,0x00,0x00,0x00,0x00,0x00,0x34,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x40]}

tool: D3: 0.2

tool: {"D56": [0.5,1.0]}

tool: {"D96": [0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00]}

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

assistant: ```c
double set_tic(l10, guide)
double l10;
int guide;
{
  double xnorm, tics, posns;
  int fl = (int)floor(l10);
  xnorm = pow(10.0, l10 - fl);
  posns = guide / xnorm;
  if (posns > 40)
    tics = 0.05;
  else if (posns > 20)
    tics = 0.1;
  else if (posns > 10)
    tics = 0.2;
  else if (posns > 4)
    tics = 0.5;
  else if (posns > 1)
    tics = 1;
  else if (posns > 0.5)
    tics = 2;
  else
    tics = ceil(xnorm);
  return (tics * dbl_raise(10.0, fl));
}
```