// File: /workspace/github_c_makefile_star2_O0/QwazyWabbitWOS[P]lmctf60/g_weapon.c
// Function: fire_rocket
void fire_rocket (edict_t *self, vec3_t start, vec3_t dir, int damage, int speed, float damage_radius, int radius_damage)
{
	edict_t	*rocket;

	rocket = G_Spawn();
	VectorCopy (start, rocket->s.origin);
	VectorCopy (dir, rocket->movedir);
	vectoangles (dir, rocket->s.angles);
	VectorScale (dir, speed, rocket->velocity);
	rocket->movetype = MOVETYPE_FLYMISSILE;
	rocket->clipmask = MASK_SHOT;
	rocket->solid = SOLID_BBOX;
	rocket->s.effects |= EF_ROCKET;
	VectorClear (rocket->mins);
	VectorClear (rocket->maxs);
	rocket->s.modelindex = gi.modelindex ("models/objects/rocket/tris.md2");
	rocket->owner = self;
	rocket->touch = rocket_touch;
	rocket->nextthink = level.time + 8000/speed;
	rocket->think = G_FreeEdict;
	rocket->dmg = damage;
	rocket->radius_dmg = radius_damage;
	rocket->dmg_radius = damage_radius;
	rocket->s.sound = gi.soundindex ("weapons/rockfly.wav");
	rocket->classname = "rocket";

	if (self->client)
		check_dodge (self, rocket->s.origin, dir, speed);

	gi.linkentity (rocket);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movl %ecx, -0x1c(%rbp)
movl %r8d, -0x20(%rbp)
movss %xmm0, -0x24(%rbp)
movl %r9d, -0x28(%rbp)
callq 0x19950
movq %rax, -0x30(%rbp)
movq -0x10(%rbp), %rax
movss (%rax), %xmm0
movq -0x30(%rbp), %rax
movss %xmm0, 0x4(%rax)
movq -0x10(%rbp), %rax
movss 0x4(%rax), %xmm0
movq -0x30(%rbp), %rax
movss %xmm0, 0x8(%rax)
movq -0x10(%rbp), %rax
movss 0x8(%rax), %xmm0
movq -0x30(%rbp), %rax
movss %xmm0, 0xc(%rax)
movq -0x18(%rbp), %rax
movss (%rax), %xmm0
movq -0x30(%rbp), %rax
movss %xmm0, 0x19c(%rax)
movq -0x18(%rbp), %rax
movss 0x4(%rax), %xmm0
movq -0x30(%rbp), %rax
movss %xmm0, 0x1a0(%rax)
movq -0x18(%rbp), %rax
movss 0x8(%rax), %xmm0
movq -0x30(%rbp), %rax
movss %xmm0, 0x1a4(%rax)
movq -0x18(%rbp), %rdi
movq -0x30(%rbp), %rsi
addq $0x10, %rsi
callq 0x192a0
movq -0x18(%rbp), %rdi
cvtsi2ssl -0x20(%rbp), %xmm0
movq -0x30(%rbp), %rsi
addq $0x1c0, %rsi            # imm = 0x1C0
callq 0x18a80
movq -0x30(%rbp), %rax
movl $0x8, 0x118(%rax)
movq -0x30(%rbp), %rax
movl $0x6000003, 0x10c(%rax) # imm = 0x6000003
movq -0x30(%rbp), %rax
movl $0x2, 0x108(%rax)
movq -0x30(%rbp), %rax
movl 0x40(%rax), %ecx
orl $0x10, %ecx
movl %ecx, 0x40(%rax)
movq -0x30(%rbp), %rax
xorps %xmm0, %xmm0
movss %xmm0, 0xd4(%rax)
movq -0x30(%rbp), %rax
xorps %xmm0, %xmm0
movss %xmm0, 0xd0(%rax)
movq -0x30(%rbp), %rax
xorps %xmm0, %xmm0
movss %xmm0, 0xcc(%rax)
movq -0x30(%rbp), %rax
xorps %xmm0, %xmm0
movss %xmm0, 0xe0(%rax)
movq -0x30(%rbp), %rax
xorps %xmm0, %xmm0
movss %xmm0, 0xdc(%rax)
movq -0x30(%rbp), %rax
xorps %xmm0, %xmm0
movss %xmm0, 0xd8(%rax)
leaq 0x22a95(%rip), %rdi     # 0x762f7
movq 0x2ed97(%rip), %rax     # 0x82600
callq *0x40(%rax)
movl %eax, %ecx
movq -0x30(%rbp), %rax
movl %ecx, 0x28(%rax)
movq -0x8(%rbp), %rcx
movq -0x30(%rbp), %rax
movq %rcx, 0x110(%rax)
movq -0x30(%rbp), %rax
movq 0x2f191(%rip), %rcx     # 0x82a20
movq %rcx, 0x220(%rax)
movq 0x2f503(%rip), %rax     # 0x82da0
movss 0x4(%rax), %xmm0
movl $0x1f40, %eax           # imm = 0x1F40
cltd
idivl -0x20(%rbp)
cvtsi2ss %eax, %xmm1
addss %xmm1, %xmm0
movq -0x30(%rbp), %rax
movss %xmm0, 0x200(%rax)
movq -0x30(%rbp), %rax
movq 0x2eb66(%rip), %rcx     # 0x82430
movq %rcx, 0x210(%rax)
movl -0x1c(%rbp), %ecx
movq -0x30(%rbp), %rax
movl %ecx, 0x280(%rax)
movl -0x28(%rbp), %ecx
movq -0x30(%rbp), %rax
movl %ecx, 0x284(%rax)
movss -0x24(%rbp), %xmm0
movq -0x30(%rbp), %rax
movss %xmm0, 0x288(%rax)
leaq 0x22a13(%rip), %rdi     # 0x76316
movq 0x2ecf6(%rip), %rax     # 0x82600
callq *0x48(%rax)
movl %eax, %ecx
movq -0x30(%rbp), %rax
movl %ecx, 0x4c(%rax)
movq -0x30(%rbp), %rax
leaq 0x234d0(%rip), %rcx     # 0x76df1
movq %rcx, 0x138(%rax)
movq -0x8(%rbp), %rax
cmpq $0x0, 0x58(%rax)
je 0x5394b
movq -0x8(%rbp), %rdi
movq -0x30(%rbp), %rsi
addq $0x4, %rsi
movq -0x18(%rbp), %rdx
movl -0x20(%rbp), %ecx
callq 0x52800
movq 0x2ecae(%rip), %rax     # 0x82600
movq 0x90(%rax), %rax
movq -0x30(%rbp), %rdi
callq *%rax
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)