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

```asm
<main>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x40,%rsp
  movsd  D151(%rip),%xmm0
  movsd  %xmm0,-0x38(%rbp)
  movsd  D102(%rip),%xmm0
  movsd  %xmm0,-0x30(%rbp)
  movsd  D129(%rip),%xmm0
  movsd  %xmm0,-0x28(%rbp)
  movsd  D226(%rip),%xmm0
  movsd  %xmm0,-0x20(%rbp)
  movsd  D202(%rip),%xmm0
  movsd  %xmm0,-0x18(%rbp)
  movsd  -0x20(%rbp),%xmm0
  mulsd  -0x30(%rbp),%xmm0
  addsd  -0x28(%rbp),%xmm0
  movsd  -0x20(%rbp),%xmm1
  movapd %xmm1,%xmm2
  mulsd  -0x18(%rbp),%xmm2
  movsd  D98(%rip),%xmm1
  subsd  %xmm2,%xmm1
  divsd  %xmm1,%xmm0
  movsd  %xmm0,-0x10(%rbp)
  movsd  -0x18(%rbp),%xmm0
  mulsd  -0x10(%rbp),%xmm0
  movsd  -0x30(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x8(%rbp)
  lea    D113(%rip),%rax
  mov    %rax,%rdi
  call   <PDQ_Init@plt>
  mov    -0x38(%rbp),%rax
  movq   %rax,%xmm0
  lea    D132(%rip),%rax
  mov    %rax,%rdi
  call   <PDQ_CreateOpen@plt>
  mov    %eax,-0x40(%rbp)
  mov    $0x8,%edx
  mov    $0x4,%esi
  lea    D1(%rip),%rax
  mov    %rax,%rdi
  call   <PDQ_CreateNode@plt>
  mov    %eax,-0x3c(%rbp)
  mov    $0x8,%edx
  mov    $0x4,%esi
  lea    D14(%rip),%rax
  mov    %rax,%rdi
  call   <PDQ_CreateNode@plt>
  mov    %eax,-0x3c(%rbp)
  mov    $0x8,%edx
  mov    $0x4,%esi
  lea    D78(%rip),%rax
  mov    %rax,%rdi
  call   <PDQ_CreateNode@plt>
  mov    %eax,-0x3c(%rbp)
  mov    $0x8,%edx
  mov    $0x4,%esi
  lea    D204(%rip),%rax
  mov    %rax,%rdi
  call   <PDQ_CreateNode@plt>
  mov    %eax,-0x3c(%rbp)
  mov    D238(%rip),%rax
  movq   %rax,%xmm0
  lea    D132(%rip),%rax
  mov    %rax,%rsi
  lea    D1(%rip),%rax
  mov    %rax,%rdi
  call   <PDQ_SetDemand@plt>
  movsd  -0x8(%rbp),%xmm1
  movsd  D52(%rip),%xmm0
  mulsd  %xmm0,%xmm1
  movq   %xmm1,%rax
  movq   %rax,%xmm0
  lea    D132(%rip),%rax
  mov    %rax,%rsi
  lea    D14(%rip),%rax
  mov    %rax,%rdi
  call   <PDQ_SetDemand@plt>
  movsd  -0x10(%rbp),%xmm1
  movsd  D67(%rip),%xmm0
  mulsd  %xmm0,%xmm1
  movq   %xmm1,%rax
  movq   %rax,%xmm0
  lea    D132(%rip),%rax
  mov    %rax,%rsi
  lea    D78(%rip),%rax
  mov    %rax,%rdi
  call   <PDQ_SetDemand@plt>
  mov    D196(%rip),%rax
  movq   %rax,%xmm0
  lea    D132(%rip),%rax
  mov    %rax,%rsi
  lea    D204(%rip),%rax
  mov    %rax,%rdi
  call   <PDQ_SetDemand@plt>
  mov    $0x10,%edi
  call   <PDQ_Solve@plt>
  mov    $0x0,%eax
  call   <PDQ_Report@plt>
  mov    $0x0,%eax
  leave
  ret
```

tool_calls: name: unpack_data
arguments: data_label: D151
type: byte[8]
name: unpack_data
arguments: data_label: D102
type: f64
name: unpack_data
arguments: data_label: D129
type: f64
name: unpack_data
arguments: data_label: D226
type: f64
name: unpack_data
arguments: data_label: D202
type: f64
name: unpack_data
arguments: data_label: D98
type: f64
name: unpack_data
arguments: data_label: D113
type: string
name: unpack_data
arguments: data_label: D132
type: string
name: unpack_data
arguments: data_label: D1
type: string
name: unpack_data
arguments: data_label: D14
type: string
name: unpack_data
arguments: data_label: D78
type: string
name: unpack_data
arguments: data_label: D204
type: string
name: unpack_data
arguments: data_label: D238
type: f64
name: unpack_data
arguments: data_label: D52
type: f64
name: unpack_data
arguments: data_label: D67
type: f64
name: unpack_data
arguments: data_label: D196
type: f64

tool: {"D151": [0x1e,0x82,0xbd,0x9c,0xec,0x79,0x71,0x3f]}

tool: D102: 0.3

tool: D129: 0.7

tool: D226: 0.2

tool: D202: 0.1

tool: D98: 1

tool: D113: Passport Office

tool: D132: Applicant

tool: D1: Window1

tool: D14: Window2

tool: D78: Window3

tool: D204: Window4

tool: D238: 20

tool: D52: 600

tool: D67: 300

tool: D196: 60

assistant: ```c
int main() {
  int numStreams;
  int numNodes;
  double arrivals = 15.36 / 3600;
  double p12 = 0.30;
  double p13 = 0.70;
  double p23 = 0.20;
  double p32 = 0.10;
  double v3 = (p13 + p23 * p12) / (1 - p23 * p32);
  double v2 = p12 + p32 * v3;
  PDQ_Init("Passport Office");
  numStreams = PDQ_CreateOpen("Applicant", arrivals);
  numNodes = PDQ_CreateNode("Window1", 4, 8);
  numNodes = PDQ_CreateNode("Window2", 4, 8);
  numNodes = PDQ_CreateNode("Window3", 4, 8);
  numNodes = PDQ_CreateNode("Window4", 4, 8);
  PDQ_SetDemand("Window1", "Applicant", 20.0);
  PDQ_SetDemand("Window2", "Applicant", 600.0 * v2);
  PDQ_SetDemand("Window3", "Applicant", 300.0 * v3);
  PDQ_SetDemand("Window4", "Applicant", 60.0);
  PDQ_Solve(16);
  PDQ_Report();
  return (0);
}
```