// File: wrighteagle2d[P]wrighteaglebase/Debug/../src/WorldState.cpp
// Function: WorldStateUpdater::UpdateFromAudio()
void WorldStateUpdater::UpdateFromAudio() {
  // update by our coach say
  if (mpObserver->Audio().IsOurCoachSayValid()) {
    mpObserver->ResetOurCoachSayValid(); // 恢复
    if (mpObserver->IsNewOppType()) {
      for (int i = 1; i <= TEAMSIZE; ++i) {
        if (mpObserver->Audio().GetOpponentType(i) > 0) {
          Opponent(i).UpdatePlayerType(mpObserver->Audio().GetOpponentType(i));
        }
      }
      mpObserver->SetNewOppType(false);
    }
  }

  if (mpObserver->Ball_Fullstate().GetPosDelay() == 0) {
    mpObserver->Ball_Fullstate().AutoUpdate(
        1, PlayerParam::instance().ballConfDecay());

    Ball().UpdatePos(mpObserver->Ball_Fullstate().GetPos(), 1,
                     PlayerParam::instance().ballConfDecay());
    Ball().UpdateGuessedTimes(0);
    Ball().UpdateVel(mpObserver->Ball_Fullstate().GetVel(), 1,
                     PlayerParam::instance().ballConfDecay());
    Ball().UpdatePosEps(0);
    Ball().UpdateVelEps(0);

    for (Unum i = 1; i <= TEAMSIZE; i++) {
      Teammate(i).SetIsAlive(mpObserver->Teammate_Fullstate(i).IsAlive());
      Teammate(i).UpdatePos(mpObserver->Teammate_Fullstate(i).GetPos(), 1,
                            PlayerParam::instance().playerConfDecay());
      Teammate(i).UpdateGuessedTimes(0);
      Teammate(i).UpdateVel(mpObserver->Teammate_Fullstate(i).GetVel(), 1,
                            PlayerParam::instance().playerConfDecay());
      Teammate(i).UpdatePosEps(0);
      Teammate(i).UpdateVelEps(0);
      Teammate(i).UpdateBodyDir(mpObserver->Teammate_Fullstate(i).GetBodyDir(),
                                1, PlayerParam::instance().playerConfDecay());
      Teammate(i).UpdateNeckDir(mpObserver->Teammate_Fullstate(i).GetNeckDir(),
                                1, PlayerParam::instance().playerConfDecay());
      if (i != mSelfUnum) {
        Teammate(i).UpdateStamina(
            mpObserver->Teammate_Fullstate(i).GetStamina());
        Teammate(i).UpdateCapacity(
            mpObserver->Teammate_Fullstate(i).GetCapacity());
      }

      Opponent(i).SetIsAlive(mpObserver->Opponent_Fullstate(i).IsAlive());
      Opponent(i).UpdatePlayerType(
          mpObserver->Opponent_Fullstate(i).GetPlayerType());
      Opponent(i).UpdatePos(mpObserver->Opponent_Fullstate(i).GetPos(), 1,
                            PlayerParam::instance().playerConfDecay());
      Opponent(i).UpdateGuessedTimes(0);
      Opponent(i).UpdateVel(mpObserver->Opponent_Fullstate(i).GetVel(), 1,
                            PlayerParam::instance().playerConfDecay());
      Opponent(i).UpdatePosEps(0);
      Opponent(i).UpdateVelEps(0);
      Opponent(i).UpdateBodyDir(mpObserver->Opponent_Fullstate(i).GetBodyDir());
      Opponent(i).UpdateNeckDir(mpObserver->Opponent_Fullstate(i).GetNeckDir());
      Opponent(i).UpdateStamina(mpObserver->Opponent_Fullstate(i).GetStamina());
      Opponent(i).UpdateCapacity(
          mpObserver->Opponent_Fullstate(i).GetCapacity());
    }
  } else if (mpObserver->Audio().IsTeammateSayValid()) {
    // update by teammate say
    mpObserver->ResetTeammateSayValid();

    int type = mpObserver->Audio().GetHearInfoType();
    Unum sender = mpObserver->Audio().GetHearUnum();

    //更新听到球的信息
    int cmp = type & AudioObserver::HearInfo_Ball;
    if (cmp != 0) {
      if (Ball().GetGuessedTimes() > 0 ||
          Ball().GetPosConf() <
              PlayerParam::instance().minValidConf() - FLOAT_EPS ||
          (Teammate(sender).IsAlive() &&
           Teammate(sender).GetPos().Dist2(Ball().GetPos()) <
               SelfState().GetPos().Dist2(Ball().GetPos()))) {
        if (mpObserver->Audio().GetBallPos().time() ==
            mpObserver->CurrentTime()) {
          Ball().UpdatePos(mpObserver->Audio().GetBallPos().value(), 1,
                           PlayerParam::instance().ballConfDecay() - FLOAT_EPS);
          Ball().UpdateGuessedTimes(0);
          // 0.3为经验值 0.75 * 4
          double eps =
              1.5 + PlayerParam::instance().GetEpsInSight(
                        (Ball().GetPos() - Teammate(sender).GetPos()).Mod());
          Ball().UpdatePosEps(eps);
        }

        if (mpObserver->Audio().GetBallVel().time() ==
            mpObserver->CurrentTime()) {
          Ball().UpdateVel(mpObserver->Audio().GetBallVel().value(), 1,
                           PlayerParam::instance().ballConfDecay() - FLOAT_EPS);

          //统计得到看见的速度一般误差不大于1
          Ball().UpdateVelEps(3);
        }
      }
    }

    //更新听到队友的信息
    cmp = type & AudioObserver::HearInfo_Teammate;
    if (cmp != 0) {
      int teammate_count = mpObserver->Audio().GetTeammateCount();
      for (int i = 0; i < teammate_count; i++) {
        if (mpObserver->Audio().GetTeammate(i).time() ==
            mpObserver->CurrentTime()) {
          int unum = mpObserver->Audio().GetTeammate(i).value().mUnum;
          if (Teammate(unum).GetGuessedTimes() > 0 ||
              Teammate(unum).GetPosConf() <
                  PlayerParam::instance().playerConfDecay() - FLOAT_EPS ||
              (Teammate(sender).IsAlive() &&
               Teammate(sender).GetPos().Dist2(Teammate(unum).GetPos()) <
                   SelfState().GetPos().Dist2(Teammate(unum).GetPos()))) {
            Teammate(unum).UpdateGuessedTimes(0);
            Teammate(unum).SetIsAlive(true);
            const Vector &pos = mpObserver->Audio().GetTeammate(i).value().mPos;

            Teammate(unum).UpdatePos(
                pos, 1, PlayerParam::instance().playerConfDecay() - FLOAT_EPS);

            double eps = 0.1 + PlayerParam::instance().GetEpsInSight(
                                   (pos - Teammate(sender).GetPos()).Mod());
            Teammate(unum).UpdatePosEps(eps);
          }
        }
      }
    }

    //更新听到的对手的信息
    cmp = type & AudioObserver::HearInfo_Opponent;
    if (cmp != 0) {
      int Opponent_count = mpObserver->Audio().GetOpponentCount();
      for (int i = 0; i < Opponent_count; i++) {
        if (mpObserver->Audio().GetOpponent(i).time() ==
            mpObserver->CurrentTime()) {
          int unum = mpObserver->Audio().GetOpponent(i).value().mUnum;
          if (Opponent(unum).GetGuessedTimes() > 0 ||
              Opponent(unum).GetPosConf() <
                  PlayerParam::instance().playerConfDecay() - FLOAT_EPS ||
              (Teammate(sender).IsAlive() &&
               Teammate(sender).GetPos().Dist2(Opponent(unum).GetPos()) <
                   SelfState().GetPos().Dist2(Opponent(unum).GetPos()))) {
            Opponent(unum).UpdateGuessedTimes(0);
            Opponent(unum).SetIsAlive(true);
            const Vector &pos = mpObserver->Audio().GetOpponent(i).value().mPos;

            Opponent(unum).UpdatePos(
                pos, 1, PlayerParam::instance().playerConfDecay() - FLOAT_EPS);
            double eps = 0.1 + PlayerParam::instance().GetEpsInSight(
                                   (pos - Teammate(sender).GetPos()).Mod());
            Opponent(unum).UpdatePosEps(eps);
          }
        }
      }
    }
  }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x270, %rsp            # imm = 0x270
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0xa0(%rbp)
movq (%rax), %rdi
callq 0x2e690
movq %rax, %rdi
callq 0x2e6b0
testb $0x1, (%rax)
je 0xadc79
movq -0xa0(%rbp), %rax
movq (%rax), %rdi
callq 0xbc8d0
movq -0xa0(%rbp), %rax
movq (%rax), %rdi
callq 0xbc900
testb $0x1, %al
jne 0xadbea
jmp 0xadc77
movl $0x1, -0xc(%rbp)
cmpl $0xb, -0xc(%rbp)
jg 0xadc66
movq -0xa0(%rbp), %rax
movq (%rax), %rdi
callq 0x2e690
movq %rax, %rdi
leaq -0xc(%rbp), %rsi
callq 0xbc920
cmpl $0x0, (%rax)
jle 0xadc59
movq -0xa0(%rbp), %rdi
movl -0xc(%rbp), %esi
callq 0xbc7e0
movq %rax, %rcx
movq -0xa0(%rbp), %rax
movq %rcx, -0xa8(%rbp)
movq (%rax), %rdi
callq 0x2e690
movq %rax, %rdi
leaq -0xc(%rbp), %rsi
callq 0xbc920
movq -0xa8(%rbp), %rdi
movl (%rax), %esi
callq 0x77e60
jmp 0xadc5b
movl -0xc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc(%rbp)
jmp 0xadbf1
movq -0xa0(%rbp), %rax
movq (%rax), %rdi
xorl %esi, %esi
callq 0xbc950
jmp 0xadc79
movq -0xa0(%rbp), %rax
movq (%rax), %rdi
callq 0x77e40
movq %rax, %rdi
addq $0x8, %rdi
callq 0x1ddd0
cmpl $0x0, %eax
jne 0xae383
movq -0xa0(%rbp), %rax
movq (%rax), %rdi
callq 0x77e40
movq %rax, -0xd0(%rbp)
callq 0x798a0
movq %rax, %rdi
callq 0xbc890
movq -0xd0(%rbp), %rdi
movsd (%rax), %xmm0
movl $0x1, %esi
callq 0x14340
movq -0xa0(%rbp), %rdi
callq 0xbc760
movq %rax, %rcx
movq -0xa0(%rbp), %rax
movq %rcx, -0xc8(%rbp)
movq (%rax), %rdi
callq 0x77e40
movq %rax, %rdi
addq $0x8, %rdi
callq 0x11090
movq %rax, -0xc0(%rbp)
callq 0x798a0
movq %rax, %rdi
callq 0xbc890
movq -0xc8(%rbp), %rdi
movq -0xc0(%rbp), %rsi
movsd (%rax), %xmm0
movl $0x1, %edx
callq 0x142f0
movq -0xa0(%rbp), %rdi
callq 0xbc760
movq %rax, %rdi
xorl %esi, %esi
callq 0xbc810
movq -0xa0(%rbp), %rdi
callq 0xbc760
movq %rax, %rcx
movq -0xa0(%rbp), %rax
movq %rcx, -0xb8(%rbp)
movq (%rax), %rdi
callq 0x77e40
movq %rax, %rdi
callq 0x10a80
movq %rax, -0xb0(%rbp)
callq 0x798a0
movq %rax, %rdi
callq 0xbc890
movq -0xb8(%rbp), %rdi
movq -0xb0(%rbp), %rsi
movsd (%rax), %xmm0
movl $0x1, %edx
callq 0x142a0
movq -0xa0(%rbp), %rdi
callq 0xbc760
movq %rax, %rdi
addq $0x8, %rdi
xorps %xmm0, %xmm0
callq 0xbc830
movq -0xa0(%rbp), %rdi
callq 0xbc760
movq %rax, %rdi
xorps %xmm0, %xmm0
callq 0xbc850
movl $0x1, -0x10(%rbp)
cmpl $0xb, -0x10(%rbp)
jg 0xae37e
movq -0xa0(%rbp), %rdi
movl -0x10(%rbp), %esi
callq 0xbc780
movq %rax, %rcx
movq -0xa0(%rbp), %rax
movq %rcx, -0x118(%rbp)
movq (%rax), %rdi
movl -0x10(%rbp), %esi
callq 0x29540
movq %rax, %rdi
callq 0x23f20
movq -0x118(%rbp), %rdi
movzbl %al, %esi
andl $0x1, %esi
callq 0x288a0
movq -0xa0(%rbp), %rdi
movl -0x10(%rbp), %esi
callq 0xbc780
movq %rax, %rcx
movq -0xa0(%rbp), %rax
movq %rcx, -0x110(%rbp)
movq (%rax), %rdi
movl -0x10(%rbp), %esi
callq 0x29540
movq %rax, %rdi
addq $0x8, %rdi
callq 0x11090
movq %rax, -0x108(%rbp)
callq 0x798a0
movq %rax, %rdi
callq 0xbc8b0
movq -0x110(%rbp), %rdi
movq -0x108(%rbp), %rsi
movsd (%rax), %xmm0
movl $0x1, %edx
callq 0x142f0
movq -0xa0(%rbp), %rdi
movl -0x10(%rbp), %esi
callq 0xbc780
movq %rax, %rdi
xorl %esi, %esi
callq 0xbc810
movq -0xa0(%rbp), %rdi
movl -0x10(%rbp), %esi
callq 0xbc780
movq %rax, %rcx
movq -0xa0(%rbp), %rax
movq %rcx, -0x100(%rbp)
movq (%rax), %rdi
movl -0x10(%rbp), %esi
callq 0x29540
movq %rax, %rdi
callq 0x10a80
movq %rax, -0xf8(%rbp)
callq 0x798a0
movq %rax, %rdi
callq 0xbc8b0
movq -0x100(%rbp), %rdi
movq -0xf8(%rbp), %rsi
movsd (%rax), %xmm0
movl $0x1, %edx
callq 0x142a0
movq -0xa0(%rbp), %rdi
movl -0x10(%rbp), %esi
callq 0xbc780
movq %rax, %rdi
addq $0x8, %rdi
xorps %xmm0, %xmm0
callq 0xbc830
movq -0xa0(%rbp), %rdi
movl -0x10(%rbp), %esi
callq 0xbc780
movq %rax, %rdi
xorps %xmm0, %xmm0
callq 0xbc850
movq -0xa0(%rbp), %rdi
movl -0x10(%rbp), %esi
callq 0xbc780
movq %rax, %rcx
movq -0xa0(%rbp), %rax
movq %rcx, -0xf0(%rbp)
movq (%rax), %rdi
movl -0x10(%rbp), %esi
callq 0x29540
movq %rax, %rdi
callq 0x11170
movsd (%rax), %xmm0
movsd %xmm0, -0xe8(%rbp)
callq 0x798a0
movq %rax, %rdi
callq 0xbc8b0
movq -0xf0(%rbp), %rdi
movsd -0xe8(%rbp), %xmm0
movsd (%rax), %xmm1
movl $0x1, %esi
callq 0x77ef0
movq -0xa0(%rbp), %rdi
movl -0x10(%rbp), %esi
callq 0xbc780
movq %rax, %rcx
movq -0xa0(%rbp), %rax
movq %rcx, -0xe0(%rbp)
movq (%rax), %rdi
movl -0x10(%rbp), %esi
callq 0x29540
movq %rax, %rdi
callq 0x118d0
movsd %xmm0, -0xd8(%rbp)
callq 0x798a0
movq %rax, %rdi
callq 0xbc8b0
movq -0xe0(%rbp), %rdi
movsd -0xd8(%rbp), %xmm0
movsd (%rax), %xmm1
movl $0x1, %esi
callq 0x77f60
movq -0xa0(%rbp), %rcx
movl -0x10(%rbp), %eax
cmpl 0x14(%rcx), %eax
je 0xae0b3
movq -0xa0(%rbp), %rdi
movl -0x10(%rbp), %esi
callq 0xbc780
movq %rax, %rcx
movq -0xa0(%rbp), %rax
movq %rcx, -0x128(%rbp)
movq (%rax), %rdi
movl -0x10(%rbp), %esi
callq 0x29540
movq %rax, %rdi
callq 0x10cd0
movq -0x128(%rbp), %rdi
movsd (%rax), %xmm0
callq 0x77fd0
movq -0xa0(%rbp), %rdi
movl -0x10(%rbp), %esi
callq 0xbc780
movq %rax, %rcx
movq -0xa0(%rbp), %rax
movq %rcx, -0x120(%rbp)
movq (%rax), %rdi
movl -0x10(%rbp), %esi
callq 0x29540
movq %rax, %rdi
callq 0x12be0
movq -0x120(%rbp), %rdi
movsd (%rax), %xmm0
callq 0x78030
movq -0xa0(%rbp), %rdi
movl -0x10(%rbp), %esi
callq 0xbc7e0
movq %rax, %rcx
movq -0xa0(%rbp), %rax
movq %rcx, -0x178(%rbp)
movq (%rax), %rdi
movl -0x10(%rbp), %esi
callq 0x77e10
movq %rax, %rdi
callq 0x23f20
movq -0x178(%rbp), %rdi
movzbl %al, %esi
andl $0x1, %esi
callq 0x288a0
movq -0xa0(%rbp), %rdi
movl -0x10(%rbp), %esi
callq 0xbc7e0
movq %rax, %rcx
movq -0xa0(%rbp), %rax
movq %rcx, -0x170(%rbp)
movq (%rax), %rdi
movl -0x10(%rbp), %esi
callq 0x77e10
movq %rax, %rdi
callq 0x10a60
movq -0x170(%rbp), %rdi
movl %eax, %esi
callq 0x77e60
movq -0xa0(%rbp), %rdi
movl -0x10(%rbp), %esi
callq 0xbc7e0
movq %rax, %rcx
movq -0xa0(%rbp), %rax
movq %rcx, -0x168(%rbp)
movq (%rax), %rdi
movl -0x10(%rbp), %esi
callq 0x77e10
movq %rax, %rdi
addq $0x8, %rdi
callq 0x11090
movq %rax, -0x160(%rbp)
callq 0x798a0
movq %rax, %rdi
callq 0xbc8b0
movq -0x168(%rbp), %rdi
movq -0x160(%rbp), %rsi
movsd (%rax), %xmm0
movl $0x1, %edx
callq 0x142f0
movq -0xa0(%rbp), %rdi
movl -0x10(%rbp), %esi
callq 0xbc7e0
movq %rax, %rdi
xorl %esi, %esi
callq 0xbc810
movq -0xa0(%rbp), %rdi
movl -0x10(%rbp), %esi
callq 0xbc7e0
movq %rax, %rcx
movq -0xa0(%rbp), %rax
movq %rcx, -0x158(%rbp)
movq (%rax), %rdi
movl -0x10(%rbp), %esi
callq 0x77e10
movq %rax, %rdi
callq 0x10a80
movq %rax, -0x150(%rbp)
callq 0x798a0
movq %rax, %rdi
callq 0xbc8b0
movq -0x158(%rbp), %rdi
movq -0x150(%rbp), %rsi
movsd (%rax), %xmm0
movl $0x1, %edx
callq 0x142a0
movq -0xa0(%rbp), %rdi
movl -0x10(%rbp), %esi
callq 0xbc7e0
movq %rax, %rdi
addq $0x8, %rdi
xorps %xmm0, %xmm0
callq 0xbc830
movq -0xa0(%rbp), %rdi
movl -0x10(%rbp), %esi
callq 0xbc7e0
movq %rax, %rdi
xorps %xmm0, %xmm0
callq 0xbc850
movq -0xa0(%rbp), %rdi
movl -0x10(%rbp), %esi
callq 0xbc7e0
movq %rax, %rcx
movq -0xa0(%rbp), %rax
movq %rcx, -0x148(%rbp)
movq (%rax), %rdi
movl -0x10(%rbp), %esi
callq 0x77e10
movq %rax, %rdi
callq 0x11170
movq -0x148(%rbp), %rdi
movsd (%rax), %xmm0
xorl %esi, %esi
movsd 0x12d74(%rip), %xmm1    # 0xc1010
callq 0x77ef0
movq -0xa0(%rbp), %rdi
movl -0x10(%rbp), %esi
callq 0xbc7e0
movq %rax, %rcx
movq -0xa0(%rbp), %rax
movq %rcx, -0x140(%rbp)
movq (%rax), %rdi
movl -0x10(%rbp), %esi
callq 0x77e10
movq %rax, %rdi
callq 0x118d0
movq -0x140(%rbp), %rdi
xorl %esi, %esi
movsd 0x12d2b(%rip), %xmm1    # 0xc1010
callq 0x77f60
movq -0xa0(%rbp), %rdi
movl -0x10(%rbp), %esi
callq 0xbc7e0
movq %rax, %rcx
movq -0xa0(%rbp), %rax
movq %rcx, -0x138(%rbp)
movq (%rax), %rdi
movl -0x10(%rbp), %esi
callq 0x77e10
movq %rax, %rdi
callq 0x10cd0
movq -0x138(%rbp), %rdi
movsd (%rax), %xmm0
callq 0x77fd0
movq -0xa0(%rbp), %rdi
movl -0x10(%rbp), %esi
callq 0xbc7e0
movq %rax, %rcx
movq -0xa0(%rbp), %rax
movq %rcx, -0x130(%rbp)
movq (%rax), %rdi
movl -0x10(%rbp), %esi
callq 0x77e10
movq %rax, %rdi
callq 0x12be0
movq -0x130(%rbp), %rdi
movsd (%rax), %xmm0
callq 0x78030
movl -0x10(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x10(%rbp)
jmp 0xadde2
jmp 0xaee58
movq -0xa0(%rbp), %rax
movq (%rax), %rdi
callq 0x2e690
movq %rax, %rdi
callq 0x2e6c0
testb $0x1, (%rax)
je 0xaee56
movq -0xa0(%rbp), %rax
movq (%rax), %rdi
callq 0xbc980
movq -0xa0(%rbp), %rax
movq (%rax), %rdi
callq 0x2e690
movq %rax, %rdi
callq 0xbc9b0
movl %eax, %ecx
movq -0xa0(%rbp), %rax
movl %ecx, -0x14(%rbp)
movq (%rax), %rdi
callq 0x2e690
movq %rax, %rdi
callq 0xbc9d0
movl (%rax), %eax
movl %eax, -0x18(%rbp)
movl -0x14(%rbp), %eax
andl $0x1, %eax
movl %eax, -0x1c(%rbp)
cmpl $0x0, -0x1c(%rbp)
je 0xae793
movq -0xa0(%rbp), %rdi
callq 0xbc760
movq %rax, %rdi
callq 0xbc9f0
cmpl $0x0, %eax
jg 0xae536
movq -0xa0(%rbp), %rdi
callq 0xbc760
movq %rax, %rdi
addq $0x8, %rdi
callq 0x1d930
movsd (%rax), %xmm0
movsd %xmm0, -0x180(%rbp)
callq 0x798a0
movq %rax, %rdi
callq 0x1d950
movsd -0x180(%rbp), %xmm1
movsd (%rax), %xmm0
movsd 0x12ba9(%rip), %xmm2    # 0xc1008
subsd %xmm2, %xmm0
ucomisd %xmm1, %xmm0
ja 0xae536
movq -0xa0(%rbp), %rdi
movl -0x18(%rbp), %esi
callq 0xbc780
movq %rax, %rdi
callq 0x23f20
testb $0x1, %al
jne 0xae48d
jmp 0xae791
movq -0xa0(%rbp), %rdi
movl -0x18(%rbp), %esi
callq 0xbc780
movq %rax, %rdi
addq $0x8, %rdi
callq 0x11090
movq -0xa0(%rbp), %rdi
movq %rax, -0x198(%rbp)
callq 0xbc760
movq %rax, %rdi
addq $0x8, %rdi
callq 0x11090
movq -0x198(%rbp), %rdi
movq %rax, %rsi
callq 0x49040
movq -0xa0(%rbp), %rdi
movsd %xmm0, -0x188(%rbp)
callq 0xbc740
movq %rax, %rdi
addq $0x8, %rdi
callq 0x11090
movq -0xa0(%rbp), %rdi
movq %rax, -0x190(%rbp)
callq 0xbc760
movq %rax, %rdi
addq $0x8, %rdi
callq 0x11090
movq -0x190(%rbp), %rdi
movq %rax, %rsi
callq 0x49040
movsd -0x188(%rbp), %xmm1
ucomisd %xmm1, %xmm0
jbe 0xae791
movq -0xa0(%rbp), %rax
movq (%rax), %rdi
callq 0x2e690
movq %rax, %rdi
callq 0xbca10
movq %rax, %rdi
callq 0xbca30
movq %rax, %rcx
movq -0xa0(%rbp), %rax
movq %rcx, -0x1a0(%rbp)
movq (%rax), %rdi
callq 0x11a70
movq -0x1a0(%rbp), %rdi
movq %rax, %rsi
callq 0x120a0
testb $0x1, %al
jne 0xae586
jmp 0xae6b2
movq -0xa0(%rbp), %rdi
callq 0xbc760
movq %rax, %rcx
movq -0xa0(%rbp), %rax
movq %rcx, -0x1c0(%rbp)
movq (%rax), %rdi
callq 0x2e690
movq %rax, %rdi
callq 0xbca10
movq %rax, %rdi
callq 0xbca50
movq %rax, -0x1b8(%rbp)
callq 0x798a0
movq %rax, %rdi
callq 0xbc890
movq -0x1c0(%rbp), %rdi
movq -0x1b8(%rbp), %rsi
movsd (%rax), %xmm0
movsd 0x12a1f(%rip), %xmm1    # 0xc1008
subsd %xmm1, %xmm0
movl $0x1, %edx
callq 0x142f0
movq -0xa0(%rbp), %rdi
callq 0xbc760
movq %rax, %rdi
xorl %esi, %esi
callq 0xbc810
callq 0x798a0
movq -0xa0(%rbp), %rdi
movq %rax, -0x1a8(%rbp)
callq 0xbc760
movq %rax, %rdi
addq $0x8, %rdi
callq 0x11090
movq -0xa0(%rbp), %rdi
movq %rax, -0x1b0(%rbp)
movl -0x18(%rbp), %esi
callq 0xbc780
movq %rax, %rdi
addq $0x8, %rdi
callq 0x11090
movq -0x1b0(%rbp), %rdi
movq %rax, %rsi
callq 0x110a0
movsd %xmm0, -0x38(%rbp)
movsd %xmm1, -0x30(%rbp)
leaq -0x38(%rbp), %rdi
callq 0x104e0
movq -0x1a8(%rbp), %rdi
callq 0xbca60
movq -0xa0(%rbp), %rdi
movaps %xmm0, %xmm1
movsd 0x136cd(%rip), %xmm0    # 0xc1d60
addsd %xmm1, %xmm0
movsd %xmm0, -0x28(%rbp)
callq 0xbc760
movq %rax, %rdi
addq $0x8, %rdi
movsd -0x28(%rbp), %xmm0
callq 0xbc830
movq -0xa0(%rbp), %rax
movq (%rax), %rdi
callq 0x2e690
movq %rax, %rdi
callq 0xbccb0
movq %rax, %rdi
callq 0xbca30
movq %rax, %rcx
movq -0xa0(%rbp), %rax
movq %rcx, -0x1c8(%rbp)
movq (%rax), %rdi
callq 0x11a70
movq -0x1c8(%rbp), %rdi
movq %rax, %rsi
callq 0x120a0
testb $0x1, %al
jne 0xae702
jmp 0xae78f
movq -0xa0(%rbp), %rdi
callq 0xbc760
movq %rax, %rcx
movq -0xa0(%rbp), %rax
movq %rcx, -0x1d8(%rbp)
movq (%rax), %rdi
callq 0x2e690
movq %rax, %rdi
callq 0xbccb0
movq %rax, %rdi
callq 0xbca50
movq %rax, -0x1d0(%rbp)
callq 0x798a0
movq %rax, %rdi
callq 0xbc890
movq -0x1d8(%rbp), %rdi
movq -0x1d0(%rbp), %rsi
movsd (%rax), %xmm0
movsd 0x128a3(%rip), %xmm1    # 0xc1008
subsd %xmm1, %xmm0
movl $0x1, %edx
callq 0x142a0
movq -0xa0(%rbp), %rdi
callq 0xbc760
movq %rax, %rdi
movsd 0x1342e(%rip), %xmm0    # 0xc1bb8
callq 0xbc850
jmp 0xae791
jmp 0xae793
movl -0x14(%rbp), %eax
andl $0x2, %eax
movl %eax, -0x1c(%rbp)
cmpl $0x0, -0x1c(%rbp)
je 0xaeaec
movq -0xa0(%rbp), %rax
movq (%rax), %rdi
callq 0x2e690
movq %rax, %rdi
callq 0xbccd0
movl %eax, -0x3c(%rbp)
movl $0x0, -0x40(%rbp)
movl -0x40(%rbp), %eax
cmpl -0x3c(%rbp), %eax
jge 0xaeaea
movq -0xa0(%rbp), %rax
movq (%rax), %rdi
callq 0x2e690
movq %rax, %rdi
movl -0x40(%rbp), %esi
callq 0xbccf0
movq %rax, %rdi
callq 0xbcd30
movq %rax, %rcx
movq -0xa0(%rbp), %rax
movq %rcx, -0x1e0(%rbp)
movq (%rax), %rdi
callq 0x11a70
movq -0x1e0(%rbp), %rdi
movq %rax, %rsi
callq 0x120a0
testb $0x1, %al
jne 0xae826
jmp 0xaeada
movq -0xa0(%rbp), %rax
movq (%rax), %rdi
callq 0x2e690
movq %rax, %rdi
movl -0x40(%rbp), %esi
callq 0xbccf0
movq %rax, %rdi
callq 0xbcd50
movq -0xa0(%rbp), %rdi
movl 0x10(%rax), %eax
movl %eax, -0x44(%rbp)
movl -0x44(%rbp), %esi
callq 0xbc780
movq %rax, %rdi
callq 0xbc9f0
cmpl $0x0, %eax
jg 0xae993
movq -0xa0(%rbp), %rdi
movl -0x44(%rbp), %esi
callq 0xbc780
movq %rax, %rdi
addq $0x8, %rdi
callq 0x1d930
movsd (%rax), %xmm0
movsd %xmm0, -0x1e8(%rbp)
callq 0x798a0
movq %rax, %rdi
callq 0xbc8b0
movsd -0x1e8(%rbp), %xmm1
movsd (%rax), %xmm0
movsd 0x12752(%rip), %xmm2    # 0xc1008
subsd %xmm2, %xmm0
ucomisd %xmm1, %xmm0
ja 0xae993
movq -0xa0(%rbp), %rdi
movl -0x18(%rbp), %esi
callq 0xbc780
movq %rax, %rdi
callq 0x23f20
testb $0x1, %al
jne 0xae8e4
jmp 0xaead8
movq -0xa0(%rbp), %rdi
movl -0x18(%rbp), %esi
callq 0xbc780
movq %rax, %rdi
addq $0x8, %rdi
callq 0x11090
movq -0xa0(%rbp), %rdi
movq %rax, -0x200(%rbp)
movl -0x44(%rbp), %esi
callq 0xbc780
movq %rax, %rdi
addq $0x8, %rdi
callq 0x11090
movq -0x200(%rbp), %rdi
movq %rax, %rsi
callq 0x49040
movq -0xa0(%rbp), %rdi
movsd %xmm0, -0x1f0(%rbp)
callq 0xbc740
movq %rax, %rdi
addq $0x8, %rdi
callq 0x11090
movq -0xa0(%rbp), %rdi
movq %rax, -0x1f8(%rbp)
movl -0x44(%rbp), %esi
callq 0xbc780
movq %rax, %rdi
addq $0x8, %rdi
callq 0x11090
movq -0x1f8(%rbp), %rdi
movq %rax, %rsi
callq 0x49040
movsd -0x1f0(%rbp), %xmm1
ucomisd %xmm1, %xmm0
jbe 0xaead8
movq -0xa0(%rbp), %rdi
movl -0x44(%rbp), %esi
callq 0xbc780
movq %rax, %rdi
xorl %esi, %esi
callq 0xbc810
movq -0xa0(%rbp), %rdi
movl -0x44(%rbp), %esi
callq 0xbc780
movq %rax, %rdi
movl $0x1, %esi
callq 0x288a0
movq -0xa0(%rbp), %rax
movq (%rax), %rdi
callq 0x2e690
movq %rax, %rdi
movl -0x40(%rbp), %esi
callq 0xbccf0
movq %rax, %rdi
callq 0xbcd50
movq -0xa0(%rbp), %rdi
movq %rax, -0x50(%rbp)
movl -0x44(%rbp), %esi
callq 0xbc780
movq %rax, -0x220(%rbp)
movq -0x50(%rbp), %rax
movq %rax, -0x218(%rbp)
callq 0x798a0
movq %rax, %rdi
callq 0xbc8b0
movq -0x220(%rbp), %rdi
movq -0x218(%rbp), %rsi
movsd (%rax), %xmm0
movsd 0x125d2(%rip), %xmm1    # 0xc1008
subsd %xmm1, %xmm0
movl $0x1, %edx
callq 0x142f0
callq 0x798a0
movq -0xa0(%rbp), %rdi
movq %rax, -0x208(%rbp)
movq -0x50(%rbp), %rax
movq %rax, -0x210(%rbp)
movl -0x18(%rbp), %esi
callq 0xbc780
movq %rax, %rdi
addq $0x8, %rdi
callq 0x11090
movq -0x210(%rbp), %rdi
movq %rax, %rsi
callq 0x110a0
movsd %xmm0, -0x68(%rbp)
movsd %xmm1, -0x60(%rbp)
leaq -0x68(%rbp), %rdi
callq 0x104e0
movq -0x208(%rbp), %rdi
callq 0xbca60
movq -0xa0(%rbp), %rdi
movaps %xmm0, %xmm1
movsd 0x13a5a(%rip), %xmm0    # 0xc2510
addsd %xmm1, %xmm0
movsd %xmm0, -0x58(%rbp)
movl -0x44(%rbp), %esi
callq 0xbc780
movq %rax, %rdi
addq $0x8, %rdi
movsd -0x58(%rbp), %xmm0
callq 0xbc830
jmp 0xaeada
jmp 0xaeadc
movl -0x40(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x40(%rbp)
jmp 0xae7c7
jmp 0xaeaec
movl -0x14(%rbp), %eax
andl $0x4, %eax
movl %eax, -0x1c(%rbp)
cmpl $0x0, -0x1c(%rbp)
je 0xaee54
movq -0xa0(%rbp), %rax
movq (%rax), %rdi
callq 0x2e690
movq %rax, %rdi
callq 0xbcd60
movl %eax, -0x6c(%rbp)
movl $0x0, -0x70(%rbp)
movl -0x70(%rbp), %eax
cmpl -0x6c(%rbp), %eax
jge 0xaee52
movq -0xa0(%rbp), %rax
movq (%rax), %rdi
callq 0x2e690
movq %rax, %rdi
movl -0x70(%rbp), %esi
callq 0xbcd80
movq %rax, %rdi
callq 0xbcd30
movq %rax, %rcx
movq -0xa0(%rbp), %rax
movq %rcx, -0x228(%rbp)
movq (%rax), %rdi
callq 0x11a70
movq -0x228(%rbp), %rdi
movq %rax, %rsi
callq 0x120a0
testb $0x1, %al
jne 0xaeb7f
jmp 0xaee42
movq -0xa0(%rbp), %rax
movq (%rax), %rdi
callq 0x2e690
movq %rax, %rdi
movl -0x70(%rbp), %esi
callq 0xbcd80
movq %rax, %rdi
callq 0xbcd50
movq -0xa0(%rbp), %rdi
movl 0x10(%rax), %eax
movl %eax, -0x74(%rbp)
movl -0x74(%rbp), %esi
callq 0xbc7e0
movq %rax, %rdi
callq 0xbc9f0
cmpl $0x0, %eax
jg 0xaecec
movq -0xa0(%rbp), %rdi
movl -0x74(%rbp), %esi
callq 0xbc7e0
movq %rax, %rdi
addq $0x8, %rdi
callq 0x1d930
movsd (%rax), %xmm0
movsd %xmm0, -0x230(%rbp)
callq 0x798a0
movq %rax, %rdi
callq 0xbc8b0
movsd -0x230(%rbp), %xmm1
movsd (%rax), %xmm0
movsd 0x123f9(%rip), %xmm2    # 0xc1008
subsd %xmm2, %xmm0
ucomisd %xmm1, %xmm0
ja 0xaecec
movq -0xa0(%rbp), %rdi
movl -0x18(%rbp), %esi
callq 0xbc780
movq %rax, %rdi
callq 0x23f20
testb $0x1, %al
jne 0xaec3d
jmp 0xaee40
movq -0xa0(%rbp), %rdi
movl -0x18(%rbp), %esi
callq 0xbc780
movq %rax, %rdi
addq $0x8, %rdi
callq 0x11090
movq -0xa0(%rbp), %rdi
movq %rax, -0x248(%rbp)
movl -0x74(%rbp), %esi
callq 0xbc7e0
movq %rax, %rdi
addq $0x8, %rdi
callq 0x11090
movq -0x248(%rbp), %rdi
movq %rax, %rsi
callq 0x49040
movq -0xa0(%rbp), %rdi
movsd %xmm0, -0x238(%rbp)
callq 0xbc740
movq %rax, %rdi
addq $0x8, %rdi
callq 0x11090
movq -0xa0(%rbp), %rdi
movq %rax, -0x240(%rbp)
movl -0x74(%rbp), %esi
callq 0xbc7e0
movq %rax, %rdi
addq $0x8, %rdi
callq 0x11090
movq -0x240(%rbp), %rdi
movq %rax, %rsi
callq 0x49040
movsd -0x238(%rbp), %xmm1
ucomisd %xmm1, %xmm0
jbe 0xaee40
movq -0xa0(%rbp), %rdi
movl -0x74(%rbp), %esi
callq 0xbc7e0
movq %rax, %rdi
xorl %esi, %esi
callq 0xbc810
movq -0xa0(%rbp), %rdi
movl -0x74(%rbp), %esi
callq 0xbc7e0
movq %rax, %rdi
movl $0x1, %esi
callq 0x288a0
movq -0xa0(%rbp), %rax
movq (%rax), %rdi
callq 0x2e690
movq %rax, %rdi
movl -0x70(%rbp), %esi
callq 0xbcd80
movq %rax, %rdi
callq 0xbcd50
movq -0xa0(%rbp), %rdi
movq %rax, -0x80(%rbp)
movl -0x74(%rbp), %esi
callq 0xbc7e0
movq %rax, -0x268(%rbp)
movq -0x80(%rbp), %rax
movq %rax, -0x260(%rbp)
callq 0x798a0
movq %rax, %rdi
callq 0xbc8b0
movq -0x268(%rbp), %rdi
movq -0x260(%rbp), %rsi
movsd (%rax), %xmm0
movsd 0x12279(%rip), %xmm1    # 0xc1008
subsd %xmm1, %xmm0
movl $0x1, %edx
callq 0x142f0
callq 0x798a0
movq -0xa0(%rbp), %rdi
movq %rax, -0x250(%rbp)
movq -0x80(%rbp), %rax
movq %rax, -0x258(%rbp)
movl -0x18(%rbp), %esi
callq 0xbc780
movq %rax, %rdi
addq $0x8, %rdi
callq 0x11090
movq -0x258(%rbp), %rdi
movq %rax, %rsi
callq 0x110a0
movsd %xmm0, -0x98(%rbp)
movsd %xmm1, -0x90(%rbp)
leaq -0x98(%rbp), %rdi
callq 0x104e0
movq -0x250(%rbp), %rdi
callq 0xbca60
movq -0xa0(%rbp), %rdi
movaps %xmm0, %xmm1
movsd 0x136f8(%rip), %xmm0    # 0xc2510
addsd %xmm1, %xmm0
movsd %xmm0, -0x88(%rbp)
movl -0x74(%rbp), %esi
callq 0xbc7e0
movq %rax, %rdi
addq $0x8, %rdi
movsd -0x88(%rbp), %xmm0
callq 0xbc830
jmp 0xaee42
jmp 0xaee44
movl -0x70(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x70(%rbp)
jmp 0xaeb20
jmp 0xaee54
jmp 0xaee56
jmp 0xaee58
addq $0x270, %rsp            # imm = 0x270
popq %rbp
retq
nopw %cs:(%rax,%rax)