user: Converte this assembly snippet into its equivalent C code:

```asm
<main>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x40,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
L75:
  lea    -0x3c(%rbp),%rdx
  lea    -0x40(%rbp),%rax
  mov    %rax,%rsi
  lea    D8(%rip),%rax
  mov    %rax,%rdi
  call   <scanf@plt>
  mov    -0x40(%rbp),%eax
  test   %eax,%eax
  jne    L24
  mov    -0x3c(%rbp),%eax
  test   %eax,%eax
  je     L29
L24:
  mov    -0x40(%rbp),%eax
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  movsd  D34(%rip),%xmm1
  divsd  %xmm1,%xmm0
  movsd  %xmm0,-0x38(%rbp)
  mov    -0x3c(%rbp),%eax
  pxor   %xmm1,%xmm1
  cvtsi2sd %eax,%xmm1
  movsd  -0x38(%rbp),%xmm0
  movapd %xmm0,%xmm2
  addsd  %xmm0,%xmm2
  subsd  %xmm2,%xmm1
  movapd %xmm1,%xmm0
  movsd  %xmm0,-0x30(%rbp)
  mov    -0x3c(%rbp),%eax
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  movsd  D33(%rip),%xmm2
  movapd %xmm0,%xmm1
  divsd  %xmm2,%xmm1
  mov    -0x40(%rbp),%eax
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  movsd  D36(%rip),%xmm2
  divsd  %xmm2,%xmm0
  comisd %xmm1,%xmm0
  jbe    L69
  mov    -0x3c(%rbp),%eax
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  movsd  D33(%rip),%xmm1
  divsd  %xmm1,%xmm0
  jmp    L30
L69:
  mov    -0x40(%rbp),%eax
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  movsd  D36(%rip),%xmm1
  divsd  %xmm1,%xmm0
L30:
  movsd  %xmm0,-0x28(%rbp)
  mov    -0x40(%rbp),%eax
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  movsd  %xmm0,-0x20(%rbp)
  movsd  -0x38(%rbp),%xmm1
  movsd  D76(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  mulsd  -0x38(%rbp),%xmm0
  movsd  -0x30(%rbp),%xmm1
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0x18(%rbp)
  movsd  -0x28(%rbp),%xmm1
  movsd  D76(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  mulsd  -0x28(%rbp),%xmm0
  movsd  -0x20(%rbp),%xmm1
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0x10(%rbp)
  movsd  -0x18(%rbp),%xmm0
  comisd -0x10(%rbp),%xmm0
  jbe    L32
  mov    -0x18(%rbp),%rax
  movq   %rax,%xmm0
  lea    D84(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L75
L32:
  mov    -0x10(%rbp),%rax
  movq   %rax,%xmm0
  lea    D84(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L75
L29:
  nop
  mov    $0x0,%eax
  mov    -0x8(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L41
  call   <__stack_chk_fail@plt>
L41:
  leave
  ret
```

tool_calls: name: extract_symbolic_data
arguments: data_tag: D8
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D34
type_guessed: byte[8]
name: extract_symbolic_data
arguments: data_tag: D33
type_guessed: byte[8]
name: extract_symbolic_data
arguments: data_tag: D36
type_guessed: f64
name: extract_symbolic_data
arguments: data_tag: D76
type_guessed: byte[8]
name: extract_symbolic_data
arguments: data_tag: D84
type_guessed: string

tool: D8: %d %d

tool: {"D34": [0x18,0x2d,0x44,0x54,0xfb,0x21,0x19,0x40]}

tool: {"D33": [0x8c,0x16,0x22,0xaa,0xfd,0x90,0x20,0x40]}

tool: D36: 2

tool: {"D76": [0x18,0x2d,0x44,0x54,0xfb,0x21,0x09,0x40]}

tool: D84: %.3lf


assistant: ```c
int main() {
  int wid, height;
  double r1, h1, r2, h2, v1, v2;
  while (1) {
    scanf("%d %d", &wid, &height);
    if (!wid && !height)
      break;
    r1 = wid / (2.0 * 2.0 * acos(0.0));
    h1 = height - 2 * r1;
    r2 = ((height / (2.0 * (2.0 * acos(0.0) + 1.0))) < (wid / 2.0) ? (height / (2.0 * (2.0 * acos(0.0) + 1.0))) : (wid / 2.0));
    h2 = wid;
    v1 = (2.0 * acos(0.0) * r1 * r1 * h1);
    v2 = (2.0 * acos(0.0) * r2 * r2 * h2);
    if (v1 > v2)
      printf("%.3lf\n", v1);
    else
      printf("%.3lf\n", v2);
  }
}
```