// File: /workspace/github_cpp_makefile_star2_O2/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, 0x51d95(%rip)     # 0x61430
jne 0xf961
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movq %rdi, %rbx
leaq 0x9620(%rdi), %r12
movq 0x51930(%rip), %r14     # 0x60ff0
leaq 0x349bc(%rip), %rsi     # 0x44083
movq %r14, %rdi
callq 0x63c0
movq %rax, %rdi
callq 0x6190
xorl %ebp, %ebp
leaq 0x521dc(%rip), %r13     # 0x618bc
movq %r12, 0x8(%rsp)
cmpq $0x120, %rbp            # imm = 0x120
je 0xf962
imulq $0x7c8, %rbp, %r15      # imm = 0x7C8
cmpb $0x1, 0x7c4(%r12,%r15)
jne 0xf959
addq %r12, %r15
movslq 0x7bc(%r15), %rax
cmpb $0x1, 0x43f8(%rbx,%rax)
leaq 0x34987(%rip), %rsi     # 0x440a8
leaq 0x34970(%rip), %rax     # 0x44098
cmoveq %rax, %rsi
movq %r14, %rdi
callq 0x63c0
movq %r14, %rdi
leaq 0x3497a(%rip), %rsi     # 0x440b8
callq 0x63c0
movq %rax, %rdi
movq %rbp, 0x10(%rsp)
movl %ebp, %esi
callq 0x6700
movq %rax, %rdi
leaq 0x34962(%rip), %rsi     # 0x440be
callq 0x63c0
movl 0x4(%r15), %esi
movq %rax, %rdi
callq 0x6700
movq %rax, %rdi
leaq 0x34951(%rip), %rsi     # 0x440c8
callq 0x63c0
movl 0x7c0(%r15), %esi
movq %rax, %rdi
callq 0x6700
movq %rax, %rdi
leaq 0x3618b(%rip), %rsi     # 0x45920
callq 0x63c0
movq %rax, %rdi
callq 0x6190
movzwl 0x8(%r15), %r12d
movq %r14, %rdi
leaq 0x34921(%rip), %rsi     # 0x440d2
callq 0x63c0
movq %rax, %rdi
callq 0x6190
movq %r14, %rdi
leaq 0x34c85(%rip), %rsi     # 0x4444d
callq 0x63c0
cmpw $0x2b7, %r12w           # imm = 0x2B7
je 0xf832
movswl %r12w, %ebp
movl %ebp, %eax
cltd
idivl (%r13)
movslq %edx, %rax
leaq 0x34bb6(%rip), %rcx     # 0x443a0
movsbl -0x4(%rax,%rcx), %esi
movq %r14, %rdi
callq 0x6480
movq %rax, %rdi
leaq 0x520b3(%rip), %rax     # 0x618b4
movl (%rax), %ecx
movl %ebp, %eax
cltd
idivl (%r13)
negl %eax
leal (%rcx,%rax), %esi
addl $0x5, %esi
callq 0x6700
movq %rax, %rdi
leaq 0x34c2d(%rip), %rsi     # 0x4444e
callq 0x63c0
movswq %r12w, %rax
movzwl 0x8(%r15,%rax,2), %r12d
jmp 0xf7cd
movq %r14, %rdi
callq 0x6190
movl 0x7bc(%r15), %ebp
movq %r14, %rdi
leaq 0x34894(%rip), %rsi     # 0x440df
callq 0x63c0
movq %rax, %rdi
callq 0x6190
movq %r14, %rdi
leaq 0x34be9(%rip), %rsi     # 0x4444b
callq 0x63c0
movq 0x8(%rsp), %r12
cmpl $0x2b7, %ebp            # imm = 0x2B7
je 0xf8dc
movl %ebp, %eax
cltd
idivl (%r13)
movslq %edx, %rax
leaq 0x34b1b(%rip), %rcx     # 0x443a0
movsbl -0x4(%rax,%rcx), %esi
movq %r14, %rdi
callq 0x6480
movq %rax, %rdi
leaq 0x52018(%rip), %rax     # 0x618b4
movl (%rax), %ecx
movl %ebp, %eax
cltd
idivl (%r13)
negl %eax
leal (%rcx,%rax), %esi
addl $0x5, %esi
callq 0x6700
movq %rax, %rdi
leaq 0x34b92(%rip), %rsi     # 0x4444e
callq 0x63c0
movslq %ebp, %rax
movslq 0x96200(%rbx,%rax,4), %rbp
cmpl 0x96200(%rbx,%rbp,4), %ebp
jne 0xf86c
callq 0x6560
jmp 0xf86c
movq %r14, %rdi
callq 0x6190
movzwl 0x57c(%r15), %ebp
testw %bp, %bp
jne 0xf8f6
callq 0x6560
movq %r14, %rdi
leaq 0x347ea(%rip), %rsi     # 0x440ea
callq 0x63c0
movq %rax, %rdi
callq 0x6190
movq %r14, %rdi
leaq 0x34b34(%rip), %rsi     # 0x4444b
callq 0x63c0
cmpw $0x11e, %bp             # imm = 0x11E
jg 0xf94c
movswl %bp, %esi
movq %r14, %rdi
callq 0x6700
movq %rax, %rdi
leaq 0x34b16(%rip), %rsi     # 0x4444e
callq 0x63c0
movswq %bp, %rax
movzwl 0x57c(%r15,%rax,2), %ebp
jmp 0xf91c
movq %r14, %rdi
callq 0x6190
movq 0x10(%rsp), %rbp
incq %rbp
jmp 0xf6e5
retq
movq 0x51687(%rip), %rdi     # 0x60ff0
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x6190