Function at 0x462680
Capabilities:
Packed with generic packer

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x1c
push ebx
push esi
push edi
mov edi, eax
mov eax, dword [edi]
mov ecx, dword [eax + 0x820]
mov eax, dword [edi + 0x94]
mov edx, dword [ecx + 8]
and eax, 0xffff
lea eax, [eax + eax*4]
shl eax, 5
add eax, dword [edx]
mov byte [esp + 0xf], 0
mov dword [esp + 0x1c], eax
lea ebx, [edi + 0xd8]
mov dword [esp + 0x18], 5
mov esi, dword [ebx]
test esi, esi
je 0x4628a2
fild dword [edi + 8]
fadd dword [ebx - 8]
fsub dword [ebx - 0x10]
fstp dword [esp + 0x20]
fild dword [edi + 0xc]
fadd dword [ebx - 4]
fsub dword [ebx - 0xc]
fstp dword [esp + 0x24]
fld dword [esp + 0x24]
fld dword [esp + 0x20]
fmul st(0), st(0)
fld st(1)
fmulp st(2)
faddp st(1)
fstp dword [esp + 0x14]
fld dword [esp + 0x14]
call fcn.0063a080
fstp dword [esp + 0x14]
fld dword [esp + 0x14]
fstp dword [esp + 0x14]
fld dword [0x679508]
fld dword [esp + 0x14]
fcom st(1)
fnstsw ax
fstp st(1)
test ah, 5
jp 0x46281f
cmp esi, 0x12
fstp st(0)
jne 0x46273d
mov dword [esp + 0x10], 1
lea ecx, [esi - 0x11]
jmp 0x46278d
cmp esi, 0x13
jne 0x46274f
mov dword [esp + 0x10], 2
lea ecx, [esi - 0xe]
jmp 0x46278d
cmp esi, 0x14
jne 0x462761
mov dword [esp + 0x10], 3
lea ecx, [esi + 0x50]
jmp 0x46278d
cmp dword [esp + 0x10], 1
jne 0x46276f
mov ecx, 1
jmp 0x46278d
cmp dword [esp + 0x10], 2
jne 0x46277d
mov ecx, 5
jmp 0x46278d
cmp dword [esp + 0x10], 3
jne 0x46278b
mov ecx, 0x64
jmp 0x46278d
xor ecx, ecx
mov eax, dword [edi]
mov eax, dword [eax + 0x82c]
add dword [eax + 0x28], ecx
mov edx, dword [eax + 0x28]
cmp edx, 0x1869f
jle 0x4627ac
mov dword [eax + 0x28], 0x1869f
jmp 0x4627b7
test edx, edx
jge 0x4627b7
mov dword [eax + 0x28], 0
mov eax, dword [edi + 4]
add dword [eax + 0x57a0], ecx
mov eax, dword [edi]
cmp byte [eax + 0x8c5], 0
jne 0x462814
fldz
mov ecx, dword [0x6a9f00]
mov esi, dword [eax + 0x784]
fst dword [esp + 0x14]
fcomp dword [ecx + 0x650]
fnstsw ax
test ah, 0x44
jnp 0x462800
fld dword [ecx + 0x650]
push ecx
fstp dword [esp]
call fcn.005af410
fstp dword [esp + 0x18]
add esp, 4
fld dword [esp + 0x14]
push ecx
mov eax, 0x1f
fstp dword [esp]
mov ecx, esi
call fcn.00515020
mov dword [ebx], 0
jmp 0x4628a2
fld qword [0x679768]
fsub st(1), st(0)
fxch st(1)
fstp dword [esp + 0x14]
fld dword [esp + 0x14]
fldz
fsubrp st(2)
fxch st(1)
fstp dword [esp + 0x14]
fdiv dword [esp + 0x14]
fstp dword [esp + 0x14]
fldz
fld dword [esp + 0x14]
fcom st(1)
fnstsw ax
fstp st(1)
test ah, 0x41
jp 0x46285e
fstp st(0)
fld dword [0x679760]
jmp 0x46287f
fld1
fcomp st(1)
fnstsw ax
test ah, 0x41
jp 0x462873
fstp st(0)
fld dword [0x664e6c]
jmp 0x46287f
fmul qword [0x679758]
fadd qword [0x679750]
fstp dword [esp + 0x14]
mov byte [esp + 0xf], 1
fld dword [esp + 0x14]
fld st(0)
fmul dword [esp + 0x20]
fadd dword [ebx - 0x10]
fstp dword [ebx - 0x10]
fmul dword [esp + 0x24]
fadd dword [ebx - 0xc]
fstp dword [ebx - 0xc]
add ebx, 0x14
sub dword [esp + 0x18], 1
jne 0x4626c3
mov eax, dword [edi + 0x3c]
cmp eax, 0x1b
jne 0x4628d0
cmp dword [edi + 0x54], 0
jne 0x4629e4
mov dword [edi + 0x3c], 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
cmp eax, 0x1a
jne 0x462993
fld dword [0x664a5c]
push ecx
mov ecx, dword [esp + 0x20]
fstp dword [esp]
call fcn.00473b70
test al, al
je 0x46294b
mov eax, dword [edi]
cmp byte [eax + 0x8c5], 0
jne 0x462944
fldz
mov ecx, dword [0x6a9f00]
mov esi, dword [eax + 0x784]
fst dword [esp + 0x18]
fcomp dword [ecx + 0x88c]
fnstsw ax
test ah, 0x44
jnp 0x462930
fld dword [ecx + 0x88c]
push ecx
fstp dword [esp]
call fcn.005af410
fstp dword [esp + 0x1c]
add esp, 4
fld dword [esp + 0x18]
push ecx
mov eax, 0x2a
fstp dword [esp]
mov ecx, esi
call fcn.00515020
mov eax, edi
call fcn.004624b0
mov ecx, dword [esp + 0x1c]
cmp dword [ecx + 0x5c], 0
jle 0x4629e4
cmp byte [esp + 0xf], 0
jne 0x4629e4
fld dword [0x679748]
push ecx
fstp dword [esp]
call fcn.00468280
mov eax, 0x65
jmp 0x7981a9
call fcn.004625d0
test al, al
jne 0x4629e4
mov eax, 0x32
call fcn.005af400
test eax, eax
jne 0x4629e4
call fcn.00462390
test eax, eax
je 0x4629e4
fld dword [0x679388]
mov edx, dword [edi + 4]
push ecx
fstp dword [esp]
push 3
mov dword [edx + 0x55f4], 0x3e8
push str.anim_attract
mov ecx, 0x14
mov eax, edi
mov dword [edi + 0x3c], 0x1a
call fcn.0045fd90
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret