// File: kobanium[P]Ray/src/common/Message.cpp
// Function: PrintPlayoutInformation(uct_node_t const*, int, double, int)
void
PrintPlayoutInformation( const uct_node_t *root, const int po_speed, const double finish_time, const int pre_simulated )
{
  const double winning_percentage = static_cast<double>(root->win) / root->move_count;

  if (!debug_message) return;

  std::cerr << "All Playouts       :  " << std::setw(7) << root->move_count << std::endl;
  std::cerr << "Pre Simulated      :  " << std::setw(7) << pre_simulated << std::endl;
  std::cerr << "Win                :  " << std::setw(7) << root->win << std::endl;
  std::cerr << "Thinking Time      :  " << std::setw(7) << finish_time << " seconds" << std::endl;
  std::cerr << "Winning Percentage :  " << std::setw(7) << (winning_percentage * 100) << " %" << std::endl;
  std::cerr << "Playout Speed      :  " << std::setw(7) << po_speed << " PO/s" << std::endl;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x90, %rsp
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movsd %xmm0, -0x18(%rbp)
movl %edx, -0x1c(%rbp)
movq -0x8(%rbp), %rdi
addq $0xc, %rdi
callq 0x25780
cvtsi2sd %eax, %xmm0
movsd %xmm0, -0x48(%rbp)
movq -0x8(%rbp), %rdi
addq $0x8, %rdi
callq 0x25780
movsd -0x48(%rbp), %xmm0
cvtsi2sd %eax, %xmm1
divsd %xmm1, %xmm0
movsd %xmm0, -0x28(%rbp)
testb $0x1, 0xc568a(%rip)     # 0xe7580
jne 0x21efd
jmp 0x2211a
movq 0xc50ec(%rip), %rdi     # 0xe6ff0
leaq 0x8a232(%rip), %rsi     # 0xac13d
callq 0x7530
movq %rax, -0x88(%rbp)
movl $0x7, %edi
callq 0x25760
movq -0x88(%rbp), %rdi
movl %eax, -0x2c(%rbp)
movl -0x2c(%rbp), %esi
callq 0x7640
movq %rax, -0x80(%rbp)
movq -0x8(%rbp), %rdi
addq $0x8, %rdi
callq 0x25780
movq -0x80(%rbp), %rdi
movl %eax, %esi
callq 0x7980
movq %rax, %rdi
movq 0xc500f(%rip), %rsi     # 0xe6f68
callq 0x75b0
movq 0xc508b(%rip), %rdi     # 0xe6ff0
leaq 0x8a1e8(%rip), %rsi     # 0xac154
callq 0x7530
movq %rax, -0x78(%rbp)
movl $0x7, %edi
callq 0x25760
movq -0x78(%rbp), %rdi
movl %eax, -0x30(%rbp)
movl -0x30(%rbp), %esi
callq 0x7640
movq %rax, %rdi
movl -0x1c(%rbp), %esi
callq 0x7980
movq %rax, %rdi
movq 0xc4fc5(%rip), %rsi     # 0xe6f68
callq 0x75b0
movq 0xc5041(%rip), %rdi     # 0xe6ff0
leaq 0x8a1b5(%rip), %rsi     # 0xac16b
callq 0x7530
movq %rax, -0x70(%rbp)
movl $0x7, %edi
callq 0x25760
movq -0x70(%rbp), %rdi
movl %eax, -0x34(%rbp)
movl -0x34(%rbp), %esi
callq 0x7640
movq %rax, -0x68(%rbp)
movq -0x8(%rbp), %rdi
addq $0xc, %rdi
callq 0x25780
movq -0x68(%rbp), %rdi
movl %eax, %esi
callq 0x7980
movq %rax, %rdi
movq 0xc4f6a(%rip), %rsi     # 0xe6f68
callq 0x75b0
movq 0xc4fe6(%rip), %rdi     # 0xe6ff0
leaq 0x8a171(%rip), %rsi     # 0xac182
callq 0x7530
movq %rax, -0x60(%rbp)
movl $0x7, %edi
callq 0x25760
movq -0x60(%rbp), %rdi
movl %eax, -0x38(%rbp)
movl -0x38(%rbp), %esi
callq 0x7640
movq %rax, %rdi
movsd -0x18(%rbp), %xmm0
callq 0x7a60
movq %rax, %rdi
leaq 0x8a14f(%rip), %rsi     # 0xac199
callq 0x7530
movq %rax, %rdi
movq 0xc4f0f(%rip), %rsi     # 0xe6f68
callq 0x75b0
movq 0xc4f8b(%rip), %rdi     # 0xe6ff0
leaq 0x8a136(%rip), %rsi     # 0xac1a2
callq 0x7530
movq %rax, -0x58(%rbp)
movl $0x7, %edi
callq 0x25760
movq -0x58(%rbp), %rdi
movl %eax, -0x3c(%rbp)
movl -0x3c(%rbp), %esi
callq 0x7640
movq %rax, %rdi
movsd 0x89f7f(%rip), %xmm0    # 0xac018
mulsd -0x28(%rbp), %xmm0
callq 0x7a60
movq %rax, %rdi
leaq 0x8a10c(%rip), %rsi     # 0xac1b9
callq 0x7530
movq %rax, %rdi
movq 0xc4eac(%rip), %rsi     # 0xe6f68
callq 0x75b0
movq 0xc4f28(%rip), %rdi     # 0xe6ff0
leaq 0x8a0ed(%rip), %rsi     # 0xac1bc
callq 0x7530
movq %rax, -0x50(%rbp)
movl $0x7, %edi
callq 0x25760
movq -0x50(%rbp), %rdi
movl %eax, -0x40(%rbp)
movl -0x40(%rbp), %esi
callq 0x7640
movq %rax, %rdi
movl -0xc(%rbp), %esi
callq 0x7980
movq %rax, %rdi
leaq 0x8a0cd(%rip), %rsi     # 0xac1d3
callq 0x7530
movq %rax, %rdi
movq 0xc4e53(%rip), %rsi     # 0xe6f68
callq 0x75b0
addq $0x90, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)