Function at 0x4064e8
Capabilities:
Encode data using xor
Resolve function by parsing pe exports

Disassembly:
push edx
call 0x463250
sar dword [esp + 0x54], 2
add esp, 0x18
cmp byte [esi + 0x65], 0
mov dword [esp + 0x28], eax
je 0x4065db
fld dword [esi + 0x5c]
fmul qword [0x104aedc8]
fnstcw word [esp + 0x34]
movzx eax, word [esp + 0x34]
or eax, 0xc00
mov dword [esp + 0x24], eax
fldcw word [esp + 0x24]
fistp qword [esp + 0x70]
mov edx, dword [esp + 0x70]
fldcw word [esp + 0x34]
test ebx, ebx
jle 0x406fd2
mov eax, dword [esp + 0x48]
lea ecx, [eax*4]
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x24], ecx
lea ecx, [eax*4]
mov eax, dword [esp + 0x44]
mov dword [esp + 0x30], ecx
mov ecx, dword [esp + 0x28]
mov dword [esp + 0x38], ebx
mov edi, 1
test eax, eax
jle 0x4065c0
mov esi, dword [esp + 0x2c]
sub esi, ecx
mov dword [esp + 0x18], eax
mov eax, dword [esi + ecx]
mov edi, eax
and edi, 0xff00ff
mov ebx, eax
imul edi, edx
shr ebx, 8
and ebx, 0xffff00ff
shr eax, 8
imul ebx, edx
and eax, 0xff00ff
imul eax, edx
shr edi, 8
xor edi, ebx
and edi, 0xff00ff
xor edi, eax
mov dword [ecx], edi
mov edi, 1
add ecx, 4
sub dword [esp + 0x18], edi
jne 0x406574
mov ecx, dword [esp + 0x28]
mov eax, dword [esp + 0x44]
mov esi, dword [esp + 0x24]
add ecx, dword [esp + 0x30]
add dword [esp + 0x2c], esi
sub dword [esp + 0x38], edi
mov dword [esp + 0x28], ecx
jne 0x406566
jmp 0x406fd2
mov al, byte [esi + 0x64]
test al, al
je 0x406d53
cmp byte [0x105c9cf9], 0
je 0x406b6c
movq xmm0, qword [esi + 0x66]
movq xmm1, qword [esi + 0x6e]
movq xmm2, qword [esi + 0x76]
movq xmm3, qword [esi + 0x7e]
movq xmm4, qword [esi + 0x86]
punpcklqdq xmm0, xmm0
movdqa xmmword [esp + 0x90], xmm0
mov edx, 0xff
movsx eax, dx
punpcklqdq xmm1, xmm1
movd xmm0, eax
movdqa xmmword [esp + 0xa0], xmm1
movdqa xmm1, xmm0
punpcklwd xmm1, xmm0
pshufd xmm6, xmm1, 0
movdqa xmm0, xmm6
psrlw xmm0, 1
movdqa xmmword [esp + 0xe0], xmm0
mov ecx, 0xff0000
punpcklqdq xmm2, xmm2
xor edx, edx
xor esi, esi
movdqa xmm7, xmm2
mov eax, ecx
movdqa xmm0, xmm6
psrlw xmm0, 7
movdqa xmmword [esp + 0xc0], xmm0
movd xmm0, ecx
mov ecx, dword [esp + 0x34]
movd xmm1, edx
movd xmm2, eax
mov eax, dword [esp + 0x4c]
movd xmm5, esi
punpcklqdq xmm4, xmm4
movdqa xmmword [esp + 0xb0], xmm4
movd xmm4, eax
punpckldq xmm2, xmm0
movd xmm0, eax
punpckldq xmm5, xmm1
punpckldq xmm5, xmm2
movd xmm1, eax
movd xmm2, eax
mov eax, 8
cmp dword [edi + 0x10], eax
punpcklqdq xmm3, xmm3
sete byte [esp + 0x17]
cmp dword [ecx + 0x10], eax
punpckldq xmm0, xmm2
movdqa xmmword [esp + 0x80], xmm3
pxor xmm3, xmm3
punpckldq xmm4, xmm1
punpckldq xmm0, xmm4
sete byte [esp + 0x34]
punpcklbw xmm0, xmm3
movdqa xmmword [esp + 0xf0], xmm7
movdqa xmmword [esp + 0x100], xmm3
movdqa xmmword [esp + 0x120], xmm6
movdqa xmmword [esp + 0x110], xmm5
movdqa xmmword [esp + 0xd0], xmm0
test ebx, ebx
jle 0x406fd2
mov edx, dword [esp + 0x44]
add edx, 0xfffffffc
mov dword [esp + 0x18], edx
mov dword [esp + 0x38], ebx
xor edx, edx
cmp dword [esp + 0x18], edx
jl 0x406a1d
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x28]
mov esi, dword [esp + 0x2c]
add eax, 4
sub esi, ecx
shr eax, 2
lea edx, [eax*4]
movdqu xmm2, xmmword [ecx + esi]
movdqa xmm0, xmm2
punpcklbw xmm0, xmm3
movdqa xmm1, xmm0
pcmpgtw xmm1, xmm3
pmovmskb edi, xmm1
movdqa xmmword [esp + 0x70], xmm2
test edi, edi
je 0x4068af
cmp byte [esp + 0x17], 0
je 0x4067eb
movdqa xmm1, xmm5
pcmpgtw xmm1, xmm0
pmovmskb edi, xmm1
test edi, 0x4040
je 0x4067eb
pextrw edi, xmm0, 3
mov edi, dword [edi*4 + 0x105c98f8]
or edi, 0x1000000
movd xmm1, edi
pextrw edi, xmm0, 7
mov edi, dword [edi*4 + 0x105c98f8]
or edi, 0x1000000
movd xmm2, edi
pshuflw xmm1, xmm1, 0x40
pshuflw xmm2, xmm2, 0x40
punpcklqdq xmm1, xmm2
pmullw xmm0, xmm1
paddw xmm0, xmmword [esp + 0xe0]
psrlw xmm0, 1
jmp 0x4067f0
psllw xmm0, 7
cmp byte [esp + 0x34], 0
pshuflw xmm1, xmm0, 0xaa
pshufhw xmm1, xmm1, 0xaa
pmulhw xmm1, xmmword [esp + 0x90]
pshuflw xmm2, xmm0, 0x55
pshufhw xmm2, xmm2, 0x55
pmulhw xmm2, xmmword [esp + 0xa0]
paddw xmm1, xmm2
pshuflw xmm2, xmm0, 0
pshufhw xmm2, xmm2, 0
pshuflw xmm0, xmm0, 0xff
pmulhw xmm2, xmm7
paddw xmm1, xmm2
movdqa xmm2, xmmword [esp + 0x70]
pshufhw xmm0, xmm0, 0xff
pmulhw xmm0, xmmword [esp + 0x80]
paddw xmm1, xmm0
paddw xmm1, xmmword [esp + 0xb0]
psraw xmm1, 2
invalid
invalid