// File: essarrdee[P]mutantaliens/mutantaliens.cpp
// Function: react_to_noise(actor*, noise*, int, int)
void react_to_noise(actor* a,noise* n,int xx, int yy)
{
	if(a->is_player)
	{
		sound_this_turn = n->describe;
		if(on_map(xx,yy))
		{
			int dx = xx-a->x; int dy = yy-a->y;
			if(dx != 0)
			{
				float t = 180*atan(float(dy)/(float)dx)/PI;
				if(t<-67.5)
				{dir_this_turn = (dx>0?"North":"South");}
				else if(t<-22.5)
				{dir_this_turn = (dx>0?"NEast":"SWest");}
				else if(t<22.5)
				{dir_this_turn = (dx>0?"East":"West");}
				else if(t<67.5)
				{dir_this_turn = (dx>0?"SEast":"NWest");}
				else {dir_this_turn = (dx>0?"South":"North");}
			}
			else
			{
				if(dy == 0)
				{
					dir_this_turn = "here";
				}
				else {dir_this_turn = (dy>0)?"South":"North";}
			}
		}
		else{dir_this_turn = "???";}
	}
	else if(!a->is_hologram)
	{
		if(n->scary)
		{
			if(a->sspecies->size != 2)
			{
			a->runaway_x = xx;
			a->runaway_y = yy;
			}
		}
		else
		{
			if(!a->certain)
			{
				a->ai_x = xx;
				a->ai_y = yy;
			}
		}
	}
}

