Function at 0x558840
Capabilities:
Hash data using djb2

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
push 0xffffffffffffffff
push 0x6dfe6c
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x2f8
mov edx, dword [ebp + 8]
push ebx
push esi
mov esi, ecx
mov ecx, dword [esi + 0x46c]
mov eax, dword [ecx]
push edi
push edx
call dword [eax + 0x24]
mov eax, dword [esi + 0x46c]
mov eax, dword [eax + 0x1f4]
xor edi, edi
cmp eax, 1
jne 0x558996
mov ecx, dword [esi + 0x5f4]
cmp ecx, edi
je 0x558996
mov eax, dword [ecx]
call dword [eax + 0x90]
test eax, eax
jne 0x558996
mov al, byte [esi + 0x10c4]
movss xmm0, dword [esi + 0x44]
mov ebx, 2
test bl, al
jne 0x5588d3
mov eax, dword [esi + 0x10c4]
movss dword [esi + 0x428], xmm0
or eax, ebx
jmp 0x558b3b
movss xmm1, dword [esi + 0x428]
subss xmm1, xmm0
comiss xmm1, dword [esi + 0x10a0]
jb 0x558989
lea ecx, [esp + 0x190]
call fcn.00527d10
lea ecx, [esp + 0x20]
mov dword [esp + 0x30c], edi
call fcn.00527d10
mov byte [esp + 0x30c], 1
movss xmm0, dword [esi + 0x48]
movss xmm1, dword [esi + 0x44]
movss xmm2, dword [esi + 0x40]
lea ecx, [esp + 0x10]
push ecx
sub esp, 8
mov eax, esp
mov dword [esp + 0x18], esp
push str.NPC_FALL_DAMAGE
lea ecx, [esp + 0x30]
movss dword [esp + 0x20], xmm2
movss dword [esp + 0x24], xmm1
movss dword [esp + 0x28], xmm0
mov dword [eax], edi
mov dword [eax + 4], edi
call fcn.00527eb0
mov edx, dword [esi + 0xc]
mov eax, dword [esi + 8]
push edx
push eax
lea ecx, [esp + 0x28]
call fcn.00528140
mov ecx, dword [esi + 0xc]
mov edx, dword [esi + 8]
push ecx
push edx
lea ecx, [esp + 0x28]
call fcn.00528a50
lea ecx, [esp + 0x20]
call fcn.00493b70
lea ecx, [esp + 0x190]
call fcn.00493b70
mov eax, dword [esi + 0x10c4]
or eax, ebx
jmp 0x558b3b
mov al, byte [esi + 0x10c4]
mov ebx, 2
test bl, al
je 0x558b32
movss xmm0, dword [esi + 0x44]
movss xmm1, dword [esi + 0x428]
subss xmm1, xmm0
comiss xmm1, dword [esi + 0x109c]
jb 0x558b32
lea ecx, [esp + 0x190]
call fcn.00527d10
mov dword [esp + 0x30c], ebx
movss xmm1, dword [esi + 0x109c]
movss xmm0, dword [esi + 0x428]
movss xmm2, dword [esi + 0x10a0]
subss xmm0, xmm1
subss xmm2, xmm1
xorps xmm1, xmm1
divss xmm0, xmm2
comiss xmm1, xmm0
movss dword [esp + 0xc], xmm0
ja 0x558a19
movss xmm1, dword [0x7389bc]
comiss xmm0, xmm1
jbe 0x558a1f
movss dword [esp + 0xc], xmm1
lea ecx, [esp + 0x20]
call fcn.00527d10
mov byte [esp + 0x30c], 3
movss xmm0, dword [esi + 0x40]
movss dword [esp + 0x10], xmm0
movss xmm0, dword [esi + 0x44]
movss dword [esp + 0x14], xmm0
movss xmm0, dword [esi + 0x48]
movss dword [esp + 0x18], xmm0
xor ebx, ebx
mov edx, str.NPC_FALL_DAMAGE
mov ecx, 0x1505
mov eax, 0x4e
inc edx
cmp eax, 0x61
jl 0x558a70
cmp eax, 0x7a
jg 0x558a70
sub eax, 0x20
imul ecx, ecx, 0x21
xor ecx, eax
movsx eax, byte [edx]
test eax, eax
jne 0x558a62
push ebx
and ecx, 0xfffffff
push edi
or ecx, 0x40000000
push ecx
lea eax, [esp + 0x2c]
push eax
lea eax, [esp + 0x20]
call fcn.00527ee0
mov eax, dword [esi + 8]
mov ecx, dword [esi + 0xc]
movss xmm0, dword [esp + 0xc]
mov edx, eax
or eax, ecx
mov dword [esp + 0x80], edx
mov edx, ecx
movss dword [esp + 0x88], xmm0
mov dword [esp + 0x84], edx
je 0x558acb
mov eax, 1
jmp 0x558acd
xor eax, eax
mov ecx, dword [esp + 0x18c]
shl eax, 4
xor eax, ecx
and eax, 0x10
xor ecx, eax
mov eax, dword [esi + 0xc]
mov dword [esp + 0x18c], ecx
mov ecx, dword [esi + 8]
push eax
push ecx
mov ecx, 0x8d68e0
call fcn.004013f0
push eax
lea ecx, [esp + 0x24]
call fcn.00528a80
mov ecx, dword [esp + 0x18c]
mov edi, 0xfffffffc
and ecx, edi
lea eax, [esp + 0x20]
mov dword [esp + 0x18c], ecx
call fcn.00527df0
and dword [esp + 0x2fc], edi
lea eax, [esp + 0x190]
call fcn.00527df0
mov eax, dword [esi + 0x10c4]
and eax, 0xfffffffd
mov ecx, dword [esp + 0x304]
pop edi
mov dword [esi + 0x10c4], eax
pop esi
mov dword fs:[0], ecx
pop ebx
mov esp, ebp
pop ebp
ret 4