// File: /workspace/github_c_makefile_star2_O0/QwazyWabbitWOS[P]lmctf60/p_view.c
// Function: SV_CalcGunOffset
void SV_CalcGunOffset (edict_t *ent)
{
	int		i;
	float	delta;

	// gun angles from bobbing
	ent->client->ps.gunangles[ROLL] = xyspeed * bobfracsin * 0.005;
	ent->client->ps.gunangles[YAW] = xyspeed * bobfracsin * 0.01;
	if (bobcycle & 1)
	{
		ent->client->ps.gunangles[ROLL] = -ent->client->ps.gunangles[ROLL];
		ent->client->ps.gunangles[YAW] = -ent->client->ps.gunangles[YAW];
	}

	ent->client->ps.gunangles[PITCH] = xyspeed * bobfracsin * 0.005;

	// gun angles from delta movement
	for (i=0 ; i<3 ; i++)
	{
		delta = ent->client->oldviewangles[i] - ent->client->ps.viewangles[i];
		if (delta > 180)
			delta -= 360;
		if (delta < -180)
			delta += 360;
		if (delta > 45)
			delta = 45;
		if (delta < -45)
			delta = -45;
		if (i == YAW)
			ent->client->ps.gunangles[ROLL] += 0.1*delta;
		ent->client->ps.gunangles[i] += 0.2 * delta;
	}

	// gun height
	VectorClear (ent->client->ps.gunoffset);
//	ent->ps->gunorigin[2] += bob;

	// gun_x / gun_y / gun_z are development tools
	for (i=0 ; i<3 ; i++)
	{
		ent->client->ps.gunoffset[i] += forward[i]*(gun_y->value);
		ent->client->ps.gunoffset[i] += right[i]*gun_x->value;
		ent->client->ps.gunoffset[i] += up[i]* (-gun_z->value);
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
movq %rdi, -0x8(%rbp)
movq 0x203b9(%rip), %rax     # 0x82f48
movss (%rax), %xmm0
movq 0x200de(%rip), %rax     # 0x82c78
mulss (%rax), %xmm0
cvtss2sd %xmm0, %xmm0
movsd 0x14cc6(%rip), %xmm1    # 0x77870
mulsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movq -0x8(%rbp), %rax
movq 0x58(%rax), %rax
movss %xmm0, 0x48(%rax)
movq 0x20382(%rip), %rax     # 0x82f48
movss (%rax), %xmm0
movq 0x200a7(%rip), %rax     # 0x82c78
mulss (%rax), %xmm0
cvtss2sd %xmm0, %xmm0
movsd 0x14c7f(%rip), %xmm1    # 0x77860
mulsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movq -0x8(%rbp), %rax
movq 0x58(%rax), %rax
movss %xmm0, 0x44(%rax)
movq 0x1ff93(%rip), %rax     # 0x82b90
movl (%rax), %eax
andl $0x1, %eax
cmpl $0x0, %eax
je 0x62c55
movq -0x8(%rbp), %rax
movq 0x58(%rax), %rax
movss 0x48(%rax), %xmm0
movd %xmm0, %eax
xorl $0x80000000, %eax       # imm = 0x80000000
movd %eax, %xmm0
movq -0x8(%rbp), %rax
movq 0x58(%rax), %rax
movss %xmm0, 0x48(%rax)
movq -0x8(%rbp), %rax
movq 0x58(%rax), %rax
movss 0x44(%rax), %xmm0
movd %xmm0, %eax
xorl $0x80000000, %eax       # imm = 0x80000000
movd %eax, %xmm0
movq -0x8(%rbp), %rax
movq 0x58(%rax), %rax
movss %xmm0, 0x44(%rax)
movq 0x202ec(%rip), %rax     # 0x82f48
movss (%rax), %xmm0
movq 0x20011(%rip), %rax     # 0x82c78
mulss (%rax), %xmm0
cvtss2sd %xmm0, %xmm0
movsd 0x14bf9(%rip), %xmm1    # 0x77870
mulsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movq -0x8(%rbp), %rax
movq 0x58(%rax), %rax
movss %xmm0, 0x40(%rax)
movl $0x0, -0xc(%rbp)
cmpl $0x3, -0xc(%rbp)
jge 0x62dcb
movq -0x8(%rbp), %rax
movq 0x58(%rax), %rax
movslq -0xc(%rbp), %rcx
movss 0xecc(%rax,%rcx,4), %xmm0
movq -0x8(%rbp), %rax
movq 0x58(%rax), %rax
movslq -0xc(%rbp), %rcx
subss 0x1c(%rax,%rcx,4), %xmm0
movss %xmm0, -0x10(%rbp)
movss -0x10(%rbp), %xmm0
movss 0x1370e(%rip), %xmm1    # 0x763e4
ucomiss %xmm1, %xmm0
jbe 0x62cf1
movss -0x10(%rbp), %xmm0
movss 0xe03c(%rip), %xmm1     # 0x70d24
subss %xmm1, %xmm0
movss %xmm0, -0x10(%rbp)
movss 0x136e7(%rip), %xmm0    # 0x763e0
ucomiss -0x10(%rbp), %xmm0
jbe 0x62d11
movss 0xe01d(%rip), %xmm0     # 0x70d24
addss -0x10(%rbp), %xmm0
movss %xmm0, -0x10(%rbp)
movss -0x10(%rbp), %xmm0
movss 0x136ca(%rip), %xmm1    # 0x763e8
ucomiss %xmm1, %xmm0
jbe 0x62d30
movss 0x136bd(%rip), %xmm0    # 0x763e8
movss %xmm0, -0x10(%rbp)
movss 0x14aec(%rip), %xmm0    # 0x77824
ucomiss -0x10(%rbp), %xmm0
jbe 0x62d4b
movss 0x14ade(%rip), %xmm0    # 0x77824
movss %xmm0, -0x10(%rbp)
cmpl $0x1, -0xc(%rbp)
jne 0x62d84
movss -0x10(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movq -0x8(%rbp), %rax
movq 0x58(%rax), %rax
movss 0x48(%rax), %xmm1
cvtss2sd %xmm1, %xmm1
movsd 0xdea5(%rip), %xmm2     # 0x70c18
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, 0x48(%rax)
movss -0x10(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movq -0x8(%rbp), %rax
movq 0x58(%rax), %rax
movslq -0xc(%rbp), %rcx
movss 0x40(%rax,%rcx,4), %xmm1
cvtss2sd %xmm1, %xmm1
movsd 0xfd95(%rip), %xmm2     # 0x72b40
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, 0x40(%rax,%rcx,4)
movl -0xc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc(%rbp)
jmp 0x62c93
movq -0x8(%rbp), %rax
movq 0x58(%rax), %rax
xorps %xmm0, %xmm0
movss %xmm0, 0x54(%rax)
movq -0x8(%rbp), %rax
movq 0x58(%rax), %rax
xorps %xmm0, %xmm0
movss %xmm0, 0x50(%rax)
movq -0x8(%rbp), %rax
movq 0x58(%rax), %rax
xorps %xmm0, %xmm0
movss %xmm0, 0x4c(%rax)
movl $0x0, -0xc(%rbp)
cmpl $0x3, -0xc(%rbp)
jge 0x62ee4
movslq -0xc(%rbp), %rcx
leaq 0x50411(%rip), %rax     # 0xb3228
movss (%rax,%rcx,4), %xmm0
movq 0x1f5e5(%rip), %rax     # 0x82408
movq (%rax), %rax
movss 0x20(%rax), %xmm2
movq -0x8(%rbp), %rax
movq 0x58(%rax), %rax
movslq -0xc(%rbp), %rcx
movss 0x4c(%rax,%rcx,4), %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, 0x4c(%rax,%rcx,4)
movslq -0xc(%rbp), %rcx
leaq 0x503c2(%rip), %rax     # 0xb3218
movss (%rax,%rcx,4), %xmm0
movq 0x1fc1e(%rip), %rax     # 0x82a80
movq (%rax), %rax
movss 0x20(%rax), %xmm2
movq -0x8(%rbp), %rax
movq 0x58(%rax), %rax
movslq -0xc(%rbp), %rcx
movss 0x4c(%rax,%rcx,4), %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, 0x4c(%rax,%rcx,4)
movslq -0xc(%rbp), %rcx
leaq 0x503ab(%rip), %rax     # 0xb3240
movss (%rax,%rcx,4), %xmm0
movq 0x1fbf7(%rip), %rax     # 0x82a98
movq (%rax), %rax
movss 0x20(%rax), %xmm1
movd %xmm1, %eax
xorl $0x80000000, %eax       # imm = 0x80000000
movd %eax, %xmm2
movq -0x8(%rbp), %rax
movq 0x58(%rax), %rax
movslq -0xc(%rbp), %rcx
movss 0x4c(%rax,%rcx,4), %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, 0x4c(%rax,%rcx,4)
movl -0xc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc(%rbp)
jmp 0x62e02
popq %rbp
retq
nopw %cs:(%rax,%rax)