Function at 0x4c72e0
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.004b5ca0
mov edx, eax
mov dword [ebp - 0x18], edx
test edx, edx
js 0x4c7546
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 0x4c7541
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 0x4c7348
mov eax, 0xffffff16
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [ebp + 0x14]
cmp eax, 0xffffffff
jne 0x4c736d
cmp dword [ebp + 0x18], 0x400
mov eax, edx
mov dword [ebp + 0x14], eax
jne 0x4c737e
cmp edx, 0x40
jne 0x4c737e
mov eax, 0x3e
mov dword [ebp + 0x14], eax
jmp 0x4c737e
cmp eax, edx
jg 0x4c7535
cmp eax, 0xffffffff
jl 0x4c7535
inc eax
cmp esi, eax
jl 0x4c7535
cmp byte [edi + ebx - 1], 0xbc
jne 0x4c7541
mov ecx, esi
call fcn.00472840
mov edi, eax
mov dword [ebp + 0x18], edi
test edi, edi
jne 0x4c73ac
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.004c7da0
add esp, 0x10
mov dword [ebp - 0x14], eax
test eax, eax
je 0x4c73d8
mov ecx, edi
call fcn.00472860
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 0x4c7418
mov ecx, ebx
nop dword [eax + eax]
mov al, byte [edi + ecx]
cmp al, byte [ecx]
jne 0x4c752d
mov eax, dword [ebp - 0x14]
inc edx
mov esi, dword [ebp - 0x10]
dec eax
inc ecx
cmp edx, eax
jl 0x4c7400
mov ecx, dword [ebp + 0x18]
mov al, byte [ebx + edx]
xor al, 1
cmp byte [edx + ecx], al
jne 0x4c7530
lea eax, [edx + 1]
mov dword [ebp - 4], esi
sub dword [ebp - 4], eax
mov edx, eax
cmp eax, esi
jge 0x4c74f5
cmp dword [ebp - 4], 0x40
jb 0x4c74f5
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 0x4c746b
lea eax, [ebx - 1]
add eax, esi
cmp eax, dword [ebp - 0xc]
jae 0x4c74f5
mov eax, dword [ebp - 4]
and eax, 0x8000003f
jns 0x4c747a
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 0x4c74a0
mov ebx, dword [ebp - 0x20]
mov ecx, dword [ebp + 0x18]
cmp edx, esi
jge 0x4c7511
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 0x4c7500
mov ecx, dword [ebp + 0x18]
call fcn.00472860
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.00472860
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