// File: /workspace/github_cpp_makefile_star2_O1/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
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x38, %rsp
movq %rdi, %rbx
movq (%rdi), %rdi
cmpb $0x1, 0x1c0(%rdi)
jne 0x5e4c5
movb $0x0, 0x1c0(%rdi)
movq 0x1c8(%rdi), %rsi
addq $0x1c8, %rdi            # imm = 0x1C8
callq 0x50470
movq (%rbx), %rax
cmpb $0x1, 0x119(%rax)
jne 0x5e4c5
movl $0x479, %r14d           # imm = 0x479
xorl %r15d, %r15d
movq (%rbx), %rax
movl 0x208(%rax,%r15,4), %eax
testl %eax, %eax
jle 0x5e4ae
movq 0x8(%rbx), %r12
cmpl %eax, (%r12,%r14,4)
je 0x5e4ae
movl %eax, (%r12,%r14,4)
callq 0x450ba
movq 0x5c38(%rax), %rax
movslq (%r12,%r14,4), %rcx
imulq $0x3700, %rcx, %rcx     # imm = 0x3700
movsd 0x3020(%rax,%rcx), %xmm0
movsd %xmm0, -0xbc(%r12,%r14,4)
callq 0x450ba
movq 0x5c38(%rax), %rax
movslq (%r12,%r14,4), %rcx
imulq $0x3700, %rcx, %rcx     # imm = 0x3700
movsd 0x3098(%rax,%rcx), %xmm0
movsd %xmm0, -0xb4(%r12,%r14,4)
incq %r15
addq $0x5e, %r14
cmpq $0xb, %r15
jne 0x5e43d
movq (%rbx), %rax
movb $0x0, 0x119(%rax)
movq (%rbx), %r14
cmpl $0x0, 0x3588(%r14)
je 0x5e5f9
cmpb $0x1, 0x1e0(%r14)
jne 0x5f0cb
movb $0x0, 0x1e0(%r14)
movl 0x540(%r14), %r12d
movslq 0x240(%r14), %rax
movq %rax, -0x40(%rbp)
testb $0x1, %r12b
je 0x5ec58
movq 0x8(%rbx), %rax
cmpl $0x0, 0xa0(%rax)
jg 0x5e53f
movsd 0x50(%rax), %xmm0
movsd %xmm0, -0x30(%rbp)
callq 0x450ba
movsd 0x31e8(%rax), %xmm0
addsd 0xcb44(%rip), %xmm0     # 0x6b078
ucomisd -0x30(%rbp), %xmm0
jbe 0x5f0da
movq (%rbx), %r14
movl 0x25c(%r14), %eax
cmpl 0x10(%r14), %eax
jne 0x5ebf2
movl 0xc(%r14), %eax
cmpl %eax, 0x258(%r14)
jne 0x5ebf2
addq $0x248, %r14            # imm = 0x248
movq 0x8(%rbx), %r15
addq $0x30, %r15
callq 0x450ba
movsd 0x3200(%rax), %xmm0
addsd 0xcaf0(%rip), %xmm0     # 0x6b078
movq %r15, %rdi
movq %r14, %rsi
movl $0x1, %edx
callq 0xf682
movq 0x8(%rbx), %rax
movl $0x0, 0xa0(%rax)
callq 0x450ba
movq %rax, %r14
movq 0x8(%rbx), %rax
movsd 0x38(%rax), %xmm0
movsd 0x40(%rax), %xmm1
imulq $0x178, -0x40(%rbp), %rcx # imm = 0x178
subsd -0xc8(%rcx,%rax), %xmm0
subsd -0xc0(%rcx,%rax), %xmm1
mulsd %xmm1, %xmm1
mulsd %xmm0, %xmm0
addsd %xmm1, %xmm0
xorpd %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jb 0x5ebd4
sqrtsd %xmm0, %xmm0
jmp 0x5ebd9
addq $0x3570, %r14           # imm = 0x3570
callq 0x450ba
movsd 0x3200(%rax), %xmm0
movq %r14, %rdi
movl $0x1, %esi
callq 0xf6b4
movq 0x8(%rbx), %r14
addq $0x30, %r14
movl $0x3578, %r15d          # imm = 0x3578
addq (%rbx), %r15
callq 0x450ba
movsd 0x3200(%rax), %xmm0
movq %r14, %rdi
movq %r15, %rsi
movl $0x1, %edx
callq 0xf682
movq 0x8(%rbx), %r14
movl $0x0, 0xa0(%r14)
addq $0x30, %r14
movl $0x35a0, %r15d          # imm = 0x35A0
addq (%rbx), %r15
callq 0x450ba
movsd 0x3200(%rax), %xmm0
movq %r14, %rdi
movq %r15, %rsi
movl $0x1, %edx
callq 0xf64c
movq 0x8(%rbx), %rax
xorl %ecx, %ecx
movq %rcx, 0x58(%rax)
movq %rcx, 0x80(%rax)
movl $0x1, %edx
movq (%rbx), %rcx
movq 0x8(%rbx), %rax
movq %rdx, -0x30(%rbp)
decq %rdx
imulq $0x178, %rdx, %r12      # imm = 0x178
movb 0x36fa(%rcx,%r12), %cl
movb %cl, 0x1ba(%rax,%r12)
testb %cl, %cl
jne 0x5e703
leaq (%rax,%r12), %r14
addq $0xa8, %r14
leaq 0x8(%r14), %rsi
movl 0x18(%r14), %edx
xorpd %xmm0, %xmm0
movq %r14, %rdi
callq 0xf682
leaq 0x30(%r14), %rsi
movl 0x40(%r14), %edx
xorpd %xmm0, %xmm0
movq %r14, %rdi
callq 0xf64c
xorl %eax, %eax
movq %rax, 0xa8(%r14)
movq %rax, 0xc0(%r14)
movq 0x8(%rbx), %r14
addq %r12, %r14
movl $0xa8, %r13d
addq %r13, %r14
movq (%rbx), %rax
leaq (%rax,%r12), %r15
addq $0x35f0, %r15           # imm = 0x35F0
callq 0x450ba
movsd 0x31f8(%rax), %xmm0
movq %r14, %rdi
movq %r15, %rsi
movl $0x1, %edx
callq 0xf682
movq 0x8(%rbx), %r14
addq %r12, %r13
movl $0x0, 0x118(%r14,%r12)
addq %r13, %r14
movq (%rbx), %rax
leaq (%rax,%r12), %r15
addq $0x3618, %r15           # imm = 0x3618
callq 0x450ba
movsd 0x31f8(%rax), %xmm0
movq %r14, %rdi
movq %r15, %rsi
movl $0x1, %edx
callq 0xf64c
movq 0x8(%rbx), %r14
xorl %eax, %eax
movq %rax, 0xd0(%r14,%r12)
movq %rax, 0xf8(%r14,%r12)
movq (%rbx), %rax
movsd 0x3698(%rax,%r12), %xmm0
movsd %xmm0, -0x38(%rbp)
callq 0x450ba
movsd -0x38(%rbp), %xmm3
movsd 0x31f8(%rax), %xmm0
movsd 0xc89f(%rip), %xmm1     # 0x6b060
ucomisd %xmm3, %xmm1
jbe 0x5e7db
movsd 0xc8a1(%rip), %xmm2     # 0x6b070
addsd %xmm2, %xmm3
ucomisd %xmm3, %xmm1
ja 0x5e7cf
jmp 0x5e7fb
movsd 0xc865(%rip), %xmm1     # 0x6b048
ucomisd %xmm1, %xmm3
movsd 0xc879(%rip), %xmm2     # 0x6b068
jb 0x5e7fb
addsd %xmm2, %xmm3
ucomisd %xmm1, %xmm3
jae 0x5e7f1
addq %r13, %r14
movsd %xmm3, 0xb0(%r14)
movl $0x1, 0xb8(%r14)
movsd %xmm0, 0xc0(%r14)
movq (%rbx), %r13
movq 0x8(%rbx), %r15
callq 0x4a75c
movq %rax, %r14
callq 0x4a75c
movsd 0x3680(%r13,%r12), %xmm0
movsd 0x3160(%rax), %xmm1
maxsd 0x3168(%r14), %xmm0
minsd %xmm0, %xmm1
movsd %xmm1, -0x38(%rbp)
callq 0x450ba
movsd -0x38(%rbp), %xmm3
movsd 0xc7fb(%rip), %xmm1     # 0x6b060
movsd 0x31f8(%rax), %xmm0
ucomisd %xmm3, %xmm1
jbe 0x5e88b
movq -0x30(%rbp), %rcx
movsd 0xc7f1(%rip), %xmm2     # 0x6b070
addsd %xmm2, %xmm3
ucomisd %xmm3, %xmm1
ja 0x5e87f
jmp 0x5e8af
movsd 0xc7b5(%rip), %xmm1     # 0x6b048
ucomisd %xmm1, %xmm3
movq -0x30(%rbp), %rcx
jb 0x5e8af
movsd 0xc7c3(%rip), %xmm2     # 0x6b068
addsd %xmm2, %xmm3
ucomisd %xmm1, %xmm3
jae 0x5e8a5
leaq (%r15,%r12), %rax
addq $0xa8, %rax
movsd %xmm3, 0x98(%rax)
movl $0x1, 0xa0(%rax)
movsd %xmm0, 0xa8(%rax)
movl 0x14(%rbx), %eax
cmpq %rax, %rcx
je 0x5e90a
movq (%rbx), %rax
movq 0x8(%rbx), %rcx
movsd 0x3660(%rax,%r12), %xmm0
movsd %xmm0, 0x120(%rcx,%r12)
movsd 0x3670(%rax,%r12), %xmm0
movsd %xmm0, 0x130(%rcx,%r12)
movq (%rbx), %rcx
movq 0x8(%rbx), %rax
movb 0x4722(%rcx,%r12), %cl
movb %cl, 0x11e2(%rax,%r12)
testb %cl, %cl
jne 0x5e968
leaq (%rax,%r12), %r14
addq $0x10d0, %r14           # imm = 0x10D0
leaq 0x8(%r14), %rsi
movl 0x18(%r14), %edx
xorpd %xmm0, %xmm0
movq %r14, %rdi
callq 0xf682
leaq 0x30(%r14), %rsi
movl 0x40(%r14), %edx
xorpd %xmm0, %xmm0
movq %r14, %rdi
callq 0xf64c
xorl %eax, %eax
movq %rax, 0xa8(%r14)
movq %rax, 0xc0(%r14)
movq (%rbx), %rax
movq 0x8(%rbx), %rcx
movl 0x4724(%rax,%r12), %eax
cmpl %eax, 0x11e4(%rcx,%r12)
je 0x5e9e5
leaq (%rcx,%r12), %r14
addq $0x10d0, %r14           # imm = 0x10D0
movl %eax, 0x114(%r14)
callq 0x450ba
movq 0x5c38(%rax), %rax
movslq 0x114(%r14), %rcx
imulq $0x3700, %rcx, %rcx     # imm = 0x3700
movsd 0x3020(%rax,%rcx), %xmm0
movsd %xmm0, 0x58(%r14)
callq 0x450ba
movq 0x5c38(%rax), %rax
movslq 0x114(%r14), %rcx
imulq $0x3700, %rcx, %rcx     # imm = 0x3700
movsd 0x3098(%rax,%rcx), %xmm0
movsd %xmm0, 0x60(%r14)
movq 0x8(%rbx), %r14
addq %r12, %r14
movl $0x10d0, %r13d          # imm = 0x10D0
addq %r13, %r14
movq (%rbx), %rax
leaq (%rax,%r12), %r15
addq $0x4618, %r15           # imm = 0x4618
callq 0x450ba
movsd 0x31f8(%rax), %xmm0
movq %r14, %rdi
movq %r15, %rsi
movl $0x1, %edx
callq 0xf682
movq 0x8(%rbx), %r14
addq %r12, %r13
movl $0x0, 0x1140(%r14,%r12)
addq %r13, %r14
movq (%rbx), %rax
leaq (%rax,%r12), %r15
addq $0x4640, %r15           # imm = 0x4640
callq 0x450ba
movsd 0x31f8(%rax), %xmm0
movq %r14, %rdi
movq %r15, %rsi
movl $0x1, %edx
callq 0xf64c
movq 0x8(%rbx), %r15
xorl %eax, %eax
movq %rax, 0x10f8(%r15,%r12)
movq %rax, 0x1120(%r15,%r12)
movq (%rbx), %rax
movsd 0x46c0(%rax,%r12), %xmm0
movsd 0xc5d4(%rip), %xmm1     # 0x6b060
ucomisd %xmm0, %xmm1
jbe 0x5eaa6
movsd 0xc5d6(%rip), %xmm2     # 0x6b070
addsd %xmm2, %xmm0
ucomisd %xmm0, %xmm1
ja 0x5ea9a
jmp 0x5eac6
movsd 0xc59a(%rip), %xmm1     # 0x6b048
ucomisd %xmm1, %xmm0
movsd 0xc5ae(%rip), %xmm2     # 0x6b068
jb 0x5eac6
addsd %xmm2, %xmm0
ucomisd %xmm1, %xmm0
jae 0x5eabc
addq %r13, %r15
leaq (%rax,%r12), %r13
addq $0x4610, %r13           # imm = 0x4610
movsd %xmm0, 0xb0(%r15)
movl $0x0, 0xb8(%r15)
movabsq $0x3ff0000000000000, %rax # imm = 0x3FF0000000000000
movq %rax, 0xc0(%r15)
callq 0x4a75c
movq %rax, %r14
callq 0x4a75c
movsd 0x98(%r13), %xmm1
maxsd 0x3168(%r14), %xmm1
movsd 0x3160(%rax), %xmm0
minsd %xmm1, %xmm0
movsd 0xc534(%rip), %xmm1     # 0x6b060
ucomisd %xmm0, %xmm1
jbe 0x5eb4a
movq -0x30(%rbp), %rdx
movsd 0xc532(%rip), %xmm2     # 0x6b070
addsd %xmm2, %xmm0
ucomisd %xmm0, %xmm1
ja 0x5eb3e
jmp 0x5eb6e
movsd 0xc4f6(%rip), %xmm1     # 0x6b048
ucomisd %xmm1, %xmm0
movq -0x30(%rbp), %rdx
jb 0x5eb6e
movsd 0xc504(%rip), %xmm2     # 0x6b068
addsd %xmm2, %xmm0
ucomisd %xmm1, %xmm0
jae 0x5eb64
movsd %xmm0, 0x98(%r15)
movl $0x0, 0xa0(%r15)
movabsq $0x3ff0000000000000, %rax # imm = 0x3FF0000000000000
movq %rax, 0xa8(%r15)
movq (%rbx), %rax
movq 0x8(%rbx), %rcx
movsd 0x4688(%rax,%r12), %xmm0
movsd %xmm0, 0x1148(%rcx,%r12)
movsd 0x4698(%rax,%r12), %xmm0
movsd %xmm0, 0x1158(%rcx,%r12)
incq %rdx
cmpq $0xc, %rdx
jne 0x5e697
jmp 0x5f0cb
callq 0x93c0
movq %r14, %rdi
callq 0x69fa4
addsd 0xd1df(%rip), %xmm0     # 0x6bdc8
movq 0x8(%rbx), %rax
movsd %xmm0, 0x58(%rax)
movq (%rbx), %r14
movl 0x274(%r14), %eax
cmpl 0x10(%r14), %eax
jne 0x5ec58
movl 0xc(%r14), %eax
cmpl %eax, 0x270(%r14)
jne 0x5ec58
addq $0x260, %r14            # imm = 0x260
movq 0x8(%rbx), %r15
addq $0x30, %r15
callq 0x450ba
movsd 0x3200(%rax), %xmm0
addsd 0xc445(%rip), %xmm0     # 0x6b078
movq %r15, %rdi
movq %r14, %rsi
movl $0x1, %edx
callq 0xf64c
movq 0x8(%rbx), %rax
movabsq $0x4008000000000000, %rcx # imm = 0x4008000000000000
movq %rcx, 0x80(%rax)
movl %r12d, -0x48(%rbp)
testb $0x2, %r12b
je 0x5ee8e
movq (%rbx), %rax
movslq 0x538(%rax), %r15
testq %r15, %r15
jle 0x5ee8e
movq -0x40(%rbp), %rcx
leaq -0x1(%rcx), %rax
decl %ecx
movslq %ecx, %rcx
shlq $0x5, %r15
xorl %r13d, %r13d
imulq $0x178, %rcx, %rcx      # imm = 0x178
movq %rcx, -0x38(%rbp)
imulq $0x178, %rax, %rax      # imm = 0x178
movq %rax, -0x58(%rbp)
movq %r15, -0x30(%rbp)
movq (%rbx), %rax
movl 0x294(%rax,%r13), %ecx
cmpl 0x10(%rax), %ecx
jne 0x5ede5
movl 0xc(%rax), %ecx
cmpl %ecx, 0x290(%rax,%r13)
jne 0x5ede5
movslq 0x288(%rax,%r13), %r14
movq 0x8(%rbx), %rax
imulq $0x178, %r14, %rcx      # imm = 0x178
decq %r14
cmpl $0x0, -0x60(%rcx,%rax)
jg 0x5ed1c
addq %rcx, %rax
addq $-0xd0, %rax
movsd 0x20(%rax), %xmm0
movsd %xmm0, -0x50(%rbp)
callq 0x450ba
movsd 0x31f8(%rax), %xmm0
addsd 0xc367(%rip), %xmm0     # 0x6b078
ucomisd -0x50(%rbp), %xmm0
jbe 0x5edf7
movq 0x8(%rbx), %rax
imulq $0x178, %r14, %r12      # imm = 0x178
leaq (%rax,%r12), %r14
addq $0xa8, %r14
movl $0x0, 0x70(%r14)
movb $0x1, 0x112(%r14)
movq (%rbx), %rax
leaq (%rax,%r13), %r15
addq $0x278, %r15            # imm = 0x278
callq 0x450ba
movsd 0x31f8(%rax), %xmm0
addsd 0xc313(%rip), %xmm0     # 0x6b078
movq %r14, %rdi
movq %r15, %rsi
movl $0x1, %edx
callq 0xf682
callq 0x450ba
movq %rax, %r14
movq 0x8(%rbx), %rax
movsd (%r15), %xmm0
movq -0x38(%rbp), %rcx
subsd 0xb0(%rax,%rcx), %xmm0
movsd 0x8(%r15), %xmm1
subsd 0xb8(%rax,%rcx), %xmm1
mulsd %xmm1, %xmm1
mulsd %xmm0, %xmm0
addsd %xmm1, %xmm0
ucomisd 0xc2da(%rip), %xmm0     # 0x6b090
jb 0x5edbe
sqrtsd %xmm0, %xmm0
jmp 0x5edc3
callq 0x93c0
movq %r14, %rdi
callq 0x69fa4
addsd 0xd7fd(%rip), %xmm0     # 0x6c5d0
movq 0x8(%rbx), %rax
movsd %xmm0, 0xd0(%rax,%r12)
movq -0x30(%rbp), %r15
addq $0x20, %r13
cmpq %r13, %r15
jne 0x5eca7
jmp 0x5ee8e
movq 0x8(%rbx), %rax
movq -0x58(%rbp), %rcx
cmpb $0x1, 0x1ba(%rax,%rcx)
jne 0x5ede5
movq -0x58(%rbp), %rcx
addq %rax, %rcx
addq $0xa8, %rcx
addq $0xa8, %rax
imulq $0x178, %r14, %rdx      # imm = 0x178
movsd 0x8(%rcx), %xmm0
movsd 0x10(%rcx), %xmm1
movsd 0x8(%rax,%rdx), %xmm2
movsd 0x10(%rax,%rdx), %xmm3
subsd %xmm2, %xmm0
subsd %xmm3, %xmm1
mulsd %xmm1, %xmm1
mulsd %xmm0, %xmm0
addsd %xmm1, %xmm0
movslq 0x14(%rbx), %rcx
imulq $0x178, %rcx, %rcx      # imm = 0x178
movsd -0x170(%rcx,%rax), %xmm1
movsd -0x168(%rcx,%rax), %xmm4
subsd %xmm2, %xmm1
subsd %xmm3, %xmm4
mulsd %xmm4, %xmm4
mulsd %xmm1, %xmm1
addsd %xmm4, %xmm1
ucomisd %xmm0, %xmm1
ja 0x5ed1c
jmp 0x5ede5
testb $0x4, -0x48(%rbp)
je 0x5f0cb
movq (%rbx), %rax
movslq 0x53c(%rax), %r15
testq %r15, %r15
jle 0x5f0cb
movq -0x40(%rbp), %rcx
leal -0x1(%rcx), %eax
cltq
decl %ecx
movslq %ecx, %rcx
shlq $0x5, %r15
xorl %r12d, %r12d
imulq $0x178, %rcx, %rcx      # imm = 0x178
movq %rcx, -0x38(%rbp)
imulq $0x178, %rax, %rax      # imm = 0x178
movq %rax, -0x48(%rbp)
movq %r15, -0x30(%rbp)
movq (%rbx), %rax
movl 0x3f4(%rax,%r12), %ecx
cmpl 0x10(%rax), %ecx
jne 0x5f01b
movl 0xc(%rax), %ecx
cmpl %ecx, 0x3f0(%rax,%r12)
jne 0x5f01b
movslq 0x3e8(%rax,%r12), %r14
movq 0x8(%rbx), %rax
imulq $0x178, %r14, %rcx      # imm = 0x178
decq %r14
cmpl $0x0, 0xfc8(%rcx,%rax)
jg 0x5ef52
addq %rcx, %rax
addq $0xf58, %rax            # imm = 0xF58
movsd 0x20(%rax), %xmm0
movsd %xmm0, -0x50(%rbp)
callq 0x450ba
movsd 0x31f8(%rax), %xmm0
addsd 0xc131(%rip), %xmm0     # 0x6b078
ucomisd -0x50(%rbp), %xmm0
jbe 0x5f02d
movq 0x8(%rbx), %rax
imulq $0x178, %r14, %r13      # imm = 0x178
leaq (%rax,%r13), %r14
addq $0x10d0, %r14           # imm = 0x10D0
movl $0x0, 0x70(%r14)
movb $0x1, 0x112(%r14)
movq (%rbx), %rax
leaq (%rax,%r12), %r15
addq $0x3d8, %r15            # imm = 0x3D8
callq 0x450ba
movsd 0x31f8(%rax), %xmm0
addsd 0xc0dd(%rip), %xmm0     # 0x6b078
movq %r14, %rdi
movq %r15, %rsi
movl $0x1, %edx
callq 0xf682
callq 0x450ba
movq %rax, %r14
movq 0x8(%rbx), %rax
movsd (%r15), %xmm0
movq -0x38(%rbp), %rcx
subsd 0xb0(%rax,%rcx), %xmm0
movsd 0x8(%r15), %xmm1
subsd 0xb8(%rax,%rcx), %xmm1
mulsd %xmm1, %xmm1
mulsd %xmm0, %xmm0
addsd %xmm1, %xmm0
ucomisd 0xc0a4(%rip), %xmm0     # 0x6b090
jb 0x5eff4
sqrtsd %xmm0, %xmm0
jmp 0x5eff9
callq 0x93c0
movq %r14, %rdi
callq 0x69fa4
addsd 0xd5c7(%rip), %xmm0     # 0x6c5d0
movq 0x8(%rbx), %rax
movsd %xmm0, 0x10f8(%rax,%r13)
movq -0x30(%rbp), %r15
addq $0x20, %r12
cmpq %r12, %r15
jne 0x5eeda
jmp 0x5f0cb
movq 0x8(%rbx), %rax
movq -0x48(%rbp), %rcx
cmpb $0x1, 0x1ba(%rax,%rcx)
jne 0x5f01b
leaq 0xa8(%rax), %rcx
movq -0x48(%rbp), %rdx
addq %rax, %rdx
addq $0xa8, %rdx
imulq $0x178, %r14, %rsi      # imm = 0x178
movsd 0x8(%rdx), %xmm0
movsd 0x10(%rdx), %xmm1
movsd 0x10d8(%rax,%rsi), %xmm2
movsd 0x10e0(%rax,%rsi), %xmm3
subsd %xmm2, %xmm0
subsd %xmm3, %xmm1
mulsd %xmm1, %xmm1
mulsd %xmm0, %xmm0
addsd %xmm1, %xmm0
movslq 0x14(%rbx), %rax
imulq $0x178, %rax, %rax      # imm = 0x178
movsd -0x170(%rax,%rcx), %xmm1
movsd -0x168(%rax,%rcx), %xmm4
subsd %xmm2, %xmm1
subsd %xmm3, %xmm4
mulsd %xmm4, %xmm4
mulsd %xmm1, %xmm1
addsd %xmm4, %xmm1
ucomisd %xmm0, %xmm1
ja 0x5ef52
jmp 0x5f01b
addq $0x38, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x8(%rbx), %rax
imulq $0x178, -0x40(%rbp), %rcx # imm = 0x178
cmpb $0x1, 0x42(%rcx,%rax)
jne 0x5ec58
leaq 0xa8(%rax), %rdx
addq %rax, %rcx
addq $-0xd0, %rcx
movsd 0x8(%rcx), %xmm0
movsd 0x10(%rcx), %xmm1
movsd 0x38(%rax), %xmm2
movsd 0x40(%rax), %xmm3
subsd %xmm2, %xmm0
subsd %xmm3, %xmm1
mulsd %xmm1, %xmm1
mulsd %xmm0, %xmm0
addsd %xmm1, %xmm0
movslq 0x14(%rbx), %rax
imulq $0x178, %rax, %rax      # imm = 0x178
movsd -0x170(%rax,%rdx), %xmm1
movsd -0x168(%rax,%rdx), %xmm4
subsd %xmm2, %xmm1
subsd %xmm3, %xmm4
mulsd %xmm4, %xmm4
mulsd %xmm1, %xmm1
addsd %xmm4, %xmm1
ucomisd %xmm0, %xmm1
ja 0x5e53f
jmp 0x5ec58