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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xf0
push ebx
xor ebx, ebx
xor eax, eax
push esi
xor esi, esi
push edi
mov ecx, 0xc0
mov edi, 0x3c
mov dword [ebp - 0x5c], 0x6ade
mov dword [ebp - 0x4c], 0x7ddd
mov dword [ebp - 0x30], 0x33bb
mov dword [ebp - 0x38], ebx
mov dword [ebp - 0x60], 0x296d
mov dword [ebp - 0x34], ebx
mov dword [ebp - 0x44], 0xd7b
mov dword [ebp - 8], 0x73c3
mov dword [ebp - 0x3c], 0x6fe0
mov dword [ebp - 0x2c], ebx
mov dword [ebp - 0xc], ebx
mov dword [ebp - 0x68], 0x285e
mov dword [ebp - 0x54], ebx
mov dword [ebp - 0x64], eax
mov dword [ebp - 0x40], 0x1b85
mov dword [ebp - 0x48], 0x56d
mov dword [ebp - 0x28], eax
mov dword [ebp - 0x50], 0x5c9a
mov dword [ebp - 0x58], 0x7dbd
cmp dword [ebp + 8], eax
je 0x40242e
cmp dword [ebp + 0xc], eax
je 0x40242e
mov eax, dword [ebp + 0x10]
lea edx, [eax + 0x2ac]
mov eax, dword [eax + 0x408]
xor eax, dword [edx]
cmp dword [ebp + 0xc], eax
jl 0x40242e
call fcn.00403580
mov edx, dword [ebp + 0x10]
lea ecx, [edx + 0x2ac]
mov dword [edx + 0x2c8], eax
mov eax, dword [ecx]
xor dword [edx + 0x2b4], eax
mov dword [edx + 0x24], ecx
mov eax, 0x4a10
mov ecx, 0xa6
lea ebx, [ebx]
cmp edi, ecx
cmovg edi, ecx
dec eax
jne 0x401db0
inc esi
mov eax, 0x66666667
imul esi
sar edx, 1
mov eax, edx
shr eax, 0x1f
add eax, edx
mov ecx, esi
lea eax, [eax + eax*4]
sub ecx, eax
jne 0x401dd3
inc esi
cmp esi, 0xfe2
jl 0x401db8
mov ecx, dword [ebp + 0x10]
mov eax, dword [ebp + 0xc]
mov esi, dword [ecx + 0x2b4]
xor edx, edx
div esi
mov edi, eax
mov dword [ecx + 0x400], 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 0x401e10
add ebx, 2
cmp ebx, 0x220b
jl 0x401df3
mov eax, dword [ebp + 0x10]
imul edi, esi
mov dword [eax + 0x2dc], edi
mov eax, 0x487ede05
imul dword [ebp - 0x5c]
sar edx, 6
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [ebp - 0x5c], eax
jne 0x401e24
mov ecx, 0x5156
mov eax, 0xa0a0a0a1
imul ecx
add edx, ecx
sar edx, 6
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x401e40
xor esi, esi
test edi, edi
mov edi, dword [ebp + 0x10]
je 0x401e9c
mov ebx, dword [ebp + 8]
mov eax, dword [edi + 0x24]
inc esi
mov al, byte [eax]
xor byte [esi + ebx - 1], al
movzx ecx, byte [esi + ebx - 1]
mov eax, dword [edi + 0x24]
mov dl, byte [eax + 1]
xor dl, cl
mov byte [esi + ebx - 1], dl
mov eax, dword [edi + 0x24]
mov cl, byte [eax + 2]
xor cl, dl
mov byte [esi + ebx - 1], cl
mov eax, dword [edi + 0x24]
mov al, byte [eax + 3]
xor al, cl
mov byte [esi + ebx - 1], al
cmp esi, dword [edi + 0x2dc]
jb 0x401e61
xor ebx, ebx
mov edi, edi
inc ebx
mov eax, 0x66666667
imul ebx
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
lea ecx, [eax + eax*4]
add ecx, ecx
mov eax, ebx
sub eax, ecx
jne 0x401ec0
add ebx, 2
cmp ebx, 0x12aa
jl 0x401ea0
jmp 0x401ed0
mov eax, 0x6bca1af3
imul dword [ebp - 0x4c]
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [ebp - 0x4c], eax
jne 0x401ed0
mov eax, 0x3e6c
mov edx, 0x47
mov ecx, 0x1c
cmp ecx, edx
cmovl ecx, edx
dec eax
jne 0x401ef6
mov ecx, 0x234a
mov eax, 0x8fb823ef
imul ecx
add edx, ecx
sar edx, 5
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x401f03
mov eax, dword [edi + 0x2b4]
xor esi, esi
dec eax
je 0x402083
xor ebx, ebx
lea esp, [esp]
mov eax, dword [edi + 0x2b4]
dec eax
push eax
push 1
push edi
call fcn.004033f0
add esp, 0xc
cmp dword [ebp - 0x30], 0
mov cl, al
mov byte [ebp - 1], cl
je 0x401f6a
mov edi, dword [ebp - 0x30]
mov eax, 0x4c8f8d29
imul edi
sar edx, 5
mov edi, edx
shr edi, 0x1f
add edi, edx
jne 0x401f51
mov dword [ebp - 0x30], edi
mov edi, dword [ebp + 0x10]
mov edx, dword [ebp - 0x38]
cmp edx, 0x3644
jge 0x401f98
mov ecx, 0x3643
sub ecx, edx
mov eax, 0xaaaaaaab
mul ecx
mov cl, byte [ebp - 1]
shr edx, 2
lea eax, [edx + edx*2]
mov edx, dword [ebp - 0x38]
lea edx, [edx + eax*2]
add edx, 6
mov dword [ebp - 0x38], edx
xor eax, eax
lea ebx, [ebx]
cmp cl, byte [edi + eax + 0x54]
je 0x401fad
inc eax
cmp eax, esi
jbe 0x401fa0
jmp 0x401fb1
mov byte [ebp - 1], 0
mov ecx, dword [ebp - 0x60]
test ecx, ecx
je 0x401fd8
jmp 0x401fc0
mov eax, 0x8fb823ef
imul ecx
add edx, ecx
sar edx, 5
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x401fc0
mov dword [ebp - 0x60], ecx
mov edx, dword [ebp - 0x34]
cmp edx, 0x76
jge 0x402000
mov ecx, 0x75
sub ecx, edx
mov eax, 0xcccccccd
mul ecx
shr edx, 3
lea eax, [edx + edx*4]
mov edx, dword [ebp - 0x34]
lea edx, [edx + eax*2]
add edx, 0xa
mov dword [ebp - 0x34], edx
cmp ebx, 0x2900
jge 0x40202b
inc ebx
mov eax, 0x55555556
imul ebx
mov eax, edx
shr eax, 0x1f
add eax, edx
mov ecx, ebx
lea eax, [eax + eax*2]
sub ecx, eax
jne 0x402023
add ebx, 2
cmp ebx, 0x2900
jl 0x402008
mov ecx, dword [ebp - 0x44]
test ecx, ecx
je 0x402048
mov eax, 0x1a6d01a7
imul ecx
sar edx, 4
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x402032
mov dword [ebp - 0x44], ecx
mov ecx, dword [ebp - 8]
test ecx, ecx
je 0x402068
nop
mov eax, 0x964fda6d
imul ecx
add edx, ecx
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x402050
mov dword [ebp - 8], ecx
mov al, byte [ebp - 1]
test al, al
je 0x402074
mov byte [edi + esi + 0x54], al
inc esi
mov eax, dword [edi + 0x2b4]
dec eax
cmp esi, eax
jb 0x401f30
xor ebx, ebx
inc ebx
mov eax, 0x55555556
imul ebx
mov eax, edx
shr eax, 0x1f
add eax, edx
mov ecx, ebx
lea eax, [eax + eax*2]
sub ecx, eax
jne 0x40209e
inc ebx
cmp ebx, 0x23f6
jl 0x402085
push 0x42
lea eax, [ebp - 0xab]
push 0
push eax
mov byte [ebp - 0xac], 0
call fcn.00403290
lea eax, [ebp - 0xac]
push eax
call fcn.00402ad0
lea ebx, [edi + 0x44c]
mov dword [ebp - 0x24], 0x9caf6efc
mov dword [ebp - 0x20], 0xee2da3ed
movq xmm0, qword [ebp - 0x24]
movq qword [ebx], xmm0
mov dword [ebp - 0x1c], 0xcd2fac24
mov dword [ebp - 0x18], 0x5b058a0a
movq xmm0, qword [ebp - 0x1c]
movq qword [ebx + 8], xmm0
mov dword [ebp - 0x14], 0x35e66e3b
mov dword [ebp - 0x10], 0
movq xmm0, qword [ebp - 0x14]
add esp, 0x10
movq qword [ebx + 0x10], xmm0
mov eax, 0x3409
mov edx, 0x84
mov ecx, 0xda
cmp ecx, edx
cmovg ecx, edx
dec eax
jne 0x402128
xor byte [ebp + eax - 0xac], 0xf1
inc eax
cmp eax, 0x41
jb 0x402130
mov ecx, 0x137e
mov eax, 0x8d3dcb09
imul ecx
add edx, ecx
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x402143
mov dword [ebp - 8], ecx
cmp dword [edi + 0x2b4], ecx
jbe 0x402366
mov ebx, dword [ebp - 0x3c]
test ebx, ebx
je 0x402188
mov edi, edi
mov eax, 0x8c08c08d
imul ebx
add edx, ebx
sar edx, 6
mov ebx, edx
shr ebx, 0x1f
add ebx, edx
jne 0x402170
mov dword [ebp - 0x3c], ebx
movzx ebx, byte [edi + ecx + 0x54]
imul ebx, dword [edi + 0x400]
mov esi, dword [ebp - 0x2c]
add ebx, dword [ebp + 8]
cmp esi, 0x73e2
jge 0x4021cb
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 0x4021c0
inc esi
cmp esi, 0x73e2
jl 0x4021a2
mov dword [ebp - 0x2c], esi
mov ecx, dword [ebp - 0xc]
cmp ecx, 0x5eb4
jge 0x4021f3
inc ecx
mov eax, ecx
and eax, 0x80000001
jns 0x4021e5
dec eax
or eax, 0xfffffffe
inc eax
jne 0x4021e8
inc ecx
cmp ecx, 0x5eb4
jl 0x4021d6
mov dword [ebp - 0xc], ecx
mov eax, dword [ebp - 0x68]
mov dword [edi + 0x18], ebx
test eax, eax
je 0x40220a
lea ecx, [ecx]
cdq
sub eax, edx
sar eax, 1
jne 0x402200
mov dword [ebp - 0x68], eax
push 0x42
lea eax, [ebp - 0xef]
push 0
push eax
mov byte [ebp - 0xf0], 0
call fcn.00403290
mov eax, dword [ebp - 0x54]
add esp, 0xc
inc eax
cmp eax, 0x5fa6
jl 0x402227
push 0x42
mov dword [ebp - 0x54], eax
lea eax, [ebp - 0xf0]
push ebx
push eax
call fcn.00403260
mov ecx, 0x10
lea esi, [ebp - 0xac]
mov edi, ebx
rep movsd dword es:[edi], dword [esi]
movsb byte es:[edi], byte [esi]
mov esi, dword [ebp - 0x64]
add esp, 0xc
cmp esi, 0x333e
jge 0x40227b
mov ecx, 0x333d
sub ecx, esi
mov eax, 0xaaaaaaab
mul ecx
shr edx, 1
lea eax, [edx + esi]
lea eax, [eax + edx*2]
add eax, 3
mov dword [ebp - 0x64], eax
mov edi, dword [ebp + 0x10]
mov eax, dword [edi + 0x18]
call eax
mov ecx, dword [ebp - 0x40]
test ecx, ecx
je 0x4022a8
lea ebx, [ebx]
mov eax, 0xb21642c9
imul ecx
add edx, ecx
sar edx, 4
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x402290
mov dword [ebp - 0x40], ecx
push 0x42
lea eax, [ebp - 0xf0]
push eax
push ebx
call fcn.00403260
mov ecx, dword [ebp - 0x48]
add esp, 0xc
test ecx, ecx
je 0x4022d9
mov eax, 0x8c08c08d
imul ecx
add edx, ecx
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x4022c1
mov dword [ebp - 0x48], ecx
xor esi, esi
cmp dword [edi + 0x400], esi
jbe 0x40231e
mov eax, dword [edi + 0x24]
inc esi
mov al, byte [eax + 3]
xor byte [esi + ebx - 1], al
movzx ecx, byte [esi + ebx - 1]
mov eax, dword [edi + 0x24]
mov dl, byte [eax + 2]
xor dl, cl
mov byte [esi + ebx - 1], dl
mov eax, dword [edi + 0x24]
mov cl, byte [eax + 1]
xor cl, dl
mov byte [esi + ebx - 1], cl
mov eax, dword [edi + 0x24]
mov al, byte [eax]
xor al, cl
mov byte [esi + ebx - 1], al
cmp esi, dword [edi + 0x400]
jb 0x4022e3
mov ecx, dword [ebp - 0x28]
cmp ecx, 0x366f
jge 0x40234d
lea esp, [esp]
inc ecx
mov eax, ecx
and eax, 0x80000001
jns 0x40233f
dec eax
or eax, 0xfffffffe
inc eax
jne 0x402342
inc ecx
cmp ecx, 0x366f
jl 0x402330
mov dword [ebp - 0x28], ecx
mov ecx, dword [ebp - 8]
inc ecx
mov dword [ebp - 8], ecx
cmp ecx, dword [edi + 0x2b4]
jb 0x402167
lea ebx, [edi + 0x44c]
call fcn.00403580
lea ecx, [eax - 2]
push ecx
push dword [edi + 0x2c8]
mov dword [edi + 0x40], eax
call fcn.00401140
push 0x1fc18017
push ebx
call fcn.00401b20
mov eax, dword [ebp + 0xc]
cdq
and edx, 0xff
add esp, 0x10
lea esi, [edx + eax]
sar esi, 8
test esi, esi
je 0x4023ba
mov edi, dword [ebp + 8]
push ebx
push 0x100
push edi
call fcn.004032c0
add esp, 0xc
add edi, 0x100
dec esi
jne 0x4023a2
mov eax, 0x182b
mov edx, 0x6d
mov ecx, 0xea
lea esp, [esp]
cmp ecx, edx
cmovl ecx, edx
dec eax
jne 0x4023d0
jmp 0x4023e0
mov eax, 0x38e38e39
imul dword [ebp - 0x50]
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [ebp - 0x50], eax
jne 0x4023e0
mov eax, 0x7a94
mov edx, 0xb6
mov ecx, 0x56
cmp ecx, edx
cmovl ecx, edx
dec eax
jne 0x402406
mov edi, edi
mov eax, 0x38e38e39
imul dword [ebp - 0x58]
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [ebp - 0x58], eax
jne 0x402410
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, 0x2cb2
mov edx, 0xc
cmp ecx, edx
cmovl ecx, edx
dec eax
jne 0x402438
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret