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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xe8
xor ecx, ecx
push ebx
push esi
xor edx, edx
xor esi, esi
mov ebx, 0x1b8
mov dword [ebp - 0x3c], ecx
mov dword [ebp - 0x44], 0x9e
mov dword [ebp - 0x48], 0x3f13
mov dword [ebp - 0x34], ecx
mov dword [ebp - 0x10], edx
mov dword [ebp - 0xc], ecx
mov dword [ebp - 8], ecx
mov dword [ebp - 0x4c], 0x3575
mov dword [ebp - 0x14], esi
mov dword [ebp - 0x40], 0x2f23
mov dword [ebp - 0x38], 0x5b59
cmp dword [ebp + 8], ecx
je 0x402428
cmp dword [ebp + 0xc], ecx
je 0x402428
push edi
mov edi, dword [ebp + 0x10]
mov eax, dword [edi + 0x170]
xor eax, dword [edi + 0x198]
cmp dword [ebp + 0xc], eax
jl 0x402427
mov eax, 0x6bca1af3
imul ebx
sar edx, 4
mov ebx, edx
shr ebx, 0x1f
add ebx, edx
jne 0x401e76
lea esp, [esp]
inc ecx
mov eax, ecx
and eax, 0x80000001
jns 0x401e9f
dec eax
or eax, 0xfffffffe
inc eax
jne 0x401ea2
inc ecx
cmp ecx, 0x4e93
jl 0x401e90
call fcn.00403490
lea edx, [edi + 0x198]
mov dword [edi + 0x1a4], eax
mov eax, dword [edx]
xor dword [edi + 0x1b4], eax
mov ecx, dword [edi + 0x1b4]
mov eax, dword [ebp + 0xc]
mov dword [edi + 0x164], edx
xor edx, edx
div ecx
mov esi, 0x6fc4
mov dword [edi + 0x1c0], eax
imul eax, ecx
mov dword [ebp - 0x50], eax
mov dword [edi + 0x224], eax
lea ecx, [ecx]
mov eax, 0x2c0b02c1
imul esi
sar edx, 5
mov esi, edx
shr esi, 0x1f
add esi, edx
jne 0x401ef0
xor ebx, ebx
cmp dword [ebp - 0x50], ebx
jbe 0x401f59
mov esi, dword [ebp + 8]
lea ecx, [ecx]
mov eax, dword [edi + 0x164]
inc ebx
mov al, byte [eax]
xor byte [ebx + esi - 1], al
movzx ecx, byte [ebx + esi - 1]
mov eax, dword [edi + 0x164]
mov dl, byte [eax + 1]
xor dl, cl
mov byte [ebx + esi - 1], dl
mov eax, dword [edi + 0x164]
mov cl, byte [eax + 2]
xor cl, dl
mov byte [ebx + esi - 1], cl
mov eax, dword [edi + 0x164]
mov al, byte [eax + 3]
xor al, cl
mov byte [ebx + esi - 1], al
cmp ebx, dword [edi + 0x224]
jb 0x401f10
xor esi, esi
mov ecx, 0x694b
mov edi, edi
mov eax, 0x8fb823ef
imul ecx
add edx, ecx
sar edx, 5
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x401f60
mov eax, dword [edi + 0x1b4]
dec eax
je 0x4020d2
xor ebx, ebx
xor esi, esi
mov eax, dword [edi + 0x1b4]
dec eax
push eax
push 1
push edi
call fcn.00403310
mov edx, dword [ebp - 0x3c]
add esp, 0xc
mov cl, al
mov byte [ebp - 1], cl
cmp edx, 0x15dc
jge 0x401fbc
mov eax, 0x15db
sub eax, edx
shr eax, 3
lea edx, [edx + eax*8]
add edx, 8
mov dword [ebp - 0x3c], edx
xor eax, eax
mov edi, edi
cmp cl, byte [edi + eax + 0x44]
je 0x401fcd
inc eax
cmp eax, esi
jbe 0x401fc0
jmp 0x401fd1
mov byte [ebp - 1], 0
mov ecx, dword [ebp - 0x44]
mov eax, 0x1d1c
mov edx, 0xa3
mov edi, edi
cmp ecx, edx
cmovg ecx, edx
dec eax
jne 0x401fe0
mov dword [ebp - 0x44], ecx
cmp ebx, 0x1153
jge 0x402016
inc ebx
mov eax, 0x2aaaaaab
imul ebx
mov eax, edx
shr eax, 0x1f
add eax, edx
lea ecx, [eax + eax*2]
add ecx, ecx
mov eax, ebx
sub eax, ecx
jne 0x40200e
inc ebx
cmp ebx, 0x1153
jl 0x401ff3
mov ecx, dword [ebp - 0x48]
test ecx, ecx
je 0x402036
lea ecx, [ecx]
mov eax, 0x78787879
imul ecx
sar edx, 4
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x402020
mov dword [ebp - 0x48], ecx
mov eax, dword [ebp - 0x34]
cmp eax, 0x2ed2
mov ecx, 0x2ed2
cmovl eax, ecx
mov dword [ebp - 0x34], eax
mov al, byte [ebp - 1]
test al, al
je 0x402055
mov byte [edi + esi + 0x44], al
inc esi
mov eax, dword [ebp - 0x10]
cmp eax, 0x492e
jge 0x40208a
mov ecx, 0x492d
sub ecx, eax
mov eax, 0x24924925
mul ecx
sub ecx, edx
shr ecx, 1
add ecx, edx
mov edx, dword [ebp - 0x10]
shr ecx, 2
add edx, 7
lea eax, [ecx*8]
sub eax, ecx
add edx, eax
mov dword [ebp - 0x10], edx
mov edx, dword [ebp - 0xc]
cmp edx, 0x37c0
jge 0x4020b5
mov ecx, 0x37bf
sub ecx, edx
mov eax, 0xcccccccd
mul ecx
shr edx, 3
lea eax, [edx + edx*4]
mov edx, dword [ebp - 0xc]
lea edx, [edx + eax*2]
add edx, 0xa
mov dword [ebp - 0xc], edx
mov eax, dword [ebp - 8]
inc eax
cmp eax, 5
jl 0x4020b8
mov dword [ebp - 8], eax
mov eax, dword [edi + 0x1b4]
dec eax
cmp esi, eax
jb 0x401f86
xor esi, esi
mov eax, 0x7d75
mov edx, 0xc
mov ecx, 0x35
cmp ecx, edx
cmovl ecx, edx
dec eax
jne 0x4020e1
push 0x48
push eax
mov byte [ebp - 0x9c], al
lea eax, [ebp - 0x9b]
push eax
call fcn.004031a0
lea eax, [ebp - 0x9c]
push eax
call fcn.00402bc0
add esp, 0x10
mov edi, 0x5fe2
mov eax, 0x487ede05
imul edi
sar edx, 5
mov edi, edx
shr edi, 0x1f
add edi, edx
jne 0x402112
mov edi, dword [ebp + 0x10]
mov esi, 0x37d4
lea ecx, [ecx]
mov eax, 0x4c8f8d29
imul esi
sar edx, 6
mov esi, edx
shr esi, 0x1f
add esi, edx
jne 0x402130
lea ebx, [edi + 0x238]
mov dword [ebp - 0x30], 0xf9361c10
mov dword [ebp - 0x2c], 0xc550c91c
movq xmm0, qword [ebp - 0x30]
movq qword [ebx], xmm0
mov dword [ebp - 0x28], 0xc106e4b7
mov dword [ebp - 0x24], 0x50bb7dbd
movq xmm0, qword [ebp - 0x28]
xor eax, eax
movq qword [ebx + 8], xmm0
mov dword [ebp - 0x20], 0xd6b2efa4
mov dword [ebp - 0x1c], eax
movq xmm0, qword [ebp - 0x20]
movq qword [ebx + 0x10], xmm0
mov word [ebx + 0x18], ax
xor byte [ebp + eax - 0x9c], 0x99
inc eax
cmp eax, 0x47
jb 0x402192
xor ecx, ecx
inc ecx
mov eax, ecx
and eax, 0x80000001
jns 0x4021b1
dec eax
or eax, 0xfffffffe
inc eax
jne 0x4021b5
add ecx, ecx
cmp ecx, 0x7da9
jl 0x4021a2
mov eax, 0x5ae3
mov edx, 0x47
mov ecx, 0x95
lea esp, [esp]
cmp ecx, edx
cmovl ecx, edx
dec eax
jne 0x4021d0
mov eax, 0x5e58
mov edx, 0xa1
mov ecx, 0xc4
cmp ecx, edx
cmovl ecx, edx
dec eax
jne 0x4021e7
mov esi, 0x4d8f
mov eax, 0x30c30c31
imul esi
sar edx, 2
mov esi, edx
shr esi, 0x1f
add esi, edx
jne 0x4021f4
xor eax, eax
mov dword [ebp - 8], eax
mov esi, eax
cmp dword [edi + 0x1b4], eax
jbe 0x402384
lea ebx, [ebx]
movzx ebx, byte [edi + eax + 0x44]
imul ebx, dword [edi + 0x1c0]
mov ecx, dword [ebp - 0x4c]
add ebx, dword [ebp + 8]
test ecx, ecx
je 0x40224b
mov eax, 0x2aaaaaab
imul ecx
sar edx, 1
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x402236
mov dword [ebp - 0x4c], ecx
cmp esi, 0x74e8
jge 0x40227e
inc esi
mov eax, 0x66666667
imul esi
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
lea ecx, [eax + eax*4]
add ecx, ecx
mov eax, esi
sub eax, ecx
jne 0x402273
add esi, 2
cmp esi, 0x74e8
jl 0x402253
mov dword [ebp - 0x14], esi
push 0x48
lea eax, [ebp - 0xe7]
push 0
push eax
mov dword [edi + 8], ebx
mov byte [ebp - 0xe8], 0
call fcn.004031a0
push 0x48
lea eax, [ebp - 0xe8]
push ebx
push eax
call fcn.00403170
mov ecx, 0x11
lea esi, [ebp - 0x9c]
mov edi, ebx
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
movsb byte es:[edi], byte [esi]
mov edi, dword [ebp + 0x10]
add esp, 0x18
mov eax, dword [edi + 8]
call eax
mov ecx, dword [ebp - 0x40]
test ecx, ecx
je 0x4022e6
jmp 0x4022d0
mov eax, 0x4325c53f
imul ecx
sar edx, 6
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x4022d0
mov dword [ebp - 0x40], ecx
push 0x48
lea eax, [ebp - 0xe8]
push eax
push ebx
call fcn.00403170
xor esi, esi
add esp, 0xc
cmp dword [edi + 0x1c0], esi
jbe 0x402349
mov eax, dword [edi + 0x164]
inc esi
mov al, byte [eax + 3]
xor byte [esi + ebx - 1], al
movzx ecx, byte [esi + ebx - 1]
mov eax, dword [edi + 0x164]
mov dl, byte [eax + 2]
xor dl, cl
mov byte [esi + ebx - 1], dl
mov eax, dword [edi + 0x164]
mov cl, byte [eax + 1]
xor cl, dl
mov byte [esi + ebx - 1], cl
mov eax, dword [edi + 0x164]
mov al, byte [eax]
xor al, cl
mov byte [esi + ebx - 1], al
cmp esi, dword [edi + 0x1c0]
jb 0x402302
mov ecx, dword [ebp - 0x38]
test ecx, ecx
je 0x402368
mov eax, 0xe070381d
imul ecx
add edx, ecx
sar edx, 6
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x402350
mov dword [ebp - 0x38], ecx
mov eax, dword [ebp - 8]
mov esi, dword [ebp - 0x14]
inc eax
mov dword [ebp - 8], eax
cmp eax, dword [edi + 0x1b4]
jb 0x402220
lea ebx, [edi + 0x238]
mov eax, 0x108b
mov edx, 0x3c
mov ecx, 0x84
cmp ecx, edx
cmovl ecx, edx
dec eax
jne 0x402393
call fcn.00403490
mov dword [edi + 0x21c], eax
add eax, 0xfffffffe
push eax
push dword [edi + 0x1a4]
call fcn.004010e0
add esp, 8
mov ecx, 0x5b59
mov eax, 0x43
mov edx, 0x47
cmp eax, 0x47
cmovg eax, edx
dec ecx
jne 0x4023c7
push 0x20332b4a
push ebx
call fcn.00401c90
mov eax, dword [ebp + 0xc]
cdq
and edx, 0xff
add esp, 8
lea esi, [edx + eax]
sar esi, 8
test esi, esi
je 0x40240d
mov edi, dword [ebp + 8]
push ebx
push 0x100
push edi
call fcn.00403200
add esp, 0xc
add edi, 0x100
dec esi
jne 0x4023f5
mov ecx, 0x1005
mov eax, 0x891ac73b
imul ecx
add edx, ecx
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x402412
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret