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

Disassembly:
sub esp, 0x88
fldz
push ebx
push ebp
xor ebp, ebp
mov dword [esp + 0x2c], ebp
mov dword [esp + 0x20], ebp
xor eax, eax
mov word [esp + 0x28], ax
mov dword [esp + 0x40], ebp
mov dword [esp + 0x24], ebp
xor ecx, ecx
mov word [esp + 0x18], cx
mov dword [esp + 0xc], ebp
fst dword [esp + 0x70]
fst dword [esp + 0x3c]
xor edx, edx
fst dword [esp + 0x54]
mov word [esp + 0x14], dx
fst dword [esp + 8]
mov ebx, dword [esp + 0xa0]
fstp dword [esp + 0x1c]
mov eax, 1
fld dword [0x424a08]
lea ecx, [esp + 0x84]
fld1
push ecx
fadd st(1), st(0)
push ebx
fxch st(1)
fstp dword [0x424a08]
fld dword [0x424a08]
fadd qword [0x425de0]
fadd dword [esp + 0x24]
fstp dword [esp + 0x24]
fadd qword [0x425de0]
mov dword [esp + 0x8c], eax
mov dword [esp + 0x88], ebp
fstp qword [0x425de0]
fld dword [esp + 0x10]
fld dword [esp + 0x24]
mov dword [esp + 0x90], eax
fsubr qword [0x41f530]
lea eax, [esp + 0x88]
mov dword [esp + 0x94], eax
fsubp st(1)
fstp dword [esp + 0x10]
call fcn.00402580
add esp, 8
test eax, eax
jne 0x4054af
lea eax, [ebp - 0xc]
pop ebp
pop ebx
add esp, 0x88
ret
dec dword [esp + 0x24]
mov dx, word [0x42511c]
mov ecx, dword [esp + 0x24]
push esi
movsx eax, dx
mov edx, dword [esp + 0x30]
push edi
sub eax, ecx
push ebp
lea eax, [eax + edx - 0x2b05a8ec]
lea ecx, [esp + 0x80]
push ecx
lea edx, [esp + 0x68]
push edx
mov dword [esp + 0x40], eax
lea eax, [esp + 0x78]
push eax
lea ecx, [esp + 0x5c]
push ecx
lea edx, [esp + 0x4c]
push edx
call fcn.00403110
mov edi, dword [esp + 0xbc]
push ebx
push edi
call fcn.00402940
add esp, 0x20
test eax, eax
jge 0x405556
mov eax, dword [esp + 0x9c]
cmp eax, ebp
je 0x40552a
push ebp
push eax
call fcn.00401ae0
mov esi, eax
add esp, 8
cmp esi, ebp
jne 0x405cf2
mov eax, dword [esp + 0xa0]
cmp eax, ebp
je 0x405549
push edi
push eax
call fcn.00402160
mov esi, eax
add esp, 8
cmp esi, ebp
jne 0x405cf2
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x88
ret
lea eax, [esp + 0x38]
push edi
push eax
call fcn.00402160
mov esi, eax
add esp, 8
cmp esi, ebp
jne 0x405cf2
lea ecx, [esp + 0x4c]
push ebx
push ecx
call fcn.00402160
mov esi, eax
add esp, 8
cmp esi, ebp
jne 0x405cf2
mov edx, dword [esp + 0x14]
sub edx, 0x72ab2dd7
mov dword [esp + 0x58], edx
fild dword [esp + 0x58]
mov ebx, 1
fld qword [0x425188]
mov dword [esp + 0x4c], ebx
mov dword [esp + 0x38], ebx
fcompp
fnstsw ax
fld qword [0x425188]
fadd qword [0x41f358]
fstp qword [0x425188]
test bl, ah
jne 0x4055d4
mov eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x28]
imul eax, ecx
mov dword [esp + 0x48], eax
mov edx, dword [edi + 4]
add edx, 2
push edx
lea eax, [esp + 0x70]
push eax
call fcn.004019f0
mov esi, eax
add esp, 8
cmp esi, ebp
jne 0x405cf2
lea ecx, [esp + 0x6c]
push ebp
push ecx
call fcn.00401ae0
mov esi, eax
add esp, 8
cmp esi, ebp
jne 0x405cf2
lea edx, [esp + 0x60]
push 2
push edx
call fcn.004019f0
mov esi, eax
add esp, 8
cmp esi, ebp
jne 0x405cf2
lea eax, [esp + 0x7c]
push 3
push eax
call fcn.004019f0
mov esi, eax
add esp, 8
cmp esi, ebp
jne 0x405cf2
fld dword [esp + 0x44]
lea ecx, [esp + 0x4c]
fsub qword [0x41f6d0]
push ecx
fstp dword [esp + 0x48]
call fcn.00401430
add esp, 4
and eax, 0x8000001f
jns 0x405663
dec eax
or eax, 0xffffffe0
inc eax
cmp eax, 0x1f
jge 0x4056fa
add dword [esp + 0x28], 0x969d241
mov dx, word [esp + 0x1c]
mov cx, word [esp + 0x20]
mov edi, 0x1f
sub edi, eax
movsx eax, dx
movsx edx, cx
sub edx, eax
mov eax, dword [esp + 0x28]
lea ecx, [edx + eax - 0x6516bf58]
lea edx, [esp + 0x38]
push edi
mov dword [esp + 0x2c], ecx
add dword [esp + 0x20], ebx
push edx
mov dword [esp + 0x60], edi
call fcn.004027a0
mov esi, eax
add esp, 8
cmp esi, ebp
jne 0x405cf2
mov ax, word [0x4240f0]
mov cx, word [esp + 0x20]
cwde
movsx edx, cx
sub edx, eax
mov dword [esp + 0x10], edx
lea eax, [esp + 0x4c]
push edi
fild dword [esp + 0x14]
push eax
fstp dword [esp + 0x64]
add word [0x4240f0], bx
call fcn.004027a0
mov esi, eax
add esp, 8
cmp esi, ebp
jne 0x405cf2
jmp 0x4056fe
mov dword [esp + 0x58], ebp
mov ebp, dword [esp + 0x3c]
mov eax, dword [esp + 0x50]
dec ebp
dec eax
mov edi, ebp
sub edi, eax
mov ebx, edi
shl ebx, 5
lea ecx, [esp + 0x4c]
push ebx
push ecx
mov dword [esp + 0x2c], eax
call fcn.004027a0
fld dword [0x424a08]
mov edx, dword [esp + 0x3c]
add edx, 0x5e47a2c9
mov dword [esp + 0x18], edx
fisub dword [esp + 0x18]
lea eax, [esp + 0x54]
push eax
lea ecx, [esp + 0x44]
push ecx
fstp dword [0x424a08]
dec dword [esp + 0x44]
call fcn.00402580
add esp, 0x10
test eax, eax
jl 0x40578f
jmp 0x405760
mov eax, dword [esp + 0x74]
inc dword [eax + edi*4]
lea edx, [esp + 0x4c]
push edx
lea eax, [esp + 0x3c]
push eax
mov ecx, eax
push ecx
call fcn.00405110
lea edx, [esp + 0x58]
push edx
lea eax, [esp + 0x48]
push eax
call fcn.00402580
add esp, 0x14
test eax, eax
jge 0x405760
fld qword [0x4241e0]
lea edx, [esp + 0x4c]
fld qword [0x424258]
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x10], ecx
fild dword [esp + 0x10]
push ebx
push edx
fsubp st(1)
fadd qword [0x41f6c8]
fsubp st(1)
fstp qword [0x4241e0]
inc dword [esp + 0x1c]
fld qword [0x424258]
fsub qword [0x41f358]
fstp qword [0x424258]
call fcn.00401820
fld dword [esp + 0x80]
add esp, 8
cmp ebp, dword [esp + 0x24]
fsub qword [0x41f6c0]
mov dword [esp + 0x10], ebp
fstp dword [esp + 0x78]
jle 0x405c21
add edi, edi
add edi, edi
add ebx, 0xffffffe0
mov dword [esp + 0x2c], edi
mov dword [esp + 0x14], ebx
lea esp, [esp]
mov ax, word [0x4241b8]
movsx ecx, ax
add ecx, 0x35988fb0
cmp ecx, 0x3e327cfd
je 0x40582f
mov dword [esp + 0x48], 0xb4e6283a
mov edx, dword [esp + 0x40]
mov eax, dword [esp + 0x54]
lea ecx, [edx + ebp*4]
mov edx, dword [esp + 0x24]
lea eax, [eax + edx*4]
mov edx, dword [ecx]
mov dword [esp + 0x18], ecx
cmp edx, dword [eax]
jb 0x40585b
mov eax, dword [esp + 0x74]
or ebx, 0xffffffff
mov dword [edi + eax - 4], ebx
jmp 0x405999
fld qword [0x4243e0]
fsub qword [0x424250]
fstp qword [0x4243e0]
mov edi, dword [eax]
fld qword [0x425de8]
mov dx, word [esp + 0x1c]
movsx eax, dx
mov dword [esp + 0x20], eax
mov ebx, edi
xor edx, edx
fild dword [esp + 0x20]
shr ebx, 0x10
fsubp st(1)
fadd qword [0x423158]
fstp qword [0x423158]
dec dword [esp + 0x1c]
mov esi, dword [ecx]
fld dword [esp + 0x44]
mov eax, esi
fadd qword [0x424250]
div ebx
fsub qword [0x41f6b8]
mov edx, dword [0x425ddc]
mov dword [esp + 0x20], edx
fild dword [esp + 0x20]
fmulp st(1)
mov ebp, eax
mov ecx, ebp
imul ecx, ebx
sub esi, ecx
shl esi, 0x10
call fcn.0040af20
mov ecx, dword [esp + 0x18]
mov dword [0x425ddc], eax
fld dword [esp + 0x44]
movzx eax, word [ecx - 2]
fsub qword [0x41f358]
or esi, eax
movzx edx, di
fstp dword [esp + 0x44]
mov eax, ebp
imul eax, edx
cmp esi, eax
jae 0x40592c
fld dword [esp + 0x78]
add esi, edi
fsubr qword [0x41f6b0]
dec ebp
fsub qword [0x41f6a8]
fmul dword [0x4243a8]
fstp dword [0x4243a8]
cmp esi, edi
jb 0x40592c
cmp esi, eax
jae 0x40592c
add esi, edi
dec ebp
cmp esi, edi
jae 0x405921
sub esi, eax
xor edx, edx
mov eax, esi
div ebx
mov edx, dword [esp + 0x34]
add edx, 0x4c270763
mov word [esp + 0x20], dx
fld dword [esp + 0x5c]
movzx ecx, word [ecx - 4]
fsub qword [0x41f6a0]
fstp dword [esp + 0x5c]
mov edx, eax
imul edx, ebx
sub esi, edx
shl esi, 0x10
or esi, ecx
movzx edx, di
mov ecx, eax
imul ecx, edx
cmp esi, ecx
jae 0x40597f
add esi, edi
dec eax
cmp esi, edi
jb 0x40597f
cmp esi, ecx
jae 0x40597f
add esi, edi
dec eax
cmp esi, edi
jae 0x405974
mov edx, dword [esp + 0x74]
shl ebp, 0x10
or ebp, eax
mov eax, dword [esp + 0x2c]
mov dword [eax + edx - 4], ebp
mov ebp, dword [esp + 0x10]
mov edi, eax
or ebx, 0xffffffff
mov eax, dword [esp + 0x74]
inc dword [edi + eax - 4]
mov eax, dword [esp + 0x74]
add dword [edi + eax - 4], ebx
add dword [0x4230f8], 0x932bf637
lea ecx, [esp + 0x60]
push 0
push ecx
call fcn.00401ae0
mov esi, eax
add esp, 8
test esi, esi
jne 0x405cf0
mov ecx, dword [esp + 0x24]
cmp ecx, 1
jl 0x4059dd
mov edx, dword [esp + 0x54]
mov eax, dword [edx + ecx*4 - 4]
mov edx, dword [esp + 0x68]
mov dword [edx], eax
mov eax, dword [esp + 0x54]
mov ecx, dword [eax + ecx*4]
mov edx, dword [esp + 0x68]
mov dword [edx + 4], ecx
mov eax, dword [esp + 0x74]
mov ecx, dword [edi + eax - 4]
push ecx
lea edx, [esp + 0x64]
push edx
mov eax, edx
push eax
call fcn.00404e80
mov esi, eax
add esp, 0xc
test esi, esi
jne 0x405cf0
push eax
lea ecx, [esp + 0x80]
push ecx
call fcn.00401ae0
mov esi, eax
add esp, 8
test esi, esi
jne 0x405cf0
cmp ebp, 2
jl 0x405a3c
mov edx, dword [esp + 0x40]
mov eax, dword [edx + ebp*4 - 8]
cmp ebp, 1
mov ecx, dword [esp + 0x84]
mov dword [ecx], eax
fld dword [0x4234b8]
fsub qword [0x41f698]
fadd qword [0x41f690]
fmul qword [0x425158]
fstp qword [0x425158]
jge 0x405a6c
xor eax, eax
jmp 0x405a74
mov edx, dword [esp + 0x40]
mov eax, dword [edx + ebp*4 - 4]
mov ecx, dword [esp + 0x84]
mov dword [ecx + 4], eax
mov edx, dword [esp + 0x40]
mov eax, dword [edx + ebp*4]
mov ecx, dword [esp + 0x84]
lea edx, [esp + 0x7c]
mov dword [ecx + 8], eax
push edx
lea eax, [esp + 0x64]
push eax
call fcn.00402580
add esp, 8
test eax, eax
jg 0x4059a1
fld qword [0x424208]
mov ecx, dword [esp + 0x28]
mov dword [esp + 0x18], ecx
fild dword [esp + 0x18]
lea ecx, [esp + 0x4c]
fadd dword [esp + 0x5c]
fsub qword [0x41f688]
fsubp st(1)
fstp qword [0x424208]
inc dword [esp + 0x28]
mov edx, dword [esp + 0x74]
mov eax, dword [edi + edx - 4]
push eax
push ecx
lea edx, [esp + 0x68]
push edx
call fcn.00404e80
mov esi, eax
add esp, 0xc
test esi, esi
jne 0x405cf0
mov eax, dword [esp + 0x14]
push eax
lea ecx, [esp + 0x64]
push ecx
call fcn.004027a0
mov esi, eax
add esp, 8
test esi, esi
jne 0x405cf0
lea edx, [esp + 0x60]
push edx
lea eax, [esp + 0x3c]
push eax
mov ecx, eax
push ecx
call fcn.00405110
mov esi, eax
add esp, 0xc
test esi, esi
jne 0x405cf0
push eax
lea edx, [esp + 0x3c]
push edx
call fcn.00403510
add esp, 8
test eax, eax
jge 0x405c06
lea eax, [esp + 0x4c]
push eax
lea ecx, [esp + 0x64]
push ecx
call fcn.00402160
mov esi, eax
add esp, 8
test esi, esi
jne 0x405cf0
inc dword [esp + 0x30]
mov dx, word [esp + 0x30]
mov cx, word [esp + 0x30]
movsx eax, dx
movsx edx, cx
mov ecx, dword [esp + 0x48]
sub eax, edx
sub eax, 0x7e027eb3
cmp ecx, eax
jne 0x405bc3
fld dword [0x4243ac]
mov dx, word [esp + 0x1c]
movsx eax, dx
mov dword [esp + 0x18], eax
fild dword [esp + 0x18]
faddp st(1)
fsub qword [0x41f680]
call fcn.0040af20
mov dword [esp + 0x34], eax
add dword [esp + 0x1c], ebx
fld dword [0x4243ac]
fsub qword [0x41f358]
fstp dword [0x4243ac]
mov ecx, dword [esp + 0x14]
push ecx
lea edx, [esp + 0x64]
push edx
call fcn.004027a0
mov esi, eax
add esp, 8
test esi, esi
jne 0x405cf0
lea eax, [esp + 0x60]
push eax
lea ecx, [esp + 0x3c]
push ecx
mov edx, ecx
push edx
call fcn.00404f00
mov esi, eax
add esp, 0xc
test esi, esi
jne 0x405cf0
mov eax, dword [esp + 0x74]
add dword [edi + eax - 4], ebx
sub dword [esp + 0x14], 0x20
dec ebp
sub edi, 4
cmp ebp, dword [esp + 0x24]
mov dword [esp + 0x10], ebp
mov dword [esp + 0x2c], edi
jg 0x405810
mov edi, dword [esp + 0x9c]
test edi, edi
je 0x405c4f
lea eax, [esp + 0x6c]
push eax
push edi
call fcn.00402160
mov ecx, dword [esp + 0xac]
mov edx, dword [ecx]
mov eax, dword [esp + 0xb0]
add esp, 8
imul edx, dword [eax]
mov dword [edi], edx
mov edi, dword [esp + 0xa0]
test edi, edi
je 0x405cf0
mov cx, word [esp + 0x20]
movzx eax, word [esp + 0x30]
movsx edx, cx
mov dword [esp + 0x18], edx
movsx ecx, ax
fild dword [esp + 0x18]
mov edx, 0x4e4944fd
sub edx, ecx
mov dword [esp + 0x18], edx
fild dword [esp + 0x18]
fadd dword [0x424ab4]
fsubp st(1)
call fcn.0040af20
mov word [esp + 0x20], ax
mov eax, dword [esp + 0x58]
dec dword [esp + 0x30]
push eax
lea ecx, [esp + 0x3c]
push ecx
call fcn.00401820
lea edx, [esp + 0x40]
push edx
push edi
call fcn.00402160
movzx eax, word [0x42419c]
mov edx, dword [esp + 0xb4]
movsx ecx, ax
add ecx, 0x5a07db1
mov dword [esp + 0x58], ecx
inc word [0x42419c]
mov eax, dword [edx]
push 0
push edi
mov dword [edi], eax
call fcn.00403510
add esp, 0x18
test eax, eax
jne 0x405cf0
mov dword [edi], 1
xor ebp, ebp
push ebp
lea ecx, [esp + 0x80]
push ecx
lea edx, [esp + 0x68]
push edx
lea eax, [esp + 0x78]
push eax
lea ecx, [esp + 0x5c]
push ecx
lea edx, [esp + 0x4c]
push edx
call fcn.00402af0
add esp, 0x18
pop edi
mov eax, esi
pop esi
pop ebp
pop ebx
add esp, 0x88
ret