// File: /workspace/github_cpp_makefile_star2_O3/kobanium[P]Ray/src/common/Message.cpp
// Function: PrintString(game_info_t const*)
void
PrintString( const game_info_t *game )
{
  const string_t *string = game->string;
  int pos, neighbor;

  if (!debug_message) return;

  std::cerr << "  :: :: String :: ::" << std::endl;

  for (int i = 0; i < MAX_STRING; i++){
    if (string[i].flag) {
      if (game->board[string[i].origin] == S_BLACK) {
        std::cerr << "Black String   ";
      } else {
        std::cerr << "White String   ";
      }
      std::cerr << "ID : " << i << " (libs : " << string[i].libs << ", size : " << string[i].size << ")" << std::endl;
      pos = string[i].lib[0];

      std::cerr << "  Liberty : " << std::endl;
      std::cerr << "  ";
      while (pos != STRING_END) {
        std::cerr << GOGUI_X(pos) << GOGUI_Y(pos) << " ";
        pos = string[i].lib[pos];
      }
      std::cerr << std::endl;

      pos = string[i].origin;
      std::cerr << "  Stone : " << std::endl;
      std::cerr << "    ";
      while (pos != STRING_END) {
        std::cerr << GOGUI_X(pos) << GOGUI_Y(pos) << " ";
        pos = game->string_next[pos];
        if (pos == game->string_next[pos]) getchar();
      }
      std::cerr << std::endl;

      neighbor = string[i].neighbor[0];
      if (neighbor == 0) getchar();
      std::cerr << "  Neighbor : " << std::endl;
      std::cerr << "    ";
      while (neighbor < NEIGHBOR_END) {
        std::cerr << neighbor << " ";
        neighbor = string[i].neighbor[neighbor];
      }
      std::cerr << std::endl;
    }
  }

  std::cerr << std::endl;
}

// Assembly:
cmpb $0x1, 0x59109(%rip)     # 0x76430
jne 0x1d7af
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x28, %rsp
movq %rdi, 0x10(%rsp)
leaq 0x9620(%rdi), %rbp
movq 0x58c9a(%rip), %rbx     # 0x75fe8
leaq 0x3fd2e(%rip), %rsi     # 0x5d083
movl $0x14, %edx
movq %rbx, %rdi
callq 0x6490
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x63c0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x6040
movq %rax, %rdi
callq 0x6290
xorl %ecx, %ecx
leaq 0x4026e(%rip), %r12     # 0x5d600
leaq 0xe(%rsp), %r13
movq %rbp, 0x18(%rsp)
imulq $0x7c8, %rcx, %r15      # imm = 0x7C8
cmpb $0x1, 0x7c4(%rbp,%r15)
jne 0x1d763
addq %rbp, %r15
movslq 0x7bc(%r15), %rax
movq 0x10(%rsp), %rdx
cmpb $0x1, 0x43f8(%rdx,%rax)
movq %rcx, %rbp
leaq 0x3fcd5(%rip), %rsi     # 0x5d0a8
leaq 0x3fcbe(%rip), %rax     # 0x5d098
cmoveq %rax, %rsi
movl $0xf, %edx
movq 0x58bfe(%rip), %rbx     # 0x75fe8
movq %rbx, %rdi
callq 0x6490
movl $0x5, %edx
movq %rbx, %rdi
leaq 0x3fcb7(%rip), %rsi     # 0x5d0b8
callq 0x6490
movq %rbx, %rdi
movq %rbp, 0x20(%rsp)
movl %ebp, %esi
callq 0x6730
movq %rax, %rbp
movl $0x9, %edx
movq %rax, %rdi
leaq 0x3fc97(%rip), %rsi     # 0x5d0be
callq 0x6490
movl 0x4(%r15), %esi
movq %rbp, %rdi
callq 0x6730
movq %rax, %rbp
movl $0x9, %edx
movq %rax, %rdi
leaq 0x3fc7e(%rip), %rsi     # 0x5d0c8
callq 0x6490
movl 0x7c0(%r15), %esi
movq %rbp, %rdi
callq 0x6730
movq %rax, %rbp
movl $0x1, %edx
movq %rax, %rdi
leaq 0x41490(%rip), %rsi     # 0x5e900
callq 0x6490
movq (%rbp), %rax
movq -0x18(%rax), %rdi
addq %rbp, %rdi
movl $0xa, %esi
callq 0x63c0
movsbl %al, %esi
movq %rbp, %rdi
callq 0x6040
movq %rax, %rdi
callq 0x6290
movzwl 0x8(%r15), %ebp
movl $0xc, %edx
movq %rbx, %rdi
leaq 0x3fc21(%rip), %rsi     # 0x5d0d2
callq 0x6490
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x63c0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x6040
movq %rax, %rdi
callq 0x6290
movl $0x2, %edx
movq %rbx, %r14
movq %rbx, %rdi
leaq 0x40110(%rip), %rsi     # 0x5d5ff
callq 0x6490
cmpl $0x2b7, %ebp            # imm = 0x2B7
leaq 0x593bb(%rip), %rbx     # 0x768bc
je 0x1d56d
movswl %bp, %ebp
movl %ebp, %eax
cltd
idivl (%rbx)
movslq %edx, %rax
leaq 0x3fe8b(%rip), %rcx     # 0x5d3a0
movb -0x4(%rax,%rcx), %al
movb %al, 0xe(%rsp)
movl $0x1, %edx
movq %r14, %rdi
movq %r13, %rsi
callq 0x6490
movq %rax, %rdi
leaq 0x5937d(%rip), %rax     # 0x768b4
movl (%rax), %ecx
movl %ebp, %eax
cltd
idivl (%rbx)
negl %eax
leal (%rcx,%rax), %esi
addl $0x5, %esi
callq 0x6730
movl $0x1, %edx
movq %rax, %rdi
movq %r12, %rsi
callq 0x6490
movswq %bp, %rax
movzwl 0x8(%r15,%rax,2), %ebp
cmpl $0x2b7, %ebp            # imm = 0x2B7
jne 0x1d503
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x63c0
movsbl %al, %esi
movq %r14, %rdi
callq 0x6040
movq %rax, %rdi
callq 0x6290
movl 0x7bc(%r15), %ebp
movl $0xa, %edx
movq %r14, %rdi
leaq 0x3fb35(%rip), %rsi     # 0x5d0df
callq 0x6490
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x63c0
movsbl %al, %esi
movq %r14, %rdi
callq 0x6040
movq %rax, %rdi
callq 0x6290
movl $0x4, %edx
movq %r14, %rdi
leaq 0x40018(%rip), %rsi     # 0x5d5fd
callq 0x6490
cmpl $0x2b7, %ebp            # imm = 0x2B7
je 0x1d669
movl %ebp, %eax
cltd
idivl (%rbx)
movslq %edx, %rax
leaq 0x3fd9f(%rip), %rcx     # 0x5d3a0
movb -0x4(%rax,%rcx), %al
movb %al, 0xf(%rsp)
movl $0x1, %edx
movq %r14, %rdi
leaq 0xf(%rsp), %rsi
callq 0x6490
movq %rax, %rdi
leaq 0x5928f(%rip), %rax     # 0x768b4
movl (%rax), %ecx
movl %ebp, %eax
cltd
idivl (%rbx)
negl %eax
leal (%rcx,%rax), %esi
addl $0x5, %esi
callq 0x6730
movl $0x1, %edx
movq %rax, %rdi
movq %r12, %rsi
callq 0x6490
movslq %ebp, %rax
movq 0x10(%rsp), %rcx
movslq 0x96200(%rcx,%rax,4), %rbp
cmpl 0x96200(%rcx,%rbp,4), %ebp
jne 0x1d5ea
callq 0x6570
jmp 0x1d5ea
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x63c0
movsbl %al, %esi
movq %r14, %rdi
callq 0x6040
movq %rax, %rdi
callq 0x6290
movzwl 0x57c(%r15), %ebp
testw %bp, %bp
jne 0x1d6a2
callq 0x6570
movl $0xd, %edx
movq %r14, %rdi
leaq 0x3fa39(%rip), %rsi     # 0x5d0ea
callq 0x6490
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x63c0
movsbl %al, %esi
movq %r14, %rdi
callq 0x6040
movq %rax, %rdi
callq 0x6290
movl $0x4, %edx
movq %r14, %rdi
leaq 0x3ff11(%rip), %rsi     # 0x5d5fd
callq 0x6490
movswl %bp, %eax
cmpl $0x11e, %eax            # imm = 0x11E
jg 0x1d72d
movswl %bp, %ebp
movq %r14, %rdi
movl %ebp, %esi
callq 0x6730
movl $0x1, %edx
movq %rax, %rdi
movq %r12, %rsi
callq 0x6490
movswq %bp, %rax
movswl 0x57c(%r15,%rax,2), %ebp
cmpl $0x11f, %ebp            # imm = 0x11F
jl 0x1d6fb
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x63c0
movsbl %al, %esi
movq %r14, %rdi
callq 0x6040
movq %rax, %rdi
callq 0x6290
movq 0x18(%rsp), %rbp
movq 0x20(%rsp), %rcx
leaq 0xe(%rsp), %r13
incq %rcx
cmpq $0x120, %rcx            # imm = 0x120
jne 0x1d39c
movq 0x5886e(%rip), %rbx     # 0x75fe8
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x63c0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x6040
movq %rax, %rdi
callq 0x6290
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq