// File: wrighteagle2d[P]wrighteaglebase/Debug/../src/WorldState.cpp
// Function: WorldStateUpdater::EvaluatePlayer(PlayerState&)
void WorldStateUpdater::EvaluatePlayer(PlayerState &player) {
  if (!mpObserver->IsNewSight()) {
    return;
  }

  if (player.GetPosDelay() != 0 && player.IsAlive() &&
      SelfState().GetPosDelay() == 0) {
    const Unum player_unum = player.GetUnum();

    if (player.GetGuessedTimes() >= 5) {
      EvaluateForgetPlayer(player);
    } else {
      if (ShouldSee(player.GetPos())) {
        player.UpdateGuessedTimes(player.GetGuessedTimes() + 1);

        const Vector *expected_pos = 0;

        if (player.IsGoalie()) {
          if (player_unum > 0) {
            expected_pos = &ServerParam::instance().ourGoal();
          } else {
            expected_pos = &ServerParam::instance().oppGoal();
          }
        }

        const Vector pos = GetNearSidePos(player.GetPos(), expected_pos);

        player.UpdatePos(pos, player.GetPosDelay(),
                         player.GetPosConf()); // delay和conf在前面更新过

        Logger::instance().GetTextLogger("guess")
            << mpWorldState->CurrentTime() << ": guess player " << player_unum
            << " out of view" << std::endl;
      }
    }
  }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x60, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x38(%rbp)
movq (%rax), %rdi
callq 0x28a50
testb $0x1, %al
jne 0xbb3b9
jmp 0xbb580
movq -0x10(%rbp), %rdi
addq $0x8, %rdi
callq 0x1ddd0
cmpl $0x0, %eax
je 0xbb580
movq -0x10(%rbp), %rdi
callq 0x23f20
testb $0x1, %al
jne 0xbb3e1
jmp 0xbb580
movq -0x38(%rbp), %rdi
callq 0xbc740
movq %rax, %rdi
addq $0x8, %rdi
callq 0x1ddd0
cmpl $0x0, %eax
jne 0xbb580
movq -0x10(%rbp), %rdi
callq 0x1b470
movl %eax, -0x14(%rbp)
movq -0x10(%rbp), %rdi
callq 0xbc9f0
cmpl $0x5, %eax
jl 0xbb42b
movq -0x38(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0xbbd20
jmp 0xbb57e
movq -0x10(%rbp), %rdi
addq $0x8, %rdi
callq 0x11090
movq -0x38(%rbp), %rdi
movq %rax, %rsi
callq 0xbb8e0
testb $0x1, %al
jne 0xbb44d
jmp 0xbb57c
movq -0x10(%rbp), %rax
movq %rax, -0x40(%rbp)
movq -0x10(%rbp), %rdi
callq 0xbc9f0
movq -0x40(%rbp), %rdi
movl %eax, %esi
addl $0x1, %esi
callq 0xbc810
movq $0x0, -0x20(%rbp)
movq -0x10(%rbp), %rdi
callq 0x1d780
testb $0x1, %al
jne 0xbb483
jmp 0xbb4af
cmpl $0x0, -0x14(%rbp)
jle 0xbb49c
callq 0x855e0
movq %rax, %rdi
callq 0x1f240
movq %rax, -0x20(%rbp)
jmp 0xbb4ad
callq 0x855e0
movq %rax, %rdi
callq 0xbe500
movq %rax, -0x20(%rbp)
jmp 0xbb4af
movq -0x10(%rbp), %rdi
addq $0x8, %rdi
callq 0x11090
movq -0x38(%rbp), %rdi
movq %rax, %rsi
movq -0x20(%rbp), %rdx
callq 0xbba40
movsd %xmm0, -0x30(%rbp)
movsd %xmm1, -0x28(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x58(%rbp)
movq -0x10(%rbp), %rdi
addq $0x8, %rdi
callq 0x1ddd0
movl %eax, -0x4c(%rbp)
movq -0x10(%rbp), %rdi
addq $0x8, %rdi
callq 0x1d930
movq -0x58(%rbp), %rdi
movl -0x4c(%rbp), %edx
movsd (%rax), %xmm0
leaq -0x30(%rbp), %rsi
callq 0x142f0
callq 0x5add0
movq %rax, %rdi
leaq 0xa4a7(%rip), %rsi      # 0xc59c5
callq 0x5b110
movq %rax, %rcx
movq -0x38(%rbp), %rax
movq %rcx, -0x48(%rbp)
movq 0x8(%rax), %rdi
callq 0x12100
movq -0x48(%rbp), %rdi
movq %rax, %rsi
callq 0x1a640
movq %rax, %rdi
leaq 0xa4ad(%rip), %rsi      # 0xc59fa
callq 0xbe520
movq %rax, %rdi
leaq -0x14(%rbp), %rsi
callq 0x2e850
movq %rax, %rdi
leaq 0xa46f(%rip), %rsi      # 0xc59d7
callq 0x2e730
movq %rax, %rdi
movq 0x42a39(%rip), %rsi     # 0xfdfb0
callq 0x1a7c0
jmp 0xbb57e
jmp 0xbb580
addq $0x60, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)