Function at 0x4c1700
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x1c
mov ebp, dword [esp + 0x30]
xor eax, eax
mov ecx, dword [ebp + 0x38]
or ecx, dword [ebp + 0x3c]
jne 0x4c1a15
mov edi, dword [esp + 0x38]
mov edx, dword [ebp + 0x30]
mov ecx, dword [ebp + 0x34]
add edx, edi
mov esi, edx
adc ecx, 0
neg esi
mov esi, 0x20000000
sbb esi, ecx
jb 0x4c1a15
mov dword [ebp + 0x30], edx
mov dword [ebp + 0x34], ecx
mov esi, dword [esp + 0x34]
mov eax, dword [ebp + 0x174]
test eax, eax
je 0x4c1865
test edi, edi
je 0x4c1a0a
nop dword [eax]
movzx ecx, byte [esi]
inc esi
xor byte [ebp + eax + 0x40], cl
inc eax
and eax, 0xf
cmp edi, 1
lea edi, [edi - 1]
je 0x4c1778
test eax, eax
jne 0x4c1760
test eax, eax
jne 0x4c1a0a
movzx ebx, byte [ebp + 0x4f]
mov dword [esp + 4], esi
mov dword [esp + 8], edi
mov dword [esp], 0
mov eax, ebx
and eax, 0xf
shl eax, 4
mov edx, dword [ebp + eax + 0x60]
mov esi, dword [ebp + eax + 0x64]
mov edi, dword [ebp + eax + 0x6c]
mov eax, dword [ebp + eax + 0x68]
nop dword [eax + eax]
mov ecx, dword [esp + 0x30]
mov ebp, esi
and ebx, 0xfffffff0
shr esi, 4
shld ebp, edx, 0x1c
shld edx, edi, 0x1c
shld edi, eax, 0x1c
and eax, 0xf
xor esi, dword [ecx + ebx + 0x64]
xor ebp, dword [ecx + ebx + 0x60]
xor edx, dword [ecx + ebx + 0x6c]
xor edi, dword [ecx + ebx + 0x68]
xor esi, dword [eax*4 + 0x520ab4]
cmp dword [esp], 0xfffffff1
je 0x4c1843
mov ecx, dword [esp]
mov eax, dword [esp + 0x30]
mov ebx, dword [esp + 0x30]
dec dword [esp]
movzx eax, byte [eax + ecx + 0x4e]
mov ecx, esi
shr esi, 4
shld ecx, ebp, 0x1c
shld ebp, edx, 0x1c
shld edx, edi, 0x1c
and edi, 0xf
mov dword [esp + 0xc], eax
and eax, 0xf
shl eax, 4
xor esi, dword [ebx + eax + 0x64]
mov ebx, dword [esp + 0xc]
xor esi, dword [edi*4 + 0x520ab4]
mov edi, dword [esp + 0x30]
xor ecx, dword [edi + eax + 0x60]
xor ebp, dword [edi + eax + 0x6c]
xor edx, dword [edi + eax + 0x68]
mov eax, edx
mov edi, ebp
mov edx, ecx
jmp 0x4c17b0
mov eax, dword [esp + 0x30]
bswap esi
bswap ebp
bswap edi
bswap edx
mov dword [eax + 0x44], ebp
mov dword [eax + 0x40], esi
mov dword [eax + 0x4c], edi
mov edi, dword [esp + 8]
mov esi, dword [esp + 4]
mov ebp, eax
mov dword [eax + 0x48], edx
mov eax, edi
and eax, 0xfffffff0
je 0x4c199d
mov dl, byte [ebp + 0x4f]
mov dword [esp + 8], edi
mov dword [esp + 4], esi
mov dword [esp + 0x14], eax
jmp 0x4c18c1
mov ecx, dword [esp + 0x30]
bswap edi
bswap ebp
bswap esi
mov eax, dword [esp + 0x18]
bswap edx
mov dword [ecx + 0x44], ebp
mov dword [ecx + 0x40], edi
mov dword [ecx + 0x48], esi
mov esi, dword [esp + 0x10]
mov dword [ecx + 0x4c], edx
shr edx, 0x18
mov ebp, ecx
add esi, 0x10
add eax, 0xfffffff0
je 0x4c198d
xor dl, byte [esi + 0xf]
mov dword [esp + 0x18], eax
mov dword [esp + 0x10], esi
mov dword [esp], 0
movzx eax, dl
mov ecx, eax
and ecx, 0xf
shl ecx, 4
mov esi, dword [ebp + ecx + 0x60]
mov edi, dword [ebp + ecx + 0x64]
mov edx, dword [ebp + ecx + 0x6c]
mov ecx, dword [ebp + ecx + 0x68]
nop
mov ebx, dword [esp + 0x30]
mov ebp, edi
and eax, 0xfffffff0
shr edi, 4
shld ebp, esi, 0x1c
shld esi, edx, 0x1c
shld edx, ecx, 0x1c
and ecx, 0xf
xor edi, dword [ebx + eax + 0x64]
xor ebp, dword [ebx + eax + 0x60]
xor esi, dword [ebx + eax + 0x6c]
xor edx, dword [ebx + eax + 0x68]
xor edi, dword [ecx*4 + 0x520ab4]
cmp dword [esp], 0xfffffff1
je 0x4c1890
mov eax, dword [esp + 0x10]
mov ecx, dword [esp]
mov ebx, dword [esp + 0x30]
movzx eax, byte [eax + ecx + 0xe]
mov ecx, dword [esp]
dec dword [esp]
xor al, byte [ebx + ecx + 0x4e]
movzx ecx, al
mov eax, edi
shr edi, 4
mov dword [esp + 0xc], ecx
and ecx, 0xf
shld eax, ebp, 0x1c
shld ebp, esi, 0x1c
shld esi, edx, 0x1c
and edx, 0xf
shl ecx, 4
xor edi, dword [ebx + ecx + 0x64]
xor eax, dword [ebx + ecx + 0x60]
xor esi, dword [ebx + ecx + 0x68]
xor ebp, dword [ebx + ecx + 0x6c]
xor edi, dword [edx*4 + 0x520ab4]
mov ecx, esi
mov esi, eax
mov eax, dword [esp + 0xc]
mov edx, ebp
jmp 0x4c18f0
mov esi, dword [esp + 4]
mov eax, dword [esp + 0x14]
mov edi, dword [esp + 8]
add esi, eax
sub edi, eax
xor eax, eax
test edi, edi
je 0x4c1a0a
cmp edi, 0x20
jb 0x4c19fc
lea ecx, [ebp + 0x40]
lea edx, [esi + edi]
cmp edx, ecx
jbe 0x4c19ba
lea ecx, [ebp + edi + 0x40]
cmp esi, ecx
jb 0x4c19fc
mov eax, edi
xor ecx, ecx
and eax, 0xffffffe0
nop word cs:[eax + eax]
nop dword [eax + eax]
movups xmm0, xmmword [esi + ecx]
movups xmm2, xmmword [ebp + ecx + 0x40]
movups xmm1, xmmword [esi + ecx + 0x10]
movups xmm3, xmmword [ebp + ecx + 0x50]
xorps xmm2, xmm0
xorps xmm3, xmm1
movups xmmword [ebp + ecx + 0x40], xmm2
movups xmmword [ebp + ecx + 0x50], xmm3
add ecx, 0x20
cmp eax, ecx
jne 0x4c19d0
jmp 0x4c1a04
mov cl, byte [esi + eax]
xor byte [ebp + eax + 0x40], cl
inc eax
cmp edi, eax
jne 0x4c19fc
mov eax, edi
mov dword [ebp + 0x174], eax
mov eax, 1
add esp, 0x1c
pop esi
pop edi
pop ebx
pop ebp
ret