// Assembly:
subq $0x58, %rsp
movq %rdi, 0x50(%rsp)
movq %rsi, 0x48(%rsp)
movl %edx, 0x44(%rsp)
movl %ecx, 0x40(%rsp)
movq 0x50(%rsp), %rax
testb $0x1, 0x8(%rax)
je 0xf4b4
movq 0x48(%rsp), %rsi
addq $0x8, %rsi
leaq 0xd1273(%rip), %rdi     # 0xe04c8
callq 0x5040
movl 0x44(%rsp), %edi
movl 0x40(%rsp), %esi
callq 0x20770
testb $0x1, %al
jne 0xf270
jmp 0xf49f
movl 0x44(%rsp), %eax
movq 0x50(%rsp), %rcx
subl 0x20(%rcx), %eax
movl %eax, 0x3c(%rsp)
movl 0x40(%rsp), %eax
movq 0x50(%rsp), %rcx
subl 0x24(%rcx), %eax
movl %eax, 0x38(%rsp)
cmpl $0x0, 0x3c(%rsp)
je 0xf44e
cvtsi2ssl 0x38(%rsp), %xmm0
cvtsi2ssl 0x3c(%rsp), %xmm1
divss %xmm1, %xmm0
callq 0x20940
movaps %xmm0, %xmm1
movss 0x1dd9d(%rip), %xmm0    # 0x2d058
mulss %xmm1, %xmm0
movss 0x1dd8d(%rip), %xmm1    # 0x2d054
divss %xmm1, %xmm0
movss %xmm0, 0x34(%rsp)
movss 0x34(%rsp), %xmm0
cvtss2sd %xmm0, %xmm1
movsd 0x1dd95(%rip), %xmm0    # 0x2d078
ucomisd %xmm1, %xmm0
jbe 0xf322
cmpl $0x0, 0x3c(%rsp)
jle 0xf2fe
leaq 0x1ea7f(%rip), %rax     # 0x2dd76
movq %rax, 0x28(%rsp)
jmp 0xf30c
leaq 0x1ea77(%rip), %rax     # 0x2dd7c
movq %rax, 0x28(%rsp)
jmp 0xf30c
movq 0x28(%rsp), %rsi
leaq 0xd11d0(%rip), %rdi     # 0xe04e8
callq 0x53c0
jmp 0xf44c
movss 0x34(%rsp), %xmm0
cvtss2sd %xmm0, %xmm1
movsd 0x1dd4c(%rip), %xmm0    # 0x2d080
ucomisd %xmm1, %xmm0
jbe 0xf373
cmpl $0x0, 0x3c(%rsp)
jle 0xf34f
leaq 0x1ea3a(%rip), %rax     # 0x2dd82
movq %rax, 0x20(%rsp)
jmp 0xf35d
leaq 0x1ea32(%rip), %rax     # 0x2dd88
movq %rax, 0x20(%rsp)
jmp 0xf35d
movq 0x20(%rsp), %rsi
leaq 0xd117f(%rip), %rdi     # 0xe04e8
callq 0x53c0
jmp 0xf44a
movss 0x34(%rsp), %xmm0
cvtss2sd %xmm0, %xmm1
movsd 0x1dd03(%rip), %xmm0    # 0x2d088
ucomisd %xmm1, %xmm0
jbe 0xf3c4
cmpl $0x0, 0x3c(%rsp)
jle 0xf3a0
leaq 0x1e9ea(%rip), %rax     # 0x2dd83
movq %rax, 0x18(%rsp)
jmp 0xf3ae
leaq 0x1e9ee(%rip), %rax     # 0x2dd95
movq %rax, 0x18(%rsp)
jmp 0xf3ae
movq 0x18(%rsp), %rsi
leaq 0xd112e(%rip), %rdi     # 0xe04e8
callq 0x53c0
jmp 0xf448
movss 0x34(%rsp), %xmm0
cvtss2sd %xmm0, %xmm1
movsd 0x1dcba(%rip), %xmm0    # 0x2d090
ucomisd %xmm1, %xmm0
jbe 0xf412
cmpl $0x0, 0x3c(%rsp)
jle 0xf3f1
leaq 0x1e9a4(%rip), %rax     # 0x2dd8e
movq %rax, 0x10(%rsp)
jmp 0xf3ff
leaq 0x1e99c(%rip), %rax     # 0x2dd94
movq %rax, 0x10(%rsp)
jmp 0xf3ff
movq 0x10(%rsp), %rsi
leaq 0xd10dd(%rip), %rdi     # 0xe04e8
callq 0x53c0
jmp 0xf446
cmpl $0x0, 0x3c(%rsp)
jle 0xf427
leaq 0x1e95c(%rip), %rax     # 0x2dd7c
movq %rax, 0x8(%rsp)
jmp 0xf435
leaq 0x1e948(%rip), %rax     # 0x2dd76
movq %rax, 0x8(%rsp)
jmp 0xf435
movq 0x8(%rsp), %rsi
leaq 0xd10a7(%rip), %rdi     # 0xe04e8
callq 0x53c0
jmp 0xf448
jmp 0xf44a
jmp 0xf44c
jmp 0xf49d
cmpl $0x0, 0x38(%rsp)
jne 0xf46a
leaq 0xd108c(%rip), %rdi     # 0xe04e8
leaq 0x1e937(%rip), %rsi     # 0x2dd9a
callq 0x53c0
jmp 0xf49b
cmpl $0x0, 0x38(%rsp)
jle 0xf47e
leaq 0x1e904(%rip), %rax     # 0x2dd7c
movq %rax, (%rsp)
jmp 0xf48b
leaq 0x1e8f1(%rip), %rax     # 0x2dd76
movq %rax, (%rsp)
jmp 0xf48b
movq (%rsp), %rsi
leaq 0xd1052(%rip), %rdi     # 0xe04e8
callq 0x53c0
jmp 0xf49d
jmp 0xf4b2
leaq 0xd1042(%rip), %rdi     # 0xe04e8
leaq 0x1e8f2(%rip), %rsi     # 0x2dd9f
callq 0x53c0
jmp 0xf51b
movq 0x50(%rsp), %rax
testb $0x1, 0x9(%rax)
jne 0xf519
movq 0x48(%rsp), %rax
testb $0x1, 0x28(%rax)
je 0xf4f2
movq 0x50(%rsp), %rax
movq (%rax), %rax
cmpl $0x2, 0x38(%rax)
je 0xf4f0
movl 0x44(%rsp), %ecx
movq 0x50(%rsp), %rax
movl %ecx, 0x30(%rax)
movl 0x40(%rsp), %ecx
movq 0x50(%rsp), %rax
movl %ecx, 0x34(%rax)
jmp 0xf517
movq 0x50(%rsp), %rax
testb $0x1, 0x1d(%rax)
jne 0xf515
movl 0x44(%rsp), %ecx
movq 0x50(%rsp), %rax
movl %ecx, 0x28(%rax)
movl 0x40(%rsp), %ecx
movq 0x50(%rsp), %rax
movl %ecx, 0x2c(%rax)
jmp 0xf517
jmp 0xf519
jmp 0xf51b
addq $0x58, %rsp
retq