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

Disassembly:
sub esp, 0xb4
fldz
push ebx
push ebp
mov ebx, dword [esp + 0xcc]
xor ebp, ebp
mov dword [esp + 0x58], ebp
fst qword [esp + 0x74]
fst qword [esp + 0x68]
xor eax, eax
fldz
xor ecx, ecx
fst dword [esp + 0x28]
xor edx, edx
mov word [esp + 8], ax
mov word [esp + 0x38], cx
mov word [esp + 0xc], dx
fst dword [esp + 0x14]
mov word [esp + 0x18], ax
fxch st(1)
fst qword [esp + 0x80]
fstp qword [esp + 0x20]
mov cx, word [esp + 8]
mov eax, dword [0x4242a0]
movsx edx, cx
lea ecx, [edx + eax - 0x762480cf]
mov eax, 1
mov dword [esp + 0xa4], eax
mov dword [esp + 0xa8], eax
lea eax, [esp + 0xa4]
mov dword [0x4242a0], ecx
push eax
lea edx, [esp + 0x80]
mov dword [esp + 0x14], ebp
push ebx
fstp dword [esp + 0x84]
mov dword [esp + 0x84], ebp
mov dword [esp + 0xb4], edx
call fcn.00401830
add esp, 8
test eax, eax
jne 0x40536e
lea eax, [ebp - 0xc]
pop ebp
pop ebx
add esp, 0xb4
ret
fld qword [esp + 0x20]
push esi
fsubr qword [0x41f680]
push edi
push ebp
lea ecx, [esp + 0x98]
push ecx
fstp dword [esp + 0x38]
fld qword [esp + 0x30]
lea edx, [esp + 0x5c]
fadd qword [0x41f348]
push edx
lea eax, [esp + 0x70]
push eax
lea ecx, [esp + 0x54]
fstp qword [esp + 0x38]
push ecx
lea edx, [esp + 0x48]
push edx
call fcn.004019d0
mov edi, dword [esp + 0xe8]
push ebx
push edi
call fcn.004025d0
add esp, 0x20
test eax, eax
jge 0x40544a
fld dword [0x424e78]
mov eax, dword [esp + 0xc8]
fmul qword [0x41f678]
fstp dword [0x424e78]
cmp eax, ebp
je 0x4053f8
push ebp
push eax
call fcn.004020c0
mov esi, eax
add esp, 8
cmp esi, ebp
jne 0x405cba
mov eax, dword [esp + 0xcc]
cmp eax, ebp
je 0x405417
push edi
push eax
call fcn.00402c10
mov esi, eax
add esp, 8
cmp esi, ebp
jne 0x405cba
fld dword [0x4230d0]
fsub qword [0x41f348]
fstp dword [0x4230d0]
fld dword [0x4230d0]
fsub dword [esp + 0x30]
call fcn.0040aea0
pop edi
pop esi
pop ebp
mov dword [0x4231f0], eax
xor eax, eax
pop ebx
add esp, 0xb4
ret
lea eax, [esp + 0x34]
push edi
push eax
call fcn.00402c10
mov esi, eax
add esp, 8
cmp esi, ebp
jne 0x405cba
lea ecx, [esp + 0x44]
push ebx
push ecx
call fcn.00402c10
mov esi, eax
add esp, 8
cmp esi, ebp
jne 0x405cba
mov edx, dword [edi + 4]
add edx, 2
push edx
lea eax, [esp + 0x68]
mov ebx, 1
push eax
mov dword [esp + 0x4c], ebx
mov dword [esp + 0x3c], ebx
call fcn.00401f80
mov esi, eax
add esp, 8
cmp esi, ebp
jne 0x405cba
lea ecx, [esp + 0x64]
push ebp
push ecx
call fcn.004020c0
mov esi, eax
add esp, 8
cmp esi, ebp
jne 0x405cba
lea edx, [esp + 0x54]
push 2
push edx
call fcn.00401f80
mov esi, eax
add esp, 8
cmp esi, ebp
jne 0x405cba
lea eax, [esp + 0x94]
push 3
push eax
call fcn.00401f80
mov esi, eax
add esp, 8
cmp esi, ebp
jne 0x405cba
fld dword [esp + 0x1c]
fsubr qword [0x41f670]
fadd qword [esp + 0x28]
mov ecx, dword [0x42595c]
mov dword [esp + 0x18], ecx
fild dword [esp + 0x18]
fmulp st(1)
call fcn.0040aea0
mov dword [0x42595c], eax
fld qword [esp + 0x28]
fld1
lea edx, [esp + 0x44]
fsub st(1), st(0)
push edx
fxch st(1)
fstp qword [esp + 0x2c]
fsubr dword [esp + 0x20]
fstp dword [esp + 0x20]
call fcn.004010c0
mov ecx, eax
add esp, 4
and ecx, 0x8000001f
jns 0x40554c
dec ecx
or ecx, 0xffffffe0
inc ecx
cmp ecx, 0x1f
fld dword [0x425994]
fld dword [0x423138]
fsubr qword [0x41f668]
fsubp st(1)
fstp dword [0x425994]
jge 0x40566b
mov eax, dword [0x4235fc]
sub eax, 0x7369adc7
mov dword [esp + 0x18], eax
fild dword [esp + 0x18]
fld qword [0x423188]
fadd qword [0x41f660]
fadd qword [esp + 0x28]
add dword [0x4235fc], ebx
fucompp
fnstsw ax
test ah, 0x44
jp 0x405611
mov dx, word [esp + 0x10]
movsx edx, dx
mov eax, 0xffffffff
add dword [esp + 0x10], eax
sub edx, 0x2d9e2fb1
cmp edx, 0x6caba67d
jge 0x4055e5
fld qword [0x4230d8]
mov edx, dword [0x42428c]
fsub qword [0x41f658]
mov dword [esp + 0x18], edx
fild dword [esp + 0x18]
faddp st(1)
fadd qword [esp + 0x70]
fstp qword [esp + 0x70]
jmp 0x405614
add dword [esp + 0x10], eax
mov dx, word [0x424264]
mov dx, word [esp + 0x10]
mov dx, word [esp + 0x10]
mov dx, word [0x423664]
add word [0x424264], bx
add word [0x423664], ax
jmp 0x405614
or eax, 0xffffffff
mov edi, 0x1f
sub edi, ecx
movzx ecx, word [esp + 0x20]
movzx edx, word [esp + 0x14]
lea ecx, [ecx + edx + 0x76db99b6]
lea edx, [esp + 0x34]
push edi
mov word [esp + 0x18], cx
add dword [esp + 0x24], eax
push edx
mov dword [esp + 0x20], edi
call fcn.004023b0
mov esi, eax
add esp, 8
cmp esi, ebp
jne 0x405cba
lea eax, [esp + 0x44]
push edi
push eax
call fcn.004023b0
mov esi, eax
add esp, 8
cmp esi, ebp
jne 0x405cba
jmp 0x40566f
mov dword [esp + 0x18], ebp
fld dword [esp + 0x1c]
mov cx, word [esp + 0x10]
movsx edx, cx
mov dword [esp + 0x24], edx
fild dword [esp + 0x24]
faddp st(1)
fld dword [esp + 0x1c]
add dword [esp + 0x10], ebx
fucompp
fnstsw ax
fld dword [esp + 0x1c]
fld1
fadd st(1), st(0)
fxch st(1)
fstp dword [esp + 0x1c]
fadd qword [esp + 0x28]
fstp qword [esp + 0x28]
fld qword [esp + 0x28]
test ah, 0x44
jnp 0x4056ff
fcomp qword [0x41f650]
fnstsw ax
test ah, 1
jne 0x4056e9
mov ax, word [0x424270]
movsx ecx, ax
mov dword [esp + 0x24], ecx
fild dword [esp + 0x24]
fld dword [0x423200]
fsub qword [str.epO_v]
fsubp st(1)
call fcn.0040aea0
mov word [0x424270], ax
jmp 0x40570d
fld qword [esp + 0x88]
fmul qword [0x41f648]
fstp qword [esp + 0x88]
jmp 0x40570d
fsub qword [0x41f640]
fmul qword [esp + 0x7c]
fstp qword [esp + 0x7c]
mov ebx, dword [esp + 0x38]
mov eax, dword [esp + 0x48]
dec ebx
dec eax
mov edi, ebx
sub edi, eax
mov ebp, edi
shl ebp, 5
lea edx, [esp + 0x44]
push ebp
push edx
mov dword [esp + 0x58], eax
call fcn.004023b0
lea eax, [esp + 0x4c]
push eax
lea ecx, [esp + 0x40]
push ecx
call fcn.00401830
add esp, 0x10
test eax, eax
jl 0x405774
mov eax, dword [esp + 0x6c]
inc dword [eax + edi*4]
lea edx, [esp + 0x44]
push edx
lea eax, [esp + 0x38]
push eax
mov ecx, eax
push ecx
call fcn.00404b20
lea edx, [esp + 0x50]
push edx
lea eax, [esp + 0x44]
push eax
call fcn.00401830
add esp, 0x14
test eax, eax
jge 0x405745
lea ecx, [esp + 0x44]
push ebp
push ecx
call fcn.00401600
add esp, 8
cmp ebx, dword [esp + 0x50]
mov dword [esp + 0x88], ebx
jle 0x405bb9
add edi, edi
add edi, edi
add ebp, 0xffffffe0
mov dword [esp + 0x30], edi
mov dword [esp + 0x24], ebp
mov edx, dword [esp + 0x3c]
mov eax, dword [esp + 0x4c]
mov ecx, dword [esp + 0x50]
lea ebp, [edx + ebx*4]
mov edx, dword [ebp]
cmp edx, dword [eax + ecx*4]
lea eax, [eax + ecx*4]
jb 0x4057cd
mov eax, dword [esp + 0x6c]
mov dword [edi + eax - 4], 0xffffffff
jmp 0x405973
or edx, 0xffffffff
add word [0x42597c], dx
movzx ecx, word [0x42597c]
movzx esi, word [0x424290]
movsx ecx, cx
sub esi, ecx
mov word [0x424290], si
add dword [esp + 0x14], edx
movzx ecx, word [esp + 0x14]
mov esi, dword [esp + 0x60]
movsx ecx, cx
lea ecx, [ecx + esi - 0x69a0e79f]
mov esi, dword [0x423614]
cmp ecx, esi
jne 0x40581e
mov ecx, 0x50f
mov word [esp + 0x20], cx
jmp 0x405830
fld dword [0x4231f4]
fsub qword [0x41f638]
fstp dword [0x4231f4]
fld qword [0x424258]
mov esi, dword [eax]
fadd qword [0x41f348]
fstp qword [0x424258]
mov eax, dword [0x42596c]
add eax, 0x22721bc3
mov dword [esp + 0x20], eax
fild dword [esp + 0x20]
fld qword [esp + 0x7c]
fsubr qword [0x41f630]
fsub qword [0x424258]
inc dword [0x42596c]
fcompp
fnstsw ax
test ah, 1
jne 0x4058a0
add dword [esp + 0x10], edx
fld dword [esp + 0x1c]
mov cx, word [esp + 0x10]
fadd qword [0x41f628]
movsx edx, cx
mov dword [esp + 0x20], edx
fild dword [esp + 0x20]
fsubp st(1)
call fcn.0040aea0
mov word [0x4235c0], ax
movzx eax, word [esp + 0x14]
mov ecx, dword [ebp]
sub eax, 0x4dea94f2
mov word [esp + 0x14], ax
xor edx, edx
mov eax, ecx
mov edi, esi
shr edi, 0x10
div edi
mov ebx, eax
movzx eax, word [ebp - 2]
mov edx, ebx
imul edx, edi
sub ecx, edx
shl ecx, 0x10
or ecx, eax
movzx edx, si
mov eax, ebx
imul eax, edx
cmp ecx, eax
jae 0x405901
movzx edx, word [0x4242c4]
add ecx, esi
sub edx, 0x3df21678
dec ebx
mov word [0x4242c4], dx
cmp ecx, esi
jb 0x405901
cmp ecx, eax
jae 0x405901
add ecx, esi
dec ebx
cmp ecx, esi
jae 0x4058f6
sub ecx, eax
fld qword [0x4232f0]
xor edx, edx
fsub qword [0x41f620]
mov eax, ecx
div edi
fstp qword [0x4232f0]
mov edx, eax
imul edx, edi
sub ecx, edx
movzx edx, word [ebp - 4]
shl ecx, 0x10
or ecx, edx
movzx edi, si
mov edx, eax
imul edx, edi
cmp ecx, edx
jae 0x40594b
add ecx, esi
dec eax
cmp ecx, esi
jb 0x40594b
mov edi, edi
cmp ecx, edx
jae 0x40594b
add ecx, esi
dec eax
cmp ecx, esi
jae 0x405940
fld qword [esp + 0x70]
mov ecx, dword [esp + 0x30]
fmul qword [0x41f618]
shl ebx, 0x10
or ebx, eax
mov eax, dword [esp + 0x6c]
mov dword [ecx + eax - 4], ebx
fstp qword [esp + 0x70]
mov ebx, dword [esp + 0x88]
mov edi, ecx
mov eax, dword [esp + 0x6c]
inc dword [edi + eax - 4]
jmp 0x405980
mov eax, dword [esp + 0x6c]
dec dword [edi + eax - 4]
movzx edx, word [0x4250bc]
imul edx, edx, 0x895463ac
lea eax, [esp + 0x54]
push 0
push eax
mov word [0x4250bc], dx
call fcn.004020c0
mov esi, eax
add esp, 8
test esi, esi
jne 0x405cb8
mov ecx, dword [esp + 0x50]
cmp ecx, 1
jl 0x4059c6
mov edx, dword [esp + 0x4c]
mov eax, dword [edx + ecx*4 - 4]
mov edx, dword [esp + 0x5c]
mov dword [edx], eax
mov eax, dword [esp + 0x4c]
mov ecx, dword [eax + ecx*4]
mov edx, dword [esp + 0x5c]
mov dword [edx + 4], ecx
fld qword [0x424308]
fsub qword [0x41f610]
mov eax, dword [esp + 0x6c]
lea edx, [esp + 0x54]
fstp qword [0x424308]
mov ecx, dword [edi + eax - 4]
push ecx
push edx
mov eax, edx
push eax
call fcn.00404dc0
mov esi, eax
add esp, 0xc
test esi, esi
jne 0x405cb8
push eax
lea ecx, [esp + 0x98]
push ecx
call fcn.004020c0
mov esi, eax
add esp, 8
test esi, esi
jne 0x405cb8
cmp ebx, 2
jl 0x405a37
mov edx, dword [esp + 0x3c]
mov eax, dword [edx + ebx*4 - 8]
cmp ebx, 1
mov ecx, dword [esp + 0x9c]
mov dword [ecx], eax
jge 0x405a49
xor eax, eax
jmp 0x405a51
mov edx, dword [esp + 0x3c]
mov eax, dword [edx + ebx*4 - 4]
mov ecx, dword [esp + 0x9c]
mov dword [ecx + 4], eax
mov edx, dword [esp + 0x3c]
mov eax, dword [edx + ebx*4]
mov ecx, dword [esp + 0x9c]
lea edx, [esp + 0x94]
mov dword [ecx + 8], eax
push edx
lea eax, [esp + 0x58]
push eax
call fcn.00401830
add esp, 8
test eax, eax
jg 0x405980
mov ecx, dword [esp + 0x6c]
mov edx, dword [edi + ecx - 4]
push edx
lea eax, [esp + 0x48]
push eax
lea ecx, [esp + 0x5c]
push ecx
call fcn.00404dc0
mov esi, eax
add esp, 0xc
test esi, esi
jne 0x405cb8
movzx edx, word [esp + 0x40]
mov ebp, dword [esp + 0x24]
imul edx, edx, 0xff7a08bd
lea eax, [esp + 0x54]
push ebp
push eax
mov word [esp + 0x48], dx
call fcn.004023b0
mov esi, eax
add esp, 8
test esi, esi
jne 0x405cb8
lea ecx, [esp + 0x54]
push ecx
lea edx, [esp + 0x38]
push edx
mov eax, edx
push eax
call fcn.00404b20
mov esi, eax
add esp, 0xc
test esi, esi
jne 0x405cb8
fldz
mov dword [esp + 0x24], eax
fstp dword [esp + 0x78]
lea edx, [esp + 0xa0]
mov dword [esp + 0x78], eax
mov eax, 1
mov dword [esp + 0xa0], eax
mov dword [esp + 0xa4], eax
push edx
lea eax, [esp + 0x38]
lea ecx, [esp + 0x7c]
push eax
mov dword [esp + 0xb0], ecx
call fcn.00401830
add esp, 8
test eax, eax
jge 0x405b99
lea ecx, [esp + 0x44]
push ecx
lea edx, [esp + 0x58]
push edx
call fcn.00402c10
mov esi, eax
add esp, 8
test esi, esi
jne 0x405cb8
lea eax, [esp + 0x54]
push ebp
push eax
call fcn.004023b0
mov esi, eax
add esp, 8
test esi, esi
jne 0x405cb8
lea ecx, [esp + 0x54]
push ecx
lea edx, [esp + 0x38]
push edx
mov eax, edx
push eax
call fcn.004049c0
mov esi, eax
add esp, 0xc
test esi, esi
jne 0x405cb8
mov eax, dword [esp + 0x6c]
dec dword [edi + eax - 4]
dec ebx
sub ebp, 0x20
sub edi, 4
cmp ebx, dword [esp + 0x50]
mov dword [esp + 0x88], ebx
mov dword [esp + 0x24], ebp
mov dword [esp + 0x30], edi
jg 0x4057a2
mov edi, dword [esp + 0xc8]
test edi, edi
je 0x405c01
lea ecx, [esp + 0x64]
push ecx
push edi
call fcn.00402c10
fld qword [esp + 0x30]
mov edx, dword [esp + 0xd8]
fmul qword [esp + 0x78]
mov eax, dword [edx]
mov ecx, dword [esp + 0xdc]
add esp, 8
imul eax, dword [ecx]
mov dword [edi], eax
fstp qword [esp + 0x28]
fld qword [esp + 0x70]
fadd qword [0x41f348]
fstp qword [esp + 0x70]
mov edi, dword [esp + 0xcc]
test edi, edi
je 0x405cb8
mov edx, dword [esp + 0x18]
add dword [0x4235fc], 0x1c6d3763
push edx
lea eax, [esp + 0x38]
push eax
call fcn.00401600
lea ecx, [esp + 0x3c]
push ecx
push edi
call fcn.00402c10
fld qword [esp + 0x8c]
mov cx, word [esp + 0x24]
mov edx, dword [esp + 0xe0]
mov eax, dword [edx]
mov dword [edi], eax
movsx edx, cx
mov eax, 0xda278522
sub eax, edx
mov dword [esp + 0x70], eax
xor eax, eax
lea edx, [esp + 0xc8]
fild dword [esp + 0x70]
push edx
mov ebx, 1
lea ecx, [esp + 0xa4]
fsubp st(1)
push edi
fstp qword [esp + 0x94]
dec dword [esp + 0x2c]
fldz
mov dword [esp + 0x78], eax
fstp dword [esp + 0xa8]
mov dword [esp + 0xd0], ebx
mov dword [esp + 0xa8], eax
mov dword [esp + 0xd4], ebx
mov dword [esp + 0xd8], ecx
call fcn.00401830
add esp, 0x18
test eax, eax
jne 0x405cb8
mov dword [edi], ebx
xor ebp, ebp
push ebp
lea eax, [esp + 0x98]
push eax
lea ecx, [esp + 0x5c]
push ecx
lea edx, [esp + 0x70]
push edx
lea eax, [esp + 0x54]
push eax
lea ecx, [esp + 0x48]
push ecx
call fcn.004026f0
mov dx, word [0x423560]
mov ecx, dword [0x423554]
add esp, 0x18
movsx eax, dx
pop edi
lea edx, [ecx + eax + 0x426427f3]
mov eax, esi
pop esi
pop ebp
mov dword [0x423554], edx
dec word [0x423560]
pop ebx
add esp, 0xb4
ret