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

Disassembly:
sub esp, 0xa4
fldz
xor eax, eax
mov word [esp + 0x14], ax
fst qword [esp + 0x74]
push ebx
push ebp
xor ebp, ebp
mov dword [esp + 0xc], ebp
fstp qword [esp + 0x7c]
fldz
xor ecx, ecx
mov word [esp + 0x24], cx
mov dword [esp + 0x18], ebp
xor edx, edx
mov word [esp + 0x28], dx
fst dword [esp + 0x10]
mov word [esp + 0x14], ax
fst dword [esp + 0x30]
fst dword [esp + 0x20]
mov edx, 0x729359e0
fld dword [esp + 0x10]
fstp dword [0x4230b8]
mov ecx, dword [esp + 0xc]
sub edx, ecx
add edx, dword [esp + 0xc]
mov ecx, 1
add dword [esp + 0xc], ecx
cmp edx, 0x33ec5103
jne 0x40551c
mov eax, dword [esp + 0xc]
dec dword [esp + 0xc]
add eax, 0x9d15abc
cmp eax, 0xc1e10618
jne 0x40555b
add dword [esp + 0xc], 0xa6dad8b3
jmp 0x40555b
add dword [0x42347c], ecx
fld dword [0x424a10]
fadd qword [0x41f6d8]
mov edx, dword [0x42347c]
sub edx, 0x16bbceae
mov dword [esp + 0x2c], edx
fadd qword [0x41f6d0]
fild dword [esp + 0x2c]
fcompp
fnstsw ax
test ah, 1
jne 0x40555b
fld dword [0x41f6c8]
fstp dword [esp + 0x20]
mov ebx, dword [esp + 0xbc]
fstp dword [esp + 0x34]
mov dword [esp + 8], ebp
fld dword [esp + 0x34]
fmul qword [0x41f4a0]
mov dword [esp + 0x94], ecx
mov dword [esp + 0x98], ecx
lea ecx, [esp + 0x94]
push ecx
lea eax, [esp + 0x88]
mov dword [esp + 0x88], ebp
fstp dword [esp + 0x38]
push ebx
mov dword [esp + 0xa4], eax
call fcn.00402230
add esp, 8
test eax, eax
jne 0x4055be
pop ebp
mov eax, 0xfffffff4
pop ebx
add esp, 0xa4
ret
fld qword [0x423c98]
push esi
fmul qword [0x41f6c0]
push edi
push ebp
lea edx, [esp + 0x7c]
push edx
fstp qword [0x423c98]
lea eax, [esp + 0x60]
push eax
lea ecx, [esp + 0x70]
push ecx
lea edx, [esp + 0x5c]
push edx
lea eax, [esp + 0x54]
push eax
call fcn.00401470
mov edi, dword [esp + 0xd8]
push ebx
push edi
call fcn.00402860
add esp, 0x20
test eax, eax
jge 0x40566b
fld qword [esp + 0x84]
fsub qword [0x41f6b8]
fsub dword [esp + 0x18]
call fcn.0040b890
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0xb8]
cmp eax, ebp
je 0x40563f
push ebp
push eax
call fcn.00402e10
mov esi, eax
add esp, 8
cmp esi, ebp
jne 0x405ea4
mov eax, dword [esp + 0xbc]
cmp eax, ebp
je 0x40565e
push edi
push eax
call fcn.004041d0
mov esi, eax
add esp, 8
cmp esi, ebp
jne 0x405ea4
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xa4
ret
lea ecx, [esp + 0x40]
push edi
push ecx
call fcn.004041d0
mov esi, eax
add esp, 8
cmp esi, ebp
jne 0x405ea4
lea edx, [esp + 0x4c]
push ebx
push edx
call fcn.004041d0
mov esi, eax
add esp, 8
cmp esi, ebp
jne 0x405ea4
mov eax, 1
mov dword [esp + 0x4c], eax
mov dword [esp + 0x40], eax
mov eax, dword [edi + 4]
add eax, 2
push eax
lea ecx, [esp + 0x68]
push ecx
call fcn.00402070
mov esi, eax
add esp, 8
cmp esi, ebp
jne 0x405ea4
lea edx, [esp + 0x64]
push ebp
push edx
call fcn.00402e10
mov esi, eax
add esp, 8
cmp esi, ebp
jne 0x405ea4
lea eax, [esp + 0x58]
push 2
push eax
call fcn.00402070
mov esi, eax
add esp, 8
cmp esi, ebp
jne 0x405ea4
lea ecx, [esp + 0x78]
push 3
push ecx
call fcn.00402070
mov esi, eax
add esp, 8
cmp esi, ebp
jne 0x405ea4
fld dword [esp + 0x38]
lea edx, [esp + 0x4c]
fld qword [0x423a68]
push edx
fsub qword [0x41f6b0]
fsubp st(1)
fstp dword [esp + 0x3c]
fld qword [0x423a68]
fsub qword [0x41f348]
fstp qword [0x423a68]
call fcn.00401190
add esp, 4
and eax, 0x8000001f
jns 0x405751
dec eax
or eax, 0xffffffe0
inc eax
movzx ecx, word [esp + 0x24]
mov edx, dword [0x424a44]
add ecx, edx
cmp eax, 0x1f
mov word [esp + 0x24], cx
jge 0x4057a5
mov edi, 0x1f
sub edi, eax
lea eax, [esp + 0x40]
push edi
push eax
mov dword [esp + 0x3c], edi
call fcn.00402b40
mov esi, eax
add esp, 8
cmp esi, ebp
jne 0x405ea4
lea ecx, [esp + 0x4c]
push edi
push ecx
call fcn.00402b40
mov esi, eax
add esp, 8
cmp esi, ebp
jne 0x405ea4
jmp 0x4057a9
mov dword [esp + 0x34], ebp
mov edx, dword [esp + 0x20]
mov ebp, dword [esp + 0x44]
imul edx, edx, 0x690a8a9f
mov eax, dword [esp + 0x50]
dec eax
dec ebp
mov edi, ebp
sub edi, eax
mov ebx, edi
mov dword [esp + 0x38], eax
shl ebx, 5
lea eax, [esp + 0x4c]
push ebx
mov dword [esp + 0x24], edx
push eax
call fcn.00402b40
mov cx, word [esp + 0x24]
lea edx, [esp + 0x54]
push edx
lea eax, [esp + 0x4c]
push eax
mov word [esp + 0x3c], cx
call fcn.00402230
add esp, 0x10
test eax, eax
jl 0x405855
lea esp, [esp]
mov eax, dword [esp + 0x6c]
inc dword [eax + edi*4]
lea ecx, [esp + 0x4c]
push ecx
lea edx, [esp + 0x44]
push edx
mov eax, edx
push eax
call fcn.00405220
mov cx, word [0x423388]
movsx edx, cx
sub edx, 0x6d09705b
mov dword [esp + 0x2c], edx
lea eax, [esp + 0x58]
push eax
fild dword [esp + 0x30]
lea ecx, [esp + 0x50]
push ecx
fmul qword [esp + 0x98]
fstp qword [esp + 0x98]
call fcn.00402230
add esp, 0x14
test eax, eax
jge 0x405800
lea edx, [esp + 0x4c]
push ebx
push edx
call fcn.004012e0
mov ecx, dword [esp + 0x40]
add esp, 8
cmp ebp, ecx
mov dword [esp + 0x20], ebp
jle 0x405da8
add edi, edi
add edi, edi
add ebx, 0xffffffe0
mov dword [esp + 0x3c], edi
mov dword [esp + 0x14], ebx
jmp 0x405894
mov ecx, dword [esp + 0x38]
mov eax, dword [0x423974]
add eax, 0x5ce6f147
cmp eax, 0x8a509196
jl 0x4058e3
mov dx, word [esp + 0x30]
movsx eax, dx
mov edx, 0x9fded7d0
sub edx, eax
mov dword [esp + 0x10], edx
fild dword [esp + 0x10]
fld dword [0x4231f4]
inc dword [esp + 0x30]
fcompp
fnstsw ax
test ah, 5
jp 0x4058e3
dec dword [esp + 0x2c]
mov ax, word [esp + 0x24]
mov dx, word [esp + 0x2c]
fld dword [esp + 0x18]
fstp st(0)
mov eax, dword [esp + 0x48]
mov edx, dword [eax + ebp*4]
lea ebx, [eax + ebp*4]
mov eax, dword [esp + 0x54]
cmp edx, dword [eax + ecx*4]
jb 0x405907
mov eax, dword [esp + 0x6c]
mov dword [edi + eax - 4], 0xffffffff
jmp 0x405a81
mov esi, dword [eax + ecx*4]
mov eax, dword [ebx]
mov edx, 0x13d2
mov word [esp + 0x30], dx
mov edx, 0xffff917b
mov word [esp + 0x30], dx
mov edi, esi
xor edx, edx
shr edi, 0x10
div edi
mov ebp, eax
mov ax, word [esp + 0x2c]
movsx ecx, ax
mov dword [esp + 0x10], ecx
fild dword [esp + 0x10]
fsub dword [esp + 0x28]
call fcn.0040b890
mov edx, ebp
imul edx, edi
mov word [esp + 0x2c], ax
fld dword [esp + 0x28]
mov ecx, dword [ebx]
movzx eax, word [ebx - 2]
fld1
fadd st(1), st(0)
sub ecx, edx
fxch st(1)
shl ecx, 0x10
or ecx, eax
movzx edx, si
fstp dword [esp + 0x28]
mov eax, ebp
imul eax, edx
mov dword [0x423d48], 0x38160aad
cmp ecx, eax
jae 0x4059b9
fld dword [0x423e10]
add ecx, esi
fld dword [esp + 0x18]
mov dx, word [esp + 0x24]
movsx edx, dx
mov dword [esp + 0x10], edx
dec ebp
fild dword [esp + 0x10]
faddp st(1)
fsubp st(1)
fstp dword [0x423e10]
dec dword [esp + 0x24]
cmp ecx, esi
jb 0x4059b9
cmp ecx, eax
jae 0x4059b9
add ecx, esi
dec ebp
cmp ecx, esi
jae 0x4059ae
sub ecx, eax
mov eax, ecx
xor edx, edx
div edi
mov edx, eax
imul eax, edi
sub ecx, eax
movzx eax, word [ebx - 4]
shl ecx, 0x10
or ecx, eax
movzx edi, si
mov eax, edx
imul eax, edi
cmp ecx, eax
jae 0x405a15
inc dword [esp + 0x24]
mov di, word [esp + 0x24]
movsx edi, di
add edi, 0x59f20113
mov dword [esp + 0x10], edi
add ecx, esi
dec edx
fild dword [esp + 0x10]
fadd dword [0x423274]
fstp dword [0x423274]
cmp ecx, esi
jb 0x405a15
cmp ecx, eax
jae 0x405a15
add ecx, esi
dec edx
cmp ecx, esi
jae 0x405a0a
fld dword [esp + 0x18]
fsubr qword [0x41f6a8]
fadd qword [0x41f6a0]
fcomp qword [0x41f698]
fnstsw ax
fadd dword [esp + 0x18]
fstp dword [esp + 0x18]
test ah, 0x41
jp 0x405a58
mov cx, word [esp + 0x24]
movsx eax, cx
add eax, 0x4fb21ef1
cmp eax, 0xe23bd19b
jne 0x405a58
mov dword [0x423134], 0x92c3f22f
mov ecx, dword [esp + 0x6c]
shl ebp, 0x10
or ebp, edx
mov edx, dword [esp + 0x3c]
mov dword [edx + ecx - 4], ebp
fld qword [0x423d10]
fmul qword [0x41f690]
mov ebp, dword [esp + 0x20]
mov edi, edx
fstp qword [0x423d10]
fld dword [0x423e4c]
fadd dword [esp + 0x18]
fmul dword [esp + 0x18]
mov eax, dword [esp + 0x6c]
inc dword [edi + eax - 4]
fstp dword [esp + 0x18]
jmp 0x405aa0
mov eax, dword [esp + 0x6c]
dec dword [edi + eax - 4]
lea eax, [esp + 0x58]
push 0
push eax
call fcn.00402e10
mov esi, eax
add esp, 8
test esi, esi
jne 0x405ea2
mov ecx, dword [esp + 0x38]
cmp ecx, 1
jl 0x405ad2
mov edx, dword [esp + 0x54]
mov eax, dword [edx + ecx*4 - 4]
mov edx, dword [esp + 0x60]
mov dword [edx], eax
mov eax, dword [esp + 0x54]
mov ecx, dword [eax + ecx*4]
mov edx, dword [esp + 0x60]
mov dword [edx + 4], ecx
mov eax, dword [esp + 0x6c]
mov ecx, dword [edi + eax - 4]
push ecx
lea edx, [esp + 0x5c]
push edx
mov eax, edx
push eax
call fcn.00405310
mov esi, eax
add esp, 0xc
test esi, esi
jne 0x405ea2
push eax
lea ecx, [esp + 0x7c]
push ecx
call fcn.00402e10
mov esi, eax
add esp, 8
test esi, esi
jne 0x405ea2
or ecx, 0xffffffff
add word [0x42317c], cx
mov dx, word [0x42317c]
movsx eax, dx
sub eax, 0x6591d558
mov dword [esp + 0x10], eax
fild dword [esp + 0x10]
fld qword [0x4239a0]
fsub qword [0x41f688]
fcompp
fnstsw ax
test ah, 5
jp 0x405b9e
fld qword [0x4231a0]
fsub qword [0x41f348]
fstp qword [0x4231a0]
fld qword [0x4231a0]
fadd qword [0x41f680]
fcomp qword [0x41f678]
fnstsw ax
test ah, 0x44
jp 0x405b9e
add dword [0x423054], ecx
mov ecx, dword [0x423054]
mov dword [esp + 0x10], ecx
fild dword [esp + 0x10]
fadd dword [esp + 0x28]
fstp dword [esp + 0x28]
cmp ebp, 2
jge 0x405ba7
xor eax, eax
jmp 0x405baf
mov edx, dword [esp + 0x48]
mov eax, dword [edx + ebp*4 - 8]
cmp ebp, 1
mov ecx, dword [esp + 0x80]
mov dword [ecx], eax
jge 0x405bc1
xor eax, eax
jmp 0x405bc9
mov edx, dword [esp + 0x48]
mov eax, dword [edx + ebp*4 - 4]
mov ecx, dword [esp + 0x80]
mov dword [ecx + 4], eax
mov edx, dword [esp + 0x48]
mov eax, dword [edx + ebp*4]
mov ecx, dword [esp + 0x80]
lea edx, [esp + 0x78]
mov dword [ecx + 8], eax
push edx
lea eax, [esp + 0x5c]
push eax
call fcn.00402230
add esp, 8
test eax, eax
jg 0x405aa0
movzx ecx, word [esp + 0x1c]
mov edx, dword [esp + 0x6c]
imul ecx, ecx, 0x805d4936
mov eax, dword [edi + edx - 4]
mov word [esp + 0x1c], cx
push eax
lea ecx, [esp + 0x50]
push ecx
lea edx, [esp + 0x60]
push edx
call fcn.00405310
mov esi, eax
add esp, 0xc
test esi, esi
jne 0x405ea2
mov ax, word [esp + 0x30]
mov edx, dword [esp + 0x14]
movsx ecx, ax
push edx
lea eax, [esp + 0x5c]
add ecx, 0x553adeb4
push eax
mov dword [0x423190], ecx
call fcn.00402b40
mov esi, eax
add esp, 8
test esi, esi
jne 0x405ea2
lea ecx, [esp + 0x58]
push ecx
lea edx, [esp + 0x44]
push edx
mov eax, edx
push eax
call fcn.00405220
mov esi, eax
add esp, 0xc
test esi, esi
jne 0x405ea2
fld dword [esp + 0x28]
xor ebx, ebx
fsub qword [0x41f670]
mov eax, 1
mov dword [esp + 0x90], eax
mov dword [esp + 0x94], eax
fstp dword [esp + 0x28]
lea edx, [esp + 0x90]
fldz
push edx
fstp dword [esp + 0x24]
lea eax, [esp + 0x44]
mov dword [esp + 0x74], ebx
fld dword [esp + 0x24]
fmul qword [0x41f4a0]
lea ecx, [esp + 0x74]
mov dword [esp + 0x74], ebx
push eax
mov dword [esp + 0xa0], ecx
fstp dword [esp + 0x28]
call fcn.00402230
add esp, 8
test eax, eax
jge 0x405d8d
lea ecx, [esp + 0x4c]
push ecx
lea edx, [esp + 0x5c]
push edx
call fcn.004041d0
mov esi, eax
add esp, 8
cmp esi, ebx
jne 0x405ea2
mov eax, dword [esp + 0x14]
push eax
lea ecx, [esp + 0x5c]
push ecx
call fcn.00402b40
mov esi, eax
add esp, 8
test esi, esi
jne 0x405ea2
movzx edx, word [esp + 0x30]
sub edx, 0x3cbbc1c5
lea eax, [esp + 0x58]
push eax
lea ecx, [esp + 0x44]
mov word [esp + 0x34], dx
push ecx
mov edx, ecx
push edx
call fcn.00405380
mov esi, eax
add esp, 0xc
test esi, esi
jne 0x405ea2
fld dword [0x4231f4]
mov ax, word [0x423210]
mov dx, word [esp + 0x2c]
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]
fmulp st(1)
call fcn.0040b890
mov word [esp + 0x2c], ax
mov eax, dword [esp + 0x6c]
dec dword [edi + eax - 4]
sub dword [esp + 0x14], 0x20
dec ebp
sub edi, 4
cmp ebp, dword [esp + 0x38]
mov dword [esp + 0x20], ebp
mov dword [esp + 0x3c], edi
jg 0x405890
mov edi, dword [esp + 0xb8]
test edi, edi
je 0x405dd6
lea ecx, [esp + 0x64]
push ecx
push edi
call fcn.004041d0
mov edx, dword [esp + 0xc8]
mov eax, dword [edx]
mov ecx, dword [esp + 0xcc]
add esp, 8
imul eax, dword [ecx]
mov dword [edi], eax
mov edi, dword [esp + 0xbc]
test edi, edi
je 0x405ea2
mov edx, dword [esp + 0x34]
push edx
lea eax, [esp + 0x44]
push eax
call fcn.004012e0
lea ecx, [esp + 0x48]
push ecx
push edi
call fcn.004041d0
mov edx, dword [esp + 0xd0]
mov eax, dword [edx]
mov dword [edi], eax
dec word [0x4230d8]
fld dword [esp + 0x38]
mov cx, word [esp + 0x3c]
mov ax, word [0x4230d8]
movsx edx, cx
mov dword [esp + 0x20], edx
movsx ecx, ax
fild dword [esp + 0x20]
mov dword [esp + 0x20], ecx
xor eax, eax
faddp st(1)
lea edx, [esp + 0x84]
fild dword [esp + 0x20]
fsubp st(1)
fadd dword [esp + 0x28]
fstp dword [esp + 0x28]
fldz
fstp dword [esp + 0x44]
mov dword [esp + 0x84], eax
fld dword [esp + 0x44]
fmul qword [0x41f4a0]
mov dword [esp + 0x84], eax
mov eax, 1
mov dword [esp + 0xb8], eax
mov dword [esp + 0xbc], eax
lea eax, [esp + 0xb8]
fstp dword [esp + 0x44]
push eax
push edi
mov dword [esp + 0xc8], edx
call fcn.00402230
add esp, 0x18
test eax, eax
jne 0x405ea2
mov dword [edi], 1
xor ebp, ebp
push ebp
lea ecx, [esp + 0x7c]
push ecx
lea edx, [esp + 0x60]
push edx
lea eax, [esp + 0x70]
push eax
lea ecx, [esp + 0x5c]
push ecx
lea edx, [esp + 0x54]
push edx
call fcn.00403390
fld qword [0x423138]
fadd qword [0x41f348]
add esp, 0x18
fstp qword [0x423138]
fld qword [0x423138]
mov ax, word [0x423178]
inc word [0x423178]
movsx ecx, ax
mov dword [esp + 0x10], ecx
fild dword [esp + 0x10]
faddp st(1)
fcomp qword [0x41f668]
fnstsw ax
test ah, 5
jp 0x405f15
movzx edx, word [esp + 0x1c]
imul edx, edx, 0x18a2afce
mov word [esp + 0x1c], dx
pop edi
mov eax, esi
pop esi
pop ebp
pop ebx
add esp, 0xa4
ret