Function at 0x4209e0
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 0x420a15
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 0x420f38
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 0x420f99
jg 0x420c0a
cmp ax, 2
je 0x421424
cmp ax, 3
jne 0x420f7f
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 0x420be8
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 [0x446880]
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 0x420b1c
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 0x420b02
mov eax, dword [esp + 0x18]
mov dword [esp + 0x3c], eax
sub dword [esp + 0x1c], 1
mov eax, dword [esp + 0x1c]
cmp eax, 0xffffffff
jne 0x420a44
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret
cmp ax, 5
jne 0x420f7f
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 0x420be8
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 0x420f18
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 0x420cfb
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 0x420cbd
jmp 0x420be8
mov eax, dword [ebp + 8]
movzx eax, word [eax + 0xc]
cmp ax, 4
je 0x420f91
jg 0x420f68
cmp ax, 2
je 0x421173
cmp ax, 3
jne 0x420c02
mov dword [esp + 0x18], 1
jmp 0x420a88
cmp ax, 5
jne 0x420c02
mov dword [esp + 0x18], 1
jmp 0x420c14
sub dword [esp + 0x1c], 1
mov eax, dword [esp + 0x18]
mov dword [esp + 0x3c], eax
jmp 0x420a44
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 0x421338
mov eax, dword [esp + 0x3c]
lea edx, [eax + eax]
add eax, edx
mov ebx, dword [esp + 0x54]
test ebx, ebx
jle 0x420be8
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 0x421153
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 0x42104b
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 0x421029
jmp 0x420be8
mov edx, dword [esp + 0x80]
test edx, edx
jle 0x420c02
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 [0x44687c]
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 0x42118f
jmp 0x420bf0
mov ecx, eax
test eax, eax
jle 0x420be8
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 0x421347
jmp 0x420be8
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 0x42118a
sub dword [esp + 0x1c], 1
jmp 0x420a44