Function at 0x4cfd20
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x14
mov ebp, edx
mov edi, ecx
mov ebx, dword [ecx]
mov ecx, ebx
mov edx, 0x35
push 0
call fcn.0043f5f0
add esp, 4
test eax, eax
je 0x4cfd94
mov esi, eax
movzx ecx, word [esp + 0x2c]
mov edx, dword [esp + 0x28]
pxor xmm0, xmm0
movdqu xmmword [eax], xmm0
movdqu xmmword [eax + 0x20], xmm0
movdqu xmmword [eax + 0x10], xmm0
mov dword [eax + 0x30], 0
mov byte [eax], 0xb0
mov word [eax + 0x22], 0xffff
add eax, 0x34
mov dword [esi + 8], eax
mov byte [esi + 0x34], 0
mov dword [esi + 0x18], 1
test cx, cx
js 0x4cfd8b
cmp word [ebp + 0x20], cx
jne 0x4cfda0
mov dword [esi + 0x1c], edx
mov byte [esi + 1], 0x44
jmp 0x4cfd96
xor esi, esi
mov eax, esi
add esp, 0x14
pop esi
pop edi
pop ebx
pop ebp
ret
mov dword [esp + 4], ebx
movsx eax, cx
mov ebx, dword [ebp + 4]
mov dword [esp], ebx
lea ebx, [eax + eax*2]
mov dword [esp + 0xc], ebx
test byte [ebp + 0x1c], 0x20
jne 0x4cfdc6
mov ebp, dword [esp]
mov ebx, dword [esp + 4]
jmp 0x4cff9d
xor ebx, ebx
test cx, cx
mov dword [esp + 8], edi
mov dword [esp + 0x10], ebp
je 0x4cff73
mov edx, 0
cmp cx, 0x11
jb 0x4cff42
mov edx, eax
and edx, 0xf
mov edi, 0x10
cmovne edi, edx
mov ebx, eax
sub ebx, edi
mov edx, dword [esp]
add edx, 0xbe
pxor xmm0, xmm0
movdqa xmm3, xmmword [0x5296d0]
mov edi, ebx
pxor xmm1, xmm1
nop word cs:[eax + eax]
movzx ebp, word [edx - 0x60]
movd xmm4, ebp
movzx ebp, word [edx - 0x6c]
movd xmm6, ebp
punpcklwd xmm6, xmm4
movzx ebp, word [edx - 0x78]
movd xmm4, ebp
movzx ebp, word [edx - 0x84]
movd xmm5, ebp
punpcklwd xmm5, xmm4
punpckldq xmm5, xmm6
movzx ebp, word [edx - 0x90]
movd xmm4, ebp
movzx ebp, word [edx - 0x9c]
movd xmm6, ebp
punpcklwd xmm6, xmm4
movzx ebp, word [edx - 0xa8]
movd xmm7, ebp
movzx ebp, word [edx - 0xb4]
movd xmm4, ebp
punpcklwd xmm4, xmm7
punpckldq xmm4, xmm6
punpcklqdq xmm4, xmm5
movzx ebp, word [edx]
movd xmm5, ebp
movzx ebp, word [edx - 0xc]
movd xmm7, ebp
punpcklwd xmm7, xmm5
movzx ebp, word [edx - 0x18]
movd xmm5, ebp
movzx ebp, word [edx - 0x24]
movd xmm6, ebp
punpcklwd xmm6, xmm5
punpckldq xmm6, xmm7
movzx ebp, word [edx - 0x30]
movd xmm5, ebp
movzx ebp, word [edx - 0x3c]
movd xmm7, ebp
punpcklwd xmm7, xmm5
movzx ebp, word [edx - 0x48]
movd xmm2, ebp
movzx ebp, word [edx - 0x54]
movd xmm5, ebp
punpcklwd xmm5, xmm2
punpckldq xmm5, xmm7
punpcklqdq xmm5, xmm6
pcmpeqd xmm2, xmm2
pxor xmm4, xmm2
psrlw xmm4, 5
pand xmm4, xmm3
paddw xmm0, xmm4
pxor xmm5, xmm2
psrlw xmm5, 5
pand xmm5, xmm3
paddw xmm1, xmm5
add edx, 0xc0
add edi, 0xfffffff0
jne 0x4cfe20
paddw xmm1, xmm0
pshufd xmm0, xmm1, 0xee
paddw xmm0, xmm1
pshufd xmm1, xmm0, 0x55
paddw xmm1, xmm0
movdqa xmm0, xmm1
psrld xmm0, 0x10
paddw xmm0, xmm1
movd edx, xmm0
sub eax, ebx
lea edi, [ebx + ebx*2]
mov ebx, dword [esp]
lea edi, [ebx + edi*4]
add edi, 0xa
mov ebx, dword [esp + 4]
nop word cs:[eax + eax]
movzx ebp, word [edi]
bt ebp, 5
sbb dx, 0xffff
add edi, 0xc
dec eax
jne 0x4cff60
jmp 0x4cff79
xor edx, edx
mov ebx, dword [esp + 4]
mov ebp, dword [esp]
mov eax, dword [esp + 0xc]
test byte [ebp + eax*4 + 0xa], 0x20
jne 0x4cff8b
mov ecx, edx
jmp 0x4cff95
sub ecx, edx
mov eax, dword [esp + 0x10]
add cx, word [eax + 0x24]
mov edi, dword [esp + 8]
mov edx, dword [esp + 0x28]
movsx eax, cx
add eax, edx
inc eax
mov dword [esi + 0x1c], eax
mov edx, dword [esp + 0xc]
movzx eax, byte [ebp + edx*4 + 5]
mov byte [esi + 1], al
movzx ecx, word [ebp + edx*4 + 0xa]
test ecx, 0x200
jne 0x4cffcd
mov eax, dword [ebx + 8]
mov ebp, dword [eax]
test ebp, ebp
jne 0x4d000c
jmp 0x4cfd96
lea eax, [edx*4]
add eax, ebp
mov eax, dword [eax]
dec eax
nop dword [eax]
cmp byte [eax + 1], 0
lea eax, [eax + 1]
jne 0x4cffe0
test cl, 4
jne 0x4d0000
mov ebp, eax
jmp 0x4d000b
lea ebp, [eax + 1]
cmp byte [eax + 1], 0
mov eax, ebp
jne 0x4d0000
inc ebp
push ebp
call sub.api_ms_win_crt_string_l1_1_0.dll_strlen
add esp, 4
mov ebx, eax
and ebx, 0x3fffffff
je 0x4cfd96
mov ecx, dword [edi]
lea edx, [ebx + 0x35]
push 0
call fcn.0043f5f0
add esp, 4
test eax, eax
je 0x4cfd96
mov edi, eax
pxor xmm0, xmm0
movdqu xmmword [eax], xmm0
movdqu xmmword [eax + 0x20], xmm0
movdqu xmmword [eax + 0x10], xmm0
mov dword [eax + 0x30], 0
mov byte [eax], 0x71
mov word [eax + 0x22], 0xffff
add eax, 0x34
mov dword [edi + 8], eax
push ebx
push ebp
push eax
call sub.api_ms_win_crt_private_l1_1_0.dll_memcpy
add esp, 0xc
mov byte [edi + ebx + 0x34], 0
mov dword [edi + 0x18], 1
mov dword [edi + 0xc], esi
mov dword [edi + 4], 0x2200
mov esi, edi
jmp 0x4cfd96