Function at 0x4c6720
Capabilities:
Encode data using xor

Disassembly:
mov eax, 0x4c
call fcn.005f62e0
mov eax, dword [0x6c02d0]
xor eax, esp
mov dword [esp + 0x48], eax
push ebx
mov ebx, dword [esp + 0x54]
push ebp
push esi
push edi
mov al, byte [ebx]
lea edx, [ebx + 0x10]
mov edi, dword [esp + 0x68]
lea esi, [ebx + 0x20]
mov ecx, dword [ebx + 0x2c]
mov byte [esp + 0x13], al
test byte [esp + 0x13], 0x40
mov eax, dword [ebx + 0x28]
mov dword [esp + 0x24], ebx
mov dword [esp + 0x2c], edi
mov dword [esp + 0x1c], eax
mov dword [esp + 0x20], ecx
mov dword [esp + 0x14], edx
jne 0x4c6784
push ecx
push edx
push ebx
call eax
mov eax, dword [esi + 4]
add esp, 0xc
add dword [esi], 1
adc eax, 0
mov dword [esi + 4], eax
jmp 0x4c6788
mov dword [esp + 0x14], edx
movzx eax, byte [esp + 0x13]
mov edx, 0xf
and eax, 7
xor ecx, ecx
sub edx, eax
mov byte [ebx], al
mov dword [esp + 0x44], edx
cmp edx, 0xf
jae 0x4c67c3
movzx eax, byte [ebx + edx]
or ecx, eax
mov byte [ebx + edx], 0
inc edx
shl ecx, 8
cmp edx, 0xf
jb 0x4c67a4
lea edx, [ebx + 0x10]
lea esi, [ebx + 0x20]
mov dword [esp + 0x14], edx
jmp 0x4c67c7
mov edx, dword [esp + 0x14]
movzx eax, byte [ebx + 0xf]
mov ebp, dword [esp + 0x6c]
or ecx, eax
mov byte [ebx + 0xf], 1
cmp ecx, ebp
je 0x4c67ef
pop edi
pop esi
pop ebp
or eax, 0xffffffff
pop ebx
mov ecx, dword [esp + 0x48]
xor ecx, esp
call fcn.005f5e48
add esp, 0x4c
ret
lea eax, [ebp + 0xf]
or eax, 8
shr eax, 3
add dword [esi], eax
adc dword [esi + 4], 0
cmp dword [esi + 4], 0x20000000
jb 0x4c6826
ja 0x4c680e
cmp dword [esi], 0
jbe 0x4c6826
pop edi
pop esi
pop ebp
mov eax, 0xfffffffe
pop ebx
mov ecx, dword [esp + 0x48]
xor ecx, esp
call fcn.005f5e48
add esp, 0x4c
ret
mov esi, dword [esp + 0x64]
cmp ebp, 0x10
jb 0x4c68c6
mov eax, ebp
lea ecx, [ebx + 0x18]
shr eax, 4
mov dword [esp + 0x18], eax
nop
mov eax, dword [esi]
xor dword [edx], eax
mov eax, dword [esi + 4]
xor dword [edx + 4], eax
push dword [esp + 0x20]
mov eax, dword [esi + 8]
xor dword [ecx], eax
mov eax, dword [esi + 0xc]
xor dword [ecx + 4], eax
push edx
push edx
call dword [esp + 0x28]
push dword [esp + 0x2c]
lea eax, [esp + 0x58]
push eax
push ebx
call dword [esp + 0x34]
add esp, 0x18
mov eax, 8
dec eax
add byte [eax + ebx + 8], 1
jne 0x4c6881
test eax, eax
jne 0x4c6875
mov eax, dword [esi + 4]
sub ebp, 0x10
mov ecx, dword [esp + 0x48]
xor ecx, dword [esi]
xor eax, dword [esp + 0x4c]
mov edx, dword [esp + 0x14]
mov dword [edi], ecx
mov ecx, dword [esp + 0x50]
mov dword [edi + 4], eax
xor ecx, dword [esi + 8]
mov eax, dword [esi + 0xc]
add esi, 0x10
xor eax, dword [esp + 0x54]
mov dword [edi + 8], ecx
lea ecx, [ebx + 0x18]
mov dword [edi + 0xc], eax
add edi, 0x10
sub dword [esp + 0x18], 1
jne 0x4c6840
mov dword [esp + 0x6c], ebp
mov dword [esp + 0x2c], edi
mov dword [esp + 0x28], esi
lea eax, [ebx + 0x18]
mov dword [esp + 0x18], eax
test ebp, ebp
je 0x4c6a58
mov ecx, dword [esp + 0x14]
mov ebx, ebp
mov edx, esi
mov al, byte [edx]
lea edx, [edx + 1]
xor byte [ecx], al
lea ecx, [ecx + 1]
sub ebx, 1
jne 0x4c68e1
mov ebx, dword [esp + 0x20]
mov edx, dword [esp + 0x14]
push ebx
push edx
push edx
call dword [esp + 0x28]
push ebx
mov ebx, dword [esp + 0x34]
lea eax, [esp + 0x58]
push eax
push ebx
call dword [esp + 0x34]
add esp, 0x18
xor edx, edx
cmp ebp, 8
jb 0x4c6a2a
lea ecx, [ebp - 1]
lea eax, [esp + ebp + 0x47]
add ecx, edi
cmp edi, eax
ja 0x4c6935
lea eax, [esp + 0x48]
cmp ecx, eax
jae 0x4c6a2a
lea eax, [ebp - 1]
add eax, esi
cmp edi, eax
ja 0x4c6946
cmp ecx, esi
jae 0x4c6a2a
cmp ebp, 0x40
jb 0x4c6a0b
mov ebx, esi
mov ecx, ebp
sub ebx, edi
and ecx, 0x3f
mov dword [esp + 0x18], ebx
mov eax, ebp
mov ebp, dword [esp + 0x18]
lea ebx, [esp + 0x48]
sub ebx, edi
mov dword [esp + 0x40], ecx
mov dword [esp + 0x30], ebx
sub eax, ecx
lea ebx, [esp + 0x58]
mov dword [esp + 0x3c], eax
sub ebx, edi
lea ecx, [esi + 0x30]
mov esi, dword [esp + 0x30]
lea eax, [edi + 0x10]
mov dword [esp + 0x34], ebx
lea ebx, [esp + 0x68]
sub ebx, edi
mov edi, dword [esp + 0x34]
mov dword [esp + 0x38], ebx
nop dword [eax + eax]
movups xmm0, xmmword [ecx - 0x30]
mov ebx, dword [esp + 0x38]
lea ecx, [ecx + 0x40]
movups xmm1, xmmword [esp + edx + 0x48]
add edx, 0x40
lea eax, [eax + 0x40]
xorps xmm1, xmm0
movups xmmword [eax - 0x50], xmm1
movups xmm0, xmmword [eax + ebp - 0x40]
movups xmm1, xmmword [esi + eax - 0x40]
xorps xmm1, xmm0
movups xmmword [eax - 0x40], xmm1
movups xmm0, xmmword [ecx - 0x50]
movups xmm1, xmmword [edi + eax - 0x40]
xorps xmm1, xmm0
movups xmmword [eax - 0x30], xmm1
movups xmm1, xmmword [ebx + eax - 0x40]
mov ebx, dword [esp + 0x24]
movups xmm0, xmmword [ecx - 0x40]
xorps xmm1, xmm0
movups xmmword [eax - 0x20], xmm1
cmp edx, dword [esp + 0x3c]
jb 0x4c69a0
cmp dword [esp + 0x40], 8
mov esi, dword [esp + 0x28]
mov edi, dword [esp + 0x2c]
mov ebp, dword [esp + 0x6c]
jb 0x4c6a2a
mov eax, ebp
and eax, 0xfffffff8
movq xmm1, qword [esi + edx]
movq xmm0, qword [esp + edx + 0x48]
xorps xmm1, xmm0
movq qword [edi + edx], xmm1
add edx, 8
cmp edx, eax
jb 0x4c6a10
lea eax, [ebx + 0x18]
mov dword [esp + 0x18], eax
cmp edx, ebp
jae 0x4c6a58
lea eax, [esp + 0x48]
sub esi, eax
sub edi, eax
nop dword [eax]
lea ecx, [esp + 0x48]
add ecx, edx
inc edx
mov al, byte [ecx + esi]
xor al, byte [ecx]
mov byte [ecx + edi], al
cmp edx, ebp
jb 0x4c6a40
lea esi, [ebx + 0x18]
jmp 0x4c6a5c
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0x44]
lea edi, [ebx + 0x18]
mov ebp, dword [esp + 0x14]
cmp ecx, 0x10
jae 0x4c6a84
mov eax, 0x10
sub eax, ecx
push eax
lea eax, [ecx + ebx]
push 0
push eax
call fcn.005f77b0
add esp, 0xc
mov esi, edi
push dword [esp + 0x20]
lea eax, [esp + 0x4c]
push eax
push ebx
call dword [esp + 0x28]
mov eax, dword [esp + 0x54]
add esp, 0xc
xor dword [ebp], eax
mov eax, dword [esp + 0x4c]
xor dword [ebp + 4], eax
mov eax, dword [esp + 0x50]
xor dword [esi], eax
mov eax, dword [esp + 0x54]
xor dword [esi + 4], eax
mov al, byte [esp + 0x13]
mov ecx, dword [esp + 0x58]
pop edi
pop esi
mov byte [ebx], al
xor eax, eax
pop ebp
pop ebx
xor ecx, esp
call fcn.005f5e48
add esp, 0x4c
ret