// File: /workspace/github_cpp_makefile_star2_O1/wrighteagle2d[P]wrighteaglebase/Debug/../src/Dasher.cpp
// Function: Dasher::CycleNeedToPointWithCertainPosture(PlayerState const&, Vector, bool, double*)
int Dasher::CycleNeedToPointWithCertainPosture(const PlayerState &player,
                                               Vector target,
                                               const bool inverse,
                                               double *buf) {
  int cycle = 0; //用的周期

  const double &decay = player.GetPlayerDecay();
  const double &speedmax = player.GetEffectiveSpeedMax();
  const double &stamina = player.GetStamina();
  const double &stamina_inc_max = player.GetStaminaIncMax();
  const double &dash_max = ServerParam::instance().maxDashPower();
  const Vector &pos = player.GetPos();
  const Vector &vel = player.GetVel();

  const double accrate = player.GetDashPowerRate() * player.GetEffort();
  double speed = vel.Mod();

  const Vector predict_pos_1 = pos + vel;
  const Vector predict_pos_2 = predict_pos_1 + vel * decay;
  const double dir = (target - pos).Dir();
  double dis = (target - predict_pos_1).Mod();

  const double kick_area = player.IsGoalie()
                               ? ServerParam::instance().catchAreaLength()
                               : (player.GetKickableArea() - GETBALL_BUFFER);

  if (dis <= kick_area) {
    dis = pos.Dist(target);
    if (buf)
      *buf = 0;
    return 1;
  }

  double facing;
  if (player.IsBodyDirValid()) {
    facing = player.GetBodyDir();
  } else if (speed > 0.26) {
    facing = vel.Dir();
  } else {
    facing = dir; //认为不用转身
  }

  double diffang = fabs(GetNormalizeAngleDeg(dir - facing));
  const double oneturnang = player.GetMaxTurnAngle();
  const double stamina_recovery_thr = ServerParam::instance().recoverDecThr() *
                                      ServerParam::instance().staminaMax();

  double angbuf = FLOAT_EPS;
  angbuf = ASin(kick_area / dis);
  angbuf = Max(angbuf, 15.0);

  if (inverse) {
    diffang = 180.0 - diffang;
    facing = GetNormalizeAngleDeg(180.0 + facing);
  }

  // I 调整阶段
  if (diffang <= angbuf) { //不需要转身
    target = (target - pos).Rotate(-facing);
    dis = fabs(target.X());
    double y = fabs(target.Y());
    if (y < kick_area) {
      dis -= sqrt(kick_area * kick_area - y * y);
    }
    speed *= Cos(vel.Dir() - facing); //身体方向上的投影
  } else if (diffang <= oneturnang) {
    cycle += 1;
    target -= predict_pos_1;
    speed *= Cos(vel.Dir() - dir); //取得目标方向的投影
    speed *=
        decay; //进行投影.垂直方向1个周期后衰减到10+厘米了,并且在1turn时可加入考虑修正掉
    dis = target.Mod();
    dis -= kick_area;
  } else { //认为转身两下（不细致）
    cycle += 2;
    target -= predict_pos_2;
    speed *= Cos(vel.Dir() - dir); //取得目标方向的投影
    speed *=
        decay *
        decay; //进行投影.垂直方向1个周期后衰减到10+厘米了,并且在1turn时可加入考虑修正掉
    dis = target.Mod();
    dis -= kick_area;
  }

  if (dis <= 0) {
    if (buf != NULL) {
      *buf = -dis / (speed / decay);
      *buf = Min(*buf, 0.99);
    }
    return Max(cycle, 0);
  }

  // II 加速 & 消耗体力阶段
  const double stamina_used_per_cycle = inverse ? dash_max * 2.0 : dash_max;
  const int full_cyc =
      int((stamina - stamina_recovery_thr) /
          (stamina_used_per_cycle - stamina_inc_max)); //满体力阶段
  int acc_cyc = 0;                                     //加速阶段
  const double speedmax_thr = speedmax * decay * 0.98;
  const double accmax = accrate * dash_max;

  while (acc_cyc < full_cyc && speed < speedmax_thr) {
    speed += accmax;
    if (speed > speedmax) {
      speed = speedmax;
    }
    dis -= speed;
    if (dis <= 0) { //还没加速到最大就跑到了...
      cycle += acc_cyc + 1;
      if (buf != NULL) {
        *buf = -dis / (speed / decay);
        *buf = Min(*buf, 0.99);
      }
      return Max(cycle, 0);
    }
    speed *= decay;
    ++acc_cyc;
  }

  cycle += acc_cyc;

  // III 满体匀速阶段
  int aver_cyc = full_cyc - acc_cyc;
  double aver_cyc_dis = aver_cyc * speedmax;
  if (aver_cyc_dis >= dis) {
    if (buf != NULL) {
      double realcyc = cycle + dis / speedmax;
      cycle = int(ceil(realcyc));
      *buf = cycle - realcyc;
      return Max(cycle, 0);

    } else {
      cycle = int(ceil(cycle + dis / speedmax));
      return Max(cycle, 0);
    }
  } else {
    cycle += aver_cyc;
    dis -= aver_cyc_dis;
  }

  // IV 没体(0消耗)减速阶段
  double acc_tired = stamina_inc_max * accrate;
  double speed_tired = acc_tired / (1 - decay);
  double speed_tired_thr = speed_tired * decay;
  speed *= decay;
  while (dis > 0 && fabs(speed - speed_tired_thr) > 0.004) {
    speed += acc_tired;
    dis -= speed;
    speed *= decay;
    ++cycle;
  }

  if (dis <= 0) {
    if (buf != NULL) {
      *buf = -dis / (speed / decay);
      *buf = Min(*buf, 0.99);
    }
    return Max(cycle, 0);
  }

  // V 没体(0消耗)匀速阶段

  if (buf != NULL) {
    double realcyc = cycle + dis / speed_tired;
    cycle = int(ceil(realcyc));
    *buf = cycle - realcyc;
    return Max(cycle, 0);
  } else {
    cycle = cycle + int(ceil(dis / speed_tired));
    return Max(cycle, 0);
  }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xd8, %rsp
movq %rcx, %r15
movl %edx, %r12d
movaps %xmm1, -0x40(%rbp)
movsd %xmm0, -0x48(%rbp)
movq %rsi, %r14
callq 0x450ba
movq 0x5c38(%rax), %rax
movslq 0x114(%r14), %rcx
imulq $0x3700, %rcx, %rcx     # imm = 0x3700
leaq (%rax,%rcx), %rbx
addq $0x3020, %rbx           # imm = 0x3020
callq 0x450ba
movq 0x5c38(%rax), %r13
movslq 0x114(%r14), %rax
movq %rax, -0xd8(%rbp)
callq 0x4a75c
movq %rax, -0xd0(%rbp)
callq 0x450ba
movq 0x5c38(%rax), %rax
movslq 0x114(%r14), %rcx
imulq $0x3700, %rcx, %rcx     # imm = 0x3700
movsd 0x3030(%rax,%rcx), %xmm2
mulsd 0x80(%r14), %xmm2
movsd 0x30(%r14), %xmm0
movsd 0x38(%r14), %xmm1
mulsd %xmm1, %xmm1
mulsd %xmm0, %xmm0
addsd %xmm1, %xmm0
xorpd %xmm3, %xmm3
xorpd %xmm1, %xmm1
movsd %xmm1, -0x58(%rbp)
ucomisd %xmm3, %xmm0
movsd %xmm2, -0x70(%rbp)
jb 0x1f96f
sqrtsd %xmm0, %xmm0
jmp 0x1f974
callq 0x93c0
movsd %xmm0, -0x50(%rbp)
movsd 0x30(%r14), %xmm3
movsd 0x8(%r14), %xmm0
movsd 0x10(%r14), %xmm2
movsd 0x38(%r14), %xmm4
movsd (%rbx), %xmm1
movsd %xmm1, -0xb8(%rbp)
movsd -0x48(%rbp), %xmm1
subsd %xmm0, %xmm1
movsd %xmm3, -0xc8(%rbp)
addsd %xmm3, %xmm0
movsd %xmm0, -0x90(%rbp)
movapd -0x40(%rbp), %xmm0
subsd %xmm2, %xmm0
movsd %xmm4, -0xc0(%rbp)
addsd %xmm4, %xmm2
movsd %xmm2, -0x98(%rbp)
movapd %xmm1, %xmm3
andpd 0x4b62d(%rip), %xmm3    # 0x6b010
movsd 0x4b655(%rip), %xmm2    # 0x6b040
ucomisd %xmm3, %xmm2
jbe 0x1fa03
movapd %xmm0, %xmm3
andpd 0x4b613(%rip), %xmm3    # 0x6b010
ucomisd %xmm3, %xmm2
ja 0x1fa1d
callq 0x90d0
mulsd 0x4b638(%rip), %xmm0    # 0x6b048
divsd 0x4b638(%rip), %xmm0    # 0x6b050
movsd %xmm0, -0x58(%rbp)
movsd -0x48(%rbp), %xmm1
subsd -0x90(%rbp), %xmm1
movapd -0x40(%rbp), %xmm0
subsd -0x98(%rbp), %xmm0
mulsd %xmm0, %xmm0
mulsd %xmm1, %xmm1
addsd %xmm0, %xmm1
xorpd %xmm0, %xmm0
ucomisd %xmm0, %xmm1
movsd %xmm1, -0xb0(%rbp)
jb 0x1fa5e
xorps %xmm0, %xmm0
sqrtsd %xmm1, %xmm0
jmp 0x1fa67
movapd %xmm1, %xmm0
callq 0x93c0
movsd %xmm0, -0x88(%rbp)
cmpb $0x1, 0x175(%r14)
jne 0x1fa88
callq 0x4a75c
movsd 0x31b0(%rax), %xmm0
jmp 0x1fa9d
movq (%r14), %rax
movq %r14, %rdi
callq *0x10(%rax)
movsd (%rax), %xmm0
subsd 0x67a7b(%rip), %xmm0    # 0x87518
ucomisd -0x88(%rbp), %xmm0
movsd -0x50(%rbp), %xmm1
jae 0x1fad7
movsd %xmm0, -0x68(%rbp)
leaq 0x30(%r14), %rax
movq %rax, -0x78(%rbp)
movsd 0xc0(%r14), %xmm0
ucomisd 0x4c7fe(%rip), %xmm0    # 0x6c2c8
jbe 0x1fb23
movsd 0xb0(%r14), %xmm0
jmp 0x1fb3b
movsd 0x8(%r14), %xmm0
movsd 0x10(%r14), %xmm1
subsd -0x48(%rbp), %xmm0
subsd -0x40(%rbp), %xmm1
mulsd %xmm1, %xmm1
mulsd %xmm0, %xmm0
addsd %xmm1, %xmm0
xorpd %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jae 0x1fb08
callq 0x93c0
movl $0x1, %r13d
testq %r15, %r15
je 0x201d5
movq $0x0, (%r15)
jmp 0x201d5
ucomisd 0x4c1a5(%rip), %xmm1    # 0x6bcd0
movsd -0x58(%rbp), %xmm0
jbe 0x1fb3b
movq -0x78(%rbp), %rdi
callq 0xe804
movsd -0x58(%rbp), %xmm2
subsd %xmm0, %xmm2
movsd 0x4b514(%rip), %xmm1    # 0x6b060
ucomisd %xmm2, %xmm1
movsd %xmm0, -0x60(%rbp)
jbe 0x1fb6b
movsd 0x4b511(%rip), %xmm0    # 0x6b070
addsd %xmm0, %xmm2
ucomisd %xmm2, %xmm1
ja 0x1fb5f
jmp 0x1fb8f
ucomisd 0x4b4d5(%rip), %xmm2    # 0x6b048
jb 0x1fb8f
movsd 0x4b4eb(%rip), %xmm0    # 0x6b068
movsd 0x4b4c3(%rip), %xmm1    # 0x6b048
addsd %xmm0, %xmm2
ucomisd %xmm1, %xmm2
jae 0x1fb85
andpd 0x4b479(%rip), %xmm2    # 0x6b010
movapd %xmm2, -0xf0(%rbp)
movsd 0x158(%r14), %xmm0
movsd %xmm0, -0xa0(%rbp)
callq 0x4a75c
movsd 0x3060(%rax), %xmm0
movsd %xmm0, -0x80(%rbp)
callq 0x4a75c
movsd -0x80(%rbp), %xmm0
mulsd 0x3048(%rax), %xmm0
movsd %xmm0, -0x80(%rbp)
movsd -0x68(%rbp), %xmm0
divsd -0x88(%rbp), %xmm0
ucomisd 0x4c6e2(%rip), %xmm0    # 0x6c2d0
jae 0x1fc15
movsd 0x4c6e0(%rip), %xmm1    # 0x6c2d8
ucomisd %xmm0, %xmm1
jae 0x1fc1f
callq 0x9840
mulsd 0x4b43d(%rip), %xmm0    # 0x6b048
divsd 0x4b43d(%rip), %xmm0    # 0x6b050
jmp 0x1fc27
movsd 0x4b493(%rip), %xmm0    # 0x6b0b0
jmp 0x1fc27
movsd 0x4b491(%rip), %xmm0    # 0x6b0b8
movsd -0x60(%rbp), %xmm4
movsd 0x4b42c(%rip), %xmm3    # 0x6b060
movsd 0x4bb1c(%rip), %xmm1    # 0x6b758
maxsd %xmm0, %xmm1
testb %r12b, %r12b
je 0x1fc7b
movsd 0x4b3fb(%rip), %xmm2    # 0x6b048
movapd %xmm2, %xmm0
subsd -0xf0(%rbp), %xmm0
addsd %xmm2, %xmm4
ucomisd %xmm4, %xmm3
jbe 0x1fe30
movsd 0x4b401(%rip), %xmm2    # 0x6b070
addsd %xmm2, %xmm4
ucomisd %xmm4, %xmm3
ja 0x1fc6f
jmp 0x1fc83
movapd -0xf0(%rbp), %xmm0
ucomisd %xmm0, %xmm1
movq %r13, -0xa8(%rbp)
jae 0x1fd60
movsd -0xa0(%rbp), %xmm1
ucomisd %xmm0, %xmm1
jae 0x1fe55
movsd -0xc8(%rbp), %xmm0
movsd -0xb8(%rbp), %xmm1
mulsd %xmm1, %xmm0
movsd -0xc0(%rbp), %xmm2
mulsd %xmm1, %xmm2
movsd -0x90(%rbp), %xmm1
addsd %xmm0, %xmm1
movsd -0x98(%rbp), %xmm0
addsd %xmm2, %xmm0
movsd -0x48(%rbp), %xmm2
subsd %xmm1, %xmm2
movsd %xmm2, -0x48(%rbp)
movapd -0x40(%rbp), %xmm1
subsd %xmm0, %xmm1
movapd %xmm1, -0x40(%rbp)
movq -0x78(%rbp), %rdi
callq 0xe804
subsd -0x58(%rbp), %xmm0
mulsd 0x4b340(%rip), %xmm0    # 0x6b050
divsd 0x4b330(%rip), %xmm0    # 0x6b048
callq 0x9950
movsd -0x50(%rbp), %xmm7
mulsd %xmm0, %xmm7
movsd (%rbx), %xmm2
mulsd %xmm2, %xmm2
movapd -0x40(%rbp), %xmm0
mulsd %xmm0, %xmm0
movsd -0x48(%rbp), %xmm1
mulsd %xmm1, %xmm1
addsd %xmm0, %xmm1
xorpd %xmm0, %xmm0
ucomisd %xmm0, %xmm1
movapd %xmm1, %xmm0
jb 0x1fea5
sqrtsd %xmm0, %xmm9
jmp 0x1fec3
movq %rbx, -0x58(%rbp)
movsd -0x48(%rbp), %xmm0
subsd 0x8(%r14), %xmm0
movsd %xmm0, -0x48(%rbp)
movapd -0x40(%rbp), %xmm0
subsd 0x10(%r14), %xmm0
movapd %xmm0, -0x40(%rbp)
movsd 0x4b314(%rip), %xmm0    # 0x6b0a0
movsd %xmm4, -0x60(%rbp)
mulsd %xmm4, %xmm0
divsd 0x4b2ab(%rip), %xmm0    # 0x6b048
leaq -0x100(%rbp), %rbx
leaq -0xf8(%rbp), %r13
movq %rbx, %rdi
movq %r13, %rsi
callq 0x92d0
movsd (%rbx), %xmm0
movsd (%r13), %xmm1
movsd -0x48(%rbp), %xmm3
movapd %xmm3, %xmm2
mulsd %xmm0, %xmm3
movapd -0x40(%rbp), %xmm4
mulsd %xmm4, %xmm0
mulsd %xmm1, %xmm2
subsd %xmm0, %xmm2
movapd %xmm4, %xmm0
mulsd %xmm1, %xmm0
addsd %xmm3, %xmm0
movapd 0x4b21e(%rip), %xmm3    # 0x6b010
andpd %xmm3, %xmm2
andpd %xmm0, %xmm3
movsd -0x68(%rbp), %xmm1
ucomisd %xmm3, %xmm1
jbe 0x1fef1
mulsd %xmm0, %xmm0
mulsd %xmm1, %xmm1
subsd %xmm0, %xmm1
xorpd %xmm0, %xmm0
ucomisd %xmm0, %xmm1
movapd %xmm1, %xmm0
jb 0x1fede
sqrtsd %xmm0, %xmm0
jmp 0x1feed
ucomisd 0x4b210(%rip), %xmm4    # 0x6b048
jb 0x1fc83
movsd 0x4b222(%rip), %xmm3    # 0x6b068
addsd %xmm3, %xmm4
ucomisd %xmm2, %xmm4
jae 0x1fe46
jmp 0x1fc83
movq -0x78(%rbp), %rdi
callq 0xe804
subsd -0x58(%rbp), %xmm0
mulsd 0x4b1e5(%rip), %xmm0    # 0x6b050
divsd 0x4b1d5(%rip), %xmm0    # 0x6b048
callq 0x9950
movsd -0x50(%rbp), %xmm7
mulsd %xmm0, %xmm7
mulsd (%rbx), %xmm7
xorpd %xmm1, %xmm1
movsd -0xb0(%rbp), %xmm0
ucomisd %xmm1, %xmm0
jb 0x1ff37
sqrtsd %xmm0, %xmm9
jmp 0x1ff4b
movsd %xmm7, -0x50(%rbp)
movsd %xmm2, -0x40(%rbp)
callq 0x93c0
movsd -0x40(%rbp), %xmm2
movsd -0x50(%rbp), %xmm7
movapd %xmm0, %xmm9
movsd -0x70(%rbp), %xmm8
mulsd %xmm2, %xmm7
subsd -0x68(%rbp), %xmm9
movl $0x2, %r13d
jmp 0x1ff61
movapd %xmm2, -0x40(%rbp)
callq 0x93c0
movapd -0x40(%rbp), %xmm2
subsd %xmm0, %xmm2
movapd %xmm2, -0x40(%rbp)
movq -0x78(%rbp), %rdi
callq 0xe804
subsd -0x60(%rbp), %xmm0
mulsd 0x4b144(%rip), %xmm0    # 0x6b050
divsd 0x4b134(%rip), %xmm0    # 0x6b048
callq 0x9950
movapd -0x40(%rbp), %xmm9
movsd -0x50(%rbp), %xmm7
mulsd %xmm0, %xmm7
xorl %r13d, %r13d
movsd -0x70(%rbp), %xmm8
movq -0x58(%rbp), %rbx
jmp 0x1ff61
movsd %xmm7, -0x50(%rbp)
callq 0x93c0
movsd -0x50(%rbp), %xmm7
movapd %xmm0, %xmm9
movsd -0x70(%rbp), %xmm8
movsd -0x68(%rbp), %xmm0
subsd %xmm0, %xmm9
movl $0x1, %r13d
xorpd %xmm0, %xmm0
ucomisd %xmm9, %xmm0
jae 0x200fc
imulq $0x3700, -0xd8(%rbp), %rax # imm = 0x3700
movq -0xa8(%rbp), %rcx
addq %rcx, %rax
addq $0x3018, %rax           # imm = 0x3018
movq -0xd0(%rbp), %rcx
movsd 0x33c0(%rcx), %xmm3
movapd %xmm3, %xmm0
testb %r12b, %r12b
je 0x1ffa7
addsd %xmm3, %xmm0
movsd 0x78(%r14), %xmm2
subsd -0x80(%rbp), %xmm2
movsd (%rax), %xmm1
subsd %xmm1, %xmm0
divsd %xmm0, %xmm2
cvttsd2si %xmm2, %eax
movsd 0x60(%r14), %xmm2
movsd (%rbx), %xmm0
xorl %ecx, %ecx
testl %eax, %eax
jle 0x2002b
movapd %xmm2, %xmm4
mulsd %xmm0, %xmm4
mulsd 0x4c306(%rip), %xmm4    # 0x6c2e8
ucomisd %xmm7, %xmm4
jbe 0x2002b
mulsd %xmm8, %xmm3
movl $0x1, %edx
xorpd %xmm5, %xmm5
movapd %xmm7, %xmm6
addsd %xmm3, %xmm6
movapd %xmm2, %xmm7
minsd %xmm6, %xmm7
subsd %xmm7, %xmm9
ucomisd %xmm9, %xmm5
jae 0x2015d
mulsd %xmm0, %xmm7
leal 0x1(%rdx), %ecx
cmpl %eax, %edx
jge 0x20029
ucomisd %xmm7, %xmm4
movl %ecx, %edx
ja 0x1fff6
decl %ecx
movl %eax, %edx
subl %ecx, %edx
xorps %xmm3, %xmm3
cvtsi2sd %edx, %xmm3
mulsd %xmm2, %xmm3
ucomisd %xmm9, %xmm3
jae 0x20114
addl %eax, %r13d
subsd %xmm3, %xmm9
mulsd %xmm1, %xmm8
movsd 0x4affe(%rip), %xmm2    # 0x6b058
subsd %xmm0, %xmm2
movapd %xmm8, %xmm1
divsd %xmm2, %xmm1
mulsd %xmm0, %xmm7
xorpd %xmm2, %xmm2
ucomisd %xmm2, %xmm9
jbe 0x200b8
movapd %xmm0, %xmm3
mulsd %xmm1, %xmm3
movapd 0x4af8a(%rip), %xmm4    # 0x6b010
movsd 0x4c262(%rip), %xmm5    # 0x6c2f0
movapd %xmm7, %xmm6
subsd %xmm3, %xmm6
andpd %xmm4, %xmm6
ucomisd %xmm5, %xmm6
jbe 0x200b8
addsd %xmm8, %xmm7
subsd %xmm7, %xmm9
incl %r13d
mulsd %xmm0, %xmm7
ucomisd %xmm2, %xmm9
ja 0x2008e
ucomisd %xmm9, %xmm2
jae 0x2018b
testq %r15, %r15
je 0x201b6
xorps %xmm0, %xmm0
cvtsi2sd %r13d, %xmm0
divsd %xmm1, %xmm9
addsd %xmm0, %xmm9
movapd %xmm9, -0x40(%rbp)
movapd %xmm9, %xmm0
callq 0x9100
cvttsd2si %xmm0, %eax
cvttpd2dq %xmm0, %xmm0
cvtdq2pd %xmm0, %xmm0
jmp 0x20148
testq %r15, %r15
je 0x201d5
xorpd 0x4af12(%rip), %xmm9    # 0x6b020
divsd (%rbx), %xmm7
jmp 0x20172
addl %r13d, %ecx
xorps %xmm0, %xmm0
cvtsi2sd %ecx, %xmm0
divsd %xmm2, %xmm9
addsd %xmm0, %xmm9
movapd %xmm9, -0x40(%rbp)
movapd %xmm9, %xmm0
callq 0x9100
cvttsd2si %xmm0, %eax
testq %r15, %r15
je 0x20152
xorps %xmm0, %xmm0
cvtsi2sd %eax, %xmm0
subsd -0x40(%rbp), %xmm0
movsd %xmm0, (%r15)
xorl %r13d, %r13d
testl %eax, %eax
cmovgl %eax, %r13d
jmp 0x201d5
addl %edx, %r13d
testq %r15, %r15
je 0x201d5
xorpd 0x4aeb2(%rip), %xmm9    # 0x6b020
divsd %xmm0, %xmm7
divsd %xmm7, %xmm9
movsd 0x4c161(%rip), %xmm0    # 0x6c2e0
minsd %xmm9, %xmm0
movsd %xmm0, (%r15)
jmp 0x201d5
testq %r15, %r15
je 0x201cc
xorpd 0x4ae87(%rip), %xmm9    # 0x6b020
divsd %xmm0, %xmm7
divsd %xmm7, %xmm9
movsd 0x4c136(%rip), %xmm0    # 0x6c2e0
minsd %xmm9, %xmm0
movsd %xmm0, (%r15)
jmp 0x201cc
divsd %xmm1, %xmm9
movapd %xmm9, %xmm0
callq 0x9100
cvttsd2si %xmm0, %eax
addl %eax, %r13d
xorl %eax, %eax
testl %r13d, %r13d
cmovlel %eax, %r13d
movl %r13d, %eax
addq $0xd8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq