// File: /workspace/github_cpp_makefile_star2_O1/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
leaq -0x38(%rbp), %r14
movl 0x14(%rbx), %eax
cmpq %rax, %r12
je 0x68ce0
movq 0x8(%rbx), %rax
cmpl $0x1, 0xe8(%rax,%r13)
jg 0x68ca1
leaq (%rax,%r13), %r15
addq $0xa8, %r15
callq 0x450ba
movq 0x5c38(%rax), %rax
movslq 0x114(%r15), %rcx
imulq $0x3700, %rcx, %rcx     # imm = 0x3700
movsd 0x3020(%rax,%rcx), %xmm0
xorl %eax, %eax
ucomisd 0x245e(%rip), %xmm0     # 0x6b090
setae %al
movapd %xmm0, %xmm1
andpd 0x23cf(%rip), %xmm1     # 0x6b010
leaq 0x3978(%rip), %rcx      # 0x6c5c0
movsd (%rcx,%rax,8), %xmm2
cmpltsd 0x23ea(%rip), %xmm1     # 0x6b040
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
movq %r14, %rsi
callq 0xf64c
movq 0x8(%rbx), %rax
leaq (%rax,%r13), %r15
addq $0xa8, %r15
callq 0x450ba
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 0x68e00
movq 0x8(%rbx), %rax
cmpl $0x1, 0x1110(%rax,%r13)
jg 0x68d9a
leaq (%rax,%r13), %r15
addq $0x10d0, %r15           # imm = 0x10D0
callq 0x450ba
movq 0x5c38(%rax), %rax
movslq 0x114(%r15), %rcx
imulq $0x3700, %rcx, %rcx     # imm = 0x3700
movsd 0x3020(%rax,%rcx), %xmm0
xorl %eax, %eax
ucomisd 0x2365(%rip), %xmm0     # 0x6b090
setae %al
movapd %xmm0, %xmm1
andpd 0x22d6(%rip), %xmm1     # 0x6b010
leaq 0x387f(%rip), %rcx      # 0x6c5c0
movsd (%rcx,%rax,8), %xmm2
cmpltsd 0x22f1(%rip), %xmm1     # 0x6b040
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,%r13), %edx
movsd 0x1118(%rax,%r13), %xmm0
movq %r15, %rdi
movq %r14, %rsi
callq 0xf64c
movq 0x8(%rbx), %rax
leaq (%rax,%r13), %r15
addq $0x10d0, %r15           # imm = 0x10D0
callq 0x450ba
movq 0x8(%rbx), %rcx
movslq 0x11e4(%rcx,%r13), %rcx
movq 0x5c38(%rax), %rax
imulq $0x3700, %rcx, %rcx     # imm = 0x3700
movsd 0x3020(%rax,%rcx), %xmm0
movq %r15, %rsi
callq 0x68e00
incq %r12
addq $0x178, %r13            # imm = 0x178
cmpq $0x1028, %r13           # imm = 0x1028
jne 0x68bdb
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
nop