Function at 0x4053a0
Capabilities:
Resolve function by parsing pe exports

Disassembly:
sub esp, 0x88
fldz
push ebx
mov ebx, dword [esp + 0x9c]
fst dword [esp + 0x14]
fldz
push ebp
xor ebp, ebp
mov dword [esp + 0x64], ebp
xor eax, eax
mov word [esp + 0x2c], ax
fst qword [esp + 0x88]
mov dword [esp + 0x1c], ebp
fstp qword [esp + 0x80]
xor ecx, ecx
mov word [esp + 0xc], cx
fstp dword [esp + 0x50]
mov dword [esp + 8], ebp
xor edx, edx
push ebp
mov dword [esp + 0x14], ebp
push ebx
mov word [esp + 0x1c], dx
call fcn.004024d0
add esp, 8
test eax, eax
jne 0x40540a
lea eax, [ebp - 0xc]
pop ebp
pop ebx
add esp, 0x88
ret
mov ax, word [0x42225c]
push esi
movsx ecx, ax
push edi
push ebp
add ecx, 0x3ad7cc2b
mov dword [esp + 0x60], ecx
lea edx, [esp + 0x80]
push edx
fild dword [esp + 0x64]
lea eax, [esp + 0x50]
push eax
lea ecx, [esp + 0x6c]
fadd qword [esp + 0x94]
push ecx
lea edx, [esp + 0x48]
push edx
lea eax, [esp + 0x3c]
fstp qword [esp + 0x9c]
push eax
call fcn.00401720
mov edi, dword [esp + 0xbc]
push ebx
push edi
call fcn.00402cc0
add esp, 0x20
test eax, eax
jge 0x4054b3
mov eax, dword [esp + 0x9c]
cmp eax, ebp
je 0x405487
push ebp
push eax
call fcn.00401a40
mov esi, eax
add esp, 8
cmp esi, ebp
jne 0x405d1e
mov eax, dword [esp + 0xa0]
cmp eax, ebp
je 0x4054a6
push edi
push eax
call fcn.00401e60
mov esi, eax
add esp, 8
cmp esi, ebp
jne 0x405d1e
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x88
ret
lea ecx, [esp + 0x28]
push edi
push ecx
call fcn.00401e60
mov esi, eax
add esp, 8
cmp esi, ebp
jne 0x405d1e
lea edx, [esp + 0x38]
push ebx
push edx
call fcn.00401e60
mov esi, eax
add esp, 8
cmp esi, ebp
jne 0x405d1e
mov eax, 1
mov dword [esp + 0x38], eax
mov dword [esp + 0x28], eax
mov eax, dword [edi + 4]
add eax, 2
push eax
lea ecx, [esp + 0x64]
push ecx
call fcn.004014e0
mov esi, eax
add esp, 8
cmp esi, ebp
jne 0x405d1e
lea edx, [esp + 0x60]
push ebp
push edx
call fcn.00401a40
mov esi, eax
add esp, 8
cmp esi, ebp
jne 0x405d1e
lea eax, [esp + 0x48]
push 2
push eax
call fcn.004014e0
mov esi, eax
add esp, 8
cmp esi, ebp
jne 0x405d1e
lea ecx, [esp + 0x7c]
push 3
push ecx
call fcn.004014e0
mov esi, eax
add esp, 8
cmp esi, ebp
jne 0x405d1e
lea edx, [esp + 0x38]
push edx
call fcn.00402790
add esp, 4
and eax, 0x8000001f
jns 0x405571
dec eax
or eax, 0xffffffe0
inc eax
cmp eax, 0x1f
jge 0x4055b3
mov edi, 0x1f
sub edi, eax
lea eax, [esp + 0x28]
push edi
push eax
mov dword [esp + 0x64], edi
call fcn.00404640
mov esi, eax
add esp, 8
cmp esi, ebp
jne 0x405d1e
lea ecx, [esp + 0x38]
push edi
push ecx
call fcn.00404640
mov esi, eax
add esp, 8
cmp esi, ebp
jne 0x405d1e
jmp 0x4055b7
mov dword [esp + 0x5c], ebp
mov ebx, dword [esp + 0x2c]
mov eax, dword [esp + 0x3c]
or ecx, 0xffffffff
add dword [esp + 0x18], ecx
mov edx, dword [esp + 0x18]
dec eax
sub edx, 0x6d1236bd
dec ebx
mov dword [esp + 0x44], eax
cmp edx, 0x93bf4fef
je 0x405616
mov edx, dword [esp + 0x18]
add dword [esp + 0x18], ecx
sub edx, 0x2afd4fc8
cmp edx, 0xf49b7b
jle 0x405616
inc dword [0x423d10]
mov ecx, dword [0x423d10]
add ecx, 0x1d2b6f9
mov dword [esp + 0x54], ecx
fild dword [esp + 0x54]
fmul dword [esp + 0x20]
fstp dword [esp + 0x20]
mov edi, ebx
sub edi, eax
mov ebp, edi
shl ebp, 5
lea edx, [esp + 0x38]
push ebp
push edx
call fcn.00404640
lea eax, [esp + 0x40]
push eax
lea ecx, [esp + 0x34]
push ecx
call fcn.004010c0
add esp, 0x10
test eax, eax
jl 0x40566f
mov eax, dword [esp + 0x68]
inc dword [eax + edi*4]
lea edx, [esp + 0x38]
push edx
lea eax, [esp + 0x2c]
push eax
mov ecx, eax
push ecx
call fcn.004034b0
lea edx, [esp + 0x44]
push edx
lea eax, [esp + 0x38]
push eax
call fcn.004010c0
add esp, 0x14
test eax, eax
jge 0x405640
lea ecx, [esp + 0x38]
push ebp
push ecx
call fcn.00402020
add esp, 8
cmp ebx, dword [esp + 0x44]
mov dword [esp + 0x78], ebx
jle 0x405ca9
add edi, edi
add edi, edi
add ebp, 0xffffffe0
mov dword [esp + 0x70], edi
mov dword [esp + 0x54], ebp
lea ebx, [ebx]
mov edx, dword [esp + 0x30]
fld1
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x44]
lea ebp, [edx + ebx*4]
mov edx, dword [ebp]
lea eax, [eax + ecx*4]
mov dword [esp + 0x74], ebp
cmp edx, dword [eax]
jb 0x4056cf
mov eax, dword [esp + 0x68]
or ebp, 0xffffffff
mov dword [edi + eax - 4], ebp
jmp 0x40593a
fld qword [esp + 0x90]
mov esi, dword [eax]
fsub qword [0x41e698]
mov edx, 0xc77e7442
fstp qword [esp + 0x90]
dec dword [esp + 0x24]
mov ecx, dword [esp + 0x24]
sub edx, ecx
cmp edx, 0x7670726
jg 0x405708
fld dword [0x41e690]
fstp dword [0x42220c]
mov ecx, dword [ebp]
mov eax, ecx
mov edi, esi
shr edi, 0x10
xor edx, edx
div edi
mov ebx, eax
imul eax, edi
sub ecx, eax
mov edx, ecx
movzx ecx, word [0x4231b8]
movsx eax, cx
movzx ecx, word [0x423f38]
mov dword [esp + 0x10], eax
movsx eax, cx
fild dword [esp + 0x10]
fadd dword [esp + 0x20]
movzx ecx, word [esp + 0x14]
movsx ecx, cx
mov dword [esp + 0x10], ecx
movzx ecx, word [esp + 0x14]
fild dword [esp + 0x10]
movsx ecx, cx
faddp st(1)
sub ecx, eax
mov dword [esp + 0x10], ecx
or ecx, 0xffffffff
add dword [esp + 0x14], ecx
fild dword [esp + 0x10]
add dword [esp + 0x14], ecx
fcompp
fnstsw ax
test ah, 1
jne 0x40579b
mov ax, word [0x423d18]
movsx ecx, ax
mov eax, 0x2b413659
sub eax, ecx
mov dword [esp + 0x10], eax
fild dword [esp + 0x10]
fadd dword [0x42306c]
fstp dword [0x42306c]
movzx ecx, word [ebp - 2]
shl edx, 0x10
or ecx, edx
movzx edx, si
mov eax, ebx
imul eax, edx
cmp ecx, eax
jae 0x4057c2
add ecx, esi
dec ebx
cmp ecx, esi
jb 0x4057c2
cmp ecx, eax
jae 0x4057c2
add ecx, esi
dec ebx
cmp ecx, esi
jae 0x4057b7
sub ecx, eax
fld dword [0x424698]
xor edx, edx
fsub qword [0x41e688]
mov eax, ecx
div edi
fstp qword [esp + 0x88]
mov edx, eax
mov ax, word [0x423d8c]
cwde
cmp eax, 0x16c94abb
jl 0x40584b
inc dword [0x422314]
mov ax, word [0x422310]
fld dword [esp + 0x58]
mov ebp, dword [0x422314]
cwde
sub eax, ebp
add eax, 0x401bbd30
mov dword [esp + 0x10], eax
fild dword [esp + 0x10]
fucompp
fnstsw ax
test ah, 0x44
jnp 0x405831
movzx eax, word [esp + 0x14]
mov ebp, dword [esp + 0x74]
sub eax, 0x504f5e27
mov word [esp + 0x14], ax
jmp 0x40587d
mov ax, word [0x423d24]
mov ebp, dword [esp + 0x6c]
cwde
add ebp, eax
mov word [0x423d24], bp
mov ebp, dword [esp + 0x74]
jmp 0x40587d
inc dword [esp + 0x24]
fld qword [0x424e08]
mov eax, dword [esp + 0x24]
mov dword [esp + 0x10], eax
fild dword [esp + 0x10]
fsubp st(1)
fsub dword [esp + 0x20]
fmul dword [0x4221e0]
fstp dword [0x4221e0]
fld dword [esp + 0x20]
fsub st(1)
fstp dword [esp + 0x20]
fld dword [0x4230cc]
mov eax, edx
fadd st(1)
imul eax, edi
fstp dword [0x4230cc]
fld dword [0x4230cc]
fmul dword [0x4221e0]
sub ecx, eax
fstp dword [0x4221e0]
movzx eax, word [ebp - 4]
fld dword [esp + 0x20]
fadd qword [0x41e680]
shl ecx, 0x10
or ecx, eax
fstp qword [0x424e08]
movzx edi, si
mov eax, edx
imul eax, edi
cmp ecx, eax
jae 0x4058db
add ecx, esi
dec edx
cmp ecx, esi
jb 0x4058db
cmp ecx, eax
jae 0x4058db
add ecx, esi
dec edx
cmp ecx, esi
jae 0x4058d0
mov ecx, dword [esp + 0x6c]
mov eax, dword [str.1_2o]
add eax, ecx
mov ecx, dword [esp + 0x24]
cmp eax, ecx
jg 0x405920
inc dword [0x424b7c]
mov ax, word [esp + 0x34]
mov ecx, dword [0x424b7c]
cwde
sub eax, ecx
mov cx, word [0x423ea4]
movsx ecx, cx
cmp ecx, eax
jle 0x405920
mov eax, dword [0x423f44]
add eax, dword [0x4221c4]
mov dword [0x4221c4], eax
mov ecx, dword [esp + 0x68]
shl ebx, 0x10
or ebx, edx
mov edx, dword [esp + 0x70]
mov dword [edx + ecx - 4], ebx
mov ebx, dword [esp + 0x78]
mov edi, edx
or ebp, 0xffffffff
fld dword [0x4230c8]
mov ax, word [esp + 0x14]
fsub qword [0x41e678]
movsx ecx, ax
mov dword [esp + 0x10], ecx
fild dword [esp + 0x10]
fsubp st(1)
fcomp qword [0x41e670]
fnstsw ax
fsubr dword [0x4230c8]
fstp dword [0x4230c8]
test ah, 5
jp 0x405983
fld dword [0x423164]
fadd qword [0x41e668]
fstp dword [0x423164]
mov eax, dword [esp + 0x68]
mov ecx, 1
add dword [edi + eax - 4], ecx
mov dx, word [0x423d5c]
movsx eax, dx
mov edx, dword [0x423d1c]
add eax, edx
mov edx, dword [0x424b74]
imul edx, eax
mov dword [0x424b74], edx
add dword [0x423d1c], ebp
add word [0x423d5c], cx
mov edi, edi
mov eax, dword [esp + 0x68]
add dword [edi + eax - 4], ebp
lea eax, [esp + 0x48]
push 0
push eax
call fcn.00401a40
mov esi, eax
add esp, 8
test esi, esi
jne 0x405d1c
mov ecx, dword [esp + 0x44]
cmp ecx, 1
jl 0x4059f2
mov edx, dword [esp + 0x40]
mov eax, dword [edx + ecx*4 - 4]
mov edx, dword [esp + 0x50]
mov dword [edx], eax
mov eax, dword [esp + 0x40]
mov ecx, dword [eax + ecx*4]
mov edx, dword [esp + 0x50]
mov dword [edx + 4], ecx
mov eax, dword [esp + 0x68]
mov ecx, dword [edi + eax - 4]
push ecx
lea edx, [esp + 0x4c]
push edx
mov eax, edx
push eax
call fcn.00404f40
mov esi, eax
add esp, 0xc
test esi, esi
jne 0x405d1c
push eax
lea ecx, [esp + 0x80]
push ecx
call fcn.00401a40
mov esi, eax
add esp, 8
test esi, esi
jne 0x405d1c
cmp ebx, 2
jl 0x405a51
mov edx, dword [esp + 0x30]
mov eax, dword [edx + ebx*4 - 8]
mov ecx, dword [esp + 0x84]
mov dword [ecx], eax
mov dx, word [0x4230e8]
movsx eax, dx
sub eax, 0x5a5965c5
cmp ebx, 1
mov dword [esp + 0x10], eax
jge 0x405a76
xor eax, eax
jmp 0x405a7e
mov ecx, dword [esp + 0x30]
mov eax, dword [ecx + ebx*4 - 4]
mov edx, dword [esp + 0x84]
mov dword [edx + 4], eax
mov eax, dword [esp + 0x30]
mov ecx, dword [eax + ebx*4]
mov edx, dword [esp + 0x84]
mov eax, dword [esp + 0x18]
mov dword [edx + 8], ecx
movzx ecx, word [0x423088]
sub eax, 0x5ab3a9a0
imul eax, ecx
lea edx, [esp + 0x7c]
mov word [0x423088], ax
push edx
lea eax, [esp + 0x4c]
push eax
call fcn.004010c0
add esp, 8
test eax, eax
jg 0x4059c0
mov ecx, dword [esp + 0x68]
mov edx, dword [edi + ecx - 4]
push edx
lea eax, [esp + 0x3c]
push eax
lea ecx, [esp + 0x50]
push ecx
call fcn.00404f40
mov esi, eax
add esp, 0xc
test esi, esi
jne 0x405d1c
mov ebp, dword [esp + 0x54]
lea edx, [esp + 0x48]
push ebp
push edx
call fcn.00404640
mov esi, eax
add esp, 8
test esi, esi
jne 0x405d1c
lea eax, [esp + 0x48]
push eax
lea ecx, [esp + 0x2c]
push ecx
mov edx, ecx
push edx
call fcn.004034b0
mov esi, eax
add esp, 0xc
test esi, esi
jne 0x405d1c
push eax
lea eax, [esp + 0x2c]
push eax
call fcn.004024d0
add esp, 8
test eax, eax
jge 0x405c8c
mov ecx, dword [esp + 0x18]
mov eax, 1
add dword [esp + 0x18], eax
add ecx, 0x7fe439
cmp ecx, 0x14682dce
jg 0x405bd1
mov dx, word [esp + 0x14]
movsx ecx, dx
mov edx, dword [esp + 0x6c]
add dword [esp + 0x14], eax
add ecx, 0x2c07f2de
cmp edx, ecx
jl 0x405bbf
fld dword [esp + 0x58]
fsub qword [0x41e350]
fstp dword [esp + 0x58]
fld dword [esp + 0x58]
mov ax, word [esp + 0x34]
fsub qword [0x41e660]
mov dx, word [esp + 0x1c]
movsx ecx, ax
mov dword [esp + 0x10], ecx
movsx eax, dx
fild dword [esp + 0x10]
mov dword [esp + 0x10], eax
fsubp st(1)
fild dword [esp + 0x10]
faddp st(1)
call fcn.0040abc0
mov word [esp + 0x1c], ax
jmp 0x405bfb
movzx ecx, word [esp + 0x1c]
add ecx, 0x475571c3
mov word [esp + 0x1c], cx
jmp 0x405bfb
fld dword [0x4221d8]
fadd qword [0x41e350]
fstp dword [0x4221d8]
fld dword [0x4221d8]
fsubr qword [0x41e658]
fmul qword [0x423f08]
fstp qword [0x423f08]
lea edx, [esp + 0x38]
push edx
lea eax, [esp + 0x4c]
push eax
call fcn.00401e60
mov esi, eax
add esp, 8
test esi, esi
jne 0x405d1c
fld dword [0x424e10]
lea ecx, [esp + 0x48]
fadd qword [0x4222c0]
push ebp
push ecx
fstp dword [0x424e10]
fld qword [0x4222c0]
fadd qword [0x41e350]
fstp qword [0x4222c0]
call fcn.00404640
mov esi, eax
add esp, 8
test esi, esi
jne 0x405d1c
lea edx, [esp + 0x48]
push edx
lea eax, [esp + 0x2c]
push eax
mov ecx, eax
push ecx
call fcn.004049d0
mov esi, eax
add esp, 0xc
test esi, esi
jne 0x405d1c
fld dword [0x423164]
mov eax, dword [esp + 0x68]
fmul qword [0x41e650]
fstp dword [0x423164]
dec dword [edi + eax - 4]
dec ebx
sub ebp, 0x20
sub edi, 4
cmp ebx, dword [esp + 0x44]
mov dword [esp + 0x78], ebx
mov dword [esp + 0x54], ebp
mov dword [esp + 0x70], edi
jg 0x4056a0
mov edi, dword [esp + 0x9c]
test edi, edi
je 0x405cd7
lea edx, [esp + 0x60]
push edx
push edi
call fcn.00401e60
mov eax, dword [esp + 0xac]
mov ecx, dword [eax]
mov edx, dword [esp + 0xb0]
add esp, 8
imul ecx, dword [edx]
mov dword [edi], ecx
mov edi, dword [esp + 0xa0]
test edi, edi
je 0x405d1c
mov eax, dword [esp + 0x5c]
push eax
lea ecx, [esp + 0x2c]
push ecx
call fcn.00402020
lea edx, [esp + 0x30]
push edx
push edi
call fcn.00401e60
mov eax, dword [esp + 0xb4]
mov ecx, dword [eax]
push 0
push edi
mov dword [edi], ecx
call fcn.004024d0
add esp, 0x18
test eax, eax
jne 0x405d1c
mov dword [edi], 1
xor ebp, ebp
push ebp
lea edx, [esp + 0x80]
push edx
lea eax, [esp + 0x50]
push eax
lea ecx, [esp + 0x6c]
push ecx
lea edx, [esp + 0x48]
push edx
lea eax, [esp + 0x3c]
push eax
call fcn.00401bc0
add esp, 0x18
pop edi
mov eax, esi
pop esi
pop ebp
pop ebx
add esp, 0x88
ret