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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x90
push ebx
push esi
xor esi, esi
push edi
mov ecx, 0x4614
mov edi, 0x7b03
mov ebx, 0x96
mov dword [ebp - 0x3c], 0x1ef9
mov dword [ebp - 0x74], 0x2d58
mov dword [ebp - 0x7c], esi
mov dword [ebp - 0x8c], 0x39e9
mov dword [ebp - 0x84], 0x814
mov dword [ebp - 8], esi
mov dword [ebp - 4], 0x453e
mov dword [ebp - 0x44], esi
mov dword [ebp - 0x30], esi
mov dword [ebp - 0x4c], 0x4abf
mov dword [ebp - 0x34], 0x701a
mov dword [ebp - 0x38], 0x75f9
mov dword [ebp - 0x40], 0xf45
mov dword [ebp - 0x48], 0xfc
mov dword [ebp - 0x50], esi
mov dword [ebp - 0x54], 0x668a
mov dword [ebp - 0xc], esi
cmp dword [ebp + 8], esi
je 0x40243f
cmp dword [ebp + 0xc], esi
je 0x40243f
mov eax, dword [ebp + 0x10]
lea edx, [eax + 0x1e8]
mov eax, dword [eax + 0x330]
xor eax, dword [edx]
cmp dword [ebp + 0xc], eax
jl 0x40243f
mov edi, edi
mov eax, 0x2aaaaaab
imul ecx
sar edx, 4
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x401da0
call fcn.004034a0
mov edx, dword [ebp + 0x10]
lea ecx, [edx + 0x1e8]
mov dword [edx + 0x380], eax
mov eax, dword [ecx]
xor dword [edx + 0x2f4], eax
nop
mov eax, 0xb21642c9
imul edi
add edx, edi
sar edx, 4
mov edi, edx
shr edi, 0x1f
add edi, edx
jne 0x401dd0
mov eax, 0x34ee
mov edx, 0x54
nop
cmp ebx, edx
cmovl ebx, edx
dec eax
jne 0x401df0
mov edx, dword [ebp + 0x10]
mov eax, dword [ebp + 0xc]
mov dword [edx + 0x198], ecx
mov ecx, dword [ebp + 0x10]
xor edx, edx
mov ebx, dword [ecx + 0x2f4]
div ebx
mov edi, eax
mov dword [ecx + 0x1c], edi
mov ecx, 0x22b8
jmp 0x401e20
mov eax, 0x92492493
imul ecx
add edx, ecx
sar edx, 4
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x401e20
imul ebx, edi
mov edi, dword [ebp + 0x10]
mov dword [edi + 0x294], ebx
inc esi
mov eax, esi
and eax, 0x80000007
jns 0x401e50
dec eax
or eax, 0xfffffff8
inc eax
jne 0x401e54
add esi, esi
cmp esi, 0x7584
jl 0x401e41
xor esi, esi
test ebx, ebx
je 0x401eac
mov ebx, dword [ebp + 8]
mov eax, dword [edi + 0x198]
inc esi
mov al, byte [eax]
xor byte [esi + ebx - 1], al
movzx ecx, byte [esi + ebx - 1]
mov eax, dword [edi + 0x198]
mov dl, byte [eax + 1]
xor dl, cl
mov byte [esi + ebx - 1], dl
mov eax, dword [edi + 0x198]
mov cl, byte [eax + 2]
xor cl, dl
mov byte [esi + ebx - 1], cl
mov eax, dword [edi + 0x198]
mov al, byte [eax + 3]
xor al, cl
mov byte [esi + ebx - 1], al
cmp esi, dword [edi + 0x294]
jb 0x401e65
mov ecx, 0x7c21
mov eax, 0xdd67c8a7
imul ecx
add edx, ecx
sar edx, 6
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x401eb1
mov ecx, 0x4d13
jmp 0x401ed0
mov eax, 0x82082083
imul ecx
add edx, ecx
sar edx, 6
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x401ed0
mov eax, dword [edi + 0x2f4]
xor esi, esi
dec eax
je 0x402022
xor edi, edi
mov ecx, dword [ebp - 0x3c]
test ecx, ecx
je 0x401f16
lea ecx, [ecx]
mov eax, 0x4325c53f
imul ecx
sar edx, 6
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x401f00
mov dword [ebp - 0x3c], ecx
mov ecx, dword [ebp + 0x10]
mov eax, dword [ecx + 0x2f4]
dec eax
push eax
push 1
push ecx
call fcn.004032b0
mov ecx, dword [ebp - 0x74]
add esp, 0xc
mov bl, al
test ecx, ecx
je 0x401f4d
mov eax, 0x88888889
imul ecx
add edx, ecx
sar edx, 4
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x401f35
mov dword [ebp - 0x74], ecx
mov eax, dword [ebp - 0x7c]
inc eax
cmp eax, 5
jl 0x401f50
mov edx, dword [ebp + 0x10]
mov dword [ebp - 0x7c], eax
xor eax, eax
mov edi, edi
cmp bl, byte [edx + eax + 0x78]
je 0x401f6d
inc eax
cmp eax, esi
jbe 0x401f60
jmp 0x401f6f
xor bl, bl
mov eax, 0x567d
dec eax
jne 0x401f74
cmp edi, 0x600e
jge 0x401f99
mov ecx, 0x600d
sub ecx, edi
mov eax, 0xcccccccd
mul ecx
shr edx, 3
lea eax, [edx + edx*4]
lea edi, [edi + eax*2]
add edi, 0xa
mov ecx, dword [ebp - 0x8c]
test ecx, ecx
je 0x401fbe
mov eax, 0xa57eb503
imul ecx
add edx, ecx
sar edx, 6
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x401fa3
mov dword [ebp - 0x8c], ecx
test bl, bl
je 0x401fca
mov eax, dword [ebp + 0x10]
inc esi
mov byte [eax + esi + 0x77], bl
mov ecx, dword [ebp - 0x84]
test ecx, ecx
je 0x401fef
mov eax, 0xab8f69e3
imul ecx
add edx, ecx
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x401fd4
mov dword [ebp - 0x84], ecx
mov ecx, dword [ebp - 8]
cmp ecx, 0x280
jge 0x40200d
mov eax, 0x27f
sub eax, ecx
shr eax, 2
lea ecx, [ecx + eax*4]
add ecx, 4
mov dword [ebp - 8], ecx
mov eax, dword [ebp + 0x10]
mov eax, dword [eax + 0x2f4]
dec eax
cmp esi, eax
jb 0x401ef6
mov edi, dword [ebp + 0x10]
xorps xmm0, xmm0
mov dword [ebp - 0x70], 0x294e29f7
mov dword [ebp - 0x6c], 0x32af9e63
mov dword [ebp - 0x68], 0x61ff4729
movq qword [ebp - 0x64], xmm0
mov dword [ebp - 0x5c], 0
mov word [ebp - 0x58], 0
mov byte [ebp - 0x56], 0
mov dword [ebp - 0x2c], 0xdd1ac8e4
mov dword [ebp - 0x28], 0x6717a142
mov dword [ebp - 0x24], 0xa08d834c
mov dword [ebp - 0x20], 0xa73e7d6a
mov dword [ebp - 0x1c], 0xef0d4326
movq qword [ebp - 0x18], xmm0
mov dword [ebp - 0x10], 0
mov ecx, 0x7873
mov eax, 0xea0ea0eb
imul ecx
add edx, ecx
sar edx, 6
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x402084
movq xmm0, qword [ebp - 0x2c]
lea ebx, [edi + 0x21c]
mov dword [ebp - 8], ebx
movq qword [ebx], xmm0
movq xmm0, qword [ebp - 0x24]
movq qword [ebx + 8], xmm0
movq xmm0, qword [ebp - 0x1c]
movq qword [ebx + 0x10], xmm0
movq xmm0, qword [ebp - 0x14]
movq qword [ebx + 0x18], xmm0
xor eax, eax
jmp 0x4020d0
xor byte [ebp + eax - 0x70], 0xa2
inc eax
cmp eax, 0xc
jb 0x4020d0
jmp 0x4020e0
mov eax, 0x473c1ab7
imul dword [ebp - 4]
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [ebp - 4], eax
jne 0x4020e0
xor eax, eax
mov dword [ebp - 4], eax
cmp dword [edi + 0x2f4], eax
jbe 0x40235a
xor ebx, ebx
lea ebx, [ebx]
movzx edi, byte [edi + eax + 0x78]
mov ecx, dword [ebp + 0x10]
mov eax, dword [ebp - 0x44]
imul edi, dword [ecx + 0x1c]
add edi, dword [ebp + 8]
inc eax
cmp eax, 0x130
jl 0x402122
mov dword [ebp - 0x44], eax
mov eax, dword [ebp - 0x30]
mov dword [ecx + 0x368], edi
inc eax
cmp eax, 0x38cb
jl 0x402136
mov esi, dword [ebp - 0x4c]
mov dword [ebp - 0x30], eax
test esi, esi
je 0x402168
jmp 0x402150
mov eax, 0x92492493
imul esi
add edx, esi
sar edx, 5
mov esi, edx
shr esi, 0x1f
add esi, edx
jne 0x402150
mov dword [ebp - 0x4c], esi
mov esi, dword [ebp - 0x34]
test esi, esi
je 0x402186
nop
mov eax, 0x1b4e81b5
imul esi
sar edx, 3
mov esi, edx
shr esi, 0x1f
add esi, edx
jne 0x402170
mov dword [ebp - 0x34], esi
movq xmm0, qword [edi]
mov esi, dword [ebp - 0x38]
movq qword [ebp - 0x88], xmm0
movq xmm0, qword [edi + 8]
movq qword [ebp - 0x90], xmm0
movq xmm0, qword [edi + 0x10]
movq qword [ebp - 0x80], xmm0
movq xmm0, qword [edi + 0x18]
movq qword [ebp - 0x78], xmm0
test esi, esi
je 0x4021d6
lea ebx, [ebx]
mov eax, 0x67b23a55
imul esi
sar edx, 5
mov esi, edx
shr esi, 0x1f
add esi, edx
jne 0x4021c0
mov dword [ebp - 0x38], esi
movq xmm0, qword [ebp - 0x70]
mov esi, dword [ebp - 0x40]
mov eax, dword [ebp - 0x68]
movq qword [edi], xmm0
mov dword [edi + 8], eax
test esi, esi
je 0x402206
lea esp, [esp]
mov eax, 0x4c346405
imul esi
sar edx, 6
mov esi, edx
shr esi, 0x1f
add esi, edx
jne 0x4021f0
mov dword [ebp - 0x40], esi
mov edx, dword [ebp - 0x48]
mov eax, 0x1a3
mov esi, 0xc4
cmp edx, esi
cmovl edx, esi
dec eax
jne 0x402213
mov eax, dword [ecx + 0x368]
mov dword [ebp - 0x48], edx
call eax
mov eax, dword [ebp - 0x50]
lea esp, [esp]
inc eax
cmp eax, 0x4090
jl 0x402230
movq xmm0, qword [ebp - 0x88]
movq qword [edi], xmm0
movq xmm0, qword [ebp - 0x90]
movq qword [edi + 8], xmm0
movq xmm0, qword [ebp - 0x80]
movq qword [edi + 0x10], xmm0
movq xmm0, qword [ebp - 0x78]
mov dword [ebp - 0x50], eax
movq qword [edi + 0x18], xmm0
cmp ebx, 0x62ef
jge 0x4022a2
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 0x402291
add ebx, ebx
jmp 0x40229a
mov eax, ebx
cdq
sub eax, edx
sar eax, 1
add ebx, eax
cmp ebx, 0x62ef
jl 0x402270
mov edx, dword [ebp + 0x10]
xor esi, esi
cmp dword [edx + 0x1c], esi
jbe 0x4022fa
lea esp, [esp]
mov eax, dword [edx + 0x198]
inc esi
mov al, byte [eax + 3]
xor byte [esi + edi - 1], al
mov eax, dword [edx + 0x198]
movzx ecx, byte [esi + edi - 1]
mov dl, byte [eax + 2]
mov eax, dword [ebp + 0x10]
xor dl, cl
mov byte [esi + edi - 1], dl
mov eax, dword [eax + 0x198]
mov cl, byte [eax + 1]
xor cl, dl
mov edx, dword [ebp + 0x10]
mov byte [esi + edi - 1], cl
mov eax, dword [edx + 0x198]
mov al, byte [eax]
xor al, cl
mov byte [esi + edi - 1], al
cmp esi, dword [edx + 0x1c]
jb 0x4022b0
mov ecx, dword [ebp - 0x54]
test ecx, ecx
je 0x402317
mov eax, 0x4ec4ec4f
imul ecx
sar edx, 4
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x402301
mov dword [ebp - 0x54], ecx
mov ecx, dword [ebp - 0xc]
cmp ecx, 0x513
jge 0x402341
inc ecx
mov eax, ecx
and eax, 0x80000007
jns 0x402331
dec eax
or eax, 0xfffffff8
inc eax
jne 0x402336
add ecx, 5
cmp ecx, 0x513
jl 0x402322
mov dword [ebp - 0xc], ecx
mov eax, dword [ebp - 4]
mov edi, dword [ebp + 0x10]
inc eax
mov dword [ebp - 4], eax
cmp eax, dword [edi + 0x2f4]
jb 0x402110
mov ebx, dword [ebp - 8]
mov ecx, 0x306b
nop
mov eax, 0xb40b40b5
imul ecx
add edx, ecx
sar edx, 6
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x402360
call fcn.004034a0
mov ecx, eax
mov dword [edi + 0x274], ecx
mov esi, 0x34a9
mov eax, 0xb21642c9
imul esi
add edx, esi
sar edx, 5
mov esi, edx
shr esi, 0x1f
add esi, edx
jne 0x402387
lea eax, [ecx - 2]
push eax
push dword [edi + 0x380]
call fcn.00401170
push 0x61ccbed
push ebx
call fcn.00401c10
add esp, 0x10
mov edi, 0x15c3
mov edi, edi
mov eax, 0x3e0f83e1
imul edi
sar edx, 4
mov edi, edx
shr edi, 0x1f
add edi, edx
jne 0x4023c0
mov eax, dword [ebp + 0xc]
mov edi, dword [ebp + 0x10]
cdq
and edx, 0xff
mov ebx, 0x4c3b
lea esi, [edx + eax]
sar esi, 8
jmp 0x4023f0
mov eax, 0x75ded953
imul ebx
sar edx, 6
mov ebx, edx
shr ebx, 0x1f
add ebx, edx
jne 0x4023f0
lea ebx, [edi + 0x21c]
test esi, esi
je 0x402428
mov edi, dword [ebp + 8]
push ebx
push 0x100
push edi
call fcn.00403190
add esp, 0xc
add edi, 0x100
dec esi
jne 0x402410
mov eax, 0x794c
mov edx, 0xb2
mov ecx, 0xc9
cmp ecx, edx
cmovg ecx, edx
dec eax
jne 0x402437
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret