Function at 0x406070
Capabilities:
Encode data using xor

Disassembly:
push ebx
mov ebx, esp
sub esp, 8
and esp, 0xfffffff0
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
mov eax, dword [ebx + 0x14]
sub esp, 0x28
push esi
mov esi, dword [ebx + 8]
push edi
cmp eax, 0x15
je 0x406296
cmp eax, 0x20
je 0x4061a6
cmp eax, 0x2b
je 0x4060b6
mov eax, 0x426c70
pop edi
pop esi
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret
mov eax, dword [ebx + 0x10]
xor ecx, ecx
mov edx, dword [ebx + 0xc]
add eax, 7
sub edx, 0x5c
mov dword [ebp - 8], eax
mov dword [ebp - 0xc], edx
movd xmm0, eax
pshufd xmm0, xmm0, 0
test edx, edx
jle 0x406171
cmp edx, 0x10
jb 0x40615f
mov eax, edx
and eax, reloc.OLEAUT32.dll_SafeArrayDestroy
jns 0x4060ee
dec eax
or eax, 0xfffffff0
inc eax
andps xmm0, xmmword [0x426e80]
mov edi, edx
packuswb xmm0, xmm0
sub edi, eax
packuswb xmm0, xmm0
lea eax, [esi + 8]
movaps xmmword [ebp - 0x20], xmm0
mov dword [ebp - 4], edi
mov edi, dword [ebp - 0x20]
nop
movd xmm1, dword [eax - 8]
lea eax, [eax + 0x10]
movd xmm0, edi
add ecx, 0x10
xorps xmm1, xmm0
movd dword [eax - 0x18], xmm1
movd xmm0, dword [eax - 0x14]
movd xmm1, edi
xorps xmm1, xmm0
movd xmm0, edi
movd dword [eax - 0x14], xmm1
movd xmm1, dword [eax - 0x10]
xorps xmm1, xmm0
movd xmm0, edi
movd dword [eax - 0x10], xmm1
movd xmm1, dword [eax - 0xc]
xorps xmm1, xmm0
movd dword [eax - 0xc], xmm1
cmp ecx, dword [ebp - 4]
jl 0x406110
cmp ecx, edx
jge 0x406171
mov edx, dword [ebp - 8]
lea eax, [esi + ecx]
xor byte [eax], dl
inc ecx
cmp ecx, dword [ebp - 0xc]
jl 0x406163
mov ecx, esi
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x406176
sub ecx, edx
lea eax, [ecx + 1]
push eax
call dword [sym.imp.ole32.dll_CoTaskMemAlloc]
mov edx, eax
sub edx, esi
nop dword [eax]
mov cl, byte [esi]
lea esi, [esi + 1]
mov byte [edx + esi - 1], cl
test cl, cl
jne 0x406190
pop edi
pop esi
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret
mov eax, dword [ebx + 0x10]
xor ecx, ecx
mov edx, dword [ebx + 0xc]
add eax, 4
sub edx, 0x24
mov dword [ebp - 8], eax
mov dword [ebp - 4], edx
movd xmm0, eax
pshufd xmm0, xmm0, 0
test edx, edx
jle 0x406261
cmp edx, 0x10
jb 0x40624f
mov eax, edx
and eax, reloc.OLEAUT32.dll_SafeArrayDestroy
jns 0x4061de
dec eax
or eax, 0xfffffff0
inc eax
andps xmm0, xmmword [0x426e80]
mov edi, edx
packuswb xmm0, xmm0
sub edi, eax
packuswb xmm0, xmm0
lea eax, [esi + 8]
movaps xmmword [ebp - 0x20], xmm0
mov dword [ebp - 0xc], edi
mov edi, dword [ebp - 0x20]
nop
movd xmm1, dword [eax - 8]
lea eax, [eax + 0x10]
movd xmm0, edi
add ecx, 0x10
xorps xmm1, xmm0
movd dword [eax - 0x18], xmm1
movd xmm0, dword [eax - 0x14]
movd xmm1, edi
xorps xmm1, xmm0
movd xmm0, edi
movd dword [eax - 0x14], xmm1
movd xmm1, dword [eax - 0x10]
xorps xmm1, xmm0
movd xmm0, edi
movd dword [eax - 0x10], xmm1
movd xmm1, dword [eax - 0xc]
xorps xmm1, xmm0
movd dword [eax - 0xc], xmm1
cmp ecx, dword [ebp - 0xc]
jl 0x406200
cmp ecx, edx
jge 0x406261
mov edx, dword [ebp - 8]
lea eax, [esi + ecx]
xor byte [eax], dl
inc ecx
cmp ecx, dword [ebp - 4]
jl 0x406253
mov ecx, esi
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x406266
sub ecx, edx
lea eax, [ecx + 1]
push eax
call dword [sym.imp.ole32.dll_CoTaskMemAlloc]
mov edx, eax
sub edx, esi
nop dword [eax]
mov cl, byte [esi]
lea esi, [esi + 1]
mov byte [edx + esi - 1], cl
test cl, cl
jne 0x406280
pop edi
pop esi
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret
mov eax, dword [ebx + 0x10]
xor ecx, ecx
mov edx, dword [ebx + 0xc]
add eax, 9
sub edx, 0x17
mov dword [ebp - 8], eax
mov dword [ebp - 4], edx
movd xmm0, eax
pshufd xmm0, xmm0, 0
test edx, edx
jle 0x406353
cmp edx, 0x10
jb 0x406341
mov eax, edx
and eax, reloc.OLEAUT32.dll_SafeArrayDestroy
jns 0x4062d2
dec eax
or eax, 0xfffffff0
inc eax
andps xmm0, xmmword [0x426e80]
mov edi, edx
packuswb xmm0, xmm0
sub edi, eax
packuswb xmm0, xmm0
lea eax, [esi + 8]
movaps xmmword [ebp - 0x20], xmm0
mov dword [ebp - 0xc], edi
mov edi, dword [ebp - 0x20]
movd xmm0, dword [eax - 8]
lea eax, [eax + 0x10]
movd xmm1, edi
add ecx, 0x10
xorps xmm1, xmm0
movd xmm0, edi
movd dword [eax - 0x18], xmm1
movd xmm1, dword [eax - 0x14]
xorps xmm1, xmm0
movd dword [eax - 0x14], xmm1
movd xmm0, dword [eax - 0x10]
movd xmm1, edi
xorps xmm1, xmm0
movd dword [eax - 0x10], xmm1
movd xmm0, dword [eax - 0xc]
movd xmm1, edi
xorps xmm1, xmm0
movd dword [eax - 0xc], xmm1
cmp ecx, dword [ebp - 0xc]
jl 0x4062f2
cmp ecx, edx
jge 0x406353
mov edx, dword [ebp - 8]
lea eax, [esi + ecx]
xor byte [eax], dl
inc ecx
cmp ecx, dword [ebp - 4]
jl 0x406345
mov ecx, esi
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x406358
sub ecx, edx
lea eax, [ecx + 1]
push eax
call dword [sym.imp.ole32.dll_CoTaskMemAlloc]
mov edx, eax
sub edx, esi
nop
mov cl, byte [esi]
lea esi, [esi + 1]
mov byte [edx + esi - 1], cl
test cl, cl
jne 0x406370
pop edi
pop esi
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret