// File: /workspace/github_cpp_makefile_star2_O3/wrighteagle2d[P]wrighteaglebase/Debug/../src/WorldState.cpp
// Function: WorldStateUpdater::EstimatePlayers()
void WorldStateUpdater::EstimatePlayers() {
  //看到速度的下一周期预测队员将按照前一周期的速度继续运行
  for (Unum i = 1; i <= TEAMSIZE; i++) {
    if (i != mSelfUnum) {

      if (Teammate(i).GetVelDelay() <= 1) {
        Teammate(i).UpdateVel(
            Teammate(i).GetVel() / Teammate(i).GetPlayerDecay(),
            Teammate(i).GetVelDelay(), Teammate(i).GetVelConf());
      }
      ComputeNextCycle(Teammate(i),
                       PlayerParam::instance()
                           .HeteroPlayer(Teammate(i).GetPlayerType())
                           .playerDecay());
    }

    if (Opponent(i).GetVelDelay() <= 1) {
      Opponent(i).UpdateVel(Opponent(i).GetVel() / Opponent(i).GetPlayerDecay(),
                            Opponent(i).GetVelDelay(),
                            Opponent(i).GetVelConf());
    }
    ComputeNextCycle(Opponent(i), PlayerParam::instance()
                                      .HeteroPlayer(Opponent(i).GetPlayerType())
                                      .playerDecay());
  }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movq %rdi, %rbx
movl $0x1, %r12d
xorl %r13d, %r13d
xorl %r14d, %r14d
leaq 0x1(%r14), %rcx
movl 0x14(%rbx), %eax
movq %rcx, -0x40(%rbp)
cmpq %rax, %rcx
je 0x66567
movq 0x8(%rbx), %rax
cmpl $0x1, 0xe8(%rax,%r13)
jg 0x66527
leaq (%rax,%r13), %r15
addq $0xa8, %r15
callq 0x43dce
movq 0x5c38(%rax), %rax
movslq 0x114(%r15), %rcx
imulq $0x3700, %rcx, %rcx     # imm = 0x3700
movsd 0x3020(%rax,%rcx), %xmm0
xorl %eax, %eax
ucomisd 0x2bdd(%rip), %xmm0     # 0x69090
setae %al
movapd %xmm0, %xmm1
andpd 0x2b4e(%rip), %xmm1     # 0x69010
leaq 0x40e7(%rip), %rcx      # 0x6a5b0
movsd (%rcx,%rax,8), %xmm2
cmpltsd 0x2b69(%rip), %xmm1     # 0x69040
andpd %xmm1, %xmm2
andnpd %xmm0, %xmm1
orpd %xmm2, %xmm1
movsd 0x30(%r15), %xmm0
movsd 0x38(%r15), %xmm2
divsd %xmm1, %xmm0
divsd %xmm1, %xmm2
movsd %xmm0, -0x38(%rbp)
movsd %xmm2, -0x30(%rbp)
movq 0x8(%rbx), %rax
movl 0xe8(%rax,%r13), %edx
movsd 0xf0(%rax,%r13), %xmm0
movq %r15, %rdi
leaq -0x38(%rbp), %rsi
callq 0xf53c
movq 0x8(%rbx), %rax
leaq -0x1(%r12), %r14
leaq (%rax,%r13), %r15
addq $0xa8, %r15
callq 0x43dce
movq 0x8(%rbx), %rcx
movslq 0x1bc(%rcx,%r13), %rcx
movq 0x5c38(%rax), %rax
imulq $0x3700, %rcx, %rcx     # imm = 0x3700
movsd 0x3020(%rax,%rcx), %xmm0
movq %r15, %rsi
callq 0x66690
movq 0x8(%rbx), %rax
imulq $0x178, %r14, %r14      # imm = 0x178
cmpl $0x1, 0x1110(%rax,%r14)
jg 0x6662d
leaq (%rax,%r14), %r15
addq $0x10d0, %r15           # imm = 0x10D0
callq 0x43dce
movq 0x5c38(%rax), %rax
movslq 0x114(%r15), %rcx
imulq $0x3700, %rcx, %rcx     # imm = 0x3700
movsd 0x3020(%rax,%rcx), %xmm0
xorl %eax, %eax
ucomisd 0x2ad7(%rip), %xmm0     # 0x69090
setae %al
movapd %xmm0, %xmm1
andpd 0x2a48(%rip), %xmm1     # 0x69010
leaq 0x3fe1(%rip), %rcx      # 0x6a5b0
movsd (%rcx,%rax,8), %xmm2
cmpltsd 0x2a63(%rip), %xmm1     # 0x69040
andpd %xmm1, %xmm2
andnpd %xmm0, %xmm1
orpd %xmm2, %xmm1
movsd 0x30(%r15), %xmm0
movsd 0x38(%r15), %xmm2
divsd %xmm1, %xmm0
divsd %xmm1, %xmm2
movsd %xmm0, -0x38(%rbp)
movsd %xmm2, -0x30(%rbp)
movq 0x8(%rbx), %rax
movl 0x1110(%rax,%r14), %edx
movsd 0x1118(%rax,%r14), %xmm0
movq %r15, %rdi
leaq -0x38(%rbp), %rsi
callq 0xf53c
movq 0x8(%rbx), %rax
leaq (%rax,%r14), %r15
addq $0x10d0, %r15           # imm = 0x10D0
callq 0x43dce
movq 0x8(%rbx), %rcx
movslq 0x11e4(%rcx,%r14), %rcx
movq 0x5c38(%rax), %rax
imulq $0x3700, %rcx, %rcx     # imm = 0x3700
movsd 0x3020(%rax,%rcx), %xmm0
movq %r15, %rsi
callq 0x66690
incq %r12
movl $0x178, %eax            # imm = 0x178
addq %rax, %r13
movq -0x40(%rbp), %r14
cmpq $0xb, %r14
jne 0x66454
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq