// File: /workspace/github_cpp_makefile_star2_O2/wrighteagle2d[P]wrighteaglebase/Debug/../src/BehaviorPass.cpp
// Function: BehaviorPassPlanner::Plan(std::__cxx11::list<ActiveBehavior, std::allocator<ActiveBehavior>>&)
void BehaviorPassPlanner::Plan(std::list<ActiveBehavior> &behavior_list) {
  if (!mSelfState.IsKickable())
    return;

  const std::vector<Unum> &tm2ball =
      mPositionInfo.GetCloseTeammateToTeammate(mSelfState.GetUnum());

  Unum _opp = mStrategy.GetFastestOpp();
  if (!_opp)
    return;

  PlayerState oppState = mWorldState.GetOpponent(_opp);
  bool oppClose = oppState.IsKickable() || oppState.GetTackleProb(true) > 0.65;
  for (uint i = 0; i < tm2ball.size(); ++i) {
    ActiveBehavior pass(mAgent, BT_Pass);

    pass.mTarget = mWorldState.GetTeammate(tm2ball[i]).GetPredictedPos();

    if (mWorldState.GetTeammate(tm2ball[i]).IsGoalie()) {
      continue;
    }
    Vector rel_target = pass.mTarget - mBallState.GetPos();
    const std::vector<Unum> &opp2tm =
        mPositionInfo.GetCloseOpponentToTeammate(tm2ball[i]);
    AngleDeg min_differ = HUGE_VALUE;

    for (uint j = 0; j < opp2tm.size(); ++j) {
      Vector rel_pos =
          mWorldState.GetOpponent(opp2tm[j]).GetPos() - mBallState.GetPos();
      if (rel_pos.Mod() > rel_target.Mod() + 3.0)
        continue;

      AngleDeg differ = GetAngleDegDiffer(rel_target.Dir(), rel_pos.Dir());
      if (differ < min_differ) {
        min_differ = differ;
      }
    }

    if (min_differ < 10.0)
      continue;

    pass.mEvaluation =
        Evaluation::instance().EvaluatePosition(pass.mTarget, true);

    pass.mAngle = (pass.mTarget - mSelfState.GetPos()).Dir();
    pass.mKickSpeed = ServerParam::instance().GetBallSpeed(
        5, pass.mTarget.Dist(mBallState.GetPos()));
    pass.mKickSpeed =
        MinMax(2.0, pass.mKickSpeed,
               Kicker::instance().GetMaxSpeed(mAgent, pass.mAngle, 3));
    if (oppClose) { // in oppnent control, clear it
      pass.mDetailType = BDT_Pass_Clear;
    } else
      pass.mDetailType = BDT_Pass_Direct;
    mActiveBehaviorList.push_back(pass);
  }
  if (!mActiveBehaviorList.empty()) {
    mActiveBehaviorList.sort(std::greater<ActiveBehavior>());
    if (mActiveBehaviorList.front().mDetailType == BDT_Pass_Clear) {
      mActiveBehaviorList.front().mEvaluation = 1.0 + FLOAT_EPS;
    }
    behavior_list.push_back(mActiveBehaviorList.front());
  } else { //如果此周期没有好的动作
    if (mAgent.IsLastActiveBehaviorInActOf(BT_Pass)) {
      ActiveBehavior pass(mAgent, BT_Pass, BDT_Pass_Direct);
      pass.mTarget = mAgent.GetLastActiveBehaviorInAct()->mTarget; //行为保持
      pass.mEvaluation =
          Evaluation::instance().EvaluatePosition(pass.mTarget, true);
      pass.mKickSpeed = ServerParam::instance().GetBallSpeed(
          5 + random() % 6, pass.mTarget.Dist(mBallState.GetPos()));
      pass.mKickSpeed =
          MinMax(2.0, pass.mKickSpeed, ServerParam::instance().ballSpeedMax());
      behavior_list.push_back(pass);
    }
    if (oppClose) {
      Vector p;
      BallState SimBall = mBallState;
      int MinTmInter = HUGE_VALUE, MinOppInter = HUGE_VALUE, MinTm;
      Vector MinTmPos;
      for (AngleDeg dir = -45; dir <= 45; dir += 2.5) {
        if (!Tackler::instance().CanTackleToDir(mAgent, dir)) {
          SimBall.UpdateVel(
              Polar2Vector(Kicker::instance().GetMaxSpeed(
                               mAgent, mSelfState.GetBodyDir() + dir, 1),
                           mSelfState.GetBodyDir() + dir),
              0, 1.0);
        } else
          SimBall.UpdateVel(
              Polar2Vector(Max(Tackler::instance()
                                   .GetBallVelAfterTackle(mAgent, dir)
                                   .Mod(),
                               Kicker::instance().GetMaxSpeed(
                                   mAgent, mSelfState.GetBodyDir() + dir, 1)),
                           mSelfState.GetBodyDir() + dir),
              0, 1.0);
        for (int i = 2; i <= 11; i++) {
          if (fabs((mWorldState.GetTeammate(i).GetPos() - mSelfState.GetPos())
                       .Dir() -
                   dir) > 45) {
            continue;
          }
          if (!mWorldState.GetPlayer(i).IsAlive()) {
            continue;
          }
          PlayerInterceptInfo *a = mInterceptInfo.GetPlayerInterceptInfo(i);
          mInterceptInfo.CalcTightInterception(SimBall, a, true);
          if (MinTmInter > (*a).mMinCycle) {
            MinTm = i;
            MinTmInter = (*a).mMinCycle;
            MinTmPos = (*a).mInterPos;
          }
        }
        for (int i = 1; i <= 11; i++) {
          if (fabs((mWorldState.GetOpponent(i).GetPos() - mSelfState.GetPos())
                       .Dir() -
                   dir) > 45) {
            continue;
          }
          PlayerInterceptInfo *a = mInterceptInfo.GetPlayerInterceptInfo(-i);
          mInterceptInfo.CalcTightInterception(SimBall, a, true);
          if (MinOppInter > (*a).mMinCycle) {
            MinOppInter = (*a).mMinCycle;
          }
        }
        if (MinOppInter > MinTmInter) {
          Ray a(mSelfState.GetPos(), mSelfState.GetBodyDir() + dir);
          Line c(ServerParam::instance().ourLeftGoalPost(),
                 ServerParam::instance().ourRightGoalPost());
          c.Intersection(a, p);
          if (p.Y() < ServerParam::instance().ourPenaltyArea().Top() ||
              p.Y() > ServerParam::instance().ourPenaltyArea().Bottom()) {

            ActiveBehavior pass(mAgent, BT_Pass, BDT_Pass_Clear);
            pass.mTarget = MinTmPos;
            pass.mEvaluation = 1.0 + FLOAT_EPS;
            pass.mAngle = mSelfState.GetBodyDir() + dir;
            mActiveBehaviorList.push_back(pass);
          }
        }
      }
      if (!mActiveBehaviorList.empty()) {
        mActiveBehaviorList.sort(std::greater<ActiveBehavior>());
        behavior_list.push_back(mActiveBehaviorList.front());
      }
    }
  }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x338, %rsp            # imm = 0x338
movq %rsi, -0x110(%rbp)
movq 0x20(%rdi), %rax
cmpb $0x1, 0x128(%rax)
jne 0x157fe
movq %rdi, %r14
movq 0x28(%rdi), %rdi
movl 0x11c(%rax), %esi
callq 0x3c39e
movq %rax, %r13
movq 0x38(%r14), %rax
movslq 0x78(%rax), %rax
testq %rax, %rax
je 0x157fe
movq 0x10(%r14), %rcx
imulq $0x178, %rax, %rax      # imm = 0x178
leaq (%rax,%rcx), %rsi
addq $0xf58, %rsi            # imm = 0xF58
leaq -0x358(%rbp), %r15
movq %r15, %rdi
callq 0x12368
movsd 0x148(%r15), %xmm0
ucomisd 0x42e4e(%rip), %xmm0    # 0x57bd8
seta %al
orb 0x128(%r15), %al
leaq -0xe8(%rbp), %r12
movb %al, -0x58(%rbp)
movzbl %al, %eax
addl $0x3, %eax
movl %eax, -0x60(%rbp)
leaq 0x48(%r14), %r15
xorl %ebx, %ebx
movq %r15, -0x120(%rbp)
movl %ebx, %ebx
movq 0x8(%r13), %rax
subq (%r13), %rax
sarq $0x2, %rax
cmpq %rbx, %rax
jbe 0x150fa
movq 0x8(%r14), %rax
movl $0x7, -0x108(%rbp)
movq %rax, -0x100(%rbp)
andq $0x0, -0xf8(%rbp)
andl $0x0, -0xf0(%rbp)
andl $0x0, -0xb0(%rbp)
andq $0x0, -0xa8(%rbp)
andl $0x0, -0xa0(%rbp)
andq $0x0, -0x98(%rbp)
andl $0x0, -0x90(%rbp)
andq $0x0, -0x88(%rbp)
andl $0x0, -0x80(%rbp)
andq $0x0, -0x78(%rbp)
xorpd %xmm0, %xmm0
movupd %xmm0, 0x20(%r12)
movupd %xmm0, 0x10(%r12)
movupd %xmm0, (%r12)
movb $0x0, 0x30(%r12)
andl $0x0, -0x70(%rbp)
andq $0x0, -0x68(%rbp)
movq 0x10(%r14), %rax
movq (%r13), %rcx
movslq (%rcx,%rbx,4), %rcx
imulq $0x178, %rcx, %rcx      # imm = 0x178
leaq (%rcx,%rax), %rdi
addq $-0xd0, %rdi
pushq $0x1
popq %rsi
callq 0xd4c0
movupd (%rax), %xmm0
leaq -0xe0(%rbp), %rax
movupd %xmm0, (%rax)
movq 0x10(%r14), %rcx
movq (%r13), %rax
movslq (%rax,%rbx,4), %rdx
imulq $0x178, %rdx, %rdx      # imm = 0x178
cmpb $0x0, 0xa5(%rcx,%rdx)
jne 0x150f3
movq %r13, %r12
movq 0x18(%r14), %rcx
movsd -0xe0(%rbp), %xmm0
movsd -0xd8(%rbp), %xmm1
subsd 0x8(%rcx), %xmm0
subsd 0x10(%rcx), %xmm1
movsd %xmm0, -0x1e0(%rbp)
movsd %xmm1, -0x1d8(%rbp)
movq 0x28(%r14), %rdi
movl (%rax,%rbx,4), %esi
callq 0x3c402
movq %rax, %r15
xorl %r13d, %r13d
movsd 0x4285b(%rip), %xmm0    # 0x57748
movsd %xmm0, -0x38(%rbp)
movl %r13d, %r13d
movq (%r15), %rax
movq 0x8(%r15), %rcx
subq %rax, %rcx
sarq $0x2, %rcx
cmpq %r13, %rcx
jbe 0x14fcd
movslq (%rax,%r13,4), %rax
movq 0x10(%r14), %rcx
movq 0x18(%r14), %rdx
imulq $0x178, %rax, %rax      # imm = 0x178
movsd 0xf60(%rax,%rcx), %xmm0
movsd 0xf68(%rax,%rcx), %xmm1
subsd 0x8(%rdx), %xmm0
subsd 0x10(%rdx), %xmm1
movsd %xmm0, -0x50(%rbp)
movsd %xmm1, -0x48(%rbp)
mulsd %xmm1, %xmm1
mulsd %xmm0, %xmm0
addsd %xmm1, %xmm0
sqrtsd %xmm0, %xmm0
movsd -0x1e0(%rbp), %xmm1
movsd -0x1d8(%rbp), %xmm2
mulsd %xmm2, %xmm2
mulsd %xmm1, %xmm1
addsd %xmm2, %xmm1
sqrtsd %xmm1, %xmm1
addsd 0x42c73(%rip), %xmm1    # 0x57bf0
ucomisd %xmm1, %xmm0
ja 0x14fc5
leaq -0x1e0(%rbp), %rdi
callq 0xcd30
movsd %xmm0, -0x168(%rbp)
leaq -0x50(%rbp), %rdi
callq 0xcd30
movsd %xmm0, -0x150(%rbp)
leaq -0x168(%rbp), %rdi
leaq -0x150(%rbp), %rsi
callq 0x124e1
minsd -0x38(%rbp), %xmm0
movsd %xmm0, -0x38(%rbp)
incl %r13d
jmp 0x14ef2
movsd 0x42753(%rip), %xmm0    # 0x57728
ucomisd -0x38(%rbp), %xmm0
movq -0x120(%rbp), %r15
movq %r12, %r13
leaq -0xe8(%rbp), %r12
ja 0x150f3
callq 0x1efde
movq %rax, %rdi
leaq -0xe0(%rbp), %rsi
pushq $0x1
popq %rdx
callq 0x1f058
movsd %xmm0, -0xf8(%rbp)
movq 0x20(%r14), %rax
movsd -0xe0(%rbp), %xmm0
movsd -0xd8(%rbp), %xmm1
subsd 0x8(%rax), %xmm0
subsd 0x10(%rax), %xmm1
movsd %xmm0, -0x50(%rbp)
movsd %xmm1, -0x48(%rbp)
leaq -0x50(%rbp), %rdi
callq 0xcd30
movsd %xmm0, -0xe8(%rbp)
callq 0x3db2c
movq 0x18(%r14), %rcx
movsd -0xe0(%rbp), %xmm0
movsd -0xd8(%rbp), %xmm1
subsd 0x8(%rcx), %xmm0
subsd 0x10(%rcx), %xmm1
mulsd %xmm1, %xmm1
mulsd %xmm0, %xmm0
addsd %xmm1, %xmm0
sqrtsd %xmm0, %xmm0
mulsd 0x3460(%rax), %xmm0
movsd 0x41fbc(%rip), %xmm1    # 0x57048
subsd 0x3498(%rax), %xmm1
divsd %xmm1, %xmm0
movsd %xmm0, -0xc0(%rbp)
callq 0x26f9c
movq 0x8(%r14), %rsi
movl $0x3, -0x50(%rbp)
movq %rax, %rdi
movq %r12, %rdx
leaq -0x50(%rbp), %rcx
xorl %r8d, %r8d
callq 0x27828
movsd -0xc0(%rbp), %xmm1
maxsd 0x42686(%rip), %xmm1    # 0x57758
minsd %xmm1, %xmm0
movsd %xmm0, -0xc0(%rbp)
movl -0x60(%rbp), %eax
movl %eax, -0x70(%rbp)
movq %r15, %rdi
leaq -0x108(%rbp), %rsi
callq 0x10530
incl %ebx
jmp 0x14db4
cmpq %r15, (%r15)
je 0x15136
movq %r15, %rdi
callq 0x10370
movq (%r15), %rax
leaq 0x10(%rax), %rsi
cmpl $0x4, 0xa8(%rax)
jne 0x15125
movabsq $0x3ff000064a9cdc44, %rcx # imm = 0x3FF000064A9CDC44
movq %rcx, 0x20(%rax)
movq -0x110(%rbp), %rdi
callq 0x10530
jmp 0x157f2
movq 0x8(%r14), %rcx
movq 0xc0(%rcx), %rax
testq %rax, %rax
je 0x152a2
cmpl $0x7, (%rax)
jne 0x152a2
movl $0x7, -0x108(%rbp)
movq %rcx, -0x100(%rbp)
andq $0x0, -0xf8(%rbp)
andl $0x0, -0xf0(%rbp)
andl $0x0, -0xb0(%rbp)
andq $0x0, -0xa8(%rbp)
andl $0x0, -0xa0(%rbp)
andq $0x0, -0x98(%rbp)
andl $0x0, -0x90(%rbp)
andq $0x0, -0x88(%rbp)
andl $0x0, -0x80(%rbp)
andq $0x0, -0x78(%rbp)
xorpd %xmm0, %xmm0
movupd %xmm0, -0xc8(%rbp)
movupd %xmm0, -0xd8(%rbp)
movupd %xmm0, -0xe8(%rbp)
movb $0x0, -0xb8(%rbp)
movl $0x3, -0x70(%rbp)
andq $0x0, -0x68(%rbp)
movupd 0x28(%rax), %xmm0
movupd %xmm0, -0xe0(%rbp)
callq 0x1efde
leaq -0xe0(%rbp), %rsi
pushq $0x1
popq %rdx
movq %rax, %rdi
callq 0x1f058
movsd %xmm0, -0xf8(%rbp)
callq 0x3db2c
movq %rax, %rbx
callq 0x9280
pushq $0x6
popq %rcx
cqto
idivq %rcx
movq 0x18(%r14), %rax
movsd -0xe0(%rbp), %xmm0
movsd -0xd8(%rbp), %xmm1
subsd 0x8(%rax), %xmm0
subsd 0x10(%rax), %xmm1
mulsd %xmm1, %xmm1
mulsd %xmm0, %xmm0
addsd %xmm1, %xmm0
sqrtsd %xmm0, %xmm0
mulsd 0x3460(%rbx), %xmm0
movsd 0x41df1(%rip), %xmm1    # 0x57048
subsd 0x3498(%rbx,%rdx,8), %xmm1
divsd %xmm1, %xmm0
movsd %xmm0, -0xc0(%rbp)
callq 0x3db2c
leaq -0x108(%rbp), %rsi
movsd 0x48(%rsi), %xmm0
maxsd 0x424d3(%rip), %xmm0    # 0x57758
movsd 0x30f8(%rax), %xmm1
minsd %xmm0, %xmm1
movsd %xmm1, 0x48(%rsi)
movq -0x110(%rbp), %rdi
callq 0x10530
cmpb $0x0, -0x58(%rbp)
je 0x157f2
xorpd %xmm0, %xmm0
movapd %xmm0, -0x150(%rbp)
movq 0x18(%r14), %rsi
leaq -0x1e0(%rbp), %rdi
callq 0x15972
movl $0xf4240, -0x38(%rbp)   # imm = 0xF4240
movsd 0x42909(%rip), %xmm0    # 0x57be0
xorpd %xmm1, %xmm1
movsd %xmm1, -0x60(%rbp)
movsd %xmm1, -0x58(%rbp)
movl $0xf4240, %ebx          # imm = 0xF4240
movsd %xmm0, -0x30(%rbp)
movsd 0x428f1(%rip), %xmm1    # 0x57be8
ucomisd %xmm0, %xmm1
jb 0x157c6
callq 0x40e2a
movq 0x8(%r14), %rsi
movq %rax, %rdi
leaq -0x30(%rbp), %rdx
callq 0x41620
testb %al, %al
je 0x15401
callq 0x40e2a
movq 0x8(%r14), %rsi
movsd -0x30(%rbp), %xmm0
movq %rax, %rdi
callq 0x4120e
mulsd %xmm1, %xmm1
mulsd %xmm0, %xmm0
addsd %xmm1, %xmm0
sqrtsd %xmm0, %xmm0
movsd %xmm0, -0x50(%rbp)
callq 0x26f9c
movq 0x8(%r14), %rsi
movq 0x20(%r14), %rcx
movsd 0xb0(%rcx), %xmm0
addsd -0x30(%rbp), %xmm0
movsd %xmm0, -0x130(%rbp)
movl $0x1, -0x134(%rbp)
movq %rax, %rdi
leaq -0x130(%rbp), %rdx
leaq -0x134(%rbp), %rcx
xorl %r8d, %r8d
callq 0x27828
movsd %xmm0, -0x168(%rbp)
ucomisd -0x50(%rbp), %xmm0
leaq -0x50(%rbp), %rdi
leaq -0x168(%rbp), %rax
cmovaq %rax, %rdi
movq 0x20(%r14), %rax
movsd 0xb0(%rax), %xmm0
addsd -0x30(%rbp), %xmm0
movsd %xmm0, -0x128(%rbp)
leaq -0x128(%rbp), %rsi
callq 0xd15b
movsd %xmm0, -0x108(%rbp)
movsd %xmm1, -0x100(%rbp)
leaq -0x1e0(%rbp), %rdi
leaq -0x108(%rbp), %rsi
xorl %edx, %edx
movsd 0x41c51(%rip), %xmm0    # 0x57048
callq 0xdde8
jmp 0x154a1
callq 0x26f9c
movq 0x8(%r14), %rsi
movq 0x20(%r14), %rcx
movsd 0xb0(%rcx), %xmm0
addsd -0x30(%rbp), %xmm0
movsd %xmm0, -0x168(%rbp)
movl $0x1, -0x128(%rbp)
movq %rax, %rdi
leaq -0x168(%rbp), %rdx
leaq -0x128(%rbp), %rcx
xorl %r8d, %r8d
callq 0x27828
movsd %xmm0, -0x50(%rbp)
movq 0x20(%r14), %rax
movsd 0xb0(%rax), %xmm0
addsd -0x30(%rbp), %xmm0
movsd %xmm0, -0x130(%rbp)
leaq -0x50(%rbp), %rdi
leaq -0x130(%rbp), %rsi
callq 0xd15b
movsd %xmm0, -0x108(%rbp)
movsd %xmm1, -0x100(%rbp)
leaq -0x1e0(%rbp), %rdi
leaq -0x108(%rbp), %rsi
xorl %edx, %edx
movsd 0x41bac(%rip), %xmm0    # 0x57048
callq 0xdde8
pushq $0x2
popq %r12
xorl %r15d, %r15d
cmpq $0xeb0, %r15            # imm = 0xEB0
je 0x15572
movq 0x10(%r14), %rax
movq 0x20(%r14), %rcx
movsd 0x228(%rax,%r15), %xmm0
movsd 0x230(%rax,%r15), %xmm1
subsd 0x8(%rcx), %xmm0
subsd 0x10(%rcx), %xmm1
movsd %xmm0, -0x108(%rbp)
movsd %xmm1, -0x100(%rbp)
leaq -0x108(%rbp), %rdi
callq 0xcd30
subsd -0x30(%rbp), %xmm0
andpd 0x41b0c(%rip), %xmm0    # 0x57010
ucomisd 0x426dc(%rip), %xmm0    # 0x57be8
ja 0x15563
movq 0x10(%r14), %rax
cmpb $0x1, 0x332(%rax,%r15)
jne 0x15563
movq 0x30(%r14), %rdi
movl %r12d, %esi
callq 0x248f2
movq %rax, %r13
leaq -0x1e0(%rbp), %rdi
movq %rax, %rsi
pushq $0x1
popq %rdx
callq 0x24962
movl 0x74(%r13), %eax
cmpl %eax, -0x38(%rbp)
jle 0x15563
movsd 0x78(%r13), %xmm0
movsd %xmm0, -0x60(%rbp)
movsd 0x80(%r13), %xmm0
movsd %xmm0, -0x58(%rbp)
movl %eax, -0x38(%rbp)
addq $0x178, %r15            # imm = 0x178
incl %r12d
jmp 0x154a8
xorl %r15d, %r15d
pushq $-0x1
popq %r12
cmpq $0x1028, %r15           # imm = 0x1028
je 0x15618
movq 0x10(%r14), %rax
movq 0x20(%r14), %rcx
movsd 0x10d8(%rax,%r15), %xmm0
movsd 0x10e0(%rax,%r15), %xmm1
subsd 0x8(%rcx), %xmm0
subsd 0x10(%rcx), %xmm1
movsd %xmm0, -0x108(%rbp)
movsd %xmm1, -0x100(%rbp)
leaq -0x108(%rbp), %rdi
callq 0xcd30
subsd -0x30(%rbp), %xmm0
andpd 0x41a3b(%rip), %xmm0    # 0x57010
ucomisd 0x4260b(%rip), %xmm0    # 0x57be8
ja 0x15609
movq 0x30(%r14), %rdi
movl %r12d, %esi
callq 0x248f2
movq %rax, %r13
leaq -0x1e0(%rbp), %rdi
movq %rax, %rsi
pushq $0x1
popq %rdx
callq 0x24962
movl 0x74(%r13), %eax
cmpl %eax, %ebx
cmovgel %eax, %ebx
decl %r12d
addq $0x178, %r15            # imm = 0x178
jmp 0x15579
movsd -0x30(%rbp), %xmm0
cmpl -0x38(%rbp), %ebx
jle 0x157b2
movq 0x20(%r14), %rax
addsd 0xb0(%rax), %xmm0
xorpd %xmm1, %xmm1
movapd %xmm1, -0x50(%rbp)
movupd 0x8(%rax), %xmm1
movapd %xmm1, -0x50(%rbp)
movsd %xmm0, -0x40(%rbp)
callq 0x3db2c
movq -0x120(%rbp), %r15
movq %rax, %r12
callq 0x3db2c
addq $0x3910, %r12           # imm = 0x3910
addq $0x3920, %rax           # imm = 0x3920
leaq -0x168(%rbp), %rdi
movq %r12, %rsi
movq %rax, %rdx
callq 0x12e9a
leaq -0x168(%rbp), %rdi
leaq -0x50(%rbp), %rsi
leaq -0x150(%rbp), %rdx
callq 0x23916
movsd -0x148(%rbp), %xmm0
movsd %xmm0, -0x118(%rbp)
callq 0x3db2c
movsd 0x3840(%rax), %xmm0
ucomisd -0x118(%rbp), %xmm0
ja 0x156e6
movsd -0x148(%rbp), %xmm0
movsd %xmm0, -0x118(%rbp)
callq 0x3db2c
movsd -0x118(%rbp), %xmm0
ucomisd 0x3848(%rax), %xmm0
jbe 0x157ab
movq 0x8(%r14), %rax
movl $0x7, -0x108(%rbp)
movq %rax, -0x100(%rbp)
andl $0x0, -0xf0(%rbp)
andl $0x0, -0xb0(%rbp)
andq $0x0, -0xa8(%rbp)
andl $0x0, -0xa0(%rbp)
andq $0x0, -0x98(%rbp)
andl $0x0, -0x90(%rbp)
andq $0x0, -0x88(%rbp)
andl $0x0, -0x80(%rbp)
andq $0x0, -0x78(%rbp)
xorpd %xmm0, %xmm0
leaq -0xd0(%rbp), %rax
movupd %xmm0, 0x9(%rax)
movupd %xmm0, (%rax)
movl $0x4, -0x70(%rbp)
andq $0x0, -0x68(%rbp)
movsd -0x60(%rbp), %xmm0
movsd %xmm0, -0xe0(%rbp)
movsd -0x58(%rbp), %xmm0
movsd %xmm0, -0xd8(%rbp)
movabsq $0x3ff000064a9cdc44, %rax # imm = 0x3FF000064A9CDC44
movq %rax, -0xf8(%rbp)
movq 0x20(%r14), %rax
movsd 0xb0(%rax), %xmm0
addsd -0x30(%rbp), %xmm0
movsd %xmm0, -0xe8(%rbp)
movq %r15, %rdi
leaq -0x108(%rbp), %rsi
callq 0x10530
movsd -0x30(%rbp), %xmm0
jmp 0x157b9
movq -0x120(%rbp), %r15
addsd 0x41f7f(%rip), %xmm0    # 0x57740
jmp 0x152ea
cmpq %r15, (%r15)
je 0x157e6
movq %r15, %rdi
callq 0x10370
movq (%r15), %rsi
addq $0x10, %rsi
movq -0x110(%rbp), %rdi
callq 0x10530
leaq -0x1e0(%rbp), %rdi
callq 0xd716
leaq -0x358(%rbp), %rdi
callq 0xd716
addq $0x338, %rsp            # imm = 0x338
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x15853
jmp 0x15853
jmp 0x15840
jmp 0x15853
jmp 0x15853
jmp 0x15840
jmp 0x15840
jmp 0x15840
jmp 0x15840
jmp 0x15840
jmp 0x15840
jmp 0x15840
jmp 0x15840
jmp 0x15853
jmp 0x15853
jmp 0x15853
jmp 0x15840
jmp 0x15853
jmp 0x15840
jmp 0x15853
jmp 0x15853
jmp 0x15840
jmp 0x15840
jmp 0x15840
movq %rax, %rbx
leaq -0x1e0(%rbp), %rdi
callq 0xd716
jmp 0x15856
jmp 0x15853
movq %rax, %rbx
leaq -0x358(%rbp), %rdi
callq 0xd716
movq %rbx, %rdi
callq 0x98b0