Function at 0x415370
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x8c
mov ebx, dword [esp + 0xa0]
mov ecx, dword [esp + 0xa4]
lea esi, [ebx + 3]
mov edi, ecx
and esi, 0xfffffffc
mov eax, esi
sub eax, ebx
sub edi, eax
jb 0x4153a1
cmp edi, 4
jae 0x415453
xor eax, eax
test ecx, ecx
je 0x41588c
cmp ecx, 8
mov edx, 0
jb 0x41543b
movdqa xmm2, xmmword [0x429e60]
movdqa xmm3, xmmword [0x427280]
mov edx, ecx
lea eax, [ebx + 4]
pxor xmm0, xmm0
pxor xmm1, xmm1
and edx, 0xfffffff8
mov edi, edx
nop dword [eax + eax]
movd xmm5, dword [eax - 4]
movd xmm4, dword [eax]
add eax, 8
add edi, 0xfffffff8
pcmpgtb xmm5, xmm2
pcmpgtb xmm4, xmm2
punpcklbw xmm5, xmm5
punpcklwd xmm5, xmm5
pand xmm5, xmm3
paddd xmm0, xmm5
punpcklbw xmm4, xmm4
punpcklwd xmm4, xmm4
pand xmm4, xmm3
paddd xmm1, xmm4
jne 0x4153e0
paddd xmm1, xmm0
cmp edx, ecx
pshufd xmm0, xmm1, 0xee
paddd xmm0, xmm1
pshufd xmm1, xmm0, 0x55
paddd xmm1, xmm0
movd eax, xmm1
je 0x41588c
sub ecx, edx
add ebx, edx
nop
xor edx, edx
cmp byte [ebx], 0xc0
setge dl
inc ebx
add eax, edx
dec ecx
jne 0x415440
jmp 0x41588c
mov dword [esp + 0xc], eax
mov eax, edi
xor edx, edx
mov ecx, 0
and eax, 3
cmp esi, ebx
je 0x41548e
mov ecx, dword [esp + 0xa0]
mov ebp, ecx
sub ebp, esi
mov esi, ecx
xor ecx, ecx
nop word cs:[eax + eax]
xor ebx, ebx
cmp byte [esi], 0xc0
setge bl
inc esi
add ecx, ebx
inc ebp
jne 0x415480
mov ebp, dword [esp + 0xa0]
mov esi, ecx
add ebp, dword [esp + 0xc]
test eax, eax
je 0x4154be
mov ebx, edi
xor edx, edx
and ebx, 0xfffffffc
add ebx, ebp
nop dword [eax + eax]
xor ecx, ecx
cmp byte [ebx], 0xc0
setge cl
inc ebx
add edx, ecx
dec eax
jne 0x4154b0
movdqa xmm3, xmmword [0x42a030]
add edx, esi
shr edi, 2
pcmpeqd xmm2, xmm2
jmp 0x415512
mov edx, ebp
shr ebp, 8
mov esi, dword [esp]
mov edi, ecx
and edx, 0xff00ff
and ebp, 0xff00ff
sub edi, ebx
add ebp, edx
mov edx, ebp
shl edx, 0x10
add edx, ebp
lea ebp, [esi + ebx*4]
shr edx, 0x10
add edx, eax
test bl, 3
jne 0x415822
mov eax, edx
test edi, edi
je 0x41588c
cmp edi, 0xc0
mov ebx, 0xc0
mov ecx, edi
mov dword [esp], ebp
cmovb ebx, edi
xor ebp, ebp
cmp edi, 4
jb 0x4154e0
mov esi, ebx
mov edi, dword [esp]
xor ebp, ebp
shr esi, 2
lea edx, [esi - 1]
and edx, 0xfffffff
cmp edx, 7
jb 0x4157cc
inc edx
mov ebp, dword [esp]
pxor xmm2, xmm2
pxor xmm3, xmm3
mov dword [esp + 8], edx
and edx, 0xfffffff8
mov edi, edx
mov dword [esp + 4], edx
shl edi, 4
add edi, ebp
add ebp, 0x40
nop word cs:[eax + eax]
nop dword [eax]
movdqu xmm7, xmmword [ebp - 0x20]
movdqu xmmword [esp + 0x1c], xmm2
movdqu xmm2, xmmword [ebp - 0x40]
movdqu xmm1, xmmword [ebp - 0x10]
movdqu xmmword [esp + 0x7c], xmm3
movdqu xmm3, xmmword [ebp - 0x30]
movdqu xmm5, xmmword [ebp + 0x10]
movdqa xmm0, xmm7
movdqu xmmword [esp + 0x2c], xmm1
movdqu xmmword [esp + 0xc], xmm2
movdqu xmmword [esp + 0x5c], xmm3
movdqu xmmword [esp + 0x3c], xmm5
punpckldq xmm0, xmm1
movdqa xmm1, xmm2
movdqu xmm2, xmmword [ebp + 0x30]
movdqu xmm6, xmmword [esp + 0x5c]
punpckldq xmm1, xmm3
movdqa xmm4, xmm1
punpckhqdq xmm1, xmm0
movdqu xmmword [esp + 0x6c], xmm1
movdqu xmm1, xmmword [ebp + 0x20]
punpcklqdq xmm4, xmm0
movdqu xmmword [esp + 0x4c], xmm2
movdqa xmm0, xmm1
punpckldq xmm0, xmm2
movdqu xmm2, xmmword [ebp]
sub ebp, 0xffffff80
add edx, 0xfffffff8
movdqa xmm3, xmm2
punpckldq xmm3, xmm5
movdqa xmm5, xmm3
punpckhqdq xmm3, xmm0
punpcklqdq xmm5, xmm0
movdqu xmm0, xmmword [esp + 0x2c]
punpckhdq xmm7, xmm0
movdqu xmm0, xmmword [esp + 0xc]
punpckhdq xmm0, xmm6
movdqu xmm6, xmmword [esp + 0x4c]
punpckhdq xmm1, xmm6
movdqu xmm6, xmmword [esp + 0x3c]
punpckhdq xmm2, xmm6
movdqa xmm6, xmm0
punpckhqdq xmm0, xmm7
punpcklqdq xmm6, xmm7
movdqa xmm7, xmm2
movdqu xmmword [esp + 0xc], xmm0
punpckhqdq xmm2, xmm1
movdqa xmm0, xmm4
psrld xmm4, 6
punpcklqdq xmm7, xmm1
pcmpeqd xmm1, xmm1
movdqu xmmword [esp + 0x2c], xmm2
movdqu xmm2, xmmword [esp + 0x6c]
pxor xmm0, xmm1
psrld xmm0, 7
por xmm4, xmm0
movdqa xmm0, xmm5
psrld xmm5, 6
pxor xmm0, xmm1
movdqa xmm1, xmmword [0x42a030]
psrld xmm0, 7
por xmm5, xmm0
movdqu xmm0, xmmword [esp + 0x1c]
pand xmm4, xmm1
pand xmm5, xmm1
paddd xmm4, xmm0
movdqu xmm0, xmmword [esp + 0x7c]
movdqu xmmword [esp + 0x1c], xmm4
pcmpeqd xmm4, xmm4
paddd xmm5, xmm0
movdqa xmm0, xmm2
psrld xmm2, 6
pxor xmm0, xmm4
psrld xmm0, 7
por xmm2, xmm0
movdqa xmm0, xmm3
psrld xmm3, 6
pxor xmm0, xmm4
pand xmm2, xmm1
psrld xmm0, 7
por xmm3, xmm0
movdqa xmm0, xmm6
psrld xmm6, 6
pxor xmm0, xmm4
pand xmm3, xmm1
psrld xmm0, 7
por xmm6, xmm0
movdqa xmm0, xmm7
psrld xmm7, 6
pand xmm6, xmm1
pxor xmm0, xmm4
paddd xmm6, xmm2
movdqu xmm2, xmmword [esp + 0x1c]
psrld xmm0, 7
por xmm7, xmm0
pand xmm7, xmm1
paddd xmm7, xmm3
paddd xmm6, xmm2
movdqu xmm2, xmmword [esp + 0xc]
paddd xmm7, xmm5
movdqa xmm3, xmm2
psrld xmm2, 6
pxor xmm3, xmm4
psrld xmm3, 7
por xmm2, xmm3
movdqu xmm3, xmmword [esp + 0x2c]
pand xmm2, xmm1
paddd xmm2, xmm6
movdqa xmm5, xmm3
psrld xmm3, 6
pxor xmm5, xmm4
psrld xmm5, 7
por xmm3, xmm5
pand xmm3, xmm1
paddd xmm3, xmm7
jne 0x415580
mov edx, dword [esp + 4]
paddd xmm3, xmm2
pcmpeqd xmm2, xmm2
pshufd xmm0, xmm3, 0xee
paddd xmm0, xmm3
movdqa xmm3, xmmword [0x42a030]
pshufd xmm1, xmm0, 0x55
cmp dword [esp + 8], edx
paddd xmm1, xmm0
movd ebp, xmm1
je 0x4154e0
shl esi, 4
add esi, dword [esp]
nop word cs:[eax + eax]
nop dword [eax]
movdqu xmm0, xmmword [edi]
add edi, 0x10
movdqa xmm1, xmm0
psrld xmm0, 6
pxor xmm1, xmm2
psrld xmm1, 7
por xmm0, xmm1
pand xmm0, xmm3
pshufd xmm1, xmm0, 0xee
paddd xmm1, xmm0
pshufd xmm0, xmm1, 0x55
paddd xmm0, xmm1
movd edx, xmm0
add ebp, edx
cmp edi, esi
jne 0x4157e0
jmp 0x4154e0
and ebx, 0xfc
cmp ecx, 0xc0
lea eax, [esi + ebx*4]
mov esi, 0xc0
cmovb esi, ecx
xor ecx, ecx
and esi, 3
shl esi, 2
nop word cs:[eax + eax]
nop dword [eax + eax]
mov edi, dword [eax]
add eax, 4
mov ebx, edi
shr edi, 6
not ebx
shr ebx, 7
or edi, ebx
and edi, 0x1010101
add ecx, edi
add esi, 0xfffffffc
jne 0x415850
mov eax, ecx
shr ecx, 8
and eax, 0xff00ff
and ecx, 0xff00ff
add ecx, eax
mov eax, ecx
shl eax, 0x10
add eax, ecx
shr eax, 0x10
add eax, edx
add esp, 0x8c
pop esi
pop edi
pop ebx
pop ebp
ret