Function at 0x4c7550
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x274
push ebx
push esi
push edi
mov edi, ecx
mov ebx, edx
mov ecx, dword [ebp + 0xc]
mov dword [ebp - 0x1c], ebx
mov dword [ebp - 0x14], edi
call fcn.004b5ca0
mov esi, eax
mov dword [ebp - 0x24], esi
test esi, esi
js 0x4c7845
lea eax, [esi*2 + 2]
cmp ebx, eax
jb 0x4c7845
push ebx
lea eax, [ebp - 0x270]
push 0
push eax
call fcn.0041d6f0
add esp, 8
lea ecx, [ebp - 0x270]
mov eax, ebx
lea ebx, [edi + 1]
sub eax, esi
add ebx, esi
dec eax
mov dword [ebp - 0x18], ebx
push esi
push ecx
mov ecx, dword [ebp + 0x10]
mov edx, ebx
push eax
mov dword [ebp - 8], eax
call fcn.004c7da0
add esp, 0x10
test eax, eax
jne 0x4c784a
xor ecx, ecx
test esi, esi
je 0x4c7680
cmp esi, 0x40
jb 0x4c7670
lea ebx, [ebp - 0x261]
mov eax, esi
sub ebx, edi
and eax, 0x3f
mov dword [ebp - 0x10], ebx
mov edx, esi
sub edx, eax
lea ebx, [ebp - 0x251]
sub ebx, edi
lea eax, [edi + 0x11]
mov dword [ebp - 4], ebx
nop
movups xmm0, xmmword [ebp + ecx - 0x270]
mov ebx, dword [ebp - 0x10]
lea eax, [eax + 0x40]
movups xmm1, xmmword [eax - 0x50]
pxor xmm1, xmm0
movups xmm0, xmmword [eax - 0x40]
movups xmmword [ebp + ecx - 0x270], xmm1
movups xmm1, xmmword [ebp + ecx - 0x260]
pxor xmm1, xmm0
movups xmmword [ebp + ecx - 0x260], xmm1
add ecx, 0x40
movups xmm0, xmmword [ebx + eax - 0x40]
movups xmm1, xmmword [eax - 0x30]
pxor xmm1, xmm0
movups xmmword [ebx + eax - 0x40], xmm1
mov ebx, dword [ebp - 4]
movups xmm1, xmmword [eax - 0x20]
movups xmm0, xmmword [ebx + eax - 0x40]
pxor xmm1, xmm0
movups xmmword [ebx + eax - 0x40], xmm1
lea ebx, [edi + 1]
lea ebx, [ebx + esi]
cmp ecx, edx
jb 0x4c7600
cmp ecx, esi
jae 0x4c7680
nop
mov al, byte [edi + ecx + 1]
xor byte [ebp + ecx - 0x270], al
inc ecx
cmp ecx, esi
jb 0x4c7670
mov edi, dword [ebp - 8]
lea eax, [ebp - 0x270]
push ecx
mov ecx, dword [ebp + 0x10]
lea edx, [ebp - 0x270]
add eax, esi
push edi
push eax
push esi
call fcn.004c7da0
add esp, 0x10
test eax, eax
je 0x4c76c4
lea ecx, [ebp - 0x270]
test esi, esi
je 0x4c784a
mov byte [ecx], 0
lea ecx, [ecx + 1]
sub esi, 1
jne 0x4c76b2
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
xor edx, edx
test edi, edi
je 0x4c76e5
mov ecx, ebx
lea ebx, [ebp - 0x270]
add ebx, esi
mov al, byte [ebx + edx]
lea ecx, [ecx + 1]
xor byte [ecx - 1], al
inc edx
cmp edx, edi
jb 0x4c76d4
mov ebx, dword [ebp - 0x18]
mov edx, dword [ebp - 0x1c]
lea ecx, [ebp - 0x270]
mov eax, edx
test edx, edx
je 0x4c76ff
mov byte [ecx], 0
lea ecx, [ecx + 1]
sub eax, 1
jne 0x4c76f4
lea eax, [esi*2 + 1]
mov dword [ebp - 0xc], 0
lea ecx, [edx - 1]
mov dword [ebp - 8], 0
mov edx, eax
mov dword [ebp - 4], eax
mov dword [ebp - 0x10], ecx
mov edi, 1
cmp edx, ecx
jae 0x4c77c1
mov eax, ecx
mov ecx, edi
sub eax, edx
cmp eax, 2
jb 0x4c7795
mov eax, dword [ebp - 0x10]
mov ebx, ecx
mov esi, dword [ebp - 0x14]
dec eax
mov dword [ebp - 4], eax
movzx ecx, byte [edx + esi]
mov eax, ebx
neg ecx
shr ecx, 0x1f
sub eax, ecx
movzx ecx, byte [edx + esi + 1]
and edi, eax
neg ecx
add dword [ebp - 0xc], edi
mov eax, ebx
shr ecx, 0x1f
add edx, 2
sub eax, ecx
mov ecx, dword [ebp - 8]
and edi, eax
mov eax, edx
add ecx, edi
mov dword [ebp - 0x20], eax
mov dword [ebp - 8], ecx
cmp edx, dword [ebp - 4]
jb 0x4c7743
mov eax, dword [ebp - 0xc]
mov esi, edx
cmp esi, dword [ebp - 0x10]
mov esi, dword [ebp - 0x24]
mov ebx, dword [ebp - 0x18]
mov dword [ebp - 0xc], eax
mov dword [ebp - 8], ecx
jae 0x4c77b3
mov ecx, 1
mov eax, dword [ebp - 0x14]
movzx eax, byte [edx + eax]
neg eax
shr eax, 0x1f
sub ecx, eax
mov eax, dword [ebp - 0xc]
and ecx, edi
lea edx, [ecx + 1]
mov ecx, dword [ebp - 8]
lea edx, [edx + esi*2]
jmp 0x4c77ba
lea edx, [esi*2 + 1]
add eax, ecx
add edx, eax
mov dword [ebp - 4], edx
mov ecx, dword [ebp + 0xc]
lea eax, [ebp - 0x68]
push esi
push eax
push 0
xor edx, edx
call fcn.004b5a30
add esp, 0xc
test eax, eax
jne 0x4c784a
xor edi, edi
xor edx, edx
test esi, esi
jle 0x4c77f6
movzx ecx, byte [ebp + edx - 0x68]
lea ebx, [ebx + 1]
movzx eax, byte [ebx - 1]
inc edx
xor ecx, eax
or edi, ecx
cmp edx, esi
jl 0x4c77e1
mov ebx, dword [ebp - 0x14]
mov eax, dword [ebp - 4]
movzx ecx, byte [eax + ebx]
movzx eax, byte [ebx]
xor ecx, 1
add ecx, edi
mov edi, dword [ebp - 0x1c]
add ecx, eax
lea eax, [ecx - 1]
not ecx
shr eax, 0x1f
neg al
shr ecx, 0x1f
movsx esi, al
neg cl
movsx eax, cl
and esi, eax
mov eax, dword [ebp - 4]
inc eax
mov edx, esi
not edx
and eax, esi
and edx, edi
or edx, eax
mov eax, dword [ebp + 8]
sub edi, edx
lea ecx, [edx + ebx]
mov dword [eax], ecx
mov eax, edi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, 0xffffff53
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret