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

	if (ent->s.modelindex != 255)
		return;		// not in the player model

	if (ent->movetype == MOVETYPE_NOCLIP)
		return;

	if ((ent->client->oldvelocity[2] < 0) && (ent->velocity[2] > ent->client->oldvelocity[2]) && (!ent->groundentity))
	{
		delta = ent->client->oldvelocity[2];
	}
	else
	{
		if (!ent->groundentity)
			return;
		delta = ent->velocity[2] - ent->client->oldvelocity[2];
	}
	delta = delta*delta * 0.0001;

	// never take falling damage if completely underwater
	if (ent->waterlevel == 3)
		return;
	if (ent->waterlevel == 2)
		delta *= 0.25;
	if (ent->waterlevel == 1)
		delta *= 0.5;

	if (delta < 1)
		return;

	if (delta < 15)
	{
		ent->s.event = EV_FOOTSTEP;
		return;
	}

	ent->client->fall_value = delta*0.5;
	if (ent->client->fall_value > 40)
		ent->client->fall_value = 40;
	ent->client->fall_time = level.time + FALL_TIME;

	if (delta > 30)
	{
		if (ent->health > 0)
		{
			if (delta >= 55)
				ent->s.event = EV_FALLFAR;
			else
				ent->s.event = EV_FALL;
		}
		ent->pain_debounce_time = level.time;	// no normal pain sound
		damage = (delta-30)/2;
		if (damage < 1)
			damage = 1;
		VectorSet (dir, 0, 0, 1);

		if (!deathmatch->value || !((int)dmflags->value & DF_NO_FALLING) )
			T_Damage (ent, world, world, dir, ent->s.origin, vec3_origin, damage, 0, 0, MOD_FALLING);
	}
	else
	{
		ent->s.event = EV_FALLSHORT;
		return;
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
cmpl $0xff, 0x28(%rax)
je 0x6366e
jmp 0x6398d
movq -0x8(%rbp), %rax
cmpl $0x1, 0x118(%rax)
jne 0x63680
jmp 0x6398d
movq -0x8(%rbp), %rax
movq 0x58(%rax), %rax
xorps %xmm0, %xmm0
ucomiss 0xee0(%rax), %xmm0
jbe 0x636d6
movq -0x8(%rbp), %rax
movss 0x1c8(%rax), %xmm0
movq -0x8(%rbp), %rax
movq 0x58(%rax), %rax
ucomiss 0xee0(%rax), %xmm0
jbe 0x636d6
movq -0x8(%rbp), %rax
cmpq $0x0, 0x2b8(%rax)
jne 0x636d6
movq -0x8(%rbp), %rax
movq 0x58(%rax), %rax
movss 0xee0(%rax), %xmm0
movss %xmm0, -0xc(%rbp)
jmp 0x6370a
movq -0x8(%rbp), %rax
cmpq $0x0, 0x2b8(%rax)
jne 0x636e9
jmp 0x6398d
movq -0x8(%rbp), %rax
movss 0x1c8(%rax), %xmm0
movq -0x8(%rbp), %rax
movq 0x58(%rax), %rax
subss 0xee0(%rax), %xmm0
movss %xmm0, -0xc(%rbp)
movss -0xc(%rbp), %xmm0
mulss -0xc(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd 0x14158(%rip), %xmm1    # 0x77878
mulsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, -0xc(%rbp)
movq -0x8(%rbp), %rax
cmpl $0x3, 0x30c(%rax)
jne 0x6373f
jmp 0x6398d
movq -0x8(%rbp), %rax
cmpl $0x2, 0x30c(%rax)
jne 0x6376a
movss -0xc(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd 0x12af3(%rip), %xmm1    # 0x76250
mulsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, -0xc(%rbp)
movq -0x8(%rbp), %rax
cmpl $0x1, 0x30c(%rax)
jne 0x63795
movss -0xc(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd 0xdca0(%rip), %xmm1     # 0x71428
mulsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, -0xc(%rbp)
movss 0xc74f(%rip), %xmm0     # 0x6feec
ucomiss -0xc(%rbp), %xmm0
jbe 0x637a8
jmp 0x6398d
movss 0xcae8(%rip), %xmm0     # 0x70298
ucomiss -0xc(%rbp), %xmm0
jbe 0x637c6
movq -0x8(%rbp), %rax
movl $0x2, 0x50(%rax)
jmp 0x6398d
movss -0xc(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd 0xdc51(%rip), %xmm1     # 0x71428
mulsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movq -0x8(%rbp), %rax
movq 0x58(%rax), %rax
movss %xmm0, 0xea4(%rax)
movq -0x8(%rbp), %rax
movq 0x58(%rax), %rax
movss 0xea4(%rax), %xmm0
movss 0xd519(%rip), %xmm1     # 0x70d20
ucomiss %xmm1, %xmm0
jbe 0x63824
movq -0x8(%rbp), %rax
movq 0x58(%rax), %rax
movss 0xd504(%rip), %xmm0     # 0x70d20
movss %xmm0, 0xea4(%rax)
movss 0x13fe4(%rip), %xmm0    # 0x77810
movq 0x1f56d(%rip), %rax     # 0x82da0
addss 0x4(%rax), %xmm0
movq -0x8(%rbp), %rax
movq 0x58(%rax), %rax
movss %xmm0, 0xea0(%rax)
movss -0xc(%rbp), %xmm0
movss 0xca3b(%rip), %xmm1     # 0x70290
ucomiss %xmm1, %xmm0
jbe 0x63982
movq -0x8(%rbp), %rax
cmpl $0x0, 0x254(%rax)
jle 0x63897
movss -0xc(%rbp), %xmm0
movss 0x13fc4(%rip), %xmm1    # 0x7783c
ucomiss %xmm1, %xmm0
jb 0x6388a
movq -0x8(%rbp), %rax
movl $0x5, 0x50(%rax)
jmp 0x63895
movq -0x8(%rbp), %rax
movl $0x4, 0x50(%rax)
jmp 0x63897
movq 0x1f502(%rip), %rax     # 0x82da0
movss 0x4(%rax), %xmm0
movq -0x8(%rbp), %rax
movss %xmm0, 0x244(%rax)
movss -0xc(%rbp), %xmm0
movss 0xc9d4(%rip), %xmm1     # 0x70290
subss %xmm1, %xmm0
movss 0xc620(%rip), %xmm1     # 0x6fee8
divss %xmm1, %xmm0
cvttss2si %xmm0, %eax
movl %eax, -0x10(%rbp)
cmpl $0x1, -0x10(%rbp)
jge 0x638e0
movl $0x1, -0x10(%rbp)
xorps %xmm0, %xmm0
movss %xmm0, -0x1c(%rbp)
xorps %xmm0, %xmm0
movss %xmm0, -0x18(%rbp)
movss 0xc5f4(%rip), %xmm0     # 0x6feec
movss %xmm0, -0x14(%rbp)
movq 0x1f5bc(%rip), %rax     # 0x82ec0
movq (%rax), %rax
movss 0x20(%rax), %xmm0
xorps %xmm1, %xmm1
ucomiss %xmm1, %xmm0
jne 0x63918
jp 0x63918
jmp 0x6392f
movq 0x1ecf9(%rip), %rax     # 0x82618
movq (%rax), %rax
cvttss2si 0x20(%rax), %eax
andl $0x8, %eax
cmpl $0x0, %eax
jne 0x63980
movq -0x8(%rbp), %rdi
movq 0x1ec1e(%rip), %rax     # 0x82558
movq (%rax), %rsi
movq 0x1ec14(%rip), %rax     # 0x82558
movq (%rax), %rdx
leaq -0x1c(%rbp), %rcx
movq -0x8(%rbp), %r8
addq $0x4, %r8
movl -0x10(%rbp), %eax
movq 0x1ee0b(%rip), %r9      # 0x82768
xorl %r10d, %r10d
movl %eax, (%rsp)
movl $0x0, 0x8(%rsp)
movl $0x0, 0x10(%rsp)
movl $0x16, 0x18(%rsp)
callq 0x192c0
jmp 0x6398d
movq -0x8(%rbp), %rax
movl $0x3, 0x50(%rax)
addq $0x40, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)