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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x8c
push ebx
push esi
xor esi, esi
push edi
mov ebx, 0x4e8e
mov edi, 0xf42
mov dword [ebp - 8], 0x2b44
mov dword [ebp - 0x44], 0x455
mov dword [ebp - 0x40], 0x7862
mov dword [ebp - 0x58], 0x7662
mov dword [ebp - 0x54], esi
mov dword [ebp - 0x34], 0x6bca
mov dword [ebp - 0x50], 0x44c6
mov dword [ebp - 0x3c], 0x4a74
mov dword [ebp - 0x48], esi
mov dword [ebp - 0x28], esi
mov dword [ebp - 0x4c], 0x79d0
mov dword [ebp - 0x2c], 0x6baf
mov dword [ebp - 0x30], 0x2db6
mov dword [ebp - 0x38], 0xaef
cmp dword [ebp + 8], esi
je 0x402585
mov edx, dword [ebp + 0xc]
test edx, edx
je 0x402585
mov eax, dword [ebp + 0x10]
lea ecx, [eax + 0x21c]
mov eax, dword [eax + 0x1b0]
xor eax, dword [ecx]
cmp edx, eax
jl 0x402585
call fcn.004034f0
mov edx, dword [ebp + 0x10]
lea ecx, [edx + 0x21c]
mov dword [edx + 0x36c], eax
mov eax, dword [ecx]
xor dword [edx + 0x144], eax
jmp 0x401f10
mov eax, 0x1948b0fd
imul ebx
sar edx, 3
mov ebx, edx
shr ebx, 0x1f
add ebx, edx
jne 0x401f10
mov ebx, dword [ebp + 0x10]
mov eax, dword [ebp + 0xc]
xor edx, edx
div dword [ebx + 0x144]
mov dword [ebx + 0x340], ecx
mov ecx, 0x1011
mov dword [ebp - 4], 0x99
mov edx, eax
mov dword [ebx + 0x208], edx
mov eax, 0xe9
cmp eax, 0x99
cmovg eax, dword [ebp - 4]
dec ecx
jne 0x401f50
mov ecx, 0x722f
mov dword [ebp - 4], 0x4f
mov eax, 0x69
lea ecx, [ecx]
cmp eax, 0x4f
cmovl eax, dword [ebp - 4]
dec ecx
jne 0x401f70
mov eax, dword [ebx + 0x144]
imul eax, edx
mov edx, ebx
xor ebx, ebx
mov dword [edx + 0x31c], eax
test eax, eax
je 0x401fe3
mov esi, dword [ebp + 8]
mov eax, dword [edx + 0x340]
inc ebx
mov al, byte [eax]
xor byte [ebx + esi - 1], al
mov eax, dword [edx + 0x340]
movzx ecx, byte [ebx + esi - 1]
mov dl, byte [eax + 1]
mov eax, dword [ebp + 0x10]
xor dl, cl
mov byte [ebx + esi - 1], dl
mov eax, dword [eax + 0x340]
mov cl, byte [eax + 2]
xor cl, dl
mov edx, dword [ebp + 0x10]
mov byte [ebx + esi - 1], cl
mov eax, dword [edx + 0x340]
mov al, byte [eax + 3]
xor al, cl
mov byte [ebx + esi - 1], al
cmp ebx, dword [edx + 0x31c]
jb 0x401f94
xor esi, esi
mov eax, dword [edx + 0x144]
xor ebx, ebx
dec eax
je 0x40206e
test edi, edi
je 0x40200c
mov eax, 0x151d07eb
imul edi
sar edx, 3
mov edi, edx
shr edi, 0x1f
add edi, edx
jne 0x401ff6
mov edx, dword [ebp + 0x10]
mov eax, dword [edx + 0x144]
dec eax
push eax
push 1
push edx
call fcn.00403300
mov edx, dword [ebp + 0x10]
add esp, 0xc
mov cl, al
xor eax, eax
cmp cl, byte [edx + eax + 0x40]
je 0x402033
inc eax
cmp eax, ebx
jbe 0x402026
jmp 0x402035
xor cl, cl
cmp esi, 0x4447
jge 0x40205a
lea ecx, [ecx]
inc esi
mov eax, esi
and eax, 0x80000003
jns 0x40204f
dec eax
or eax, 0xfffffffc
inc eax
jne 0x402052
inc esi
cmp esi, 0x4447
jl 0x402040
test cl, cl
je 0x402063
mov byte [edx + ebx + 0x40], cl
inc ebx
mov eax, dword [edx + 0x144]
dec eax
cmp ebx, eax
jb 0x401ff2
xor ebx, ebx
inc ebx
mov eax, 0x38e38e39
imul ebx
sar edx, 1
mov eax, edx
shr eax, 0x1f
add eax, edx
mov ecx, ebx
lea eax, [eax + eax*8]
sub ecx, eax
jne 0x40208b
inc ebx
cmp ebx, 0x7501
jl 0x402070
xorps xmm0, xmm0
xor esi, esi
mov dword [ebp - 0x74], 0xc6a9ce10
mov dword [ebp - 0x70], 0xd5d54ba5
mov dword [ebp - 0x6c], 0x8618a0ce
movq qword [ebp - 0x68], xmm0
mov dword [ebp - 0x60], 0
mov word [ebp - 0x5c], 0
mov byte [ebp - 0x5a], 0
mov dword [ebp - 0x24], 0xce4cd112
mov dword [ebp - 0x20], 0x8b304a50
mov dword [ebp - 0x1c], 0xc6045cc
mov dword [ebp - 0x18], 0x38c2f2da
mov dword [ebp - 0x14], 0xefe8d099
mov dword [ebp - 0x10], esi
mov eax, 0x65c3
mov edx, 0x2a
mov ecx, 0x84
cmp ecx, edx
cmovl ecx, edx
dec eax
jne 0x4020f8
mov ebx, dword [ebp + 0x10]
movq xmm0, qword [ebp - 0x24]
lea edi, [ebx + 4]
mov dword [ebp - 4], edi
movq qword [edi], xmm0
movq xmm0, qword [ebp - 0x1c]
movq qword [edi + 8], xmm0
movq xmm0, qword [ebp - 0x14]
movq qword [edi + 0x10], xmm0
mov word [edi + 0x18], si
mov eax, 0x14c0
mov edx, 0x85
mov ecx, 0xee
lea esp, [esp]
cmp ecx, edx
cmovg ecx, edx
dec eax
jne 0x402140
jmp 0x402150
xor byte [ebp + eax - 0x74], 0x45
inc eax
cmp eax, 0xc
jb 0x402150
jmp 0x402160
mov eax, 0x4fec04ff
imul dword [ebp - 8]
sar edx, 6
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [ebp - 8], eax
jne 0x402160
xor ecx, ecx
lea esp, [esp]
mov eax, ecx
and eax, 0x80000001
jns 0x40218e
dec eax
or eax, 0xfffffffe
inc eax
jne 0x402195
add ecx, 3
jmp 0x402196
inc ecx
cmp ecx, 0x727d
jl 0x402180
xor eax, eax
mov dword [ebp - 8], eax
cmp dword [ebx + 0x144], eax
jbe 0x40242c
nop
movzx edi, byte [ebx + eax + 0x40]
imul edi, dword [ebx + 0x208]
mov ecx, dword [ebp - 0x44]
add edi, dword [ebp + 8]
test ecx, ecx
je 0x4021de
mov eax, 0x92492493
imul ecx
add edx, ecx
sar edx, 6
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x4021c6
mov dword [ebp - 0x44], ecx
mov ecx, dword [ebp - 0x40]
mov dword [ebx + 0x288], edi
test ecx, ecx
je 0x402208
jmp 0x4021f0
mov eax, 0x81020409
imul ecx
add edx, ecx
sar edx, 6
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x4021f0
mov dword [ebp - 0x40], ecx
mov ecx, dword [ebp - 0x58]
test ecx, ecx
je 0x402226
nop
mov eax, 0x5397829d
imul ecx
sar edx, 6
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x402210
mov dword [ebp - 0x58], ecx
mov esi, dword [ebp - 0x54]
cmp esi, 0x42b
jge 0x40224e
mov ecx, 0x42a
sub ecx, esi
mov eax, 0xcccccccd
mul ecx
shr edx, 3
lea eax, [edx + edx*4]
lea esi, [esi + eax*2]
add esi, 0xa
mov dword [ebp - 0x54], esi
mov ecx, dword [ebp - 0x34]
test ecx, ecx
je 0x40226d
mov eax, 0xaf3addc7
imul ecx
add edx, ecx
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x402255
mov dword [ebp - 0x34], ecx
movq xmm0, qword [edi]
mov ecx, dword [ebp - 0x50]
mov si, word [edi + 0x18]
movq qword [ebp - 0x7c], xmm0
movq xmm0, qword [edi + 8]
movq qword [ebp - 0x84], xmm0
movq xmm0, qword [edi + 0x10]
movq qword [ebp - 0x8c], xmm0
test ecx, ecx
je 0x4022b8
jmp 0x4022a0
mov eax, 0xb92143fb
imul ecx
add edx, ecx
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x4022a0
mov dword [ebp - 0x50], ecx
mov ecx, dword [ebp - 0x3c]
test ecx, ecx
je 0x4022d6
nop
mov eax, 0x5397829d
imul ecx
sar edx, 6
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x4022c0
mov dword [ebp - 0x3c], ecx
movq xmm0, qword [ebp - 0x74]
mov eax, dword [ebp - 0x6c]
movq qword [edi], xmm0
mov dword [edi + 8], eax
mov eax, dword [ebx + 0x288]
call eax
movq xmm0, qword [ebp - 0x7c]
mov eax, dword [ebp - 0x48]
movq qword [edi], xmm0
movq xmm0, qword [ebp - 0x84]
movq qword [edi + 8], xmm0
movq xmm0, qword [ebp - 0x8c]
movq qword [edi + 0x10], xmm0
mov word [edi + 0x18], si
inc eax
cmp eax, 0x3abd
jl 0x402317
xor esi, esi
mov dword [ebp - 0x48], eax
cmp dword [ebx + 0x208], esi
jbe 0x402377
lea esp, [esp]
mov eax, dword [ebx + 0x340]
inc esi
mov al, byte [eax + 3]
xor byte [esi + edi - 1], al
movzx ecx, byte [esi + edi - 1]
mov eax, dword [ebx + 0x340]
mov dl, byte [eax + 2]
xor dl, cl
mov byte [esi + edi - 1], dl
mov eax, dword [ebx + 0x340]
mov cl, byte [eax + 1]
xor cl, dl
mov byte [esi + edi - 1], cl
mov eax, dword [ebx + 0x340]
mov al, byte [eax]
xor al, cl
mov byte [esi + edi - 1], al
cmp esi, dword [ebx + 0x208]
jb 0x402330
mov ecx, dword [ebp - 0x28]
cmp ecx, 0x69cd
jge 0x402395
mov eax, 0x69cc
sub eax, ecx
shr eax, 2
lea ecx, [ecx + eax*4]
add ecx, 4
mov dword [ebp - 0x28], ecx
mov ecx, dword [ebp - 0x4c]
test ecx, ecx
je 0x4023b6
lea esp, [esp]
mov eax, 0x7e07e07f
imul ecx
sar edx, 5
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x4023a0
mov dword [ebp - 0x4c], ecx
mov ecx, dword [ebp - 0x2c]
test ecx, ecx
je 0x4023d6
lea ecx, [ecx]
mov eax, 0x19c2d14f
imul ecx
sar edx, 4
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x4023c0
mov dword [ebp - 0x2c], ecx
mov ecx, dword [ebp - 0x30]
test ecx, ecx
je 0x4023f8
lea ecx, [ecx]
mov eax, 0x81020409
imul ecx
add edx, ecx
sar edx, 6
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x4023e0
mov dword [ebp - 0x30], ecx
mov ecx, dword [ebp - 0x38]
test ecx, ecx
je 0x402416
nop
mov eax, 0x2fa0be83
imul ecx
sar edx, 5
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x402400
mov dword [ebp - 0x38], ecx
mov eax, dword [ebp - 8]
inc eax
mov dword [ebp - 8], eax
cmp eax, dword [ebx + 0x144]
jb 0x4021b0
lea edi, [ebx + 4]
call fcn.004034f0
mov dword [ebx + 0x210], eax
add eax, 0xfffffffe
push eax
push dword [ebx + 0x36c]
call fcn.00401120
push 0x4de938e
push edi
call fcn.00401d00
add esp, 0x10
mov eax, 0x5915
mov edx, 0xc3
mov ecx, 0x24
cmp ecx, edx
cmovl ecx, edx
dec eax
jne 0x402463
mov edi, 0x1826
mov eax, 0x3e0f83e1
imul edi
sar edx, 4
mov edi, edx
shr edi, 0x1f
add edi, edx
jne 0x402470
mov eax, 0x53b0
mov edx, 0x56
mov ecx, 0xd9
cmp ecx, edx
cmovg ecx, edx
dec eax
jne 0x402492
mov edi, 0x2e63
nop
mov eax, 0x28c1979
imul edi
sar edx, 1
mov edi, edx
shr edi, 0x1f
add edi, edx
jne 0x4024a0
mov edi, dword [ebp - 4]
xor ebx, ebx
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 0x4024d2
inc ebx
cmp ebx, 0x2b6b
jl 0x4024b7
mov eax, dword [ebp + 0xc]
cdq
and edx, 0xff
lea esi, [edx + eax]
sar esi, 8
xor ebx, ebx
lea esp, [esp]
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 0x40250d
add ebx, 2
cmp ebx, 0x5819
jl 0x4024f0
test esi, esi
je 0x402538
mov ebx, dword [ebp + 8]
lea esp, [esp]
push edi
push 0x100
push ebx
call fcn.004031d0
add esp, 0xc
add ebx, 0x100
dec esi
jne 0x402520
xor ecx, ecx
lea ebx, [ebx]
inc ecx
mov eax, ecx
and eax, 0x80000001
jns 0x40254f
dec eax
or eax, 0xfffffffe
inc eax
jne 0x402554
add ecx, 2
cmp ecx, 0x5283
jl 0x402540
xor ebx, ebx
mov edi, edi
inc ebx
mov eax, 0x38e38e39
imul ebx
sar edx, 1
mov eax, edx
shr eax, 0x1f
add eax, edx
mov ecx, ebx
lea eax, [eax + eax*8]
sub ecx, eax
jne 0x40257d
add ebx, 2
cmp ebx, 0x5419
jl 0x402560
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret