Function at 0x4c7560
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x24
push ebx
push esi
push edi
mov edi, edx
mov esi, ecx
mov ecx, dword [ebp + 0xc]
mov dword [ebp - 0x14], edi
call fcn.004b5f10
mov edx, eax
mov dword [ebp - 0x18], edx
test edx, edx
js 0x4c77c6
mov ecx, dword [ebp + 0x18]
mov eax, 0xff
dec ecx
and ecx, 7
shl eax, cl
mov dword [ebp - 0xc], ecx
test byte [esi], al
jne 0x4c77c1
lea ebx, [esi + 1]
test ecx, ecx
cmovne ebx, esi
dec edi
test ecx, ecx
mov dword [ebp - 0x20], ebx
cmovne edi, dword [ebp - 0x14]
mov esi, edi
sub esi, edx
sub esi, 1
mov dword [ebp - 0x10], esi
jns 0x4c75c8
mov eax, 0xffffff16
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [ebp + 0x14]
cmp eax, 0xffffffff
jne 0x4c75ed
cmp dword [ebp + 0x18], 0x400
mov eax, edx
mov dword [ebp + 0x14], eax
jne 0x4c75fe
cmp edx, 0x40
jne 0x4c75fe
mov eax, 0x3e
mov dword [ebp + 0x14], eax
jmp 0x4c75fe
cmp eax, edx
jg 0x4c77b5
cmp eax, 0xffffffff
jl 0x4c77b5
inc eax
cmp esi, eax
jl 0x4c77b5
cmp byte [edi + ebx - 1], 0xbc
jne 0x4c77c1
mov ecx, esi
call fcn.00472af0
mov edi, eax
mov dword [ebp + 0x18], edi
test edi, edi
jne 0x4c762c
lea eax, [edi - 0x7d]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
push ecx
mov ecx, dword [ebp + 0x10]
lea edx, [ebx + esi]
push esi
push edi
push dword [ebp - 0x18]
call fcn.004c8020
add esp, 0x10
mov dword [ebp - 0x14], eax
test eax, eax
je 0x4c7658
mov ecx, edi
call fcn.00472b30
mov eax, dword [ebp - 0x14]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov ecx, dword [ebp - 0xc]
mov al, 1
shl al, cl
xor edx, edx
dec al
and byte [edi], al
sub edi, ebx
and byte [ebx], al
mov eax, esi
sub eax, dword [ebp + 0x14]
mov dword [ebp - 0x14], eax
dec eax
mov dword [ebp - 8], edi
test eax, eax
jle 0x4c7698
mov ecx, ebx
nop dword [eax + eax]
mov al, byte [edi + ecx]
cmp al, byte [ecx]
jne 0x4c77ad
mov eax, dword [ebp - 0x14]
inc edx
mov esi, dword [ebp - 0x10]
dec eax
inc ecx
cmp edx, eax
jl 0x4c7680
mov ecx, dword [ebp + 0x18]
mov al, byte [ebx + edx]
xor al, 1
cmp byte [edx + ecx], al
jne 0x4c77b0
lea eax, [edx + 1]
mov dword [ebp - 4], esi
sub dword [ebp - 4], eax
mov edx, eax
cmp eax, esi
jge 0x4c7775
cmp dword [ebp - 4], 0x40
jb 0x4c7775
lea edi, [ebx + eax]
add eax, ecx
mov dword [ebp - 0xc], eax
lea eax, [ecx - 1]
add eax, esi
mov dword [ebp - 0x1c], edi
cmp edi, eax
mov edi, dword [ebp - 8]
ja 0x4c76eb
lea eax, [ebx - 1]
add eax, esi
cmp eax, dword [ebp - 0xc]
jae 0x4c7775
mov eax, dword [ebp - 4]
and eax, 0x8000003f
jns 0x4c76fa
dec eax
or eax, 0xffffffc0
inc eax
mov dword [ebp - 8], esi
sub dword [ebp - 8], eax
mov eax, dword [ebp - 0xc]
mov esi, dword [ebp - 0x10]
add eax, 0x30
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 0x1c]
mov dword [ebp - 4], ecx
add eax, 0x10
sub dword [ebp - 4], ebx
mov ecx, dword [ebp - 0xc]
mov ebx, dword [ebp - 4]
nop
movups xmm0, xmmword [eax - 0x10]
add edx, 0x40
lea ecx, [ecx + 0x40]
lea eax, [eax + 0x40]
movups xmm1, xmmword [ecx - 0x70]
pxor xmm1, xmm0
movups xmmword [eax - 0x50], xmm1
movups xmm0, xmmword [eax - 0x40]
movups xmm1, xmmword [eax + ebx - 0x40]
pxor xmm1, xmm0
movups xmmword [eax - 0x40], xmm1
movups xmm0, xmmword [eax - 0x30]
movups xmm1, xmmword [ecx - 0x50]
pxor xmm1, xmm0
movups xmmword [eax - 0x30], xmm1
movups xmm0, xmmword [eax - 0x20]
movups xmm1, xmmword [ecx - 0x40]
pxor xmm1, xmm0
movups xmmword [eax - 0x20], xmm1
cmp edx, dword [ebp - 8]
jl 0x4c7720
mov ebx, dword [ebp - 0x20]
mov ecx, dword [ebp + 0x18]
cmp edx, esi
jge 0x4c7791
lea ecx, [ebx + edx]
sub esi, edx
nop
mov al, byte [edi + ecx]
lea ecx, [ecx + 1]
xor byte [ecx - 1], al
sub esi, 1
jne 0x4c7780
mov ecx, dword [ebp + 0x18]
call fcn.00472b30
mov eax, dword [ebp + 8]
mov ecx, dword [ebp - 0x14]
add ecx, ebx
mov dword [eax], ecx
mov eax, dword [ebp + 0x14]
add eax, dword [ebp - 0x18]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov ecx, dword [ebp + 0x18]
call fcn.00472b30
mov eax, 0xffffff06
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, 0xffffff3f
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret