// File: /workspace/github_c_makefile_star2_O0/QwazyWabbitWOS[P]lmctf60/p_view.c
// Function: SV_CalcViewOffset
void SV_CalcViewOffset (edict_t *ent)
{
	float		*angles;
	float		bob;
	float		ratio;
	float		delta;
	vec3_t		v;


//===================================

	// base angles
	angles = ent->client->ps.kick_angles;

	// if dead, fix the angle and don't add any kick
	if (ent->deadflag)
	{
		VectorClear (angles);

		ent->client->ps.viewangles[ROLL] = 40;
		ent->client->ps.viewangles[PITCH] = -15;
		ent->client->ps.viewangles[YAW] = ent->client->killer_yaw;
	}
	else
	{
		// add angles based on weapon kick

		VectorCopy (ent->client->kick_angles, angles);

		// add angles based on damage kick

		ratio = (ent->client->v_dmg_time - level.time) / DAMAGE_TIME;
		if (ratio < 0)
		{
			ratio = 0;
			ent->client->v_dmg_pitch = 0;
			ent->client->v_dmg_roll = 0;
		}
		angles[PITCH] += ratio * ent->client->v_dmg_pitch;
		angles[ROLL] += ratio * ent->client->v_dmg_roll;

		// add pitch based on fall kick

		ratio = (ent->client->fall_time - level.time) / FALL_TIME;
		if (ratio < 0)
			ratio = 0;
		angles[PITCH] += ratio * ent->client->fall_value;

		// add angles based on velocity

		delta = DotProduct (ent->velocity, forward);
		angles[PITCH] += delta*run_pitch->value;
		
		delta = DotProduct (ent->velocity, right);
		angles[ROLL] += delta*run_roll->value;

		// add angles based on bob

		delta = bobfracsin * bob_pitch->value * xyspeed;
		if (ent->client->ps.pmove.pm_flags & PMF_DUCKED)
			delta *= 6;		// crouching
		angles[PITCH] += delta;
		delta = bobfracsin * bob_roll->value * xyspeed;
		if (ent->client->ps.pmove.pm_flags & PMF_DUCKED)
			delta *= 6;		// crouching
		if (bobcycle & 1)
			delta = -delta;
		angles[ROLL] += delta;
	}

//===================================

	// base origin

	VectorClear (v);

	// add view height

	v[2] += ent->viewheight;

	// add fall height

	ratio = (ent->client->fall_time - level.time) / FALL_TIME;
	if (ratio < 0)
		ratio = 0;
	v[2] -= ratio * ent->client->fall_value * 0.4f;

	// add bob height

	bob = bobfracsin * xyspeed * bob_up->value;
	if (bob > 6)
		bob = 6;
	//gi.DebugGraph (bob *2, 255);
	v[2] += bob;

	// add kick offset

	VectorAdd (v, ent->client->kick_origin, v);

	// absolutely bound offsets
	// so the view can never be outside the player box

	if (v[0] < -14)
		v[0] = -14;
	else if (v[0] > 14)
		v[0] = 14;
	if (v[1] < -14)
		v[1] = -14;
	else if (v[1] > 14)
		v[1] = 14;
	if (v[2] < -22)
		v[2] = -22;
	else if (v[2] > 30)
		v[2] = 30;

	VectorCopy (v, ent->client->ps.viewoffset);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq 0x58(%rax), %rax
addq $0x34, %rax
movq %rax, -0x10(%rbp)
movq -0x8(%rbp), %rax
cmpl $0x0, 0x260(%rax)
je 0x625f4
movq -0x10(%rbp), %rax
xorps %xmm0, %xmm0
movss %xmm0, 0x8(%rax)
movq -0x10(%rbp), %rax
xorps %xmm0, %xmm0
movss %xmm0, 0x4(%rax)
movq -0x10(%rbp), %rax
xorps %xmm0, %xmm0
movss %xmm0, (%rax)
movq -0x8(%rbp), %rax
movq 0x58(%rax), %rax
movss 0xe768(%rip), %xmm0     # 0x70d20
movss %xmm0, 0x24(%rax)
movq -0x8(%rbp), %rax
movq 0x58(%rax), %rax
movss 0xdccf(%rip), %xmm0     # 0x7029c
movss %xmm0, 0x1c(%rax)
movq -0x8(%rbp), %rax
movq 0x58(%rax), %rax
movss 0xe74(%rax), %xmm0
movq -0x8(%rbp), %rax
movq 0x58(%rax), %rax
movss %xmm0, 0x20(%rax)
jmp 0x6293d
movq -0x8(%rbp), %rax
movq 0x58(%rax), %rax
movss 0xe7c(%rax), %xmm0
movq -0x10(%rbp), %rax
movss %xmm0, (%rax)
movq -0x8(%rbp), %rax
movq 0x58(%rax), %rax
movss 0xe80(%rax), %xmm0
movq -0x10(%rbp), %rax
movss %xmm0, 0x4(%rax)
movq -0x8(%rbp), %rax
movq 0x58(%rax), %rax
movss 0xe84(%rax), %xmm0
movq -0x10(%rbp), %rax
movss %xmm0, 0x8(%rax)
movq -0x8(%rbp), %rax
movq 0x58(%rax), %rax
movss 0xe9c(%rax), %xmm0
movq 0x2074b(%rip), %rax     # 0x82da0
subss 0x4(%rax), %xmm0
movss 0x104ee(%rip), %xmm1    # 0x72b50
divss %xmm1, %xmm0
movss %xmm0, -0x18(%rbp)
xorps %xmm0, %xmm0
ucomiss -0x18(%rbp), %xmm0
jbe 0x626a2
xorps %xmm0, %xmm0
movss %xmm0, -0x18(%rbp)
movq -0x8(%rbp), %rax
movq 0x58(%rax), %rax
xorps %xmm0, %xmm0
movss %xmm0, 0xe98(%rax)
movq -0x8(%rbp), %rax
movq 0x58(%rax), %rax
xorps %xmm0, %xmm0
movss %xmm0, 0xe94(%rax)
movss -0x18(%rbp), %xmm0
movq -0x8(%rbp), %rax
movq 0x58(%rax), %rax
movss 0xe98(%rax), %xmm2
movq -0x10(%rbp), %rax
movss (%rax), %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, (%rax)
movss -0x18(%rbp), %xmm0
movq -0x8(%rbp), %rax
movq 0x58(%rax), %rax
movss 0xe94(%rax), %xmm2
movq -0x10(%rbp), %rax
movss 0x8(%rax), %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, 0x8(%rax)
movq -0x8(%rbp), %rax
movq 0x58(%rax), %rax
movss 0xea0(%rax), %xmm0
movq 0x20693(%rip), %rax     # 0x82da0
subss 0x4(%rax), %xmm0
movss 0x150f6(%rip), %xmm1    # 0x77810
divss %xmm1, %xmm0
movss %xmm0, -0x18(%rbp)
xorps %xmm0, %xmm0
ucomiss -0x18(%rbp), %xmm0
jbe 0x62734
xorps %xmm0, %xmm0
movss %xmm0, -0x18(%rbp)
movss -0x18(%rbp), %xmm0
movq -0x8(%rbp), %rax
movq 0x58(%rax), %rax
movss 0xea4(%rax), %xmm2
movq -0x10(%rbp), %rax
movss (%rax), %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, (%rax)
movq -0x8(%rbp), %rax
movss 0x1c0(%rax), %xmm1
movss 0x50ab7(%rip), %xmm2    # 0xb3228
movq -0x8(%rbp), %rax
movss 0x1c4(%rax), %xmm0
mulss 0x50aa7(%rip), %xmm0    # 0xb322c
mulss %xmm2, %xmm1
addss %xmm0, %xmm1
movq -0x8(%rbp), %rax
movss 0x1c8(%rax), %xmm0
movss 0x50a8f(%rip), %xmm2    # 0xb3230
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, -0x1c(%rbp)
movss -0x1c(%rbp), %xmm0
movq 0x1fe9e(%rip), %rax     # 0x82658
movq (%rax), %rax
movss 0x20(%rax), %xmm2
movq -0x10(%rbp), %rax
movss (%rax), %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, (%rax)
movq -0x8(%rbp), %rax
movss 0x1c0(%rax), %xmm1
movss 0x50a2e(%rip), %xmm2    # 0xb3218
movq -0x8(%rbp), %rax
movss 0x1c4(%rax), %xmm0
mulss 0x50a1e(%rip), %xmm0    # 0xb321c
mulss %xmm2, %xmm1
addss %xmm0, %xmm1
movq -0x8(%rbp), %rax
movss 0x1c8(%rax), %xmm0
movss 0x50a06(%rip), %xmm2    # 0xb3220
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, -0x1c(%rbp)
movss -0x1c(%rbp), %xmm0
movq 0x206b5(%rip), %rax     # 0x82ee8
movq (%rax), %rax
movss 0x20(%rax), %xmm2
movq -0x10(%rbp), %rax
movss 0x8(%rax), %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, 0x8(%rax)
movq 0x20420(%rip), %rax     # 0x82c78
movss (%rax), %xmm0
movq 0x201d5(%rip), %rax     # 0x82a38
movq (%rax), %rax
mulss 0x20(%rax), %xmm0
movq 0x206d6(%rip), %rax     # 0x82f48
mulss (%rax), %xmm0
movss %xmm0, -0x1c(%rbp)
movq -0x8(%rbp), %rax
movq 0x58(%rax), %rax
movzbl 0x10(%rax), %eax
andl $0x1, %eax
cmpl $0x0, %eax
je 0x628a1
movss 0xd66d(%rip), %xmm0     # 0x6ff04
mulss -0x1c(%rbp), %xmm0
movss %xmm0, -0x1c(%rbp)
movss -0x1c(%rbp), %xmm0
movq -0x10(%rbp), %rax
addss (%rax), %xmm0
movss %xmm0, (%rax)
movq 0x203bf(%rip), %rax     # 0x82c78
movss (%rax), %xmm0
movq 0x203a4(%rip), %rax     # 0x82c68
movq (%rax), %rax
mulss 0x20(%rax), %xmm0
movq 0x20675(%rip), %rax     # 0x82f48
mulss (%rax), %xmm0
movss %xmm0, -0x1c(%rbp)
movq -0x8(%rbp), %rax
movq 0x58(%rax), %rax
movzbl 0x10(%rax), %eax
andl $0x1, %eax
cmpl $0x0, %eax
je 0x62902
movss 0xd60c(%rip), %xmm0     # 0x6ff04
mulss -0x1c(%rbp), %xmm0
movss %xmm0, -0x1c(%rbp)
movq 0x20287(%rip), %rax     # 0x82b90
movl (%rax), %eax
andl $0x1, %eax
cmpl $0x0, %eax
je 0x6292a
movss -0x1c(%rbp), %xmm0
movd %xmm0, %eax
xorl $0x80000000, %eax       # imm = 0x80000000
movd %eax, %xmm0
movss %xmm0, -0x1c(%rbp)
movss -0x1c(%rbp), %xmm0
movq -0x10(%rbp), %rax
addss 0x8(%rax), %xmm0
movss %xmm0, 0x8(%rax)
xorps %xmm0, %xmm0
movss %xmm0, -0x20(%rbp)
xorps %xmm0, %xmm0
movss %xmm0, -0x24(%rbp)
xorps %xmm0, %xmm0
movss %xmm0, -0x28(%rbp)
movq -0x8(%rbp), %rax
cvtsi2ssl 0x278(%rax), %xmm0
addss -0x20(%rbp), %xmm0
movss %xmm0, -0x20(%rbp)
movq -0x8(%rbp), %rax
movq 0x58(%rax), %rax
movss 0xea0(%rax), %xmm0
movq 0x2041e(%rip), %rax     # 0x82da0
subss 0x4(%rax), %xmm0
movss 0x14e81(%rip), %xmm1    # 0x77810
divss %xmm1, %xmm0
movss %xmm0, -0x18(%rbp)
xorps %xmm0, %xmm0
ucomiss -0x18(%rbp), %xmm0
jbe 0x629a9
xorps %xmm0, %xmm0
movss %xmm0, -0x18(%rbp)
movss -0x18(%rbp), %xmm0
movq -0x8(%rbp), %rax
movq 0x58(%rax), %rax
mulss 0xea4(%rax), %xmm0
movss -0x20(%rbp), %xmm1
movd %xmm0, %eax
xorl $0x80000000, %eax       # imm = 0x80000000
movd %eax, %xmm0
movss 0x14e3c(%rip), %xmm2    # 0x77814
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, -0x20(%rbp)
movq 0x2028c(%rip), %rax     # 0x82c78
movss (%rax), %xmm0
movq 0x20551(%rip), %rax     # 0x82f48
mulss (%rax), %xmm0
movq 0x200de(%rip), %rax     # 0x82ae0
movq (%rax), %rax
mulss 0x20(%rax), %xmm0
movss %xmm0, -0x14(%rbp)
movss -0x14(%rbp), %xmm0
movss 0xd4e8(%rip), %xmm1     # 0x6ff04
ucomiss %xmm1, %xmm0
jbe 0x62a2e
movss 0xd4db(%rip), %xmm0     # 0x6ff04
movss %xmm0, -0x14(%rbp)
movss -0x14(%rbp), %xmm0
addss -0x20(%rbp), %xmm0
movss %xmm0, -0x20(%rbp)
movss -0x28(%rbp), %xmm0
movq -0x8(%rbp), %rax
movq 0x58(%rax), %rax
addss 0xe88(%rax), %xmm0
movss %xmm0, -0x28(%rbp)
movss -0x24(%rbp), %xmm0
movq -0x8(%rbp), %rax
movq 0x58(%rax), %rax
addss 0xe8c(%rax), %xmm0
movss %xmm0, -0x24(%rbp)
movss -0x20(%rbp), %xmm0
movq -0x8(%rbp), %rax
movq 0x58(%rax), %rax
addss 0xe90(%rax), %xmm0
movss %xmm0, -0x20(%rbp)
movss 0x14d85(%rip), %xmm0    # 0x77818
ucomiss -0x28(%rbp), %xmm0
jbe 0x62aa8
movss 0x14d77(%rip), %xmm0    # 0x77818
movss %xmm0, -0x28(%rbp)
jmp 0x62ac9
movss -0x28(%rbp), %xmm0
movss 0x14d67(%rip), %xmm1    # 0x7781c
ucomiss %xmm1, %xmm0
jbe 0x62ac7
movss 0x14d5a(%rip), %xmm0    # 0x7781c
movss %xmm0, -0x28(%rbp)
jmp 0x62ac9
movss 0x14d47(%rip), %xmm0    # 0x77818
ucomiss -0x24(%rbp), %xmm0
jbe 0x62ae6
movss 0x14d39(%rip), %xmm0    # 0x77818
movss %xmm0, -0x24(%rbp)
jmp 0x62b07
movss -0x24(%rbp), %xmm0
movss 0x14d29(%rip), %xmm1    # 0x7781c
ucomiss %xmm1, %xmm0
jbe 0x62b05
movss 0x14d1c(%rip), %xmm0    # 0x7781c
movss %xmm0, -0x24(%rbp)
jmp 0x62b07
movss 0x14d11(%rip), %xmm0    # 0x77820
ucomiss -0x20(%rbp), %xmm0
jbe 0x62b24
movss 0x14d03(%rip), %xmm0    # 0x77820
movss %xmm0, -0x20(%rbp)
jmp 0x62b45
movss -0x20(%rbp), %xmm0
movss 0xd75f(%rip), %xmm1     # 0x70290
ucomiss %xmm1, %xmm0
jbe 0x62b43
movss 0xd752(%rip), %xmm0     # 0x70290
movss %xmm0, -0x20(%rbp)
jmp 0x62b45
movss -0x28(%rbp), %xmm0
movq -0x8(%rbp), %rax
movq 0x58(%rax), %rax
movss %xmm0, 0x28(%rax)
movss -0x24(%rbp), %xmm0
movq -0x8(%rbp), %rax
movq 0x58(%rax), %rax
movss %xmm0, 0x2c(%rax)
movss -0x20(%rbp), %xmm0
movq -0x8(%rbp), %rax
movq 0x58(%rax), %rax
movss %xmm0, 0x30(%rax)
popq %rbp
retq
nopl (%rax)