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

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
and esp, 0xfffffff0
sub esp, 0xa0
mov eax, dword [ebp + 8]
mov eax, dword [eax + 8]
xor edx, edx
test eax, eax
cmovns edx, eax
mov dword [esp + 4], edx
mov dword [esp + 0x80], 1
mov edx, 1
xor eax, eax
mov ebx, dword [ebp + 8]
movzx esi, word [ebx + eax*4 + 0xe]
mov ecx, eax
lea eax, [eax + 1]
movsx edi, word [ebx + ecx*4 + 0xc]
imul edx, edi
mov dword [esp + eax*4 + 0x80], edx
cmp si, 1
jne 0x420a05
mov dword [esp + 0x1c], ecx
mov ebx, dword [ebp + 8]
movsx eax, word [ebx + eax*4 + 0xa]
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x420f28
mov ebx, dword [ebp + 8]
movsx ebx, word [ebx + eax*4 + 0xa]
mov dword [esp + 0x18], ebx
mov ebx, dword [ebp + 8]
movzx eax, word [ebx + eax*4 + 0xc]
cmp ax, 4
je 0x420f89
jg 0x420bfa
cmp ax, 2
je 0x421414
cmp ax, 3
jne 0x420f6f
mov eax, dword [esp + 0x1c]
mov ebx, dword [esp + eax*4 + 0x80]
mov dword [esp + 0x64], ebx
mov eax, ebx
movzx ecx, byte [esp + 4]
shl eax, cl
mov edi, dword [ebp + 8]
mov esi, dword [edi + 0x30]
mov dword [esp + 0x60], esi
mov edi, dword [esp + 0x3c]
lea edx, [edi + edi]
add edx, edx
lea edi, [edx + edx]
mov dword [esp + 0x5c], edi
mov edx, edi
imul edx, eax
fld dword [esi + edx + 4]
fstp dword [esp + 0x78]
test ebx, ebx
jle 0x420bd8
lea esi, [edi + edi]
lea edx, [eax + eax]
add edx, edx
lea ebx, [edx + edx]
mov dword [esp + 0x70], ebx
shl eax, 4
mov dword [esp + 0x74], eax
mov eax, dword [esp + 0x18]
add eax, eax
add eax, eax
add eax, eax
mov dword [esp + 0x58], eax
mov eax, dword [ebp + 0xc]
mov dword [esp + 0x68], eax
mov dword [esp + 0x6c], 0
mov eax, dword [esp + 0x68]
mov edx, eax
mov ebx, dword [esp + 0x5c]
add eax, ebx
mov ecx, dword [esp + 0x60]
mov ebx, ecx
mov edi, dword [esp + 0x3c]
mov dword [esp + 0x7c], edi
fld dword [eax]
fld dword [ecx]
fld dword [eax + 4]
fld dword [ecx + 4]
fld st(3)
fmul st(3)
fld st(2)
fmul st(2)
fsubp st(1)
fxch st(4)
fmulp st(1)
fxch st(2)
fmulp st(1)
faddp st(1)
fld dword [edx + esi]
fld dword [ebx]
fld dword [edx + esi + 4]
fld dword [ebx + 4]
fld st(3)
fmul st(3)
fld st(2)
fmul st(2)
fsubp st(1)
fxch st(4)
fmulp st(1)
fxch st(2)
fmulp st(1)
faddp st(1)
fld st(3)
fadd st(2)
fld st(3)
fadd st(2)
mov edi, dword [esp + 0x70]
add ecx, edi
mov edi, dword [esp + 0x74]
add ebx, edi
fld dword [0x4470f0]
fld st(2)
fmul st(1)
fsubr dword [edx]
fstp dword [eax]
fmul st(1)
fsubr dword [edx + 4]
fstp dword [eax + 4]
fxch st(5)
fsubrp st(3)
fld dword [esp + 0x78]
fmul st(3), st(0)
fxch st(4)
fsubrp st(2)
fxch st(1)
fmulp st(3)
fadd dword [edx]
fstp dword [edx]
fxch st(2)
fadd dword [edx + 4]
fstp dword [edx + 4]
fld dword [eax]
fadd st(1)
fstp dword [edx + esi]
fld dword [eax + 4]
fsub st(2)
fstp dword [edx + esi + 4]
fsubr dword [eax]
fstp dword [eax]
fadd dword [eax + 4]
fstp dword [eax + 4]
add edx, 8
add eax, 8
sub dword [esp + 0x7c], 1
jne 0x420b0c
add dword [esp + 0x6c], 1
mov eax, dword [esp + 0x6c]
mov edi, dword [esp + 0x58]
add dword [esp + 0x68], edi
cmp dword [esp + 0x64], eax
jne 0x420af2
mov eax, dword [esp + 0x18]
mov dword [esp + 0x3c], eax
sub dword [esp + 0x1c], 1
mov eax, dword [esp + 0x1c]
cmp eax, 0xffffffff
jne 0x420a34
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret
cmp ax, 5
jne 0x420f6f
mov eax, dword [esp + 0x1c]
mov ebx, dword [esp + eax*4 + 0x80]
mov dword [esp + 0x14], ebx
mov eax, ebx
movzx ecx, byte [esp + 4]
shl eax, cl
mov edi, dword [ebp + 8]
mov esi, dword [edi + 0x30]
mov dword [esp + 8], esi
mov edi, dword [esp + 0x3c]
mov edx, edi
imul edx, eax
add edx, edx
add edx, edx
add edx, edx
lea ecx, [esi + edx]
fld dword [ecx]
fstp dword [esp + 0x5c]
fld dword [ecx + 4]
fstp dword [esp + 0x58]
add ecx, edx
fld dword [ecx]
fstp dword [esp + 0x54]
fld dword [ecx + 4]
fstp dword [esp + 0x50]
test ebx, ebx
jle 0x420bd8
lea edx, [edi + edi]
add edx, edx
lea ebx, [edx + edx]
mov dword [esp + 0x10], ebx
mov ebx, dword [esp + 0x18]
lea edx, [ebx + ebx]
add edx, edx
lea ebx, [edx + edx]
mov dword [esp + 0xc], ebx
mov ebx, dword [ebp + 0xc]
mov dword [esp + 0x38], ebx
lea edx, [eax + eax]
lea ecx, [edx + edx]
lea ebx, [ecx + ecx]
mov dword [esp + 0x28], ebx
mov ebx, eax
shl ebx, 4
mov dword [esp + 0x2c], ebx
add edx, eax
add edx, edx
add edx, edx
lea ebx, [edx + edx]
mov dword [esp + 0x24], ebx
shl eax, 5
mov dword [esp + 0x30], eax
mov dword [esp + 0x20], 0
mov eax, dword [esp + 0x10]
mov ebx, dword [esp + 0x38]
lea esi, [eax + ebx]
lea ebx, [esi + eax]
lea ecx, [ebx + eax]
lea edi, [ecx + eax]
mov eax, dword [esp + 0x3c]
test eax, eax
jle 0x420f08
mov edx, dword [esp + 8]
mov dword [esp + 0x64], edx
mov dword [esp + 0x6c], edx
mov dword [esp + 0x68], edx
xor eax, eax
mov dword [esp + 0x34], ecx
mov dword [esp + 0x7c], ebx
mov dword [esp + 0x60], edx
mov ecx, dword [esp + 0x38]
fld dword [ecx + eax*8]
fstp dword [esp + 0x78]
fld dword [ecx + eax*8 + 4]
fstp dword [esp + 0x74]
fld dword [esi + eax*8]
mov edx, dword [esp + 0x64]
fld dword [edx]
fld dword [esi + eax*8 + 4]
fld dword [edx + 4]
fld st(3)
fmul st(3)
fld st(2)
fmul st(2)
fsubp st(1)
fstp dword [esp + 0x4c]
fmulp st(3)
fmulp st(1)
faddp st(1)
fstp dword [esp + 0x70]
mov ebx, dword [esp + 0x7c]
fld dword [ebx + eax*8]
mov ebx, dword [esp + 0x60]
fld dword [ebx]
mov edx, dword [esp + 0x7c]
fld dword [edx + eax*8 + 4]
fld dword [ebx + 4]
fld st(3)
fmul st(3)
fld st(2)
fmul st(2)
fsubp st(1)
fxch st(4)
fmulp st(1)
fxch st(2)
fmulp st(1)
faddp st(1)
mov ebx, dword [esp + 0x34]
fld dword [ebx + eax*8]
mov edx, dword [esp + 0x68]
fld dword [edx]
fld dword [ebx + eax*8 + 4]
fld dword [edx + 4]
fld st(3)
fmul st(3)
fld st(2)
fmul st(2)
fsubp st(1)
fxch st(4)
fmulp st(1)
fxch st(2)
fmulp st(1)
faddp st(1)
fstp dword [esp + 0x44]
fld dword [edi + eax*8]
mov edx, dword [esp + 0x6c]
fld dword [edx]
fld dword [edx + 4]
fld st(2)
fmul st(2)
fld dword [edi + eax*8 + 4]
fmul st(2)
fsubp st(1)
fxch st(3)
fmulp st(1)
fxch st(1)
fmul dword [edi + eax*8 + 4]
faddp st(1)
fld dword [esp + 0x4c]
fadd st(2)
fld dword [esp + 0x70]
fld st(0)
fadd st(3)
fstp dword [esp + 0x70]
fld dword [esp + 0x4c]
fsubrp st(4)
fxch st(3)
fstp dword [esp + 0x4c]
fxch st(1)
fsubp st(2)
fxch st(1)
fstp dword [esp + 0x48]
fld st(3)
fadd st(2)
fld st(3)
fld dword [esp + 0x44]
fadd st(1), st(0)
fxch st(6)
fsubrp st(4)
fxch st(3)
fstp dword [esp + 0x44]
fxch st(3)
fsubrp st(4)
fxch st(3)
fstp dword [esp + 0x40]
fld st(2)
fadd st(2)
fld dword [esp + 0x78]
fadd st(1), st(0)
fxch st(1)
fstp dword [ecx + eax*8]
fld dword [esp + 0x70]
fld st(0)
fadd st(3)
fadd dword [esp + 0x74]
fstp dword [ecx + eax*8 + 4]
fld dword [esp + 0x5c]
fld st(0)
fmul st(6)
fld dword [esp + 0x54]
fmul st(6)
faddp st(1)
faddp st(3)
fmulp st(1)
fld dword [esp + 0x54]
fmul st(3)
faddp st(1)
fadd dword [esp + 0x74]
fld dword [esp + 0x58]
fld dword [esp + 0x48]
fmul st(1)
fld dword [esp + 0x50]
fmul dword [esp + 0x40]
faddp st(1)
fld dword [esp + 0x4c]
fmulp st(2)
fld dword [esp + 0x50]
fmul dword [esp + 0x44]
faddp st(2)
fld st(3)
fsub st(1)
fstp dword [esi + eax*8]
fld st(2)
fadd st(2)
fstp dword [esi + eax*8 + 4]
faddp st(3)
fxch st(2)
fstp dword [edi + eax*8]
fsubrp st(1)
fstp dword [edi + eax*8 + 4]
fld dword [esp + 0x54]
fmul st(3), st(0)
fld dword [esp + 0x5c]
fmul st(3), st(0)
fxch st(4)
faddp st(3)
fxch st(2)
fadd dword [esp + 0x78]
fld dword [esp + 0x70]
fmulp st(3)
fxch st(1)
fmulp st(3)
fxch st(1)
faddp st(2)
fxch st(1)
fadd dword [esp + 0x74]
fld dword [esp + 0x40]
fld dword [esp + 0x58]
fmul st(1), st(0)
fld dword [esp + 0x48]
fld dword [esp + 0x50]
fmul st(1), st(0)
fxch st(1)
fsubp st(3)
fld dword [esp + 0x4c]
fmulp st(1)
fld dword [esp + 0x44]
fmulp st(2)
fsubrp st(1)
fld st(3)
fadd st(2)
mov ecx, dword [esp + 0x7c]
fstp dword [ecx + eax*8]
fld st(2)
fadd st(1)
fstp dword [ecx + eax*8 + 4]
fxch st(3)
fsubrp st(1)
fstp dword [ebx + eax*8]
fsubrp st(1)
fstp dword [ebx + eax*8 + 4]
add eax, 1
mov ecx, dword [esp + 0x28]
add dword [esp + 0x64], ecx
mov ecx, dword [esp + 0x2c]
add dword [esp + 0x60], ecx
mov ecx, dword [esp + 0x24]
add dword [esp + 0x68], ecx
mov ecx, dword [esp + 0x30]
add dword [esp + 0x6c], ecx
mov ecx, dword [esp + 0x3c]
cmp eax, ecx
jne 0x420ceb
add dword [esp + 0x20], 1
mov eax, dword [esp + 0x20]
mov edi, dword [esp + 0xc]
add dword [esp + 0x38], edi
cmp dword [esp + 0x14], eax
jne 0x420cad
jmp 0x420bd8
mov eax, dword [ebp + 8]
movzx eax, word [eax + 0xc]
cmp ax, 4
je 0x420f81
jg 0x420f58
cmp ax, 2
je 0x421163
cmp ax, 3
jne 0x420bf2
mov dword [esp + 0x18], 1
jmp 0x420a78
cmp ax, 5
jne 0x420bf2
mov dword [esp + 0x18], 1
jmp 0x420c04
sub dword [esp + 0x1c], 1
mov eax, dword [esp + 0x18]
mov dword [esp + 0x3c], eax
jmp 0x420a34
mov dword [esp + 0x18], 1
mov eax, dword [esp + 0x1c]
mov eax, dword [esp + eax*4 + 0x80]
mov dword [esp + 0x54], eax
cmp dword [esp + 0x3c], 1
je 0x421328
mov eax, dword [esp + 0x3c]
lea edx, [eax + eax]
add eax, edx
mov ebx, dword [esp + 0x54]
test ebx, ebx
jle 0x420bd8
movzx ecx, byte [esp + 4]
shl ebx, cl
mov ecx, ebx
mov ebx, dword [ebp + 8]
mov ebx, dword [ebx + 0x30]
mov dword [esp + 0x4c], ebx
add edx, edx
add edx, edx
lea edi, [edx + edx]
add eax, eax
add eax, eax
lea ebx, [eax + eax]
lea eax, [ecx + ecx]
lea esi, [eax + eax]
add esi, esi
mov dword [esp + 0x60], esi
mov esi, ecx
shl esi, 4
mov dword [esp + 0x64], esi
add eax, ecx
add eax, eax
add eax, eax
add eax, eax
mov dword [esp + 0x5c], eax
mov eax, dword [esp + 0x18]
add eax, eax
add eax, eax
add eax, eax
mov dword [esp + 0x50], eax
mov eax, dword [ebp + 0xc]
add eax, edx
mov dword [esp + 0x68], eax
mov dword [esp + 0x58], 0
mov eax, dword [esp + 0x68]
sub eax, edx
mov ecx, dword [esp + 0x3c]
test ecx, ecx
jle 0x421143
mov esi, dword [esp + 0x4c]
mov dword [esp + 0x6c], esi
mov dword [esp + 0x7c], esi
mov dword [esp + 0x78], esi
fld dword [eax + edx]
mov esi, dword [esp + 0x7c]
fld dword [esi]
fld dword [eax + edx + 4]
fld dword [esi + 4]
fld st(3)
fmul st(3)
fld st(2)
fmul st(2)
fsubp st(1)
fstp dword [esp + 0x74]
fmulp st(3)
fmulp st(1)
faddp st(1)
fstp dword [esp + 0x70]
fld dword [eax + edi]
mov esi, dword [esp + 0x6c]
fld dword [esi]
fld dword [eax + edi + 4]
fld dword [esi + 4]
fld st(3)
fmul st(3)
fld st(2)
fmul st(2)
fsubp st(1)
fxch st(4)
fmulp st(1)
fxch st(2)
fmulp st(1)
faddp st(1)
fld dword [eax + ebx]
mov ecx, dword [esp + 0x78]
fld dword [ecx]
fld dword [eax + ebx + 4]
fld dword [ecx + 4]
fld st(3)
fmul st(3)
fld st(2)
fmul st(2)
fsubp st(1)
fxch st(1)
fmulp st(4)
fxch st(2)
fmulp st(1)
faddp st(2)
fld dword [eax]
fld st(0)
fsub st(5)
fld dword [eax + 4]
fld st(0)
fsub st(6)
fxch st(7)
faddp st(3)
fxch st(2)
fst dword [eax]
fxch st(5)
faddp st(2)
fxch st(1)
fst dword [eax + 4]
fld dword [esp + 0x74]
fadd st(3)
fld dword [esp + 0x70]
fadd st(5)
fxch st(4)
fsubr dword [esp + 0x74]
fxch st(5)
fsubr dword [esp + 0x70]
fxch st(6)
fsub st(1)
fstp dword [eax + edi]
fxch st(1)
fsub st(3)
fstp dword [eax + edi + 4]
mov ecx, dword [esp + 0x60]
add dword [esp + 0x7c], ecx
mov ecx, esi
mov esi, dword [esp + 0x64]
add ecx, esi
mov dword [esp + 0x6c], ecx
mov esi, dword [esp + 0x5c]
add dword [esp + 0x78], esi
fadd dword [eax]
fstp dword [eax]
fxch st(1)
fadd dword [eax + 4]
fstp dword [eax + 4]
fld st(0)
fadd st(3)
fstp dword [eax + edx]
fld st(3)
fsub st(2)
fstp dword [eax + edx + 4]
fsubrp st(2)
fxch st(1)
fstp dword [eax + ebx]
faddp st(1)
fstp dword [eax + ebx + 4]
add eax, 8
mov esi, dword [esp + 0x68]
cmp eax, esi
jne 0x42103b
add dword [esp + 0x58], 1
mov eax, dword [esp + 0x58]
mov ecx, dword [esp + 0x50]
add dword [esp + 0x68], ecx
cmp dword [esp + 0x54], eax
jne 0x421019
jmp 0x420bd8
mov edx, dword [esp + 0x80]
test edx, edx
jle 0x420bf2
mov dword [esp + 0x3c], 1
mov eax, dword [ebp + 0xc]
xor ecx, ecx
fld dword [eax]
fld dword [eax + 4]
fld dword [eax + 0x28]
fld dword [eax + 0x2c]
fld st(1)
fadd st(1)
fld dword [0x4470ec]
fmul st(1), st(0)
fxch st(1)
fstp dword [esp + 0x7c]
fxch st(1)
fsubrp st(2)
fmul st(1), st(0)
fxch st(1)
fstp dword [esp + 0x78]
fld dword [eax + 8]
fld dword [eax + 0xc]
fstp dword [esp + 0x74]
fld dword [eax + 0x10]
fstp dword [esp + 0x70]
fld dword [eax + 0x14]
fld dword [eax + 0x3c]
fld dword [eax + 0x38]
fld st(1)
fsub st(1)
fmul st(5)
fxch st(2)
faddp st(1)
fchs
fmulp st(4)
fld dword [eax + 0x18]
fstp dword [esp + 0x6c]
fld dword [eax + 0x1c]
fld dword [eax + 0x20]
fadd st(7)
fstp dword [esp + 0x64]
fld dword [eax + 0x24]
fadd st(6)
fstp dword [esp + 0x60]
fxch st(3)
fst dword [esp + 0x68]
fadd dword [esp + 0x7c]
fstp dword [esp + 0x5c]
fld dword [esp + 0x78]
fadd dword [esp + 0x74]
fstp dword [esp + 0x58]
movss xmm0, dword [esp + 0x5c]
movss xmm2, dword [esp + 0x58]
unpcklps xmm0, xmm2
movss xmm1, dword [esp + 0x64]
movss xmm3, dword [esp + 0x60]
unpcklps xmm1, xmm3
movlps qword [eax], xmm1
movlps qword [eax + 8], xmm0
fld dword [esp + 0x70]
fadd dword [eax + 0x34]
fstp dword [esp + 0x64]
fld dword [eax + 0x30]
fsubr st(2)
fstp dword [esp + 0x60]
fld dword [esp + 0x6c]
fadd st(1)
fstp dword [esp + 0x5c]
fld st(3)
fadd st(3)
fstp dword [esp + 0x58]
movss xmm0, dword [esp + 0x5c]
movss xmm4, dword [esp + 0x58]
unpcklps xmm0, xmm4
movss xmm1, dword [esp + 0x64]
movss xmm5, dword [esp + 0x60]
unpcklps xmm1, xmm5
movlps qword [eax + 0x10], xmm1
movlps qword [eax + 0x18], xmm0
fld dword [eax + 0x20]
fsubp st(6)
fxch st(5)
fstp dword [esp + 0x64]
fxch st(3)
fsub dword [eax + 0x24]
fstp dword [esp + 0x60]
fld dword [esp + 0x7c]
fsubr dword [esp + 0x68]
fstp dword [esp + 0x7c]
fld dword [esp + 0x74]
fsub dword [esp + 0x78]
fstp dword [esp + 0x78]
movss xmm0, dword [esp + 0x7c]
movss xmm6, dword [esp + 0x78]
unpcklps xmm0, xmm6
movss xmm1, dword [esp + 0x64]
movss xmm7, dword [esp + 0x60]
unpcklps xmm1, xmm7
movlps qword [eax + 0x20], xmm1
movlps qword [eax + 0x28], xmm0
fld dword [esp + 0x70]
fsub dword [eax + 0x34]
fstp dword [esp + 0x7c]
fxch st(2)
fadd dword [eax + 0x30]
fstp dword [esp + 0x78]
fld dword [esp + 0x6c]
fsubrp st(3)
fxch st(2)
fstp dword [esp + 0x74]
fsubrp st(1)
fstp dword [esp + 0x70]
movss xmm0, dword [esp + 0x74]
movss xmm2, dword [esp + 0x70]
unpcklps xmm0, xmm2
movss xmm1, dword [esp + 0x7c]
movss xmm3, dword [esp + 0x78]
unpcklps xmm1, xmm3
movlps qword [eax + 0x30], xmm1
movlps qword [eax + 0x38], xmm0
add eax, 0x40
add ecx, 1
cmp ecx, edx
jne 0x42117f
jmp 0x420be0
mov ecx, eax
test eax, eax
jle 0x420bd8
mov eax, dword [ebp + 0xc]
xor edx, edx
fld dword [eax]
fld dword [eax + 0x10]
fld st(1)
fsub st(1)
fld dword [eax + 4]
fld dword [eax + 0x14]
fld st(1)
fsub st(1)
fxch st(5)
faddp st(4)
faddp st(1)
fstp dword [esp + 0x7c]
fld dword [eax + 8]
fld dword [eax + 0x18]
fadd st(1)
fld dword [eax + 0x1c]
fld dword [eax + 0xc]
fadd st(1)
fxch st(3)
fsub dword [eax + 0x18]
fxch st(1)
fsubr dword [eax + 0xc]
fld st(5)
fadd st(3)
fstp dword [esp + 0x78]
fld dword [esp + 0x7c]
fadd st(4)
fstp dword [esp + 0x74]
fld st(4)
fadd st(1)
fstp dword [esp + 0x70]
fld st(6)
fsub st(2)
fstp dword [esp + 0x6c]
fxch st(5)
movss xmm0, dword [esp + 0x70]
movss xmm4, dword [esp + 0x6c]
unpcklps xmm0, xmm4
movss xmm1, dword [esp + 0x78]
movss xmm5, dword [esp + 0x74]
unpcklps xmm1, xmm5
movlps qword [eax], xmm1
movlps qword [eax + 8], xmm0
fsubrp st(2)
fxch st(1)
fstp dword [esp + 0x78]
fld dword [esp + 0x7c]
fsubrp st(2)
fxch st(1)
fstp dword [esp + 0x7c]
fxch st(1)
fsubrp st(2)
fxch st(1)
fstp dword [esp + 0x74]
faddp st(1)
fstp dword [esp + 0x70]
movss xmm0, dword [esp + 0x74]
movss xmm6, dword [esp + 0x70]
unpcklps xmm0, xmm6
movss xmm1, dword [esp + 0x78]
movss xmm7, dword [esp + 0x7c]
unpcklps xmm1, xmm7
movlps qword [eax + 0x10], xmm1
movlps qword [eax + 0x18], xmm0
add eax, 0x20
add edx, 1
cmp ecx, edx
jne 0x421337
jmp 0x420bd8
mov eax, dword [esp + 0x1c]
mov edx, dword [esp + eax*4 + 0x80]
mov eax, dword [esp + 0x18]
mov dword [esp + 0x3c], eax
test edx, edx
jg 0x42117a
sub dword [esp + 0x1c], 1
jmp 0x420a34