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

Disassembly:
sub esp, 0x84
fldz
push ebp
fst dword [esp + 8]
xor ebp, ebp
fldz
mov dword [esp + 0xc], ebp
xor eax, eax
mov word [esp + 0x28], ax
xor ecx, ecx
mov word [esp + 0x24], cx
xor edx, edx
mov word [esp + 0x20], dx
fst qword [esp + 0x48]
mov dword [esp + 0x2c], ebp
fxch st(1)
fst dword [esp + 0x18]
push edi
fxch st(1)
fstp qword [esp + 0x74]
fstp dword [esp + 0x20]
mov dword [esp + 8], ebp
fld qword [esp + 0x74]
mov eax, dword [0x4254f8]
fsub qword [0x41f6f0]
mov dword [esp + 0x14], eax
fild dword [esp + 0x14]
fmulp st(1)
call fcn.0040b450
mov edi, dword [esp + 0x9c]
mov dword [0x4254f8], eax
fld qword [esp + 0x74]
fsub qword [0x41f348]
push ebp
push edi
fstp qword [esp + 0x7c]
call fcn.00403f30
add esp, 8
test eax, eax
jne 0x404e69
pop edi
lea eax, [ebp - 0xc]
pop ebp
add esp, 0x84
ret
push ebx
push esi
push ebp
lea ecx, [esp + 0x88]
push ecx
lea edx, [esp + 0x50]
push edx
lea eax, [esp + 0x74]
push eax
lea ecx, [esp + 0x6c]
push ecx
lea edx, [esp + 0x50]
push edx
call fcn.004015a0
mov ebx, dword [esp + 0xb8]
push edi
push ebx
call fcn.00401980
add esp, 0x20
test eax, eax
jge 0x404f90
fld qword [esp + 0x54]
fsub qword [0x41f6e8]
fsub qword [0x41f6e0]
fcomp qword [0x41f6d8]
fnstsw ax
fld qword [esp + 0x54]
fadd qword [0x41f348]
fstp qword [esp + 0x54]
test ah, 0x44
jp 0x404ee3
fld qword [0x425bd0]
fsub qword [0x41f6d0]
fstp qword [0x425bd0]
mov edi, dword [esp + 0x98]
cmp edi, ebp
je 0x404f36
xor eax, eax
push 1
mov word [esp + 0x34], ax
push edi
mov dword [esp + 0x5c], ebp
call fcn.00401e50
mov esi, eax
add esp, 8
cmp esi, ebp
jne 0x4058c5
mov ecx, dword [edi + 4]
mov edx, dword [edi + 8]
add ecx, ecx
add ecx, ecx
push ecx
push ebp
push edx
call fcn.0040b220
mov eax, dword [edi + 8]
add esp, 0xc
mov dword [eax], ebp
mov dword [edi], 1
cmp esi, ebp
jne 0x4058c5
mov ecx, dword [0x425624]
mov edx, dword [esp + 0x18]
mov eax, dword [esp + 0x9c]
sub ecx, edx
mov dword [esp + 0x1c], ecx
fild dword [esp + 0x1c]
fmul dword [0x423bd8]
fstp dword [0x423bd8]
cmp eax, ebp
je 0x404f75
push ebx
push eax
call fcn.00401f10
mov esi, eax
add esp, 8
cmp esi, ebp
jne 0x4058c5
fld dword [esp + 0x14]
pop esi
fmul qword [0x41f6c8]
pop ebx
pop edi
xor eax, eax
fstp dword [esp + 8]
pop ebp
add esp, 0x84
ret
lea eax, [esp + 0x3c]
push ebx
push eax
call fcn.00401f10
mov esi, eax
add esp, 8
cmp esi, ebp
jne 0x4058c5
lea ecx, [esp + 0x5c]
push edi
push ecx
call fcn.00401f10
mov esi, eax
add esp, 8
cmp esi, ebp
jne 0x4058c5
mov dx, word [0x425550]
movzx ecx, word [0x425c3c]
movsx eax, dx
add eax, 0x2ebc97fc
imul ecx, eax
mov word [0x425c3c], cx
dec word [0x425550]
mov edx, dword [ebx + 4]
add edx, 2
push edx
lea eax, [esp + 0x6c]
mov edi, 1
push eax
mov dword [esp + 0x64], edi
mov dword [esp + 0x44], edi
call fcn.00401e50
mov esi, eax
add esp, 8
cmp esi, ebp
jne 0x4058c5
xor ecx, ecx
lea edx, [esp + 0x68]
push edi
mov word [esp + 0x24], cx
push edx
mov dword [esp + 0x5c], ebp
call fcn.00401e50
mov esi, eax
add esp, 8
cmp esi, ebp
jne 0x4058c5
mov eax, dword [esp + 0x6c]
mov edx, dword [esp + 0x70]
lea ecx, [eax*4]
push ecx
push ebp
push edx
call fcn.0040b220
mov eax, dword [esp + 0x7c]
add esp, 0xc
mov dword [eax], ebp
mov dword [esp + 0x68], edi
cmp esi, ebp
jne 0x4058c5
lea ecx, [esp + 0x48]
push 2
push ecx
call fcn.00401e50
mov esi, eax
add esp, 8
cmp esi, ebp
jne 0x4058c5
lea edx, [esp + 0x84]
push 3
push edx
call fcn.00401e50
mov esi, eax
add esp, 8
cmp esi, ebp
jne 0x4058c5
fld dword [0x425bc8]
mov edx, 0x6c36ca9e
fsub qword [0x41f348]
fstp dword [0x425bc8]
mov ax, word [0x423bac]
movsx ecx, ax
sub edx, ecx
mov dword [esp + 0x1c], edx
lea eax, [esp + 0x5c]
push eax
fild dword [esp + 0x20]
fsub dword [0x425bc8]
fstp dword [0x42491c]
call fcn.00402e70
mov ebx, eax
add esp, 4
and ebx, 0x8000001f
jns 0x4050e8
dec ebx
or ebx, 0xffffffe0
inc ebx
cmp ebx, 0x1f
fld dword [0x425bd8]
fadd qword [0x41f6c0]
fstp dword [0x425bd8]
jge 0x405179
fld dword [esp + 0x28]
mov ecx, dword [esp + 0x38]
fsubr qword [0x41f6b8]
mov dword [esp + 0x1c], ecx
fsub qword [0x41f6b0]
fild dword [esp + 0x1c]
fmulp st(1)
call fcn.0040b450
mov dword [esp + 0x38], eax
fld dword [esp + 0x28]
fadd qword [0x41f348]
mov edi, 0x1f
sub edi, ebx
lea edx, [esp + 0x3c]
push edi
fstp dword [esp + 0x2c]
add dword [esp + 0x1c], 0xbb32ed43
push edx
mov dword [esp + 0x24], edi
call fcn.00403920
mov esi, eax
add esp, 8
cmp esi, ebp
jne 0x4058c5
lea eax, [esp + 0x5c]
push edi
push eax
call fcn.00403920
mov esi, eax
add esp, 8
cmp esi, ebp
jne 0x4058c5
jmp 0x40517d
mov dword [esp + 0x1c], ebp
fld qword [0x424920]
lea ecx, [esp + 0x5c]
fadd qword [0x41f6a8]
fmul qword [0x4239c0]
fstp qword [0x4239c0]
fld qword [0x424920]
mov ebp, dword [esp + 0x40]
mov eax, dword [esp + 0x60]
fsub qword [0x41f348]
dec ebp
dec eax
mov edi, ebp
fstp qword [0x424920]
sub edi, eax
mov ebx, edi
shl ebx, 5
push ebx
push ecx
mov dword [esp + 0x7c], eax
call fcn.00403920
lea edx, [esp + 0x64]
push edx
lea eax, [esp + 0x48]
push eax
call fcn.00402800
add esp, 0x10
test eax, eax
jl 0x405221
nop
mov eax, dword [esp + 0x70]
inc dword [eax + edi*4]
fld qword [0x425c40]
fsub qword [0x41f6a0]
lea ecx, [esp + 0x5c]
push ecx
lea edx, [esp + 0x40]
push edx
fstp qword [0x425c40]
mov eax, edx
push eax
call fcn.00403250
lea ecx, [esp + 0x68]
push ecx
lea edx, [esp + 0x4c]
push edx
call fcn.00402800
add esp, 0x14
test eax, eax
jge 0x4051e0
lea eax, [esp + 0x5c]
push ebx
push eax
call fcn.00403110
add esp, 8
cmp ebp, dword [esp + 0x74]
mov dword [esp + 0x90], ebp
jle 0x405811
add edi, edi
add edi, edi
add ebx, 0xffffffe0
mov dword [esp + 0x38], edi
mov dword [esp + 0x78], ebx
nop
mov ecx, dword [esp + 0x44]
mov eax, dword [esp + 0x74]
mov edx, dword [esp + 0x64]
lea ecx, [ecx + ebp*4]
lea edx, [edx + eax*4]
mov eax, dword [ecx]
mov dword [esp + 0x54], ecx
cmp eax, dword [edx]
jb 0x40527d
mov ecx, dword [esp + 0x70]
mov dword [edi + ecx - 4], 0xffffffff
jmp 0x405509
mov eax, dword [0x4255ac]
mov dword [esp + 0x20], eax
fild dword [esp + 0x20]
fadd qword [esp + 0x7c]
fsub qword [0x4239a8]
fcomp qword [0x41f698]
fnstsw ax
fld qword [esp + 0x7c]
fld1
fsub st(1), st(0)
fxch st(1)
fstp qword [esp + 0x7c]
test ah, 1
jne 0x4052c8
movzx eax, word [esp + 0x30]
mov esi, dword [esp + 0x10]
lea eax, [eax + esi - 0x7bbf68d5]
mov word [esp + 0x30], ax
dec dword [esp + 0x10]
mov edi, dword [edx]
mov dx, word [esp + 0x2c]
movsx eax, dx
mov edx, 0xc3a625af
sub edx, eax
mov dword [0x425624], edx
mov edx, 1
add dword [esp + 0x2c], edx
mov ax, word [0x4255a8]
mov si, word [esp + 0x2c]
movzx ebx, word [esp + 0x34]
movsx ebx, bx
movsx esi, si
lea esi, [esi + ebx - 0x7cf4ef99]
movzx ebx, word [esp + 0x2c]
dec dword [esp + 0x34]
add word [0x4255a8], dx
cwde
movsx ebx, bx
lea eax, [ebx + eax + 0x3e6c9e6b]
cmp eax, esi
jne 0x405356
fld dword [0x42491c]
fcomp qword [0x41f690]
fnstsw ax
test ah, 0x41
jp 0x405376
mov edx, dword [0x4230d0]
mov eax, 0x85674413
sub eax, edx
mov dword [esp + 0x10], eax
fild dword [esp + 0x10]
fadd dword [esp + 0x14]
fstp dword [esp + 0x14]
jmp 0x405376
fld dword [esp + 0x24]
fsub qword [0x41f688]
fmul dword [0x4239b0]
fstp dword [0x4239b0]
fld dword [esp + 0x24]
fadd st(1)
fstp dword [esp + 0x24]
fld dword [esp + 0x28]
xor edx, edx
fsub qword [0x41f680]
mov ebx, edi
shr ebx, 0x10
fsub qword [0x41f678]
fmul dword [esp + 0x14]
mov esi, dword [ecx]
mov eax, esi
div ebx
fstp dword [esp + 0x14]
fld qword [0x425700]
fadd st(1)
mov ebp, eax
movzx eax, word [ecx - 2]
fstp qword [0x425700]
movzx ecx, word [0x4256ac]
mov edx, ebp
imul edx, ebx
sub esi, edx
shl esi, 0x10
or esi, eax
movsx edx, cx
movzx ecx, word [0x425be8]
mov eax, 0x9fd972c1
sub eax, edx
mov dword [esp + 0x10], eax
movsx edx, cx
fild dword [esp + 0x10]
mov dword [esp + 0x10], edx
mov dword [esp + 0x20], ebp
fild dword [esp + 0x10]
fsub qword [0x425700]
fcompp
fnstsw ax
test ah, 5
jp 0x405429
mov ax, word [esp + 0x2c]
movsx ecx, ax
mov dword [esp + 0x10], ecx
fild dword [esp + 0x10]
fadd qword [0x4239a8]
call fcn.0040b450
mov word [esp + 0x2c], ax
fld qword [0x4239a8]
fadd st(1)
fstp qword [0x4239a8]
jmp 0x405448
mov edx, dword [esp + 0x18]
movzx eax, word [0x425c28]
add edx, 0x64b219a2
imul edx, eax
mov word [0x425c28], dx
dec dword [esp + 0x18]
movzx ecx, di
mov eax, ebp
imul eax, ecx
cmp esi, eax
jae 0x40546e
dec ebp
add esi, edi
mov dword [esp + 0x20], ebp
cmp esi, edi
jb 0x40546e
cmp esi, eax
jae 0x40546a
add esi, edi
dec ebp
cmp esi, edi
jae 0x40545f
mov dword [esp + 0x20], ebp
fld dword [esp + 0x24]
sub esi, eax
fld dword [esp + 0x24]
xor edx, edx
fsub qword [0x41f670]
mov eax, esi
div ebx
fsubp st(1)
fstp dword [esp + 0x24]
fsubr dword [esp + 0x24]
fstp dword [esp + 0x24]
fld dword [esp + 0x28]
fadd dword [esp + 0x14]
mov cx, word [esp + 0x34]
movsx edx, cx
mov dword [esp + 0x10], edx
fild dword [esp + 0x10]
faddp st(1)
mov ebp, eax
call fcn.0040b450
mov ecx, dword [esp + 0x54]
movzx edx, word [ecx - 4]
mov word [esp + 0x34], ax
mov eax, ebp
imul eax, ebx
sub esi, eax
movzx ecx, di
mov eax, ebp
imul eax, ecx
shl esi, 0x10
or esi, edx
cmp esi, eax
jae 0x4054eb
add esi, edi
dec ebp
cmp esi, edi
jb 0x4054eb
nop
cmp esi, eax
jae 0x4054eb
add esi, edi
dec ebp
cmp esi, edi
jae 0x4054e0
mov eax, dword [esp + 0x20]
mov edx, dword [esp + 0x38]
mov ecx, dword [esp + 0x70]
shl eax, 0x10
or eax, ebp
mov ebp, dword [esp + 0x90]
mov dword [edx + ecx - 4], eax
mov edi, edx
mov eax, dword [esp + 0x70]
mov ebx, 1
add dword [edi + eax - 4], ebx
jmp 0x405520
add word [0x425720], bx
mov ax, word [0x425720]
mov ecx, dword [0x4230d0]
cwde
sub eax, ecx
sub eax, 0x765993f4
mov word [esp + 0x34], ax
add dword [0x4230d0], ebx
mov eax, dword [esp + 0x70]
dec dword [edi + eax - 4]
xor edx, edx
lea eax, [esp + 0x48]
push ebx
mov word [esp + 0x24], dx
push eax
mov dword [esp + 0x5c], edx
call fcn.00401e50
mov esi, eax
add esp, 8
test esi, esi
jne 0x4058c3
mov ecx, dword [esp + 0x4c]
lea edx, [ecx*4]
push edx
push eax
mov eax, dword [esp + 0x58]
push eax
call fcn.0040b220
mov ecx, dword [esp + 0x5c]
add esp, 0xc
mov dword [ecx], esi
mov dword [esp + 0x48], ebx
test esi, esi
jne 0x4058c3
mov ecx, dword [esp + 0x74]
cmp ecx, ebx
jge 0x4055a9
xor eax, eax
jmp 0x4055b1
mov edx, dword [esp + 0x64]
mov eax, dword [edx + ecx*4 - 4]
mov edx, dword [esp + 0x50]
mov dword [edx], eax
mov eax, dword [esp + 0x64]
mov ecx, dword [eax + ecx*4]
mov edx, dword [esp + 0x50]
mov dword [edx + 4], ecx
mov eax, dword [esp + 0x70]
mov ecx, dword [edi + eax - 4]
push ecx
lea edx, [esp + 0x4c]
push edx
mov eax, edx
push eax
call fcn.00404b10
mov esi, eax
add esp, 0xc
test esi, esi
jne 0x4058c3
mov eax, dword [0x423b0c]
mov ecx, dword [0x4239bc]
add eax, 0x9c816a68
add ecx, eax
mov dword [0x423b0c], ecx
add dword [0x4239bc], ebx
xor edx, edx
lea eax, [esp + 0x84]
push ebx
mov word [esp + 0x24], dx
push eax
mov dword [esp + 0x5c], edx
call fcn.00401e50
mov esi, eax
add esp, 8
test esi, esi
jne 0x4058c3
mov ecx, dword [esp + 0x88]
lea edx, [ecx*4]
push edx
push eax
mov eax, dword [esp + 0x94]
push eax
call fcn.0040b220
mov ecx, dword [esp + 0x98]
add esp, 0xc
mov dword [ecx], esi
mov dword [esp + 0x84], ebx
test esi, esi
jne 0x4058c3
mov dx, word [0x423a18]
movsx eax, dx
mov ecx, 0x23104a62
sub ecx, eax
cmp ebp, 2
mov dword [esp + 0x10], ecx
jge 0x405682
xor eax, eax
jmp 0x40568a
mov edx, dword [esp + 0x44]
mov eax, dword [edx + ebp*4 - 8]
cmp ebp, ebx
mov ecx, dword [esp + 0x8c]
mov dword [ecx], eax
jge 0x40569b
xor eax, eax
jmp 0x4056a3
mov edx, dword [esp + 0x44]
mov eax, dword [edx + ebp*4 - 4]
mov ecx, dword [esp + 0x8c]
fld dword [0x41f668]
mov dword [ecx + 4], eax
fstp dword [esp + 0x14]
mov edx, dword [esp + 0x44]
mov eax, dword [edx + ebp*4]
mov ecx, dword [esp + 0x8c]
lea edx, [esp + 0x84]
mov dword [ecx + 8], eax
push edx
lea eax, [esp + 0x4c]
push eax
call fcn.00402800
add esp, 8
test eax, eax
jg 0x405520
mov ecx, dword [esp + 0x70]
mov edx, dword [edi + ecx - 4]
push edx
lea eax, [esp + 0x60]
push eax
lea ecx, [esp + 0x50]
push ecx
call fcn.00404b10
mov esi, eax
add esp, 0xc
test esi, esi
jne 0x4058c3
fld dword [esp + 0x14]
mov edx, dword [esp + 0x78]
fld dword [esp + 0x28]
push edx
fadd qword [0x41f660]
lea eax, [esp + 0x4c]
push eax
fsubp st(1)
fstp dword [esp + 0x1c]
fld dword [esp + 0x30]
fsub qword [0x41f348]
fstp dword [esp + 0x30]
call fcn.00403920
mov esi, eax
add esp, 8
test esi, esi
jne 0x4058c3
lea ecx, [esp + 0x48]
push ecx
lea edx, [esp + 0x40]
push edx
mov eax, edx
push eax
call fcn.00403250
mov esi, eax
add esp, 0xc
test esi, esi
jne 0x4058c3
push eax
lea ecx, [esp + 0x40]
push ecx
call fcn.00403f30
add esp, 8
test eax, eax
jge 0x4057f2
mov edx, dword [esp + 0x18]
add edx, 0x7d8473d5
mov dword [esp + 0x54], edx
fild dword [esp + 0x54]
lea eax, [esp + 0x5c]
push eax
lea ecx, [esp + 0x4c]
fstp dword [esp + 0x18]
dec dword [esp + 0x1c]
push ecx
call fcn.00401f10
mov esi, eax
add esp, 8
test esi, esi
jne 0x4058c3
mov edx, dword [esp + 0x78]
push edx
lea eax, [esp + 0x4c]
push eax
call fcn.00403920
mov esi, eax
add esp, 8
test esi, esi
jne 0x4058c3
lea ecx, [esp + 0x48]
push ecx
lea edx, [esp + 0x40]
push edx
mov eax, edx
push eax
call fcn.00404040
mov esi, eax
add esp, 0xc
test esi, esi
jne 0x4058c3
mov eax, dword [esp + 0x70]
dec dword [edi + eax - 4]
sub dword [esp + 0x78], 0x20
sub ebp, ebx
sub edi, 4
cmp ebp, dword [esp + 0x74]
mov dword [esp + 0x90], ebp
mov dword [esp + 0x38], edi
jg 0x405250
mov edi, dword [esp + 0x98]
test edi, edi
je 0x40583f
lea ecx, [esp + 0x68]
push ecx
push edi
call fcn.00401f10
mov edx, dword [esp + 0xa8]
mov eax, dword [edx]
mov ecx, dword [esp + 0xac]
add esp, 8
imul eax, dword [ecx]
mov dword [edi], eax
mov edi, dword [esp + 0x9c]
test edi, edi
je 0x4058c3
fld dword [0x4255fc]
fadd qword [0x41f658]
fcomp qword [0x41f650]
fnstsw ax
test ah, 5
jp 0x405875
mov edx, dword [esp + 0x18]
imul edx, edx, 0x66b10cfe
mov dword [esp + 0x18], edx
mov eax, dword [esp + 0x1c]
push eax
lea ecx, [esp + 0x40]
push ecx
call fcn.00403110
fld qword [esp + 0x84]
fsub qword [0x41f648]
lea edx, [esp + 0x44]
push edx
push edi
fstp qword [esp + 0x8c]
call fcn.00401f10
mov eax, dword [esp + 0xb0]
mov ecx, dword [eax]
push 0
push edi
mov dword [edi], ecx
call fcn.00403f30
add esp, 0x18
test eax, eax
jne 0x4058c3
mov dword [edi], 1
xor ebp, ebp
push ebp
lea edx, [esp + 0x88]
push edx
lea eax, [esp + 0x50]
push eax
lea ecx, [esp + 0x74]
push ecx
lea edx, [esp + 0x6c]
push edx
lea eax, [esp + 0x50]
push eax
call fcn.00401d20
movzx ecx, word [0x425620]
add esp, 0x18
mov eax, esi
pop esi
pop ebx
sub ecx, 0x4f892efa
pop edi
mov word [0x425620], cx
pop ebp
add esp, 0x84
ret