Function at 0x4c1610
Capabilities:
Encode data using xor

Disassembly:
push edi
push esi
push ebp
push ebx
push esi
mov ebp, dword [0x573d48]
xor ecx, ecx
mov eax, dword [0x573d6c]
cmp eax, 0xc
jg 0x4c1841
mov edx, dword [0x573d70]
test edx, edx
je 0x4c183d
mov eax, dword [0x573d68]
test eax, eax
jne 0x4c164f
mov eax, dword [0x573d4c]
test eax, eax
jne 0x4c183d
mov edi, dword [0x562908]
mov ebx, dword [0x573d64]
mov esi, dword [0x573d58]
imul ebx, dword [0x562908]
mov eax, dword [0x573d54]
add ebx, dword [0x573d60]
imul edi, dword [0x573d5c]
lea ecx, [esi + edi]
test eax, eax
je 0x4c174b
cmp ecx, 0x1fffff
jle 0x4c189e
lea eax, [esi + edi - 0x1fffff]
cmp eax, 0xc00000
jl 0x4c1894
mov eax, dword [0x562918]
nop
lea esi, [esi]
mov esi, eax
shl esi, 6
mov edi, eax
shl edi, 5
xor esi, edi
and esi, 0x40
sar eax, 1
or esi, eax
mov edi, esi
shl edi, 6
mov eax, esi
shl eax, 5
xor edi, eax
and edi, 0x40
sar esi, 1
or edi, esi
mov eax, edi
shl eax, 6
mov esi, edi
shl esi, 5
xor eax, esi
and eax, 0x40
sar edi, 1
or eax, edi
mov esi, eax
shl esi, 6
mov edi, eax
shl edi, 5
xor esi, edi
and esi, 0x40
sar eax, 1
or esi, eax
mov eax, esi
shl eax, 6
mov edi, esi
shl edi, 5
xor eax, edi
and eax, 0x40
sar esi, 1
or eax, esi
add ecx, 0xff600000
cmp ecx, 0xdfffff
jge 0x4c16b0
lea esi, [esi]
mov edi, eax
shl edi, 6
mov esi, eax
shl esi, 5
xor edi, esi
and edi, 0x40
sar eax, 1
or eax, edi
add ecx, 0xffe00000
cmp ecx, 0x1fffff
jg 0x4c1720
mov dword [0x562918], eax
jmp 0x4c1819
cmp ecx, 0x1fffff
jle 0x4c18b2
lea eax, [esi + edi - 0x1fffff]
cmp eax, 0xc00000
jl 0x4c18a8
mov eax, dword [0x562918]
mov esi, esi
mov esi, eax
shl esi, 0xe
mov edi, eax
shl edi, 0xd
xor esi, edi
and esi, 0x4000
sar eax, 1
or esi, eax
mov eax, esi
shl eax, 0xe
mov edi, esi
shl edi, 0xd
xor eax, edi
and eax, 0x4000
sar esi, 1
or eax, esi
mov edi, eax
shl edi, 0xe
mov esi, eax
shl esi, 0xd
xor edi, esi
and edi, 0x4000
sar eax, 1
or edi, eax
mov esi, edi
shl esi, 0xe
mov eax, edi
shl eax, 0xd
xor esi, eax
and esi, 0x4000
sar edi, 1
or esi, edi
mov eax, esi
shl eax, 0xe
mov edi, esi
shl edi, 0xd
xor eax, edi
and eax, 0x4000
sar esi, 1
or eax, esi
add ecx, 0xff600000
cmp ecx, 0xdfffff
jge 0x4c1770
lea esi, [esi]
mov esi, eax
shl esi, 0xe
mov edi, eax
shl edi, 0xd
xor esi, edi
and esi, 0x4000
sar eax, 1
or eax, esi
add ecx, 0xffe00000
cmp ecx, 0x1fffff
jg 0x4c17f0
mov dword [0x562918], eax
and ebx, 0x1fffff
and ecx, 0x1fffff
and eax, 1
mov dword [0x573d60], ebx
mov dword [0x573d58], ecx
lea ecx, [eax + eax - 1]
imul ecx, ebp
jmp 0x4c1847
xor ecx, ecx
jmp 0x4c1847
mov edx, dword [0x573d70]
mov eax, dword [0x573e04]
test edx, edx
mov byte [eax + 0x6f9cbd], cl
je 0x4c188c
mov edx, dword [0x573d68]
test edx, edx
je 0x4c1871
mov eax, dword [0x562908]
sub edx, eax
test edx, edx
mov dword [0x573d68], edx
jle 0x4c18bc
mov edx, dword [0x573d44]
test edx, edx
je 0x4c188c
mov eax, dword [0x562908]
sub edx, eax
test edx, edx
jle 0x4c18e5
mov dword [0x573d44], edx
add esp, 4
pop ebx
pop ebp
pop esi
pop edi
ret
mov eax, dword [0x562918]
jmp 0x4c1720
mov eax, dword [0x562918]
jmp 0x4c1819
mov eax, dword [0x562918]
jmp 0x4c17f0
mov eax, dword [0x562918]
jmp 0x4c1819
mov eax, dword [0x573d4c]
test eax, eax
je 0x4c1871
mov edx, dword [0x573f98]
mov al, byte [edx + 0xff26]
and al, 0xfd
mov byte [edx + 0xff26], al
mov dword [0x573d70], 0
jmp 0x4c1871
mov eax, dword [0x573d40]
test eax, eax
je 0x4c1900
mov eax, dword [0x573d48]
cmp eax, 0xf
jge 0x4c190f
inc eax
mov dword [0x573d48], eax
jmp 0x4c190f
mov eax, dword [0x573d48]
test eax, eax
je 0x4c190f
dec eax
mov dword [0x573d48], eax
mov eax, dword [0x573d3c]
add edx, eax
mov dword [0x573d44], edx
add esp, 4
pop ebx
pop ebp
pop esi
pop edi
ret