Function at 0x4c77d0
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.004b5f10
mov esi, eax
mov dword [ebp - 0x24], esi
test esi, esi
js 0x4c7ac5
lea eax, [esi*2 + 2]
cmp ebx, eax
jb 0x4c7ac5
push ebx
lea eax, [ebp - 0x270]
push 0
push eax
call fcn.0041d750
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.004c8020
add esp, 0x10
test eax, eax
jne 0x4c7aca
xor ecx, ecx
test esi, esi
je 0x4c7900
cmp esi, 0x40
jb 0x4c78f0
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 0x4c7880
cmp ecx, esi
jae 0x4c7900
nop
mov al, byte [edi + ecx + 1]
xor byte [ebp + ecx - 0x270], al
inc ecx
cmp ecx, esi
jb 0x4c78f0
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.004c8020
add esp, 0x10
test eax, eax
je 0x4c7944
lea ecx, [ebp - 0x270]
test esi, esi
je 0x4c7aca
mov byte [ecx], 0
lea ecx, [ecx + 1]
sub esi, 1
jne 0x4c7932
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
xor edx, edx
test edi, edi
je 0x4c7965
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 0x4c7954
mov ebx, dword [ebp - 0x18]
mov edx, dword [ebp - 0x1c]
lea ecx, [ebp - 0x270]
mov eax, edx
test edx, edx
je 0x4c797f
mov byte [ecx], 0
lea ecx, [ecx + 1]
sub eax, 1
jne 0x4c7974
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 0x4c7a41
mov eax, ecx
mov ecx, edi
sub eax, edx
cmp eax, 2
jb 0x4c7a15
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 0x4c79c3
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 0x4c7a33
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 0x4c7a3a
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.004b5ca0
add esp, 0xc
test eax, eax
jne 0x4c7aca
xor edi, edi
xor edx, edx
test esi, esi
jle 0x4c7a76
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 0x4c7a61
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