// File: /workspace/github_cpp_makefile_star2_O1/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, 0x57ef9(%rip)     # 0x75430
jne 0x1d9bf
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x28, %rsp
movq %rdi, 0x10(%rsp)
leaq 0x9620(%rdi), %rbp
movq 0x57a8a(%rip), %rbx     # 0x74fe8
leaq 0x3fb1e(%rip), %rsi     # 0x5d083
movl $0x14, %edx
movq %rbx, %rdi
callq 0x64a0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x63d0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x6040
movq %rax, %rdi
callq 0x62a0
xorl %ecx, %ecx
leaq 0x4005e(%rip), %r12     # 0x5d600
leaq 0xe(%rsp), %r13
movq %rbp, 0x18(%rsp)
imulq $0x7c8, %rcx, %r15      # imm = 0x7C8
cmpb $0x1, 0x7c4(%rbp,%r15)
jne 0x1d973
addq %rbp, %r15
movslq 0x7bc(%r15), %rax
movq 0x10(%rsp), %rdx
cmpb $0x1, 0x43f8(%rdx,%rax)
movq %rcx, %rbp
leaq 0x3fac5(%rip), %rsi     # 0x5d0a8
leaq 0x3faae(%rip), %rax     # 0x5d098
cmoveq %rax, %rsi
movl $0xf, %edx
movq 0x579ee(%rip), %rbx     # 0x74fe8
movq %rbx, %rdi
callq 0x64a0
movl $0x5, %edx
movq %rbx, %rdi
leaq 0x3faa7(%rip), %rsi     # 0x5d0b8
callq 0x64a0
movq %rbx, %rdi
movq %rbp, 0x20(%rsp)
movl %ebp, %esi
callq 0x6740
movq %rax, %rbp
movl $0x9, %edx
movq %rax, %rdi
leaq 0x3fa87(%rip), %rsi     # 0x5d0be
callq 0x64a0
movl 0x4(%r15), %esi
movq %rbp, %rdi
callq 0x6740
movq %rax, %rbp
movl $0x9, %edx
movq %rax, %rdi
leaq 0x3fa6e(%rip), %rsi     # 0x5d0c8
callq 0x64a0
movl 0x7c0(%r15), %esi
movq %rbp, %rdi
callq 0x6740
movq %rax, %rbp
movl $0x1, %edx
movq %rax, %rdi
leaq 0x41280(%rip), %rsi     # 0x5e900
callq 0x64a0
movq (%rbp), %rax
movq -0x18(%rax), %rdi
addq %rbp, %rdi
movl $0xa, %esi
callq 0x63d0
movsbl %al, %esi
movq %rbp, %rdi
callq 0x6040
movq %rax, %rdi
callq 0x62a0
movzwl 0x8(%r15), %ebp
movl $0xc, %edx
movq %rbx, %rdi
leaq 0x3fa11(%rip), %rsi     # 0x5d0d2
callq 0x64a0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x63d0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x6040
movq %rax, %rdi
callq 0x62a0
movl $0x2, %edx
movq %rbx, %r14
movq %rbx, %rdi
leaq 0x3ff00(%rip), %rsi     # 0x5d5ff
callq 0x64a0
cmpl $0x2b7, %ebp            # imm = 0x2B7
leaq 0x581ab(%rip), %rbx     # 0x758bc
je 0x1d77d
movswl %bp, %ebp
movl %ebp, %eax
cltd
idivl (%rbx)
movslq %edx, %rax
leaq 0x3fc7b(%rip), %rcx     # 0x5d3a0
movb -0x4(%rax,%rcx), %al
movb %al, 0xe(%rsp)
movl $0x1, %edx
movq %r14, %rdi
movq %r13, %rsi
callq 0x64a0
movq %rax, %rdi
leaq 0x5816d(%rip), %rax     # 0x758b4
movl (%rax), %ecx
movl %ebp, %eax
cltd
idivl (%rbx)
negl %eax
leal (%rcx,%rax), %esi
addl $0x5, %esi
callq 0x6740
movl $0x1, %edx
movq %rax, %rdi
movq %r12, %rsi
callq 0x64a0
movswq %bp, %rax
movzwl 0x8(%r15,%rax,2), %ebp
cmpl $0x2b7, %ebp            # imm = 0x2B7
jne 0x1d713
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x63d0
movsbl %al, %esi
movq %r14, %rdi
callq 0x6040
movq %rax, %rdi
callq 0x62a0
movl 0x7bc(%r15), %ebp
movl $0xa, %edx
movq %r14, %rdi
leaq 0x3f925(%rip), %rsi     # 0x5d0df
callq 0x64a0
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x63d0
movsbl %al, %esi
movq %r14, %rdi
callq 0x6040
movq %rax, %rdi
callq 0x62a0
movl $0x4, %edx
movq %r14, %rdi
leaq 0x3fe08(%rip), %rsi     # 0x5d5fd
callq 0x64a0
cmpl $0x2b7, %ebp            # imm = 0x2B7
je 0x1d879
movl %ebp, %eax
cltd
idivl (%rbx)
movslq %edx, %rax
leaq 0x3fb8f(%rip), %rcx     # 0x5d3a0
movb -0x4(%rax,%rcx), %al
movb %al, 0xf(%rsp)
movl $0x1, %edx
movq %r14, %rdi
leaq 0xf(%rsp), %rsi
callq 0x64a0
movq %rax, %rdi
leaq 0x5807f(%rip), %rax     # 0x758b4
movl (%rax), %ecx
movl %ebp, %eax
cltd
idivl (%rbx)
negl %eax
leal (%rcx,%rax), %esi
addl $0x5, %esi
callq 0x6740
movl $0x1, %edx
movq %rax, %rdi
movq %r12, %rsi
callq 0x64a0
movslq %ebp, %rax
movq 0x10(%rsp), %rcx
movslq 0x96200(%rcx,%rax,4), %rbp
cmpl 0x96200(%rcx,%rbp,4), %ebp
jne 0x1d7fa
callq 0x6580
jmp 0x1d7fa
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x63d0
movsbl %al, %esi
movq %r14, %rdi
callq 0x6040
movq %rax, %rdi
callq 0x62a0
movzwl 0x57c(%r15), %ebp
testw %bp, %bp
jne 0x1d8b2
callq 0x6580
movl $0xd, %edx
movq %r14, %rdi
leaq 0x3f829(%rip), %rsi     # 0x5d0ea
callq 0x64a0
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x63d0
movsbl %al, %esi
movq %r14, %rdi
callq 0x6040
movq %rax, %rdi
callq 0x62a0
movl $0x4, %edx
movq %r14, %rdi
leaq 0x3fd01(%rip), %rsi     # 0x5d5fd
callq 0x64a0
movswl %bp, %eax
cmpl $0x11e, %eax            # imm = 0x11E
jg 0x1d93d
movswl %bp, %ebp
movq %r14, %rdi
movl %ebp, %esi
callq 0x6740
movl $0x1, %edx
movq %rax, %rdi
movq %r12, %rsi
callq 0x64a0
movswq %bp, %rax
movswl 0x57c(%r15,%rax,2), %ebp
cmpl $0x11f, %ebp            # imm = 0x11F
jl 0x1d90b
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x63d0
movsbl %al, %esi
movq %r14, %rdi
callq 0x6040
movq %rax, %rdi
callq 0x62a0
movq 0x18(%rsp), %rbp
movq 0x20(%rsp), %rcx
leaq 0xe(%rsp), %r13
incq %rcx
cmpq $0x120, %rcx            # imm = 0x120
jne 0x1d5ac
movq 0x5765e(%rip), %rbx     # 0x74fe8
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x63d0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x6040
movq %rax, %rdi
callq 0x62a0
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq