// File: /workspace/github_cpp_makefile_star2_O3/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 $0x28, %rsp
movq %rdi, %r15
movq (%rdi), %r14
cmpb $0x1, 0x1c0(%r14)
movq %rdi, -0x30(%rbp)
jne 0x5cb1b
movb $0x0, 0x1c0(%r14)
movq 0x1c8(%r14), %rsi
addq $0x1c8, %r14            # imm = 0x1C8
movq %r14, %rdi
callq 0x4ee0c
movq (%r15), %r14
cmpb $0x1, 0x119(%r14)
jne 0x5cb1b
movl $0x479, %ebx            # imm = 0x479
xorl %r14d, %r14d
movq (%r15), %rax
movl 0x208(%rax,%r14,4), %eax
testl %eax, %eax
jle 0x5cafb
movq -0x30(%rbp), %rcx
movq 0x8(%rcx), %r15
cmpl %eax, (%r15,%rbx,4)
je 0x5cafb
movl %eax, (%r15,%rbx,4)
callq 0x43dce
movq 0x5c38(%rax), %rax
movslq (%r15,%rbx,4), %rcx
imulq $0x3700, %rcx, %rcx     # imm = 0x3700
movsd 0x3020(%rax,%rcx), %xmm0
movsd %xmm0, -0xbc(%r15,%rbx,4)
callq 0x43dce
movq 0x5c38(%rax), %rax
movslq (%r15,%rbx,4), %rcx
imulq $0x3700, %rcx, %rcx     # imm = 0x3700
movsd 0x3098(%rax,%rcx), %xmm0
movsd %xmm0, -0xb4(%r15,%rbx,4)
incq %r14
addq $0x5e, %rbx
cmpq $0xb, %r14
movq -0x30(%rbp), %r15
jne 0x5ca86
movq (%r15), %r14
movb $0x0, 0x119(%r14)
cmpl $0x0, 0x3588(%r14)
je 0x5ced0
cmpb $0x1, 0x1e0(%r14)
jne 0x5d6d8
movb $0x0, 0x1e0(%r14)
movl 0x540(%r14), %ebx
movslq 0x240(%r14), %rax
movq %rax, -0x48(%rbp)
testb $0x1, %bl
je 0x5ccc4
movq 0x8(%r15), %rax
cmpl $0x0, 0xa0(%rax)
jg 0x5cb91
movsd 0x50(%rax), %xmm0
movsd %xmm0, -0x38(%rbp)
callq 0x43dce
movsd 0x31e8(%rax), %xmm0
addsd 0xc4f2(%rip), %xmm0     # 0x69078
ucomisd -0x38(%rbp), %xmm0
jbe 0x5d6e7
movq (%r15), %r14
movl 0xc(%r14), %eax
movl 0x10(%r14), %ecx
cmpl %ecx, 0x25c(%r14)
jne 0x5cc61
cmpl %eax, 0x258(%r14)
jne 0x5cc61
addq $0x248, %r14            # imm = 0x248
movq -0x30(%rbp), %rax
movq 0x8(%rax), %r15
addq $0x30, %r15
callq 0x43dce
movsd 0x3200(%rax), %xmm0
addsd 0xc49a(%rip), %xmm0     # 0x69078
movq %r15, %rdi
movq -0x30(%rbp), %r15
movq %r14, %rsi
movl $0x1, %edx
callq 0xf572
movq 0x8(%r15), %rax
movl $0x0, 0xa0(%rax)
callq 0x43dce
movq 0x8(%r15), %rcx
movsd 0x38(%rcx), %xmm0
movsd 0x40(%rcx), %xmm1
imulq $0x178, -0x48(%rbp), %rdx # imm = 0x178
subsd -0xc8(%rdx,%rcx), %xmm0
subsd -0xc0(%rdx,%rcx), %xmm1
mulsd %xmm1, %xmm1
mulsd %xmm0, %xmm0
addsd %xmm1, %xmm0
sqrtsd %xmm0, %xmm0
movq %rax, %rdi
callq 0x675e6
addsd 0xd17b(%rip), %xmm0     # 0x69dc8
movq 0x8(%r15), %rax
movsd %xmm0, 0x58(%rax)
movq (%r15), %r14
movl 0xc(%r14), %eax
movl 0x10(%r14), %ecx
cmpl %ecx, 0x274(%r14)
jne 0x5ccc4
cmpl %eax, 0x270(%r14)
jne 0x5ccc4
addq $0x260, %r14            # imm = 0x260
movq -0x30(%rbp), %rax
movq 0x8(%rax), %r15
addq $0x30, %r15
callq 0x43dce
movsd 0x3200(%rax), %xmm0
addsd 0xc3dd(%rip), %xmm0     # 0x69078
movq %r15, %rdi
movq -0x30(%rbp), %r15
movq %r14, %rsi
movl $0x1, %edx
callq 0xf53c
movq 0x8(%r15), %rax
movabsq $0x4008000000000000, %rcx # imm = 0x4008000000000000
movq %rcx, 0x80(%rax)
movl %ebx, -0x50(%rbp)
testb $0x2, %bl
je 0x5d4c5
movq (%r15), %rax
movslq 0x538(%rax), %r12
testq %r12, %r12
jle 0x5d4c5
movq -0x48(%rbp), %rax
decl %eax
cltq
shlq $0x5, %r12
xorl %r13d, %r13d
imulq $0x178, %rax, %rax      # imm = 0x178
movq %rax, -0x38(%rbp)
movq (%r15), %rax
movl 0x294(%rax,%r13), %ecx
cmpl 0x10(%rax), %ecx
jne 0x5ce2a
movl 0xc(%rax), %ecx
cmpl %ecx, 0x290(%rax,%r13)
jne 0x5ce2a
movslq 0x288(%rax,%r13), %rbx
movq 0x8(%r15), %rax
imulq $0x178, %rbx, %rcx      # imm = 0x178
decq %rbx
cmpl $0x0, -0x60(%rcx,%rax)
jg 0x5cd76
addq %rcx, %rax
addq $-0xd0, %rax
movsd 0x20(%rax), %xmm0
movsd %xmm0, -0x40(%rbp)
callq 0x43dce
movsd 0x31f8(%rax), %xmm0
addsd 0xc311(%rip), %xmm0     # 0x69078
ucomisd -0x40(%rbp), %xmm0
movq 0x8(%r15), %rax
jbe 0x5ce3c
imulq $0x178, %rbx, %rbx      # imm = 0x178
leaq (%rax,%rbx), %r14
addq $0xa8, %r14
movl $0x0, 0x70(%r14)
movb $0x1, 0x112(%r14)
movq (%r15), %rax
leaq (%rax,%r13), %r15
addq $0x278, %r15            # imm = 0x278
callq 0x43dce
movsd 0x31f8(%rax), %xmm0
addsd 0xc2bd(%rip), %xmm0     # 0x69078
movq %r14, %rdi
movq %r15, %rsi
movl $0x1, %edx
callq 0xf572
callq 0x43dce
movq -0x30(%rbp), %rcx
movq 0x8(%rcx), %rcx
movsd (%r15), %xmm0
movsd 0x8(%r15), %xmm1
movq -0x30(%rbp), %r15
movq -0x38(%rbp), %rdx
subsd 0xb0(%rcx,%rdx), %xmm0
subsd 0xb8(%rcx,%rdx), %xmm1
mulsd %xmm1, %xmm1
mulsd %xmm0, %xmm0
addsd %xmm1, %xmm0
sqrtsd %xmm0, %xmm0
movq %rax, %rdi
callq 0x675e6
addsd 0xd7a3(%rip), %xmm0     # 0x6a5c0
movq 0x8(%r15), %rax
movsd %xmm0, 0xd0(%rax,%rbx)
addq $0x20, %r13
cmpq %r13, %r12
jne 0x5ccfd
jmp 0x5d4c5
movq -0x38(%rbp), %rcx
cmpb $0x1, 0x1ba(%rax,%rcx)
jne 0x5ce2a
leaq 0xa8(%rax), %rcx
movq -0x38(%rbp), %rdx
addq %rax, %rdx
addq $0xa8, %rdx
imulq $0x178, %rbx, %rsi      # imm = 0x178
movsd 0x8(%rdx), %xmm0
movsd 0x10(%rdx), %xmm1
movsd 0x8(%rcx,%rsi), %xmm2
movsd 0x10(%rcx,%rsi), %xmm3
subsd %xmm2, %xmm0
subsd %xmm3, %xmm1
mulsd %xmm1, %xmm1
mulsd %xmm0, %xmm0
addsd %xmm1, %xmm0
movslq 0x14(%r15), %rdx
imulq $0x178, %rdx, %rdx      # imm = 0x178
movsd -0x170(%rdx,%rcx), %xmm1
movsd -0x168(%rdx,%rcx), %xmm4
subsd %xmm2, %xmm1
subsd %xmm3, %xmm4
mulsd %xmm4, %xmm4
mulsd %xmm1, %xmm1
addsd %xmm4, %xmm1
ucomisd %xmm0, %xmm1
ja 0x5cd76
jmp 0x5ce2a
addq $0x3570, %r14           # imm = 0x3570
callq 0x43dce
movsd 0x3200(%rax), %xmm0
movq %r14, %rdi
movl $0x1, %esi
callq 0xf5a4
movq 0x8(%r15), %r14
addq $0x30, %r14
movl $0x3578, %r15d          # imm = 0x3578
movq -0x30(%rbp), %rax
addq (%rax), %r15
callq 0x43dce
movsd 0x3200(%rax), %xmm0
movq %r14, %rdi
movq %r15, %rsi
movl $0x1, %edx
callq 0xf572
movq -0x30(%rbp), %rax
movq 0x8(%rax), %r14
movl $0x0, 0xa0(%r14)
addq $0x30, %r14
movl $0x35a0, %r15d          # imm = 0x35A0
movq -0x30(%rbp), %rax
addq (%rax), %r15
callq 0x43dce
movsd 0x3200(%rax), %xmm0
movq %r14, %rdi
movq %r15, %rsi
movq -0x30(%rbp), %rbx
movl $0x1, %edx
callq 0xf53c
movq 0x8(%rbx), %r14
xorl %eax, %eax
movq %rax, 0x58(%r14)
movq %rax, 0x80(%r14)
movq (%rbx), %rax
movl $0x1, %ecx
movq %rcx, -0x38(%rbp)
decq %rcx
imulq $0x178, %rcx, %r12      # imm = 0x178
movb 0x36fa(%rax,%r12), %cl
movb %cl, 0x1ba(%r14,%r12)
testb %cl, %cl
je 0x5cfa8
xorl %r13d, %r13d
jmp 0x5cff2
addq %r12, %r14
addq $0xa8, %r14
leaq 0x8(%r14), %rsi
movl 0x18(%r14), %edx
xorpd %xmm0, %xmm0
movq %r14, %rdi
callq 0xf572
leaq 0x30(%r14), %rsi
movl 0x40(%r14), %edx
xorpd %xmm0, %xmm0
movq %r14, %rdi
callq 0xf53c
xorl %r13d, %r13d
movq %r13, 0xa8(%r14)
movq %r13, 0xc0(%r14)
movq (%rbx), %rax
movq 0x8(%rbx), %r14
movl $0xa8, %ecx
addq %rcx, %r14
addq %r12, %r14
leaq (%rax,%r12), %r15
addq $0x35f0, %r15           # imm = 0x35F0
callq 0x43dce
movsd 0x31f8(%rax), %xmm0
movq %r14, %rdi
movq %r15, %rsi
movl $0x1, %edx
callq 0xf572
movq 0x8(%rbx), %r14
movl $0xa8, %eax
addq %r12, %rax
movl $0x0, 0x118(%r14,%r12)
movq %rax, -0x40(%rbp)
addq %rax, %r14
movq (%rbx), %rax
leaq (%rax,%r12), %r15
addq $0x3618, %r15           # imm = 0x3618
callq 0x43dce
movsd 0x31f8(%rax), %xmm0
movq %r14, %rdi
movq %r15, %rsi
movl $0x1, %edx
callq 0xf53c
movq 0x8(%rbx), %r14
movq %r13, 0xd0(%r14,%r12)
movq %r13, 0xf8(%r14,%r12)
movq (%rbx), %rax
movsd 0x3698(%rax,%r12), %xmm0
movsd %xmm0, -0x50(%rbp)
callq 0x43dce
movsd -0x50(%rbp), %xmm3
movsd 0x31f8(%rax), %xmm0
movsd 0xbfb1(%rip), %xmm1     # 0x69060
ucomisd %xmm3, %xmm1
jbe 0x5d0c9
movsd 0xbfb3(%rip), %xmm2     # 0x69070
addsd %xmm2, %xmm3
ucomisd %xmm3, %xmm1
ja 0x5d0bd
jmp 0x5d0e9
movsd 0xbf77(%rip), %xmm1     # 0x69048
ucomisd %xmm1, %xmm3
movsd 0xbf8b(%rip), %xmm2     # 0x69068
jb 0x5d0e9
addsd %xmm2, %xmm3
ucomisd %xmm1, %xmm3
jae 0x5d0df
addq -0x40(%rbp), %r14
movsd %xmm3, 0xb0(%r14)
movl $0x1, 0xb8(%r14)
movsd %xmm0, 0xc0(%r14)
movq (%rbx), %r15
movq 0x8(%rbx), %rbx
callq 0x49360
movq %rax, %r14
callq 0x49360
movsd 0x3680(%r15,%r12), %xmm0
maxsd 0x3168(%r14), %xmm0
movsd 0x3160(%rax), %xmm1
minsd %xmm0, %xmm1
movsd %xmm1, -0x40(%rbp)
callq 0x43dce
movsd -0x40(%rbp), %xmm3
movsd 0xbf0c(%rip), %xmm1     # 0x69060
movsd 0x31f8(%rax), %xmm0
ucomisd %xmm3, %xmm1
jbe 0x5d17a
movq -0x30(%rbp), %r15
movsd 0xbf02(%rip), %xmm2     # 0x69070
addsd %xmm2, %xmm3
ucomisd %xmm3, %xmm1
ja 0x5d16e
jmp 0x5d1a4
movsd 0xbec6(%rip), %xmm1     # 0x69048
ucomisd %xmm1, %xmm3
jae 0x5d18e
movq -0x30(%rbp), %r15
jmp 0x5d1a4
movq -0x30(%rbp), %r15
movsd 0xbece(%rip), %xmm2     # 0x69068
addsd %xmm2, %xmm3
ucomisd %xmm1, %xmm3
jae 0x5d19a
leaq (%rbx,%r12), %rax
addq $0xa8, %rax
movsd %xmm3, 0x98(%rax)
movl $0x1, 0xa0(%rax)
movsd %xmm0, 0xa8(%rax)
movl 0x14(%r15), %ecx
movq (%r15), %rax
movq 0x8(%r15), %r14
cmpq %rcx, -0x38(%rbp)
je 0x5d201
movsd 0x3660(%rax,%r12), %xmm0
movsd %xmm0, 0x120(%r14,%r12)
movsd 0x3670(%rax,%r12), %xmm0
movsd %xmm0, 0x130(%r14,%r12)
movb 0x4722(%rax,%r12), %cl
movb %cl, 0x11e2(%r14,%r12)
testb %cl, %cl
jne 0x5d25e
addq %r12, %r14
addq $0x10d0, %r14           # imm = 0x10D0
leaq 0x8(%r14), %rsi
movl 0x18(%r14), %edx
xorpd %xmm0, %xmm0
movq %r14, %rdi
callq 0xf572
leaq 0x30(%r14), %rsi
movl 0x40(%r14), %edx
xorpd %xmm0, %xmm0
movq %r14, %rdi
callq 0xf53c
xorl %eax, %eax
movq %rax, 0xa8(%r14)
movq %rax, 0xc0(%r14)
movq (%r15), %rax
movq 0x8(%r15), %r14
movl 0x4724(%rax,%r12), %ecx
cmpl %ecx, 0x11e4(%r14,%r12)
je 0x5d2d8
leaq (%r14,%r12), %rbx
addq $0x10d0, %rbx           # imm = 0x10D0
movl %ecx, 0x114(%rbx)
callq 0x43dce
movq 0x5c38(%rax), %rax
movslq 0x114(%rbx), %rcx
imulq $0x3700, %rcx, %rcx     # imm = 0x3700
movsd 0x3020(%rax,%rcx), %xmm0
movsd %xmm0, 0x58(%rbx)
callq 0x43dce
movq 0x5c38(%rax), %rax
movslq 0x114(%rbx), %rcx
imulq $0x3700, %rcx, %rcx     # imm = 0x3700
movsd 0x3098(%rax,%rcx), %xmm0
movsd %xmm0, 0x60(%rbx)
movq (%r15), %rax
movq 0x8(%r15), %r14
movq %r15, %r13
movl $0x10d0, %ecx           # imm = 0x10D0
leaq (%r12,%rcx), %rbx
addq %rbx, %r14
leaq (%rax,%r12), %r15
addq $0x4618, %r15           # imm = 0x4618
callq 0x43dce
movsd 0x31f8(%rax), %xmm0
movq %r14, %rdi
movq %r15, %rsi
movl $0x1, %edx
callq 0xf572
movq 0x8(%r13), %r14
movl $0x0, 0x1140(%r14,%r12)
addq %rbx, %r14
movq (%r13), %rax
leaq (%rax,%r12), %r15
addq $0x4640, %r15           # imm = 0x4640
callq 0x43dce
movsd 0x31f8(%rax), %xmm0
movq %r14, %rdi
movq %r15, %rsi
movl $0x1, %edx
callq 0xf53c
movq 0x8(%r13), %r15
xorl %eax, %eax
movq %rax, 0x10f8(%r15,%r12)
movq %rax, 0x1120(%r15,%r12)
movq (%r13), %rax
movsd 0x46c0(%rax,%r12), %xmm0
movsd 0xbce6(%rip), %xmm1     # 0x69060
ucomisd %xmm0, %xmm1
jbe 0x5d39e
movsd 0xbce8(%rip), %xmm2     # 0x69070
movabsq $0x3ff0000000000000, %r13 # imm = 0x3FF0000000000000
addsd %xmm2, %xmm0
ucomisd %xmm0, %xmm1
ja 0x5d392
jmp 0x5d3c8
movsd 0xbca2(%rip), %xmm1     # 0x69048
ucomisd %xmm1, %xmm0
movabsq $0x3ff0000000000000, %r13 # imm = 0x3FF0000000000000
movsd 0xbcac(%rip), %xmm2     # 0x69068
jb 0x5d3c8
addsd %xmm2, %xmm0
ucomisd %xmm1, %xmm0
jae 0x5d3be
addq %rbx, %r15
leaq (%rax,%r12), %rbx
addq $0x4610, %rbx           # imm = 0x4610
movsd %xmm0, 0xb0(%r15)
movl $0x0, 0xb8(%r15)
movq %r13, 0xc0(%r15)
callq 0x49360
movq %rax, %r14
callq 0x49360
movsd 0x98(%rbx), %xmm1
maxsd 0x3168(%r14), %xmm1
movsd 0x3160(%rax), %xmm0
minsd %xmm1, %xmm0
movsd 0xbc3d(%rip), %xmm1     # 0x69060
ucomisd %xmm0, %xmm1
jbe 0x5d441
movq -0x38(%rbp), %rcx
movsd 0xbc3b(%rip), %xmm2     # 0x69070
addsd %xmm2, %xmm0
ucomisd %xmm0, %xmm1
ja 0x5d435
jmp 0x5d465
movsd 0xbbff(%rip), %xmm1     # 0x69048
ucomisd %xmm1, %xmm0
movq -0x38(%rbp), %rcx
jb 0x5d465
movsd 0xbc0d(%rip), %xmm2     # 0x69068
addsd %xmm2, %xmm0
ucomisd %xmm1, %xmm0
jae 0x5d45b
movsd %xmm0, 0x98(%r15)
movl $0x0, 0xa0(%r15)
movq %r13, 0xa8(%r15)
movq -0x30(%rbp), %rbx
movq (%rbx), %rax
movq 0x8(%rbx), %r14
movsd 0x4688(%rax,%r12), %xmm0
movsd %xmm0, 0x1148(%r14,%r12)
movsd 0x4698(%rax,%r12), %xmm0
movsd %xmm0, 0x1158(%r14,%r12)
incq %rcx
cmpq $0xc, %rcx
jne 0x5cf81
jmp 0x5d6d8
testb $0x4, -0x50(%rbp)
je 0x5d6d8
movq (%r15), %rax
movslq 0x53c(%rax), %r12
testq %r12, %r12
jle 0x5d6d8
movq -0x48(%rbp), %rax
decl %eax
cltq
shlq $0x5, %r12
xorl %r13d, %r13d
imulq $0x178, %rax, %rax      # imm = 0x178
movq %rax, -0x38(%rbp)
movq (%r15), %rax
movl 0x3f4(%rax,%r13), %ecx
cmpl 0x10(%rax), %ecx
jne 0x5d62c
movl 0xc(%rax), %ecx
cmpl %ecx, 0x3f0(%rax,%r13)
jne 0x5d62c
movslq 0x3e8(%rax,%r13), %rbx
movq 0x8(%r15), %rax
imulq $0x178, %rbx, %rcx      # imm = 0x178
decq %rbx
cmpl $0x0, 0xfc8(%rcx,%rax)
jg 0x5d578
addq %rcx, %rax
addq $0xf58, %rax            # imm = 0xF58
movsd 0x20(%rax), %xmm0
movsd %xmm0, -0x40(%rbp)
callq 0x43dce
movsd 0x31f8(%rax), %xmm0
addsd 0xbb0f(%rip), %xmm0     # 0x69078
ucomisd -0x40(%rbp), %xmm0
movq 0x8(%r15), %rax
jbe 0x5d63e
imulq $0x178, %rbx, %rbx      # imm = 0x178
leaq (%rax,%rbx), %r14
addq $0x10d0, %r14           # imm = 0x10D0
movl $0x0, 0x70(%r14)
movb $0x1, 0x112(%r14)
movq (%r15), %rax
leaq (%rax,%r13), %r15
addq $0x3d8, %r15            # imm = 0x3D8
callq 0x43dce
movsd 0x31f8(%rax), %xmm0
addsd 0xbabb(%rip), %xmm0     # 0x69078
movq %r14, %rdi
movq %r15, %rsi
movl $0x1, %edx
callq 0xf572
callq 0x43dce
movq -0x30(%rbp), %rcx
movq 0x8(%rcx), %rcx
movsd (%r15), %xmm0
movsd 0x8(%r15), %xmm1
movq -0x30(%rbp), %r15
movq -0x38(%rbp), %rdx
subsd 0xb0(%rcx,%rdx), %xmm0
subsd 0xb8(%rcx,%rdx), %xmm1
mulsd %xmm1, %xmm1
mulsd %xmm0, %xmm0
addsd %xmm1, %xmm0
sqrtsd %xmm0, %xmm0
movq %rax, %rdi
callq 0x675e6
addsd 0xcfa1(%rip), %xmm0     # 0x6a5c0
movq 0x8(%r15), %rax
movsd %xmm0, 0x10f8(%rax,%rbx)
addq $0x20, %r13
cmpq %r13, %r12
jne 0x5d4fc
jmp 0x5d6d8
movq -0x38(%rbp), %rcx
cmpb $0x1, 0x1ba(%rax,%rcx)
jne 0x5d62c
leaq 0xa8(%rax), %rcx
movq -0x38(%rbp), %rdx
addq %rax, %rdx
addq $0xa8, %rdx
imulq $0x178, %rbx, %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(%r15), %rdx
imulq $0x178, %rdx, %rdx      # imm = 0x178
movsd -0x170(%rdx,%rcx), %xmm1
movsd -0x168(%rdx,%rcx), %xmm4
subsd %xmm2, %xmm1
subsd %xmm3, %xmm4
mulsd %xmm4, %xmm4
mulsd %xmm1, %xmm1
addsd %xmm4, %xmm1
ucomisd %xmm0, %xmm1
ja 0x5d578
jmp 0x5d62c
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x8(%r15), %rax
imulq $0x178, -0x48(%rbp), %rcx # imm = 0x178
cmpb $0x1, 0x42(%rcx,%rax)
jne 0x5ccc4
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(%r15), %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 0x5cb91
jmp 0x5ccc4
nop