Function at 0x52aa40
Capabilities:
Packed with generic packer

Disassembly:
push ecx
push ebx
push edi
mov eax, esi
call fcn.0052a610
test al, al
jne 0x52ad26
mov ecx, dword [esi]
mov eax, dword [esi + 0x118]
test eax, eax
mov edx, dword [ecx + 0x820]
mov edx, dword [edx + 8]
je 0x52ac94
movzx ecx, ax
cmp ecx, dword [edx + 8]
jae 0x52ac94
lea ebx, [ecx + ecx*4]
shl ebx, 5
add ebx, dword [edx]
cmp dword [ebx + 0x9c], eax
jne 0x52ac94
mov edi, dword [esi + 0x28]
cmp edi, 0x14
jl 0x52aa98
cmp edi, 0x1c
jle 0x52aaf6
cmp edi, 0x49
je 0x52aaf6
cmp edi, 0x35
je 0x52aaf6
cmp edi, 0x3b
je 0x52aaf6
mov eax, dword [esi + 0x24]
cmp eax, 0x16
je 0x52aaf6
cmp eax, 0xc
je 0x52aaf1
cmp edi, 0x20
je 0x52aaf1
cmp edi, 0x36
je 0x52aaf1
mov ecx, esi
call fcn.005346a0
cmp eax, 0xffffffff
jne 0x52aaf1
cmp edi, 0xc
je 0x52aaf1
cmp edi, 0x3a
je 0x52aaf1
push str._ground
call fcn.004732c0
test al, al
je 0x52aaf6
mov eax, ebx
call fcn.004738d0
fmul dword [esi + 0x11c]
jmp 0x52ab12
fld dword [esi + 0x34]
jmp 0x52ab12
fld dword [esi + 0x34]
mov eax, esi
fstp dword [esp + 8]
call fcn.0052ef10
test al, al
je 0x52ab16
fld dword [esp + 8]
fmul qword [0x679630]
fstp dword [esp + 8]
mov ecx, esi
call fcn.0052bee0
test al, al
jne 0x52ab30
cmp dword [esi + 0x28], 0x28
je 0x52ab30
fld dword [esi + 0x2c]
jmp 0x818000
fld dword [esi + 0x2c]
fadd dword [esp + 8]
cmp dword [esi + 0x24], 7
fstp dword [esi + 0x2c]
jne 0x52abe8
cmp dword [esi + 0x6c], 0xfffffffc
je 0x52abe8
fld dword [0x67991c]
push ecx
mov ecx, ebx
fstp dword [esp]
call fcn.00473b70
test al, al
je 0x52ab9b
mov eax, dword [esi + 0xc]
mov edx, dword [esi + 8]
mov ecx, dword [esi + 0x20]
add eax, 0x6a
mov dword [esp + 8], eax
fild dword [esp + 8]
add edx, 0x51
sub esp, 8
mov dword [esp + 0x10], edx
mov edx, dword [esi]
fstp dword [esp + 4]
fild dword [esp + 0x10]
sub ecx, 1
mov eax, 0x62
fstp dword [esp]
call fcn.00453c80
fld dword [0x679918]
push ecx
mov ecx, ebx
fstp dword [esp]
call fcn.00473b70
test al, al
je 0x52abe8
mov eax, dword [esi + 0xc]
mov edx, dword [esi + 8]
mov ecx, dword [esi + 0x20]
add eax, 0x6e
mov dword [esp + 8], eax
fild dword [esp + 8]
add edx, 0x57
sub esp, 8
mov dword [esp + 0x10], edx
mov edx, dword [esi]
fstp dword [esp + 4]
fild dword [esp + 0x10]
sub ecx, 1
mov eax, 0x62
fstp dword [esp]
call fcn.00453c80
cmp dword [esi + 0x28], 0xb
jne 0x52ad26
fld dword [0x679914]
push ecx
mov ecx, ebx
fstp dword [esp]
call fcn.00473b70
test al, al
je 0x52ac3f
mov eax, dword [esi + 0xc]
mov edx, dword [esi + 8]
mov ecx, dword [esi + 0x20]
add eax, 0x6a
mov dword [esp + 8], eax
fild dword [esp + 8]
add edx, 0x51
sub esp, 8
mov dword [esp + 0x10], edx
mov edx, dword [esi]
fstp dword [esp + 4]
fild dword [esp + 0x10]
sub ecx, 1
mov eax, 0x62
fstp dword [esp]
call fcn.00453c80
fld dword [0x679910]
push ecx
mov ecx, ebx
fstp dword [esp]
call fcn.00473b70
test al, al
je 0x52ad26
mov eax, dword [esi + 0xc]
mov edx, dword [esi + 8]
mov ecx, dword [esi + 0x20]
add eax, 0x6e
mov dword [esp + 8], eax
fild dword [esp + 8]
add edx, 0x57
sub esp, 8
mov dword [esp + 0x10], edx
mov edx, dword [esi]
fstp dword [esp + 4]
fild dword [esp + 0x10]
sub ecx, 1
mov eax, 0x62
fstp dword [esp]
call fcn.00453c80
pop edi
pop ebx
pop ecx
ret
mov eax, dword [esi + 0x28]
cmp eax, 0xc
je 0x52ace6
cmp eax, 0x20
je 0x52ace6
mov eax, dword [esi + 0x24]
cmp eax, 8
je 0x52ace6
cmp eax, 9
je 0x52ace6
cmp eax, 0xd
je 0x52ace6
cmp eax, 0x12
je 0x52ace6
cmp eax, 0xe
je 0x52ace6
cmp eax, 0x10
je 0x52ace6
cmp eax, 0xb
jne 0x52acd0
cmp byte [esi + 0xbd], 0
jne 0x52ace6
mov eax, dword [esi + 0x48]
test eax, eax
jl 0x52acdc
cmp eax, 2
jle 0x52ace6
cmp eax, 6
jl 0x52ad26
cmp eax, 8
jg 0x52ad26
fld dword [esi + 0x34]
mov eax, esi
fstp dword [esp + 8]
call fcn.0052ef10
test al, al
je 0x52ad06
fld dword [esp + 8]
fmul qword [0x679630]
fstp dword [esp + 8]
mov ecx, esi
call fcn.0052bee0
fld dword [esi + 0x2c]
test al, al
je 0x52ad1f
fadd dword [esp + 8]
fstp dword [esi + 0x2c]
pop edi
pop ebx
pop ecx
ret
fsub dword [esp + 8]
fstp dword [esi + 0x2c]
pop edi
pop ebx
pop ecx
ret