Function at 0x4e0538
Capabilities:
Encode data using xor
Encrypt data using rc4 ksa

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffff98
push ebx
push esi
push edi
mov dword [ebp - 0xc], ecx
mov dword [ebp - 8], edx
mov dword [ebp - 4], eax
mov eax, dword [ebp + 0x10]
push eax
lea eax, [ebp - 0x68]
push eax
mov ecx, dword [ebp + 0x14]
mov edx, dword [ebp - 0xc]
mov eax, dword [ebp - 8]
call fcn.004ddb88
mov eax, dword [ebp - 4]
cmp byte [eax + 0xc0], 0
jne 0x4e0c2d
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x60]
mov edx, dword [ebp - 4]
sub eax, dword [edx + 0x58]
je 0x4e0c3d
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x64]
mov edx, dword [ebp - 4]
sub eax, dword [edx + 0x5c]
je 0x4e0c3d
mov eax, dword [ebp + 0x14]
sub eax, dword [ebp - 8]
mov dword [ebp - 0x2c], eax
mov eax, dword [ebp + 0x10]
sub eax, dword [ebp - 0xc]
mov dword [ebp - 0x30], eax
mov eax, dword [ebp - 0x2c]
cdq
xor eax, edx
sub eax, edx
mov ecx, eax
mov eax, dword [ebp - 0x30]
cdq
xor eax, edx
sub eax, edx
cmp ecx, eax
jne 0x4e05df
mov eax, dword [ebp + 0x14]
push eax
mov eax, dword [ebp + 0x10]
push eax
mov eax, dword [ebp + 0xc]
push eax
mov al, byte [ebp + 8]
push eax
mov ecx, dword [ebp - 0xc]
mov edx, dword [ebp - 8]
mov eax, dword [ebp - 4]
call fcn.004e0058
jmp 0x4e0c3d
cmp dword [ebp - 0x2c], 0
jne 0x4e0642
cmp dword [ebp - 0x30], 0
jle 0x4e0604
mov eax, dword [ebp + 0x10]
dec eax
push eax
mov eax, dword [ebp + 0xc]
push eax
mov ecx, dword [ebp - 0xc]
mov edx, dword [ebp - 8]
mov eax, dword [ebp - 4]
call fcn.004df95c
jmp 0x4e0621
cmp dword [ebp - 0x30], 0
jge 0x4e0621
mov eax, dword [ebp - 0xc]
push eax
mov eax, dword [ebp + 0xc]
push eax
mov ecx, dword [ebp + 0x10]
inc ecx
mov edx, dword [ebp - 8]
mov eax, dword [ebp - 4]
call fcn.004df95c
cmp byte [ebp + 8], 0
je 0x4e0c3d
mov eax, dword [ebp + 0xc]
push eax
mov ecx, dword [ebp + 0x10]
mov edx, dword [ebp + 0x14]
mov eax, dword [ebp - 4]
call fcn.004df37c
jmp 0x4e0c3d
cmp dword [ebp - 0x30], 0
jne 0x4e06a5
cmp dword [ebp - 0x2c], 0
jle 0x4e0667
mov eax, dword [ebp + 0x14]
dec eax
push eax
mov eax, dword [ebp + 0xc]
push eax
mov ecx, dword [ebp - 0xc]
mov edx, dword [ebp - 8]
mov eax, dword [ebp - 4]
call fcn.004df730
jmp 0x4e0684
cmp dword [ebp - 0x2c], 0
jge 0x4e0684
mov eax, dword [ebp - 8]
push eax
mov eax, dword [ebp + 0xc]
push eax
mov edx, dword [ebp + 0x14]
inc edx
mov ecx, dword [ebp - 0xc]
mov eax, dword [ebp - 4]
call fcn.004df730
cmp byte [ebp + 8], 0
je 0x4e0c3d
mov eax, dword [ebp + 0xc]
push eax
mov ecx, dword [ebp + 0x10]
mov edx, dword [ebp + 0x14]
mov eax, dword [ebp - 4]
call fcn.004df37c
jmp 0x4e0c3d
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x58]
mov dword [ebp - 0x10], eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x60]
dec eax
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x5c]
mov dword [ebp - 0x18], eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x64]
dec eax
mov dword [ebp - 0x1c], eax
cmp dword [ebp - 0x2c], 0
jle 0x4e06f2
mov eax, dword [ebp - 8]
cmp eax, dword [ebp - 0x14]
jg 0x4e0c3d
mov eax, dword [ebp + 0x14]
cmp eax, dword [ebp - 0x10]
jl 0x4e0c3d
mov dword [ebp - 0x24], 1
jmp 0x4e072b
mov eax, dword [ebp + 0x14]
cmp eax, dword [ebp - 0x14]
jg 0x4e0c3d
mov eax, dword [ebp - 8]
cmp eax, dword [ebp - 0x10]
jl 0x4e0c3d
mov dword [ebp - 0x24], 0xffffffff
neg dword [ebp - 8]
neg dword [ebp + 0x14]
neg dword [ebp - 0x2c]
neg dword [ebp - 0x10]
neg dword [ebp - 0x14]
lea edx, [ebp - 0x14]
lea eax, [ebp - 0x10]
call fcn.004c73d4
cmp dword [ebp - 0x30], 0
jle 0x4e0752
mov eax, dword [ebp - 0xc]
cmp eax, dword [ebp - 0x1c]
jg 0x4e0c3d
mov eax, dword [ebp + 0x10]
cmp eax, dword [ebp - 0x18]
jl 0x4e0c3d
mov dword [ebp - 0x28], 1
jmp 0x4e078b
mov eax, dword [ebp + 0x10]
cmp eax, dword [ebp - 0x1c]
jg 0x4e0c3d
mov eax, dword [ebp - 0xc]
cmp eax, dword [ebp - 0x18]
jl 0x4e0c3d
mov dword [ebp - 0x28], 0xffffffff
neg dword [ebp - 0xc]
neg dword [ebp + 0x10]
neg dword [ebp - 0x30]
neg dword [ebp - 0x18]
neg dword [ebp - 0x1c]
lea edx, [ebp - 0x1c]
lea eax, [ebp - 0x18]
call fcn.004c73d4
mov eax, dword [ebp - 0x2c]
cmp eax, dword [ebp - 0x30]
jge 0x4e07e9
lea edx, [ebp - 0xc]
lea eax, [ebp - 8]
call fcn.004c73d4
lea edx, [ebp + 0x10]
lea eax, [ebp + 0x14]
call fcn.004c73d4
lea edx, [ebp - 0x30]
lea eax, [ebp - 0x2c]
call fcn.004c73d4
lea edx, [ebp - 0x18]
lea eax, [ebp - 0x10]
call fcn.004c73d4
lea edx, [ebp - 0x1c]
lea eax, [ebp - 0x14]
call fcn.004c73d4
lea edx, [ebp - 0x28]
lea eax, [ebp - 0x24]
call fcn.004c73d4
lea eax, [ebp - 0x38]
mov dword [ebp - 0x44], eax
lea eax, [ebp - 0x34]
mov dword [ebp - 0x48], eax
mov eax, dword [ebp - 0x28]
mov dword [ebp - 0x20], eax
jmp 0x4e0801
lea eax, [ebp - 0x34]
mov dword [ebp - 0x44], eax
lea eax, [ebp - 0x38]
mov dword [ebp - 0x48], eax
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x44]
imul dword [ebp - 0x28]
mov dword [ebp - 0x20], eax
xor eax, eax
mov dword [ebp - 0x3c], eax
mov eax, dword [ebp - 0x30]
shl eax, 0x10
cdq
idiv dword [ebp - 0x2c]
mov word [ebp - 0x4c], ax
mov word [ebp - 0x4a], 0
mov eax, dword [ebp - 8]
mov dword [ebp - 0x34], eax
mov eax, dword [ebp - 0xc]
mov dword [ebp - 0x38], eax
mov byte [ebp - 0x3d], 1
mov byte [ebp - 0x3e], 0
mov eax, dword [ebp - 4]
movzx eax, byte [eax + 0x8a]
mov edx, dword [0x70f59c]
mov eax, dword [edx + eax*4]
mov eax, dword [eax]
mov dword [ebp - 0x58], eax
mov eax, dword [ebp - 0xc]
cmp eax, dword [ebp - 0x18]
jge 0x4e09db
mov eax, dword [ebp - 0x18]
sub eax, dword [ebp - 0xc]
mov edi, eax
shl edi, 0x10
mov eax, edi
sub eax, 0x10000
mov dword [ebp - 0x3c], eax
movzx ebx, word [ebp - 0x4c]
mov eax, edi
cdq
idiv ebx
test edx, edx
jle 0x4e087e
mov eax, edi
cdq
idiv ebx
inc eax
mov edi, eax
jmp 0x4e0885
mov eax, edi
cdq
idiv ebx
mov edi, eax
mov edx, dword [ebp + 0x14]
inc edx
mov eax, dword [ebp - 0x34]
add eax, edi
call fcn.00433cd4
mov dword [ebp - 0x34], eax
mov eax, edi
imul word [ebp - 0x4c]
mov word [ebp - 0x4a], ax
mov eax, dword [ebp - 0x3c]
cdq
idiv ebx
test edx, edx
jle 0x4e08b6
mov eax, dword [ebp - 0x3c]
cdq
idiv ebx
inc eax
mov dword [ebp - 0x3c], eax
jmp 0x4e08bf
mov eax, dword [ebp - 0x3c]
cdq
idiv ebx
mov dword [ebp - 0x3c], eax
sub edi, dword [ebp - 0x3c]
mov eax, dword [ebp - 0x34]
cmp eax, dword [ebp - 0x14]
jle 0x4e08dc
mov eax, dword [ebp - 0x14]
add eax, edi
cmp eax, dword [ebp - 0x34]
jl 0x4e0c3d
mov byte [ebp - 0x3e], 1
mov eax, dword [ebp - 0x34]
cmp eax, dword [ebp - 0x10]
setge al
or al, byte [ebp - 0x3e]
je 0x4e09db
mov eax, dword [ebp - 0x18]
mov dword [ebp - 0x38], eax
mov eax, dword [ebp - 0x34]
mov dword [ebp - 0x3c], eax
mov bx, word [ebp - 0x4a]
sub bx, word [ebp - 0x4c]
mov eax, dword [ebp - 0x34]
sub eax, edi
mov ecx, dword [ebp - 0x14]
mov edx, dword [ebp - 0x10]
call fcn.004c7438
mov esi, eax
cmp byte [ebp - 0x3e], 0
je 0x4e0931
mov ax, word [ebp - 0x34]
sub ax, word [ebp - 0x14]
dec eax
imul word [ebp - 0x4c]
sub bx, ax
mov eax, dword [ebp - 0x14]
inc eax
mov dword [ebp - 0x34], eax
cmp dword [ebp - 0x28], 0xffffffff
jne 0x4e093a
neg dword [ebp - 0x38]
cmp dword [ebp - 0x24], 0xffffffff
jne 0x4e0945
neg dword [ebp - 0x34]
neg esi
xor eax, eax
push ebp
push 0x4e09ae
push dword fs:[eax]
mov dword fs:[eax], esp
cmp esi, dword [ebp - 0x34]
je 0x4e0996
mov eax, dword [ebp - 0x24]
neg eax
add dword [ebp - 0x34], eax
mov eax, dword [ebp - 0x48]
mov eax, dword [eax]
mov edx, dword [ebp - 4]
imul dword [edx + 0x44]
mov edx, dword [ebp - 0x44]
add eax, dword [edx]
mov edx, dword [ebp - 4]
mov edx, dword [edx + 0x54]
lea edx, [edx + eax*4]
movzx eax, bx
shr eax, 8
xor ecx, ecx
mov cl, byte [eax + 0x733db8]
mov eax, dword [ebp + 0xc]
call dword [ebp - 0x58]
sub bx, word [ebp - 0x4c]
cmp esi, dword [ebp - 0x34]
jne 0x4e0958
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x4e09b5
mov ebx, dword [0x70ef54]
mov ebx, dword [ebx]
call ebx
ret
cmp byte [ebp - 0x3d], 0
je 0x4e0a29
mov eax, dword [ebp - 8]
cmp eax, dword [ebp - 0x10]
jge 0x4e0a29
mov edi, dword [ebp - 0x10]
sub edi, dword [ebp - 8]
movzx eax, word [ebp - 0x4c]
imul edi, eax
mov eax, edi
test eax, eax
jns 0x4e0a01
add eax, 0xffff
sar eax, 0x10
add dword [ebp - 0x38], eax
mov word [ebp - 0x4a], di
mov eax, dword [ebp - 0x10]
mov dword [ebp - 0x34], eax
mov eax, dword [ebp - 0x38]
cmp eax, dword [ebp - 0x1c]
jg 0x4e0c3d
mov eax, dword [ebp - 0x38]
cmp eax, dword [ebp - 0x1c]
jne 0x4e0a29
mov byte [ebp - 0x3e], 1
mov esi, dword [ebp + 0x14]
xor eax, eax
mov byte [ebp - 0x3d], 0
mov edx, dword [ebp + 0x10]
cmp edx, dword [ebp - 0x1c]
jle 0x4e0aa4
mov eax, dword [ebp - 0x1c]
sub eax, dword [ebp - 0xc]
mov edi, eax
shl edi, 0x10
movzx ecx, word [ebp - 0x4c]
mov eax, edi
cdq
idiv ecx
mov esi, eax
add esi, dword [ebp - 8]
mov eax, edi
cdq
idiv ecx
test edx, edx
jg 0x4e0a5d
dec esi
cmp esi, dword [ebp - 0x14]
jge 0x4e0aa2
add edi, 0x10000
mov dword [ebp - 0x3c], edi
mov eax, dword [ebp - 0x3c]
cdq
idiv ecx
test edx, edx
jle 0x4e0a84
mov eax, dword [ebp - 0x3c]
cdq
idiv ecx
add eax, dword [ebp - 8]
inc eax
mov dword [ebp - 0x3c], eax
jmp 0x4e0a90
mov eax, dword [ebp - 0x3c]
cdq
idiv ecx
add eax, dword [ebp - 8]
mov dword [ebp - 0x3c], eax
mov eax, dword [ebp - 0x3c]
cmp eax, dword [ebp - 0x14]
jle 0x4e0a9e
mov eax, dword [ebp - 0x14]
mov dword [ebp - 0x3c], eax
mov byte [ebp - 0x3d], 1
mov al, 1
cmp esi, dword [ebp - 0x14]
jle 0x4e0aae
mov esi, dword [ebp - 0x14]
mov al, 1
inc esi
cmp dword [ebp - 0x28], 0xffffffff
jne 0x4e0ab8
neg dword [ebp - 0x38]
cmp dword [ebp - 0x24], 0xffffffff
jne 0x4e0ac6
neg dword [ebp - 0x34]
neg esi
neg dword [ebp - 0x3c]
cmp byte [ebp - 0x3e], 0
jne 0x4e0ba9
xor edx, edx
push ebp
push 0x4e0ba2
push dword fs:[edx]
mov dword fs:[edx], esp
or al, byte [ebp + 8]
jne 0x4e0af7
cmp byte [ebp - 0x3d], 0
jne 0x4e0af7
cmp esi, dword [ebp - 0x34]
jle 0x4e0af1
dec esi
jmp 0x4e0af7
cmp esi, dword [ebp - 0x34]
jge 0x4e0af7
inc esi
cmp esi, dword [ebp - 0x34]
je 0x4e0b8a
movzx ebx, word [ebp - 0x4a]
shr ebx, 8
mov eax, dword [ebp - 0x48]
mov eax, dword [eax]
mov edx, dword [ebp - 4]
imul dword [edx + 0x44]
mov edx, dword [ebp - 0x44]
add eax, dword [edx]
mov edx, dword [ebp - 4]
mov edx, dword [edx + 0x54]
lea eax, [edx + eax*4]
mov dword [ebp - 0x54], eax
mov eax, ebx
xor al, 0xff
and eax, 0xff
xor ecx, ecx
mov cl, byte [eax + 0x733db8]
mov edx, dword [ebp - 0x54]
mov eax, dword [ebp + 0xc]
call dword [ebp - 0x58]
mov eax, dword [ebp - 0x20]
shl eax, 2
add dword [ebp - 0x54], eax
xor eax, eax
mov al, bl
xor ecx, ecx
mov cl, byte [eax + 0x733db8]
mov edx, dword [ebp - 0x54]
mov eax, dword [ebp + 0xc]
call dword [ebp - 0x58]
mov ax, word [ebp - 0x4a]
mov word [ebp - 0x4e], ax
mov ax, word [ebp - 0x4c]
add word [ebp - 0x4a], ax
mov ax, word [ebp - 0x4a]
cmp ax, word [ebp - 0x4e]
ja 0x4e0b7b
mov eax, dword [ebp - 0x28]
add dword [ebp - 0x38], eax
mov eax, dword [ebp - 0x24]
add dword [ebp - 0x34], eax
cmp esi, dword [ebp - 0x34]
jne 0x4e0b00
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x4e0ba9
mov ebx, dword [0x70ef54]
mov ebx, dword [ebx]
call ebx
ret
cmp byte [ebp - 0x3d], 0
je 0x4e0c2d
xor eax, eax
push ebp
push 0x4e0c26
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 0x34]
cmp eax, dword [ebp - 0x3c]
je 0x4e0c0e
mov eax, dword [ebp - 0x48]
mov eax, dword [eax]
mov edx, dword [ebp - 4]
imul dword [edx + 0x44]
mov edx, dword [ebp - 0x44]
add eax, dword [edx]
mov edx, dword [ebp - 4]
mov edx, dword [edx + 0x54]
lea edx, [edx + eax*4]
movzx eax, word [ebp - 0x4a]
shr eax, 8
xor eax, 0xff
xor ecx, ecx
mov cl, byte [eax + 0x733db8]
mov eax, dword [ebp + 0xc]
call dword [ebp - 0x58]
mov ax, word [ebp - 0x4c]
add word [ebp - 0x4a], ax
mov eax, dword [ebp - 0x24]
add dword [ebp - 0x34], eax
mov eax, dword [ebp - 0x34]
cmp eax, dword [ebp - 0x3c]
jne 0x4e0bc5
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x4e0c2d
mov ebx, dword [0x70ef54]
mov ebx, dword [ebx]
call ebx
ret
lea edx, [ebp - 0x68]
mov ecx, 0x40000002
mov eax, dword [ebp - 4]
mov ebx, dword [eax]
call dword [ebx + 0x6c]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10