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

Disassembly:
mov eax, dword [esp + 0x14]
sub esp, 0x5f8
cmp eax, 0x3a
nop
push ebx
push esi
push edi
push ebp
jge 0x10004074
mov esi, dword [esp + 0x614]
push eax
lea eax, [esp + 0x6c]
push esi
mov dword [esp + 0x3c], 1
push eax
call fcn.100026a0
add esp, 0xc
jmp 0x1000408e
lea edi, [esp + 0x68]
mov esi, dword [esp + 0x614]
mov dword [esp + 0x34], 0
mov ecx, 0x3c
rep movsd dword es:[edi], dword [esi]
xor esi, esi
xor edx, edx
xor ecx, ecx
fld dword [esp + edx*4 + 0x6c]
fmul dword [esp + 0x6c]
fld dword [esp + ecx + 0x68]
fmul dword [esp + 0x68]
fld dword [esp + edx*4 + 0x70]
fmul dword [esp + 0x70]
fxch st(1)
faddp st(2)
fld dword [esp + edx*4 + 0x70]
fmul dword [esp + 0x68]
fxch st(1)
faddp st(2)
fld dword [esp + edx*4 + 0x74]
fmul dword [esp + 0x74]
fld dword [esp + edx*4 + 0x74]
fmul dword [esp + 0x6c]
fxch st(1)
fadd st(3)
fxch st(1)
fadd st(2)
lea eax, [edx + 1]
mov dword [esp + 0x428], esi
inc eax
inc eax
inc eax
fld dword [esp + eax*4 + 0x68]
fmul dword [esp + 0x78]
fld dword [esp + eax*4 + 0x68]
fmul dword [esp + 0x70]
fxch st(1)
fadd st(3)
fxch st(1)
fadd st(2)
inc eax
fld dword [esp + eax*4 + 0x64]
fmul dword [esp + 0x68]
fstp dword [esp + 0x158]
fld dword [esp + eax*4 + 0x68]
fmul dword [esp + 0x7c]
fadd st(2)
fstp dword [esp + 0x338]
fld dword [esp + eax*4 + 0x68]
fmul dword [esp + 0x74]
faddp st(1)
fld dword [esp + eax*4 + 0x68]
fmul dword [esp + 0x6c]
fxch st(2)
fstp st(0)
fstp dword [esp + 0x248]
fadd dword [esp + 0x158]
fxch st(1)
fstp st(0)
fxch st(3)
fstp st(0)
fstp st(0)
fstp st(0)
fstp dword [esp + 0x158]
lea eax, [edx + 6]
cmp eax, 0x3c
jge 0x100041cf
fld dword [esp + 0x248]
fld dword [esp + 0x158]
fld dword [esp + 0x428]
fld dword [esp + 0x338]
mov edi, eax
lea eax, [esp + eax*4 + 0x68]
sub edi, edx
lea ebx, [esp + edi*4 + 0x68]
fld dword [ebx]
fmul dword [eax]
fld dword [ebx - 8]
fmul dword [eax]
fxch st(1)
faddp st(2)
fld dword [ebx - 0x10]
fmul dword [eax]
fxch st(1)
faddp st(5)
fld dword [ebx - 0x18]
fmul dword [eax]
fxch st(1)
faddp st(4)
add ebx, 4
add eax, 4
faddp st(2)
lea edi, [esp + 0x158]
cmp eax, edi
jb 0x10004181
fstp dword [esp + 0x338]
fstp dword [esp + 0x428]
fstp dword [esp + 0x158]
fstp dword [esp + 0x248]
mov eax, dword [esp + 0x338]
mov ebx, dword [esp + 0x248]
mov dword [esp + ecx + 0x518], eax
mov ebp, dword [esp + 0x158]
mov dword [esp + ecx + 0x520], ebx
mov eax, dword [esp + 0x428]
mov dword [esp + ecx + 0x528], ebp
add ecx, 0x20
add edx, 8
cmp ecx, 0xe0
mov dword [esp + ecx + 0x510], eax
jl 0x10004094
fld dword [esp + edx*4 + 0x6c]
fmul dword [esp + 0x6c]
fld dword [esp + edx*4 + 0x68]
fmul dword [esp + 0x68]
fld dword [esp + edx*4 + 0x70]
fmul dword [esp + 0x70]
fxch st(1)
faddp st(2)
fld dword [esp + edx*4 + 0x70]
fmul dword [esp + 0x68]
fxch st(1)
faddp st(2)
fld dword [esp + edx*4 + 0x74]
fmul dword [esp + 0x74]
fld dword [esp + edx*4 + 0x74]
fmul dword [esp + 0x6c]
fxch st(1)
fadd st(3)
fxch st(1)
fadd st(2)
lea eax, [edx + 1]
lea esi, [esp + 0x428]
fxch st(1)
fstp dword [esp + edx*4 + 0x518]
inc eax
mov ecx, dword [esp + 0x610]
fxch st(2)
fstp st(0)
fstp st(0)
inc eax
mov dword [esp + 0x14], ecx
fstp dword [esp + edx*4 + 0x520]
xor edx, edx
fld dword [ecx + edx*4 + 4]
fmul dword [esp + 0x6c]
lea eax, [edx + 1]
mov edi, dword [esp + 0x14]
mov dword [esp + 0x158], 0
fld dword [edi]
fmul dword [esp + 0x68]
fld dword [ecx + eax*4 + 4]
fmul dword [esp + 0x70]
fxch st(1)
faddp st(2)
fld dword [ecx + eax*4 + 4]
fmul dword [esp + 0x68]
fxch st(1)
faddp st(2)
fld dword [ecx + eax*4 + 8]
fmul dword [esp + 0x74]
fld dword [ecx + eax*4 + 8]
fmul dword [esp + 0x6c]
fxch st(1)
fadd st(3)
fxch st(1)
fadd st(2)
inc eax
inc eax
inc eax
fld dword [ecx + eax*4]
fmul dword [esp + 0x78]
fld dword [ecx + eax*4]
fmul dword [esp + 0x70]
fxch st(1)
fadd st(3)
fxch st(1)
fadd st(2)
inc eax
fld dword [ecx + eax*4 - 4]
fmul dword [esp + 0x68]
fstp dword [esp + 0x10]
fld dword [ecx + eax*4]
fmul dword [esp + 0x7c]
fadd st(2)
fstp dword [esp + 0x338]
fld dword [ecx + eax*4]
fmul dword [esp + 0x74]
lea ebx, [edx + 6]
cmp ebx, 0x3c
faddp st(1)
fxch st(1)
fstp st(0)
fxch st(2)
fstp st(0)
fstp st(0)
fstp dword [esp + 0x248]
fstp st(0)
fstp st(0)
fld dword [ecx + eax*4]
fmul dword [esp + 0x6c]
fadd dword [esp + 0x10]
fstp dword [esp + 0x10]
jge 0x100043b5
fld dword [esp + 0x158]
fld dword [esp + 0x338]
fld dword [esp + 0x248]
fld dword [esp + 0x10]
mov eax, ebx
lea ebp, [ecx + ebx*4]
sub eax, edx
lea edi, [esp + eax*4 + 0x68]
mov eax, 0x3c
sub eax, ebx
fld dword [edi]
fmul dword [ebp]
fld dword [edi - 8]
fmul dword [ebp]
fxch st(1)
faddp st(4)
fld dword [edi - 0x10]
fmul dword [ebp]
fxch st(1)
faddp st(3)
fld dword [edi - 0x18]
fmul dword [ebp]
fxch st(1)
faddp st(2)
add edi, 4
add ebp, 4
faddp st(4)
dec eax
jne 0x1000436e
fstp dword [esp + 0x10]
fstp dword [esp + 0x248]
fstp dword [esp + 0x338]
fstp dword [esp + 0x158]
mov eax, dword [esp + 0x338]
mov ebx, dword [esp + 0x248]
mov dword [esi], eax
mov ebp, dword [esp + 0x10]
mov dword [esi + 8], ebx
mov eax, dword [esp + 0x158]
mov dword [esi + 0x10], ebp
add esi, 0x20
mov edi, dword [esp + 0x14]
add edx, 8
add edi, 0x20
mov dword [esi - 8], eax
lea eax, [esp + 0x508]
mov dword [esp + 0x14], edi
cmp esi, eax
jb 0x10004288
fld dword [ecx + edx*4 + 4]
fmul dword [esp + 0x6c]
fld dword [ecx + edx*4]
fmul dword [esp + 0x68]
fld dword [ecx + edx*4 + 8]
fmul dword [esp + 0x70]
fxch st(1)
faddp st(2)
fld dword [ecx + edx*4 + 8]
fmul dword [esp + 0x68]
fxch st(1)
faddp st(2)
fld dword [ecx + edx*4 + 0xc]
fmul dword [esp + 0x74]
fld dword [ecx + edx*4 + 0xc]
fmul dword [esp + 0x6c]
fxch st(1)
fadd st(3)
fxch st(1)
fadd st(2)
lea eax, [edx + 1]
fxch st(2)
fstp st(0)
fstp dword [esp + edx*4 + 0x428]
fxch st(1)
fstp st(0)
inc eax
inc eax
fstp dword [esp + edx*4 + 0x430]
xor edx, edx
mov ecx, edx
mov dword [esp + 0x2c], edx
mov dword [esp + 0x18], 0xbf800000
cmp edx, 0x3c
jge 0x100044a9
mov eax, dword [esp + ecx*4 + 0x428]
test eax, eax
jle 0x10004479
mov dword [esp + 0x14], eax
jmp 0x10004486
fld dword [esp + ecx*4 + 0x428]
fchs
fstp dword [esp + 0x14]
fld dword [esp + 0x18]
fcomp dword [esp + 0x14]
fnstsw ax
test ah, 0x41
je 0x100044a1
mov eax, dword [esp + 0x14]
mov dword [esp + 0x38], ecx
mov dword [esp + 0x18], eax
add ecx, 2
cmp ecx, 0x3c
jl 0x10004468
mov dword [esp + 0x10], 0x7f7fffff
mov ecx, 0x16
mov dword [esp + 0x20], ecx
fld dword [ecx*4 + 0x1001b028]
fmul dword [esp + 0x518]
fsubr dword [esp + 0x18]
fcom dword [0x100100e0]
fstp dword [esp + 0x14]
fnstsw ax
test ah, 0x41
jne 0x100044e7
mov eax, dword [esp + 0x14]
mov dword [esp + 0x14], eax
jmp 0x100044f1
fld dword [esp + 0x14]
fchs
fstp dword [esp + 0x14]
fld dword [esp + 0x10]
fcomp dword [esp + 0x14]
fnstsw ax
test ah, 0x41
jne 0x1000450c
mov eax, dword [esp + 0x14]
mov dword [esp + 0x20], ecx
mov dword [esp + 0x10], eax
dec ecx
cmp ecx, 1
jge 0x100044ba
mov eax, dword [esp + 0x20]
fld dword [eax*4 + 0x1001b028]
fmul dword [esp + 0x518]
fcomp dword [esp + 0x18]
fnstsw ax
test ah, 0x41
jne 0x10004533
dec dword [esp + 0x20]
mov dword [esp + 0x24], 1
cmp edx, 0x3c
jge 0x1000457e
lea ecx, [edx*4]
xor esi, esi
mov eax, dword [esp + ecx + 0x428]
mov ebx, dword [esp + ecx + 0x430]
mov dword [esp + ecx + 0x248], eax
mov dword [esp + ecx + 0x338], esi
mov dword [esp + ecx + 0x250], ebx
mov dword [esp + ecx + 0x340], esi
add ecx, 0x10
cmp ecx, 0xf0
jl 0x10004549
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x24]
add eax, ecx
mov ebp, dword [esp + 0x38]
dec eax
nop
mov esi, dword [esp + ebp*4 + 0x248]
lea ebx, [ebp*4]
mov ecx, dword [eax*4 + 0x1001b028]
mov dword [esp + 0x30], eax
mov dword [esp + 0x1c], ecx
cmp esi, 0x80000000
ja 0x1000464c
lea edi, [esp + 0x158]
xor eax, eax
mov dword [esp + 0x50], ecx
mov ecx, ebx
shr ecx, 2
rep stosd dword es:[edi], eax
mov ecx, ebx
and ecx, 3
rep stosb byte es:[edi], al
mov eax, dword [esp + 0x38]
xor edi, edi
cmp eax, 0x39
jge 0x1000462a
mov eax, 0x3c
mov ebp, dword [esp + 0x38]
sub eax, ebp
shr eax, 2
lea esi, [esp + 0x68]
lea ecx, [esp + ebx + 0x158]
lea edi, [eax*4]
lea eax, [ebp + eax*4]
mov ebp, dword [esi]
add ecx, 0x10
add esi, 0x10
nop
mov dword [ecx - 0x10], ebp
mov ebp, dword [esi - 0xc]
mov dword [ecx - 0xc], ebp
mov ebp, dword [esi - 8]
mov dword [ecx - 8], ebp
mov ebp, dword [esi - 4]
mov dword [ecx - 4], ebp
lea ebp, [esp + 0x23c]
cmp ecx, ebp
jb 0x10004601
cmp eax, 0x3c
jge 0x100046f9
lea esi, [esp + edi*4 + 0x68]
mov ecx, 0x3c
lea edi, [esp + eax*4 + 0x158]
sub ecx, eax
rep movsd dword es:[edi], dword [esi]
jmp 0x100046f9
fld dword [esp + 0x1c]
fchs
lea edi, [esp + 0x158]
xor eax, eax
fstp dword [esp + 0x50]
mov ecx, ebx
shr ecx, 2
rep stosd dword es:[edi], eax
mov ecx, ebx
and ecx, 3
rep stosb byte es:[edi], al
mov eax, dword [esp + 0x38]
xor edi, edi
cmp eax, 0x39
jge 0x100046d1
mov eax, 0x3c
mov ebp, dword [esp + 0x38]
sub eax, ebp
shr eax, 2
lea esi, [esp + 0x68]
lea ecx, [esp + ebx + 0x158]
lea edi, [eax*4]
lea eax, [ebp + eax*4]
fld dword [esi]
fchs
fld dword [esi + 4]
fxch st(1)
fstp dword [ecx]
fchs
fld dword [esi + 8]
fxch st(1)
fstp dword [ecx + 4]
fchs
fld dword [esi + 0xc]
fxch st(1)
fstp dword [ecx + 8]
fchs
add ecx, 0x10
add esi, 0x10
lea ebp, [esp + 0x23c]
fstp dword [ecx - 4]
cmp ecx, ebp
jb 0x1000469c
cmp eax, 0x3c
jge 0x100046f9
lea esi, [esp + edi*4 + 0x68]
lea eax, [esp + eax*4 + 0x158]
fld dword [esi]
fchs
add eax, 4
add esi, 4
lea ecx, [esp + 0x248]
fstp dword [eax - 4]
cmp eax, ecx
jb 0x100046e1
mov dword [esp + ebx + 0x338], 1
mov eax, dword [esp + 0x618]
cmp eax, 1
jle 0x1000497a
lea ecx, [esp + 0x3c]
dec eax
mov dword [esp + 0x14], eax
mov edi, dword [ecx - 4]
mov ebx, edx
mov dword [esp + 0x18], 0xbf800000
mov eax, edi
sub eax, edx
cmp edx, edi
jge 0x100047a1
lea ebp, [esp + eax*4 + 0x518]
lea esi, [edx*4]
mov eax, dword [esp + esi + 0x338]
test eax, eax
jne 0x10004794
fld dword [ecx + 0x14]
fmul dword [ebp]
fsubr dword [esp + esi + 0x248]
fstp dword [esp + 0x10]
mov eax, dword [esp + 0x10]
mov dword [esp + esi + 0x248], eax
test eax, eax
jle 0x10004771
mov dword [esp + 0x10], eax
jmp 0x1000477b
fld dword [esp + 0x10]
fchs
fstp dword [esp + 0x10]
fld dword [esp + 0x18]
fcomp dword [esp + 0x10]
fnstsw ax
test ah, 1
je 0x10004794
mov eax, dword [esp + 0x10]
mov dword [ecx], ebx
mov dword [esp + 0x18], eax
add esi, 8
add ebx, 2
sub ebp, 8
cmp ebx, edi
jl 0x10004740
cmp edi, 0x3c
jge 0x1000481a
lea esi, [esp + 0x518]
lea ebx, [edi*4]
xor ebp, ebp
mov eax, dword [esp + ebx + 0x338]
test eax, eax
jne 0x10004809
fld dword [ecx + 0x14]
fmul dword [esi]
fsubr dword [esp + ebx + 0x248]
fstp dword [esp + 0x10]
mov eax, dword [esp + 0x10]
mov dword [esp + ebx + 0x248], eax
test eax, eax
jle 0x100047e6
mov dword [esp + 0x10], eax
jmp 0x100047f0
fld dword [esp + 0x10]
fchs
fstp dword [esp + 0x10]
fld dword [esp + 0x18]
fcomp dword [esp + 0x10]
fnstsw ax
test ah, 1
je 0x10004809
mov eax, dword [esp + 0x10]
mov dword [ecx], edi
mov dword [esp + 0x18], eax
add ebx, 8
add edi, 2
add esi, 8
cmp ebx, 0xf0
jl 0x100047b6
mov eax, dword [ecx]
mov ebx, dword [esp + eax*4 + 0x248]
cmp ebx, 0x80000000
ja 0x100048ca
mov eax, dword [esp + 0x1c]
mov dword [ecx + 0x18], eax
xor eax, eax
mov edi, dword [ecx]
cmp edi, 0x39
jge 0x10004894
lea esi, [esp + 0x68]
lea ebx, [esp + edi*4 + 0x158]
mov eax, 0x3c
sub eax, edi
shr eax, 2
shl eax, 2
add edi, eax
jmp 0x1000485e
fstp dword [ebx - 4]
fld dword [ebx]
fadd dword [esi]
fld dword [esi + 4]
fld dword [esi + 8]
fld dword [esi + 0xc]
fxch st(3)
fstp dword [ebx]
fxch st(1)
fadd dword [ebx + 4]
add ebx, 0x10
add esi, 0x10
lea ebp, [esp + 0x23c]
cmp ebx, ebp
fstp dword [ebx - 0xc]
fadd dword [ebx - 8]
fstp dword [ebx - 8]
fadd dword [ebx - 4]
jb 0x1000485b
fstp dword [ebx - 4]
cmp edi, 0x3c
jge 0x1000495b
lea eax, [esp + eax*4 + 0x68]
lea esi, [esp + edi*4 + 0x158]
jmp 0x100048ad
fstp dword [esi - 4]
fld dword [esi]
fadd dword [eax]
add esi, 4
add eax, 4
lea edi, [esp + 0x248]
cmp esi, edi
jb 0x100048aa
fstp dword [esi - 4]
jmp 0x1000495b
fld dword [esp + 0x1c]
fchs
xor eax, eax
fstp dword [ecx + 0x18]
mov edi, dword [ecx]
cmp edi, 0x39
jge 0x1000492e
lea esi, [esp + 0x68]
lea ebx, [esp + edi*4 + 0x158]
mov eax, 0x3c
sub eax, edi
shr eax, 2
shl eax, 2
add edi, eax
jmp 0x100048fb
fstp dword [ebx - 4]
fld dword [ebx]
fsub dword [esi]
add ebx, 0x10
add esi, 0x10
lea ebp, [esp + 0x23c]
cmp ebx, ebp
fstp dword [ebx - 0x10]
fld dword [ebx - 0xc]
fsub dword [esi - 0xc]
fstp dword [ebx - 0xc]
fld dword [ebx - 8]
fsub dword [esi - 8]
fstp dword [ebx - 8]
fld dword [ebx - 4]
fsub dword [esi - 4]
jb 0x100048f8
fstp dword [ebx - 4]
cmp edi, 0x3c
jge 0x1000495b
lea eax, [esp + eax*4 + 0x68]
lea esi, [esp + edi*4 + 0x158]
jmp 0x10004943
fstp dword [esi - 4]
fld dword [esi]
fsub dword [eax]
add esi, 4
add eax, 4
lea edi, [esp + 0x248]
cmp esi, edi
jb 0x10004940
fstp dword [esi - 4]
mov eax, dword [ecx]
add ecx, 4
mov ebx, dword [esp + 0x14]
mov dword [esp + eax*4 + 0x338], 1
dec ebx
mov dword [esp + 0x14], ebx
jne 0x1000471d
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 0
mov eax, dword [esp + 0x618]
test eax, eax
jle 0x100049b5
fld dword [esp + 0x14]
lea ecx, [esp + 0x38]
mov esi, dword [ecx]
add ecx, 4
dec eax
fld dword [esp + esi*4 + 0x428]
fmul dword [ecx + 0x14]
faddp st(1)
jne 0x1000499d
fstp dword [esp + 0x14]
fld dword [esp + 0x10]
lea eax, [esp + 0x158]
jmp 0x100049c4
fstp st(1)
fld dword [eax]
fmul dword [eax]
fld dword [eax + 4]
fmul dword [eax + 4]
fxch st(1)
fadd st(2)
fld dword [eax + 8]
fmul dword [eax + 8]
fxch st(2)
faddp st(1)
fld dword [eax + 0xc]
fmul dword [eax + 0xc]
fxch st(2)
faddp st(1)
add eax, 0x10
lea ecx, [esp + 0x248]
cmp eax, ecx
faddp st(1)
jb 0x100049c2
fstp st(1)
fstp dword [esp + 0x10]
fld dword [esp + 0x1c]
fmul dword [esp + 0x1c]
fmul dword [esp + 0x10]
fld dword [esp + 0x14]
fmul dword [0x10010104]
faddp st(1)
mov esi, dword [esp + 0x60c]
fcom dword [esi]
fstp dword [esp + 0x10]
fnstsw ax
test ah, 1
je 0x10004a6a
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x2c]
mov ebx, dword [esp + 0x618]
mov dword [esi], eax
mov eax, dword [esp + 0x30]
mov dword [esi + 4], ecx
mov ecx, dword [esp + 0x34]
mov dword [esi + 8], eax
mov dword [esi + 0xc], ecx
test ebx, ebx
jle 0x10004a6a
lea ecx, [esp + 0x50]
add esi, 0x28
mov edi, ebx
mov eax, dword [ecx]
mov ebx, dword [ecx - 0x18]
mov dword [esi], eax
add ecx, 4
mov dword [esi - 0x18], ebx
add esi, 4
dec edi
jne 0x10004a57
mov eax, dword [esp + 0x24]
inc eax
mov dword [esp + 0x24], eax
cmp eax, 2
jle 0x1000453b
inc edx
cmp edx, 1
jl 0x10004455
pop ebp
pop edi
pop esi
pop ebx
add esp, 0x5f8
ret