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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x41e920
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0xbc
mov eax, dword [ebp + 0x18]
mov edx, dword [ebp + 0x10]
push ebx
mov dword [esp + 0x18], ecx
mov ebx, dword [eax + 8]
mov ecx, dword [ebp + 0x1c]
fild dword [ebp + 0x14]
lea eax, [edx + 3]
push esi
cdq
fmul qword [0x4210c0]
and edx, 3
push edi
mov edi, dword [ecx + 8]
add eax, edx
mov esi, eax
mov dword [esp + 0x60], ebx
sar esi, 2
mov dword [esp + 0x50], edi
shl esi, 2
call sub.MSVCRT.dll__ftol
mov dword [esp + 0x4c], eax
mov eax, edi
imul eax, ebx
shl eax, 3
push eax
mov dword [esp + 0x3c], eax
call sub.MFC42.DLL_operatornew
xor ecx, ecx
add esp, 4
cmp ebx, ecx
mov dword [esp + 0x34], eax
mov dword [esp + 0x24], ecx
jle 0x414bb4
mov dword [esp + 0x1c], ecx
cmp edi, ecx
mov dword [esp + 0x2c], ecx
jle 0x414b99
mov eax, dword [ebp + 0x18]
mov edx, dword [esp + 0x24]
mov edi, dword [esp + 0x2c]
mov dword [esp + 0x64], 0
mov ecx, dword [eax + 4]
mov dword [esp + 0x68], 0
fld qword [0x4206c0]
lea eax, [ecx + edx*8]
mov dword [esp + 0x44], 0
fld qword [0x4206c0]
mov edx, dword [eax + 4]
mov ecx, dword [eax]
mov dword [esp + 0x78], edx
mov edx, ecx
mov dword [esp + 0x84], edx
mov edx, dword [eax + 4]
mov eax, dword [ebp + 0x1c]
mov dword [esp + 0x88], edx
add edx, 0xfffffff9
mov dword [esp + 0x74], ecx
mov eax, dword [eax + 4]
imul edx, esi
mov ebx, dword [eax + edi*8 + 4]
lea eax, [eax + edi*8]
mov dword [esp + 0x80], ebx
add edx, ecx
mov edi, dword [eax]
mov eax, dword [eax + 4]
mov dword [esp + 0x9c], eax
add eax, 0xfffffff9
imul eax, esi
mov ecx, dword [ebp + 8]
mov dword [esp + 0x7c], edi
mov ebx, edi
add eax, edi
mov edi, dword [ebp + 0xc]
mov dword [esp + 0x98], ebx
add ecx, edx
mov dword [esp + 0x48], 0
lea ebx, [eax + edi]
mov dword [esp + 0x3c], 0
mov dword [esp + 0x40], 0
mov edi, ebx
mov dword [esp + 0x28], ecx
mov dword [esp + 0x30], 0xf
mov eax, 0xfffffff9
xor edx, edx
mov dl, byte [ecx + eax]
mov dword [esp + 0xc], edx
xor edx, edx
fild dword [esp + 0xc]
mov dl, byte [edi + eax]
inc eax
mov dword [esp + 0xc], edx
cmp eax, 7
faddp st(2)
fild dword [esp + 0xc]
faddp st(1)
jle 0x4149c1
mov eax, dword [esp + 0x30]
add ecx, esi
add edi, esi
dec eax
mov dword [esp + 0x30], eax
jne 0x4149bc
fstp qword [esp + 0x54]
mov eax, dword [esp + 0x28]
add ebx, 0xfffffff9
fmul qword [0x4210b8]
add eax, 0xfffffff9
mov dword [esp + 0x30], ebx
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], 0xf
fstp qword [esp + 0x6c]
fld qword [esp + 0x54]
fmul qword [0x4210b8]
fstp qword [esp + 0x54]
mov ebx, dword [esp + 0x10]
mov edi, dword [esp + 0x30]
mov dword [esp + 0x28], 0xf
xor ecx, ecx
mov cl, byte [ebx]
mov dword [esp + 0x14], ecx
fild dword [esp + 0x14]
fsub qword [esp + 0x6c]
fst qword [esp + 0x8c]
fld qword [0x420560]
call sub.MSVCRT.dll__CIpow
fadd qword [esp + 0x64]
xor edx, edx
mov dl, byte [edi]
mov dword [esp + 0x14], edx
fstp qword [esp + 0x64]
fild dword [esp + 0x14]
fsub qword [esp + 0x54]
fst qword [esp + 0x14]
fld qword [0x420560]
call sub.MSVCRT.dll__CIpow
fadd qword [esp + 0x44]
mov eax, dword [esp + 0x28]
inc edi
inc ebx
dec eax
mov dword [esp + 0x28], eax
fstp qword [esp + 0x44]
fld qword [esp + 0x14]
fmul qword [esp + 0x8c]
fadd qword [esp + 0x3c]
fstp qword [esp + 0x3c]
jne 0x414a3a
mov edx, dword [esp + 0x10]
mov ecx, dword [esp + 0x30]
mov eax, dword [esp + 0xc]
add edx, esi
add ecx, esi
dec eax
mov dword [esp + 0x10], edx
mov dword [esp + 0x30], ecx
mov dword [esp + 0xc], eax
jne 0x414a2a
fld qword [esp + 0x64]
fsqrt
mov eax, dword [esp + 0x88]
mov edx, dword [esp + 0x9c]
sub eax, edx
mov dword [esp + 0x14], eax
fld qword [esp + 0x44]
fsqrt
fmul st(1)
fmul qword [0x4210b0]
fdivr qword [esp + 0x3c]
fstp qword [esp + 0x6c]
fstp st(0)
fild dword [esp + 0x14]
fld qword [0x420560]
call sub.MSVCRT.dll__CIpow
mov eax, dword [esp + 0x74]
mov ecx, dword [esp + 0x7c]
sub eax, ecx
mov dword [esp + 0x14], eax
fild dword [esp + 0x14]
fld qword [0x420560]
call sub.MSVCRT.dll__CIpow
mov eax, dword [esp + 0x4c]
mov edx, dword [esp + 0x1c]
mov ecx, eax
imul ecx, eax
faddp st(1)
neg ecx
shl ecx, 1
mov dword [esp + 0x14], ecx
mov eax, dword [esp + 0x2c]
fild dword [esp + 0x14]
mov ecx, dword [esp + 0x34]
add edx, eax
inc eax
fdivr st(1)
mov dword [esp + 0x2c], eax
fldl2e
fmulp st(1)
fld st(0)
frndint
fxch st(1)
fsub st(1)
f2xm1
fld1
faddp st(1)
fscale
fstp st(1)
fld qword [esp + 0x6c]
fadd qword [0x420558]
fmulp st(1)
fmul qword [0x420690]
fstp qword [ecx + edx*8]
mov ecx, dword [esp + 0x50]
cmp eax, ecx
fstp st(0)
jl 0x4148f9
mov ebx, dword [esp + 0x60]
mov edi, ecx
xor ecx, ecx
mov eax, dword [esp + 0x24]
mov edx, dword [esp + 0x1c]
inc eax
add edx, edi
cmp eax, ebx
mov dword [esp + 0x24], eax
mov dword [esp + 0x1c], edx
jl 0x4148ed
mov edx, ebx
imul edx, ebx
shl edx, 3
push edx
call sub.MFC42.DLL_operatornew
mov esi, eax
mov eax, dword [esp + 0x3c]
push eax
mov dword [esp + 0x30], esi
call sub.MFC42.DLL_operatornew
mov ecx, edi
mov dword [esp + 0x14], eax
imul ecx, edi
shl ecx, 3
push ecx
call sub.MFC42.DLL_operatornew
add esp, 0xc
cmp ebx, edi
mov dword [esp + 0x2c], eax
mov ecx, ebx
jg 0x414bf3
mov ecx, edi
mov edx, dword [esp + 0x34]
inc ecx
push ecx
mov ecx, dword [esp + 0x24]
push 0x3ee4f8b5
push 0x88e368f1
push eax
push esi
push edi
push ebx
push edx
call fcn.004152d0
cmp ebx, edi
mov ecx, ebx
jl 0x414c19
mov ecx, edi
xor esi, esi
cmp ecx, esi
jle 0x414c38
mov eax, dword [esp + 0x34]
lea edx, [edi*8 + 8]
mov dword [eax], esi
mov dword [eax + 4], 0x3ff00000
add eax, edx
dec ecx
jne 0x414c2a
mov eax, dword [esp + 0x38]
push eax
call sub.MFC42.DLL_operatornew
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x38]
add esp, 4
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x28]
push ecx
mov ecx, dword [esp + 0x24]
push edi
push ebx
push ebx
push edx
push eax
call fcn.00416960
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x2c]
mov eax, dword [esp + 0xc]
push ecx
mov ecx, dword [esp + 0x24]
push edi
push edi
push ebx
push edx
push eax
call fcn.00416960
mov eax, 0x421078
mov dword [esp + 0xa4], esi
mov dword [esp + 0xa0], eax
mov dword [esp + 0xb0], esi
mov dword [esp + 0xac], esi
mov dword [esp + 0xa8], esi
mov dword [esp + 0xd0], esi
mov dword [esp + 0xb4], eax
mov dword [esp + 0xb8], esi
mov dword [esp + 0xc4], esi
mov dword [esp + 0xc0], esi
mov dword [esp + 0xbc], esi
test ebx, ebx
mov byte [esp + 0xd0], 1
mov dword [esp + 0x24], esi
jle 0x414f30
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x1c], ecx
fld qword [0x4210a8]
xor edx, edx
mov dword [esp + 0x3c], 0
test edi, edi
mov dword [esp + 0x40], 0xc09f3c00
jle 0x414d37
mov ecx, dword [esp + 0x1c]
fld qword [ecx]
fcomp qword [esp + 0x3c]
fnstsw ax
test ah, 0x41
jne 0x414d2f
mov esi, dword [ecx + 4]
mov eax, dword [ecx]
mov dword [esp + 0x40], esi
mov esi, dword [esp + 0x24]
mov dword [esp + 0x3c], eax
mov dword [esp + 0x38], edx
inc edx
add ecx, 8
cmp edx, edi
jl 0x414d0d
mov edx, dword [esp + 0x38]
mov eax, dword [esp + 0x10]
xor ecx, ecx
lea edx, [eax + edx*8]
fcom qword [edx]
fnstsw ax
test ah, 1
je 0x414d55
fstp st(0)
fld qword [edx]
mov dword [esp + 0x4c], ecx
lea eax, [edi*8]
inc ecx
add edx, eax
cmp ecx, ebx
jl 0x414d44
cmp dword [esp + 0x4c], esi
fstp st(0)
jne 0x414f12
mov ecx, dword [ebp + 0x18]
mov ebx, dword [ebp + 0x20]
push 0xffffffffffffffff
mov edx, dword [ecx + 4]
mov eax, dword [edx + esi*8]
mov dword [esp + 0x58], eax
mov ecx, dword [edx + esi*8 + 4]
mov esi, dword [ebx + 8]
mov dword [esp + 0x5c], ecx
mov ecx, ebx
lea edx, [esi + 1]
push edx
call fcn.00416be0
mov eax, dword [ebx + 4]
mov ecx, dword [esp + 0x54]
mov edx, dword [esp + 0x58]
mov dword [eax + esi*8], ecx
mov dword [eax + esi*8 + 4], edx
mov eax, dword [ebp + 0x1c]
mov esi, dword [ebp + 0x24]
mov ecx, dword [eax + 4]
mov eax, dword [esp + 0x38]
mov edx, dword [ecx + eax*8]
mov dword [esp + 0x44], edx
mov eax, dword [ecx + eax*8 + 4]
mov ecx, dword [esi + 8]
mov ebx, ecx
mov dword [esp + 0x48], eax
mov eax, dword [esi + 4]
mov dword [esp + 0xc], ebx
inc ebx
test ebx, ebx
jne 0x414dfb
test eax, eax
je 0x414dee
push eax
mov dword [esp + 0x18], ecx
call sub.MFC42.DLL_operatordelete
add esp, 4
mov dword [esi + 4], 0
xor eax, eax
mov dword [esi + 0xc], eax
mov dword [esi + 8], eax
jmp 0x414ef4
test eax, eax
jne 0x414e24
lea ecx, [ebx*8]
push ecx
call sub.MFC42.DLL_operatornew
add esp, 4
mov dword [esi + 4], eax
push ebx
push eax
call fcn.00416d10
mov dword [esi + 0xc], ebx
mov dword [esi + 8], ebx
jmp 0x414ef4
cmp ebx, dword [esi + 0xc]
jg 0x414e53
cmp ecx, ebx
jge 0x414e43
mov edx, ebx
lea eax, [eax + ecx*8]
sub edx, ecx
push edx
push eax
call fcn.00416d10
mov dword [esi + 8], ebx
jmp 0x414ef4
jle 0x414e4b
sub ecx, ebx
mov dword [esp + 0x14], ecx
mov dword [esi + 8], ebx
jmp 0x414ef4
mov eax, dword [esi + 0x10]
test eax, eax
jne 0x414e7d
mov eax, ecx
cdq
and edx, 7
add eax, edx
sar eax, 3
cmp eax, 4
jge 0x414e71
mov eax, 4
jmp 0x414e7d
cmp eax, 0x400
jle 0x414e7d
mov eax, 0x400
mov ecx, dword [esi + 0xc]
add eax, ecx
cmp ebx, eax
mov dword [esp + 0x20], eax
jl 0x414e8e
mov dword [esp + 0x20], ebx
mov ecx, dword [esp + 0x20]
lea edx, [ecx*8]
push edx
call sub.MFC42.DLL_operatornew
mov ecx, dword [esi + 8]
mov esi, dword [esi + 4]
shl ecx, 3
mov edx, ecx
mov edi, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
mov edx, ebx
and ecx, 3
add esp, 4
rep movsb byte es:[edi], byte [esi]
mov esi, dword [ebp + 0x24]
mov dword [esp + 0x14], eax
mov ecx, dword [esi + 8]
sub edx, ecx
lea eax, [eax + ecx*8]
push edx
push eax
call fcn.00416d10
mov ecx, dword [esi + 4]
push ecx
call sub.MFC42.DLL_operatordelete
mov edx, dword [esp + 0x18]
mov eax, dword [esp + 0x24]
mov edi, dword [esp + 0x54]
add esp, 4
mov dword [esi + 4], edx
mov dword [esi + 8], ebx
mov dword [esi + 0xc], eax
mov ecx, dword [esi + 4]
mov eax, dword [esp + 0xc]
mov edx, dword [esp + 0x44]
mov esi, dword [esp + 0x24]
mov ebx, dword [esp + 0x60]
mov dword [ecx + eax*8], edx
mov edx, dword [esp + 0x48]
mov dword [ecx + eax*8 + 4], edx
mov ecx, dword [esp + 0x1c]
lea eax, [edi*8]
inc esi
add ecx, eax
cmp esi, ebx
mov dword [esp + 0x24], esi
mov dword [esp + 0x1c], ecx
jl 0x414ced
mov eax, dword [esp + 0x28]
push eax
call sub.MFC42.DLL_operatordelete
mov ecx, dword [esp + 0x30]
push ecx
call sub.MFC42.DLL_operatordelete
mov edx, dword [esp + 0x3c]
push edx
call sub.MFC42.DLL_operatordelete
mov eax, dword [esp + 0x1c]
push eax
call sub.MFC42.DLL_operatordelete
mov ecx, dword [esp + 0xd8]
add esp, 0x10
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x20