// File: wrighteagle2d[P]wrighteaglebase/Debug/../src/Trainer.cpp
// Function: Trainer::FindValidPoint(bool)
Vector Trainer::FindValidPoint(bool isLeft) {
  Vector tmp;
  tmp.SetX(isLeft ? ServerParam::instance().PITCH_LENGTH / 2 - 0.1
                  : -ServerParam::instance().PITCH_LENGTH / 2 + 0.1);
  do {
    for (double y = -6.5; y < 6.5; y += 0.1) {
      tmp.SetY(y);
      if (mpAgent->GetWorldState()
              .GetPlayer(mpAgent->Info()
                             .GetPositionInfo()
                             .GetClosePlayerToPoint(tmp)
                             .front())
              .GetPos()
              .Dist(tmp) > 1.0) {
        return tmp;
      }
    }
    tmp.SetX(tmp.X() + 0.5);
  } while (1);
  Assert(0);
  return Vector(0.0);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xe0, %rsp
movb %sil, %al
movq %rdi, -0x18(%rbp)
andb $0x1, %al
movb %al, -0x19(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0xa0(%rbp)
xorps %xmm0, %xmm0
movsd %xmm0, -0x38(%rbp)
xorps %xmm0, %xmm0
movsd %xmm0, -0x40(%rbp)
leaq -0x30(%rbp), %rdi
leaq -0x38(%rbp), %rsi
leaq -0x40(%rbp), %rdx
callq 0x11a10
testb $0x1, -0x19(%rbp)
je 0x9772b
callq 0x855e0
leaq 0x2c933(%rip), %rax     # 0xc4038
movsd (%rax), %xmm0
movsd 0x29d9f(%rip), %xmm1    # 0xc14b0
divsd %xmm1, %xmm0
movsd 0x2adf3(%rip), %xmm1    # 0xc2510
subsd %xmm1, %xmm0
movsd %xmm0, -0xa8(%rbp)
jmp 0x97772
callq 0x855e0
leaq 0x2c901(%rip), %rax     # 0xc4038
movsd (%rax), %xmm0
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
movsd 0x29d56(%rip), %xmm1    # 0xc14b0
divsd %xmm1, %xmm0
movsd 0x2adaa(%rip), %xmm1    # 0xc2510
addsd %xmm1, %xmm0
movsd %xmm0, -0xa8(%rbp)
movsd -0xa8(%rbp), %xmm0
movsd %xmm0, -0x48(%rbp)
leaq -0x30(%rbp), %rdi
leaq -0x48(%rbp), %rsi
callq 0x1ee90
movsd 0x2d5c4(%rip), %xmm0    # 0xc4d58
movsd %xmm0, -0x50(%rbp)
movsd 0x2d5bf(%rip), %xmm0    # 0xc4d60
ucomisd -0x50(%rbp), %xmm0
jbe 0x978d5
leaq -0x30(%rbp), %rdi
movq %rdi, -0xc8(%rbp)
leaq -0x50(%rbp), %rsi
callq 0x26210
movq -0xa0(%rbp), %rax
movq 0x18(%rax), %rdi
callq 0x10550
movq %rax, %rcx
movq -0xa0(%rbp), %rax
movq %rcx, -0xb8(%rbp)
movq 0x18(%rax), %rdi
callq 0x1a4a0
movq %rax, %rdi
callq 0x49590
movq -0xc8(%rbp), %rdx
movq %rax, %rsi
movl $0x0, -0x6c(%rbp)
leaq -0x68(%rbp), %rdi
movq %rdi, -0xc0(%rbp)
leaq -0x6c(%rbp), %rcx
callq 0x7ff30
movq -0xc0(%rbp), %rdi
callq 0x98ff0
movq -0xb8(%rbp), %rdi
movq %rax, %rsi
callq 0x23eb0
movq %rax, -0xb0(%rbp)
jmp 0x9783b
movq -0xb0(%rbp), %rdi
addq $0x8, %rdi
callq 0x11090
movq %rax, -0xd0(%rbp)
jmp 0x97854
movq -0xd0(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x1d6d0
movsd %xmm0, -0xd8(%rbp)
jmp 0x9786e
leaq -0x68(%rbp), %rdi
callq 0x1f280
movsd -0xd8(%rbp), %xmm0
movsd 0x29789(%rip), %xmm1    # 0xc1010
ucomisd %xmm1, %xmm0
jbe 0x978bc
movq -0x30(%rbp), %rax
movq %rax, -0x10(%rbp)
movq -0x28(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x9793b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0x68(%rbp), %rdi
callq 0x1f280
jmp 0x9794e
jmp 0x978be
movsd 0x2ac4a(%rip), %xmm0    # 0xc2510
addsd -0x50(%rbp), %xmm0
movsd %xmm0, -0x50(%rbp)
jmp 0x97799
leaq -0x30(%rbp), %rdi
callq 0x176f0
movsd 0x2973a(%rip), %xmm0    # 0xc1020
addsd (%rax), %xmm0
movsd %xmm0, -0x88(%rbp)
leaq -0x30(%rbp), %rdi
leaq -0x88(%rbp), %rsi
callq 0x1ee90
movb $0x1, %al
testb $0x1, %al
jne 0x9778c
jmp 0x9790e
xorps %xmm0, %xmm0
movsd %xmm0, -0x90(%rbp)
xorps %xmm0, %xmm0
movsd %xmm0, -0x98(%rbp)
leaq -0x10(%rbp), %rdi
leaq -0x90(%rbp), %rsi
leaq -0x98(%rbp), %rdx
callq 0x11a10
movsd -0x10(%rbp), %xmm0
movsd -0x8(%rbp), %xmm1
addq $0xe0, %rsp
popq %rbp
retq
movq -0x78(%rbp), %rdi
callq 0xaa60
nopw (%rax,%rax)