// File: xukmin[P]rase/calculate-routing-metrics.cc
// Function: PrintSimulationOptions(SimulationOptions const&)
void PrintSimulationOptions(const SimulationOptions& options) {
  printf("SimulationOptions:\n");
  printf("num_sensors = %d\n", options.num_sensors);
  printf("times = %d\n", options.times);
  printf("region.min_x = %f\n", options.region.min_x);
  printf("region.min_y = %f\n", options.region.min_y);
  printf("region.max_x = %f\n", options.region.max_x);
  printf("region.max_y = %f\n", options.region.max_y);
  printf("lower_communication_range = %f\n", options.lower_communication_range);
  printf("upper_communication_range = %f\n", options.upper_communication_range);
  printf("communication_range_step = %f\n", options.communication_range_step);
  printf("\n");
  printf("Routing Building Algorithms:\n");
  for (int i = 0; i < options.builders.size(); i++) {
    printf("%s\n", options.builders[i]->name().c_str());
  }
  printf("\n");
  printf("Routing Metrics:\n");
  for (int i = 0; i < options.calculators.size(); i++) {
    printf("%s\n", options.calculators[i]->name().c_str());
  }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
leaq 0x1aa05(%rip), %rdi     # 0x1e018
movb $0x0, %al
callq 0x3030
movq -0x8(%rbp), %rax
movl (%rax), %esi
leaq 0x1aa05(%rip), %rdi     # 0x1e02c
movb $0x0, %al
callq 0x3030
movq -0x8(%rbp), %rax
movl 0x4(%rax), %esi
leaq 0x1aa02(%rip), %rdi     # 0x1e03e
movb $0x0, %al
callq 0x3030
movq -0x8(%rbp), %rax
movsd 0x8(%rax), %xmm0
leaq 0x1a9f7(%rip), %rdi     # 0x1e04a
movb $0x1, %al
callq 0x3030
movq -0x8(%rbp), %rax
movsd 0x10(%rax), %xmm0
leaq 0x1a9f3(%rip), %rdi     # 0x1e05d
movb $0x1, %al
callq 0x3030
movq -0x8(%rbp), %rax
movsd 0x18(%rax), %xmm0
leaq 0x1a9ef(%rip), %rdi     # 0x1e070
movb $0x1, %al
callq 0x3030
movq -0x8(%rbp), %rax
movsd 0x20(%rax), %xmm0
leaq 0x1a9eb(%rip), %rdi     # 0x1e083
movb $0x1, %al
callq 0x3030
movq -0x8(%rbp), %rax
movsd 0x28(%rax), %xmm0
leaq 0x1a9e7(%rip), %rdi     # 0x1e096
movb $0x1, %al
callq 0x3030
movq -0x8(%rbp), %rax
movsd 0x30(%rax), %xmm0
leaq 0x1a9f0(%rip), %rdi     # 0x1e0b6
movb $0x1, %al
callq 0x3030
movq -0x8(%rbp), %rax
movsd 0x38(%rax), %xmm0
leaq 0x1a9f9(%rip), %rdi     # 0x1e0d6
movb $0x1, %al
callq 0x3030
leaq 0x1ad31(%rip), %rdi     # 0x1e41c
movb $0x0, %al
callq 0x3030
leaq 0x1a9fc(%rip), %rdi     # 0x1e0f5
movb $0x0, %al
callq 0x3030
movl $0x0, -0xc(%rbp)
movslq -0xc(%rbp), %rax
movq %rax, -0x18(%rbp)
movq -0x8(%rbp), %rdi
addq $0x40, %rdi
callq 0x4af0
movq %rax, %rcx
movq -0x18(%rbp), %rax
cmpq %rcx, %rax
jae 0x3765
movq -0x8(%rbp), %rdi
addq $0x40, %rdi
movslq -0xc(%rbp), %rsi
callq 0x4b10
movq (%rax), %rdi
callq 0x4b30
movq %rax, %rdi
callq 0x30c0
movq %rax, %rsi
leaq 0x1a9c0(%rip), %rdi     # 0x1e113
movb $0x0, %al
callq 0x3030
movl -0xc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc(%rbp)
jmp 0x3707
leaq 0x1acb0(%rip), %rdi     # 0x1e41c
movb $0x0, %al
callq 0x3030
leaq 0x1a99d(%rip), %rdi     # 0x1e117
movb $0x0, %al
callq 0x3030
movl $0x0, -0x10(%rbp)
movslq -0x10(%rbp), %rax
movq %rax, -0x20(%rbp)
movq -0x8(%rbp), %rdi
addq $0x58, %rdi
callq 0x4b50
movq %rax, %rcx
movq -0x20(%rbp), %rax
cmpq %rcx, %rax
jae 0x37e6
movq -0x8(%rbp), %rdi
addq $0x58, %rdi
movslq -0x10(%rbp), %rsi
callq 0x4b70
movq (%rax), %rdi
callq 0x4b90
movq %rax, %rdi
callq 0x30c0
movq %rax, %rsi
leaq 0x1a93f(%rip), %rdi     # 0x1e113
movb $0x0, %al
callq 0x3030
movl -0x10(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x10(%rbp)
jmp 0x3788
addq $0x20, %rsp
popq %rbp
retq
nopl (%rax)