Function at 0x404890
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
mov eax, dword [ebp + 0x14]
push ebx
push esi
push edi
sub eax, 3
je 0x404a52
sub eax, 4
je 0x404982
sub eax, 1
je 0x4048ba
pop edi
pop esi
mov eax, 0x4243b8
pop ebx
pop ebp
ret
mov edx, dword [ebp + 0xc]
xor ecx, ecx
mov ebx, dword [ebp + 0x10]
sub edx, 0x1c
mov esi, dword [ebp + 8]
add ebx, 4
test edx, edx
jle 0x40494c
cmp edx, 0x40
jb 0x40493d
mov eax, edx
and eax, 0x8000003f
jns 0x4048e2
dec eax
or eax, 0xffffffc0
inc eax
mov edi, edx
sub edi, eax
movsx eax, bl
movd xmm0, eax
lea eax, [esi + 0x20]
punpcklbw xmm0, xmm0
punpcklwd xmm0, xmm0
pshufd xmm2, xmm0, 0
nop dword [eax]
movups xmm0, xmmword [eax - 0x20]
lea eax, [eax + 0x40]
add ecx, 0x40
movaps xmm1, xmm2
pxor xmm0, xmm2
movups xmmword [eax - 0x60], xmm0
movups xmm0, xmmword [eax - 0x50]
pxor xmm0, xmm2
movups xmmword [eax - 0x50], xmm0
movups xmm0, xmmword [eax - 0x40]
pxor xmm0, xmm2
movups xmmword [eax - 0x40], xmm0
movups xmm0, xmmword [eax - 0x30]
pxor xmm1, xmm0
movups xmmword [eax - 0x30], xmm1
cmp ecx, edi
jl 0x404900
cmp ecx, edx
jge 0x40494c
xor byte [ecx + esi], bl
lea eax, [ecx + esi]
inc ecx
cmp ecx, edx
jl 0x404941
mov ecx, esi
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x404951
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 + eax]
mov cl, byte [esi]
lea esi, [esi + 1]
mov byte [edx + esi - 1], cl
test cl, cl
jne 0x404970
pop edi
pop esi
pop ebx
pop ebp
ret
mov edx, dword [ebp + 0xc]
xor ecx, ecx
mov ebx, dword [ebp + 0x10]
sub edx, 0x29
mov esi, dword [ebp + 8]
add ebx, 9
test edx, edx
jle 0x404a1f
cmp edx, 0x40
jb 0x404a10
mov eax, edx
and eax, 0x8000003f
jns 0x4049ae
dec eax
or eax, 0xffffffc0
inc eax
mov edi, edx
sub edi, eax
movsx eax, bl
movd xmm0, eax
lea eax, [esi + 0x20]
punpcklbw xmm0, xmm0
punpcklwd xmm0, xmm0
pshufd xmm2, xmm0, 0
nop dword [eax]
movups xmm0, xmmword [eax - 0x20]
lea eax, [eax + 0x40]
add ecx, 0x40
movaps xmm1, xmm2
pxor xmm0, xmm2
movups xmmword [eax - 0x60], xmm0
movups xmm0, xmmword [eax - 0x50]
pxor xmm1, xmm0
movups xmmword [eax - 0x50], xmm1
movaps xmm1, xmm2
movups xmm0, xmmword [eax - 0x40]
pxor xmm1, xmm0
movups xmmword [eax - 0x40], xmm1
movups xmm0, xmmword [eax - 0x30]
pxor xmm0, xmm2
movups xmmword [eax - 0x30], xmm0
cmp ecx, edi
jl 0x4049d0
cmp ecx, edx
jge 0x404a1f
xor byte [ecx + esi], bl
lea eax, [ecx + esi]
inc ecx
cmp ecx, edx
jl 0x404a14
mov ecx, esi
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x404a24
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 + eax]
mov cl, byte [esi]
lea esi, [esi + 1]
mov byte [edx + esi - 1], cl
test cl, cl
jne 0x404a40
pop edi
pop esi
pop ebx
pop ebp
ret
mov edx, dword [ebp + 0xc]
xor ecx, ecx
mov ebx, dword [ebp + 0x10]
sub edx, 0xd
mov esi, dword [ebp + 8]
add ebx, 5
test edx, edx
jle 0x404ae1
cmp edx, 0x40
jb 0x404ad2
mov eax, edx
and eax, 0x8000003f
jns 0x404a7a
dec eax
or eax, 0xffffffc0
inc eax
mov edi, edx
sub edi, eax
movsx eax, bl
movd xmm0, eax
lea eax, [esi + 0x20]
punpcklbw xmm0, xmm0
punpcklwd xmm0, xmm0
pshufd xmm2, xmm0, 0
movups xmm0, xmmword [eax - 0x20]
lea eax, [eax + 0x40]
add ecx, 0x40
movaps xmm1, xmm2
pxor xmm1, xmm0
movups xmmword [eax - 0x60], xmm1
movups xmm0, xmmword [eax - 0x50]
pxor xmm0, xmm2
movups xmmword [eax - 0x50], xmm0
movups xmm0, xmmword [eax - 0x40]
pxor xmm0, xmm2
movups xmmword [eax - 0x40], xmm0
movups xmm0, xmmword [eax - 0x30]
pxor xmm0, xmm2
movups xmmword [eax - 0x30], xmm0
cmp ecx, edi
jl 0x404a95
cmp ecx, edx
jge 0x404ae1
xor byte [ecx + esi], bl
lea eax, [ecx + esi]
inc ecx
cmp ecx, edx
jl 0x404ad6
mov ecx, esi
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x404ae6
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 0x404b00
pop edi
pop esi
pop ebx
pop ebp
ret