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

```asm
<main>:
  endbr64
  push   %rbp
  push   %rbx
  mov    %rsi,%rbx
  sub    $0x38,%rsp
  cmp    $0x2,%edi
  jle    L11
L10:
  mov    0x8(%rbx),%rdi
  call   <atol@plt>
  mov    0x10(%rbx),%rdi
  mov    %rax,%rbp
  call   <atof@plt>
  movsd  D112(%rip),%xmm5
  movapd %xmm0,%xmm3
  pxor   %xmm0,%xmm0
  cvtsi2sd %rbp,%xmm0
  movapd %xmm3,%xmm2
  movapd %xmm3,%xmm4
  addsd  %xmm5,%xmm2
  movapd %xmm3,%xmm1
  divsd  %xmm0,%xmm4
  divsd  %xmm2,%xmm1
  cmp    $0x1,%rbp
  jle    L17
  lea    0x1(%rbp),%rcx
  mov    $0x2,%edx
  nopw   0x0(%rax,%rax,1)
L12:
  mulsd  %xmm3,%xmm1
  pxor   %xmm2,%xmm2
  cvtsi2sd %rdx,%xmm2
  add    $0x1,%rdx
  addsd  %xmm1,%xmm2
  divsd  %xmm2,%xmm1
  cmp    %rcx,%rdx
  jne    L12
L17:
  movapd %xmm4,%xmm2
  movapd %xmm5,%xmm7
  movapd %xmm1,%xmm6
  mov    %rbp,%rsi
  mulsd  %xmm1,%xmm2
  subsd  %xmm4,%xmm7
  xor    %eax,%eax
  movsd  %xmm1,0x20(%rsp)
  lea    D73(%rip),%rdi
  movsd  %xmm4,0x28(%rsp)
  movsd  %xmm3,0x10(%rsp)
  mulsd  %xmm7,%xmm0
  addsd  %xmm7,%xmm2
  divsd  %xmm2,%xmm6
  movapd %xmm6,%xmm2
  movsd  %xmm6,0x18(%rsp)
  divsd  %xmm0,%xmm2
  addsd  %xmm5,%xmm2
  movsd  %xmm2,0x8(%rsp)
  call   <printf@plt>
  lea    D117(%rip),%rdi
  call   <puts@plt>
  movsd  0x10(%rsp),%xmm3
  mov    $0x1,%eax
  lea    D114(%rip),%rdi
  movapd %xmm3,%xmm0
  call   <printf@plt>
  movsd  0x28(%rsp),%xmm4
  mov    $0x1,%eax
  lea    D89(%rip),%rdi
  movapd %xmm4,%xmm0
  call   <printf@plt>
  lea    D50(%rip),%rdi
  call   <puts@plt>
  movsd  0x20(%rsp),%xmm1
  mov    $0x1,%eax
  lea    D110(%rip),%rdi
  movapd %xmm1,%xmm0
  call   <printf@plt>
  movsd  0x18(%rsp),%xmm6
  mov    $0x1,%eax
  lea    D42(%rip),%rdi
  movapd %xmm6,%xmm0
  call   <printf@plt>
  movsd  0x8(%rsp),%xmm0
  mov    $0x1,%eax
  lea    D95(%rip),%rdi
  call   <printf@plt>
  movsd  0x8(%rsp),%xmm0
  movsd  0x10(%rsp),%xmm3
  lea    D97(%rip),%rdi
  mov    $0x1,%eax
  mulsd  %xmm3,%xmm0
  call   <printf@plt>
  add    $0x38,%rsp
  xor    %eax,%eax
  pop    %rbx
  pop    %rbp
  ret
L11:
  mov    (%rsi),%rsi
  lea    D43(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  lea    D93(%rip),%rdi
  call   <puts@plt>
  mov    $0x1,%edi
  call   <exit@plt>
  jmp    L10
```

tool_calls: name: disassemble_data
arguments: data_label: D112
type_guessed: byte[8]
name: disassemble_data
arguments: data_label: D73
type_guessed: string
name: disassemble_data
arguments: data_label: D117
type_guessed: string
name: disassemble_data
arguments: data_label: D114
type_guessed: string
name: disassemble_data
arguments: data_label: D89
type_guessed: string
name: disassemble_data
arguments: data_label: D50
type_guessed: string
name: disassemble_data
arguments: data_label: D110
type_guessed: string
name: disassemble_data
arguments: data_label: D42
type_guessed: string
name: disassemble_data
arguments: data_label: D95
type_guessed: string
name: disassemble_data
arguments: data_label: D97
type_guessed: string
name: disassemble_data
arguments: data_label: D43
type_guessed: string
name: disassemble_data
arguments: data_label: D93
type_guessed: string

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

tool: D73:   %ld Server System


tool: D117:   -----------------

tool: D114:   Traffic intensity:  %5.5lf


tool: D89:   Server utilization: %5.5lf


tool: D50:   

tool: D110:   Erlang B  (loss  prob): %5.5lf


tool: D42:   Erlang C  (queue prob): %5.5lf


tool: D95:   M/M/m    Normalized RT: %5.5lf


tool: D97:   M/M/m    No. in System: %5.5lf


tool: D43: Usage: %s servers traffic


tool: D93: NOTE:Per server load = traffic/servers

assistant: ```c
main(int argc, char *argv[]) {
  double erlangB;
  double erlangC;
  double traffic;
  double eb;
  double rho;
  double nrt;
  double ql;
  long m;
  long servers;
  if (argc < 3) {
    printf("Usage: %s servers traffic\n", argv[0]);
    printf("NOTE:Per server load = traffic/servers\n");
    exit(1);
  }
  servers = atol(*++argv);
  traffic = atof(*++argv);
  rho = traffic / servers;
  erlangB = traffic / (1 + traffic);
  for (m = 2; m <= servers; m++) {
    eb = erlangB;
    erlangB = eb * traffic / (m + eb * traffic);
  }
  erlangC = erlangB / (1 - rho + rho * erlangB);
  nrt = 1 + erlangC / (servers * (1 - rho));
  ql = traffic * nrt;
  printf("  %ld Server System\n", servers);
  printf("  -----------------\n");
  printf("  Traffic intensity:  %5.5lf\n", traffic);
  printf("  Server utilization: %5.5lf\n", rho);
  printf("  \n");
  printf("  Erlang B  (loss  prob): %5.5lf\n", erlangB);
  printf("  Erlang C  (queue prob): %5.5lf\n", erlangC);
  printf("  M/M/m    Normalized RT: %5.5lf\n", nrt);
  printf("  M/M/m    No. in System: %5.5lf\n", ql);
}
```