// File: /workspace/github_c_makefile_star2_O0/QwazyWabbitWOS[P]lmctf60/g_phys.c
// Function: SV_Physics_Pusher
void SV_Physics_Pusher (edict_t *ent)
{
	vec3_t		move, amove;
	edict_t		*part, *mv;

	// if not a team captain, so movement will be handled elsewhere
	if ( ent->flags & FL_TEAMSLAVE)
		return;

	// make sure all team slaves can move before commiting
	// any moves or calling any think functions
	// if the move is blocked, all moved objects will be backed out
//retry:
	pushed_p = pushed;
	for (part = ent ; part ; part=part->teamchain)
	{
		if (part->velocity[0] || part->velocity[1] || part->velocity[2] ||
			part->avelocity[0] || part->avelocity[1] || part->avelocity[2]
			)
		{	// object is moving
			VectorScale (part->velocity, FRAMETIME, move);
			VectorScale (part->avelocity, FRAMETIME, amove);

			if (!SV_Push (part, move, amove))
				break;	// move was blocked
		}
	}
	if (pushed_p > &pushed[MAX_EDICTS])
		gi.error (ERR_FATAL, "pushed_p > &pushed[MAX_EDICTS], memory corrupted");

	if (part)
	{
		// the move failed, bump all nextthink times and back out moves
		for (mv = ent ; mv ; mv=mv->teamchain)
		{
			if (mv->nextthink > 0)
				mv->nextthink += FRAMETIME;
		}

		// if the pusher has a "blocked" function, call it
		// otherwise, just stay in place until the obstacle is gone
		if (part->blocked)
			part->blocked (part, obstacle);
#if 0
		// if the pushed entity went away and the pusher is still there
		if (!obstacle->inuse && part->inuse)
			goto retry;
#endif
	}
	else
	{
		// the move succeeded, so call all think functions
		for (part = ent ; part ; part=part->teamchain)
		{
			SV_RunThink (part);
		}
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movl 0x11c(%rax), %eax
andl $0x400, %eax            # imm = 0x400
cmpl $0x0, %eax
je 0x47365
jmp 0x47557
movq 0x3b4dc(%rip), %rax     # 0x82848
movq 0x3b965(%rip), %rcx     # 0x82cd8
movq %rcx, (%rax)
movq -0x8(%rbp), %rax
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
je 0x47477
movq -0x28(%rbp), %rax
movss 0x1c0(%rax), %xmm0
xorps %xmm1, %xmm1
ucomiss %xmm1, %xmm0
jne 0x4740f
jp 0x4740f
movq -0x28(%rbp), %rax
movss 0x1c4(%rax), %xmm0
xorps %xmm1, %xmm1
ucomiss %xmm1, %xmm0
jne 0x4740f
jp 0x4740f
movq -0x28(%rbp), %rax
movss 0x1c8(%rax), %xmm0
xorps %xmm1, %xmm1
ucomiss %xmm1, %xmm0
jne 0x4740f
jp 0x4740f
movq -0x28(%rbp), %rax
movss 0x1cc(%rax), %xmm0
xorps %xmm1, %xmm1
ucomiss %xmm1, %xmm0
jne 0x4740f
jp 0x4740f
movq -0x28(%rbp), %rax
movss 0x1d0(%rax), %xmm0
xorps %xmm1, %xmm1
ucomiss %xmm1, %xmm0
jne 0x4740f
jp 0x4740f
movq -0x28(%rbp), %rax
movss 0x1d4(%rax), %xmm0
xorps %xmm1, %xmm1
ucomiss %xmm1, %xmm0
jne 0x4740f
jp 0x4740f
jmp 0x47461
movq -0x28(%rbp), %rdi
addq $0x1c0, %rdi            # imm = 0x1C0
leaq -0x14(%rbp), %rsi
movss 0x28e6e(%rip), %xmm0    # 0x70294
callq 0x18a80
movq -0x28(%rbp), %rdi
addq $0x1cc, %rdi            # imm = 0x1CC
leaq -0x20(%rbp), %rsi
movss 0x28e52(%rip), %xmm0    # 0x70294
callq 0x18a80
movq -0x28(%rbp), %rdi
leaq -0x14(%rbp), %rsi
leaq -0x20(%rbp), %rdx
callq 0x18420
cmpl $0x0, %eax
jne 0x4745f
jmp 0x47477
jmp 0x47461
jmp 0x47463
movq -0x28(%rbp), %rax
movq 0x2c8(%rax), %rax
movq %rax, -0x28(%rbp)
jmp 0x4737e
movq 0x3b85a(%rip), %rcx     # 0x82cd8
addq $0xa000, %rcx           # imm = 0xA000
movq 0x3b3bc(%rip), %rax     # 0x82848
cmpq %rcx, (%rax)
jbe 0x474a8
xorl %eax, %eax
movl %eax, %edi
leaq 0x2d2c5(%rip), %rsi     # 0x74761
movq 0x3b15d(%rip), %rcx     # 0x82600
movb $0x0, %al
callq *0x38(%rcx)
cmpq $0x0, -0x28(%rbp)
je 0x4752c
movq -0x8(%rbp), %rax
movq %rax, -0x30(%rbp)
cmpq $0x0, -0x30(%rbp)
je 0x47501
movq -0x30(%rbp), %rax
movss 0x200(%rax), %xmm0
xorps %xmm1, %xmm1
ucomiss %xmm1, %xmm0
jbe 0x474ee
movq -0x30(%rbp), %rax
movss 0x28db6(%rip), %xmm0    # 0x70294
addss 0x200(%rax), %xmm0
movss %xmm0, 0x200(%rax)
jmp 0x474f0
movq -0x30(%rbp), %rax
movq 0x2c8(%rax), %rax
movq %rax, -0x30(%rbp)
jmp 0x474b7
movq -0x28(%rbp), %rax
cmpq $0x0, 0x218(%rax)
je 0x4752a
movq -0x28(%rbp), %rax
movq 0x218(%rax), %rax
movq -0x28(%rbp), %rdi
movq 0x3b353(%rip), %rcx     # 0x82878
movq (%rcx), %rsi
callq *%rax
jmp 0x47557
movq -0x8(%rbp), %rax
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
je 0x47555
movq -0x28(%rbp), %rdi
callq 0x18680
movq -0x28(%rbp), %rax
movq 0x2c8(%rax), %rax
movq %rax, -0x28(%rbp)
jmp 0x47534
jmp 0x47557
addq $0x30, %rsp
popq %rbp
retq
nopl (%rax)