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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xac
push ebx
push esi
push edi
xor esi, esi
xor edi, edi
xor eax, eax
mov ebx, 0x8a
mov ecx, 0x6043
mov dword [ebp - 0x6c], ebx
mov dword [ebp - 0x4c], 0x17a8
mov dword [ebp - 0x54], eax
mov dword [ebp - 0x44], 0x82
mov dword [ebp - 0x38], 0x172b
mov dword [ebp - 0x40], eax
mov dword [ebp - 0x98], 0x793e
mov dword [ebp - 0xa0], 0x3582
mov dword [ebp - 4], 0x3ec9
mov dword [ebp - 8], 0x39a6
mov dword [ebp - 0x64], 0x1b10
mov dword [ebp - 0x30], eax
mov dword [ebp - 0x74], eax
mov dword [ebp - 0xc], eax
mov dword [ebp - 0x5c], 0x4112
mov dword [ebp - 0x34], eax
mov dword [ebp - 0x3c], eax
mov dword [ebp - 0x48], 0x7a
mov dword [ebp - 0x50], 0x2c93
mov dword [ebp - 0x58], 0xbd7
mov dword [ebp - 0x60], 0x2263
mov dword [ebp - 0x68], 0x1fb4
mov dword [ebp - 0x70], 0x3116
mov eax, 0x8c08c08d
imul ecx
add edx, ecx
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x401f93
inc esi
mov eax, 0x92492493
imul esi
add edx, esi
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
lea ecx, [eax*8]
sub ecx, eax
mov eax, esi
sub eax, ecx
jne 0x401fcc
inc esi
cmp esi, 0x7ea6
jl 0x401fa8
mov eax, 0x66a6
lea esp, [esp]
dec eax
jne 0x401fe0
cmp dword [ebp + 8], edi
je 0x4026e8
mov ecx, dword [ebp + 0xc]
test ecx, ecx
je 0x4026e8
mov eax, dword [ebp + 0x10]
lea esi, [eax + 0x12c]
mov eax, dword [eax + 0x20]
xor eax, dword [esi]
cmp ecx, eax
jl 0x4026e8
mov eax, 0x6a53
mov ecx, 0x79
cmp ebx, ecx
cmovg ebx, ecx
dec eax
jne 0x402017
call fcn.00403550
mov ecx, dword [ebp + 0x10]
mov dword [ecx + 0x104], eax
mov eax, dword [esi]
xor dword [ecx + 0xcc], eax
mov ecx, dword [ecx + 0xcc]
mov dword [ebp - 0xa8], ecx
inc edi
mov eax, edi
and eax, 0x80000001
jns 0x402050
dec eax
or eax, 0xfffffffe
inc eax
jne 0x402055
add edi, 2
cmp edi, 0x3204
jl 0x402041
mov edi, dword [ebp + 0x10]
mov ecx, 0x40bb
mov dword [edi + 0x128], esi
jmp 0x402070
mov eax, 0x22b63cbf
imul ecx
sar edx, 3
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x402070
mov ecx, dword [ebp - 0xa8]
mov eax, dword [ebp + 0xc]
xor edx, edx
div ecx
mov ebx, 0x7d29
imul ecx, eax
mov dword [edi], eax
mov dword [edi + 0x28], ecx
lea ecx, [ecx]
mov eax, 0x8fb823ef
imul ebx
add edx, ebx
sar edx, 6
mov ebx, edx
shr ebx, 0x1f
add ebx, edx
jne 0x4020a0
xor esi, esi
test ecx, ecx
je 0x402104
mov ebx, dword [ebp + 8]
mov edi, edi
mov eax, dword [edi + 0x128]
inc esi
mov al, byte [eax]
xor byte [esi + ebx - 1], al
movzx ecx, byte [esi + ebx - 1]
mov eax, dword [edi + 0x128]
mov dl, byte [eax + 1]
xor dl, cl
mov byte [esi + ebx - 1], dl
mov eax, dword [edi + 0x128]
mov cl, byte [eax + 2]
xor cl, dl
mov byte [esi + ebx - 1], cl
mov eax, dword [edi + 0x128]
mov al, byte [eax + 3]
xor al, cl
mov byte [esi + ebx - 1], al
cmp esi, dword [edi + 0x28]
jb 0x4020c0
mov ecx, 0x1879
lea esp, [esp]
mov eax, 0xb21642c9
imul ecx
add edx, ecx
sar edx, 6
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x402110
mov ecx, 0x4073
lea ebx, [ebx]
mov eax, 0xb21642c9
imul ecx
add edx, ecx
sar edx, 5
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x402130
mov eax, dword [edi + 0xcc]
xor esi, esi
dec eax
je 0x402270
mov eax, dword [edi + 0xcc]
dec eax
push eax
push 1
push edi
call fcn.00403370
add esp, 0xc
mov bl, al
xor ecx, ecx
jmp 0x402170
cmp bl, byte [edi + ecx + 0x160]
je 0x402180
inc ecx
cmp ecx, esi
jbe 0x402170
jmp 0x402182
xor bl, bl
mov ecx, dword [ebp - 0x6c]
mov eax, 0x14d2
mov edx, 0x5a
nop
cmp ecx, edx
cmovl ecx, edx
dec eax
jne 0x402190
mov dword [ebp - 0x6c], ecx
mov ecx, dword [ebp - 0x4c]
test ecx, ecx
je 0x4021ba
mov eax, 0x8dda5203
imul ecx
add edx, ecx
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x4021a2
mov dword [ebp - 0x4c], ecx
mov edi, dword [ebp - 0x54]
cmp edi, 0x782f
jge 0x4021e1
mov ecx, 0x782e
sub ecx, edi
mov eax, 0xaaaaaaab
mul ecx
shr edx, 1
lea eax, [edx + edi]
lea eax, [eax + edx*2]
add eax, 3
mov dword [ebp - 0x54], eax
mov ecx, dword [ebp - 0x44]
mov eax, 0x5d48
mov edx, 0x63
mov edi, edi
cmp ecx, edx
cmovl ecx, edx
dec eax
jne 0x4021f0
mov dword [ebp - 0x44], ecx
mov ecx, dword [ebp - 0x38]
test ecx, ecx
je 0x40221a
mov eax, 0xab8f69e3
imul ecx
add edx, ecx
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x402202
mov dword [ebp - 0x38], ecx
mov eax, dword [ebp - 0x40]
lea ecx, [ecx]
inc eax
cmp eax, 5
jl 0x402220
mov edi, dword [ebp + 0x10]
mov dword [ebp - 0x40], eax
test bl, bl
je 0x402238
mov byte [edi + esi + 0x160], bl
inc esi
mov ecx, dword [ebp - 0x98]
test ecx, ecx
je 0x40225b
mov eax, 0x1a6d01a7
imul ecx
sar edx, 4
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x402242
mov dword [ebp - 0x98], ecx
mov eax, dword [edi + 0xcc]
dec eax
cmp esi, eax
jb 0x402154
lea ebx, [ebx]
mov eax, 0x66666667
imul dword [ebp - 0xa0]
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [ebp - 0xa0], eax
jne 0x402270
xorps xmm0, xmm0
mov dword [ebp - 0x94], 0x214e29f7
mov dword [ebp - 0x90], 0x3232aa42
mov dword [ebp - 0x8c], 0x61ff4729
movq qword [ebp - 0x88], xmm0
movq qword [ebp - 0x80], xmm0
mov byte [ebp - 0x78], 0
nop
mov eax, 0x3a196b1f
imul dword [ebp - 4]
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [ebp - 4], eax
jne 0x4022c0
jmp 0x4022e0
mov eax, 0x4d4873ed
imul dword [ebp - 8]
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [ebp - 8], eax
jne 0x4022e0
xorps xmm0, xmm0
mov dword [ebp - 0x2c], 0x9ff9280b
mov dword [ebp - 0x28], 0x74869c86
mov dword [ebp - 0x24], 0x574b743c
mov dword [ebp - 0x20], 0x1803e912
mov dword [ebp - 0x1c], 0xd2dd872d
movq qword [ebp - 0x18], xmm0
mov ecx, 0x1d67
mov eax, 0xae4c415d
imul ecx
add edx, ecx
sar edx, 6
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x402327
movq xmm0, qword [ebp - 0x2c]
mov eax, dword [ebp - 0x14]
lea ebx, [edi + 0x134]
mov dword [ebp - 4], 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
mov dword [ebx + 0x18], eax
mov word [ebx + 0x1c], cx
xor eax, eax
mov edi, edi
xor byte [ebp + eax - 0x94], 0xa2
inc eax
cmp eax, 0xc
jb 0x402370
mov ecx, 0x664d
mov eax, 0xab8f69e3
imul ecx
add edx, ecx
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x402383
mov eax, 0x11ae
mov edx, 0x2f
mov ecx, 0x3b
cmp ecx, edx
cmovg ecx, edx
dec eax
jne 0x4023a7
mov eax, 0xa98
dec eax
jne 0x4023b4
mov dword [ebp - 8], eax
cmp dword [edi + 0xcc], eax
jbe 0x40263e
jmp 0x4023d0
movzx ebx, byte [edi + eax + 0x160]
imul ebx, dword [edi]
mov ecx, dword [ebp - 0x64]
add ebx, dword [ebp + 8]
test ecx, ecx
je 0x4023fd
mov eax, 0xa0a0a0a1
imul ecx
add edx, ecx
sar edx, 6
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x4023e5
mov dword [ebp - 0x64], ecx
mov esi, dword [ebp - 0x30]
cmp esi, 0x594f
jge 0x402424
mov ecx, 0x594e
sub ecx, esi
mov eax, 0x38e38e39
mul ecx
shr edx, 1
lea eax, [edx + esi]
lea eax, [eax + edx*8]
add eax, 9
mov dword [ebp - 0x30], eax
mov eax, dword [ebp - 0x74]
inc eax
cmp eax, 0x788e
jl 0x402427
mov esi, dword [ebp - 0xc]
mov dword [ebp - 0x74], eax
cmp esi, 0x7064
jge 0x402466
lea ecx, [ecx]
inc esi
mov eax, 0x55555556
imul esi
mov eax, edx
shr eax, 0x1f
add eax, edx
mov ecx, esi
lea eax, [eax + eax*2]
sub ecx, eax
jne 0x40245b
add esi, 2
cmp esi, 0x7064
jl 0x402440
mov dword [ebp - 0xc], esi
mov ecx, dword [ebp - 0x5c]
mov dword [edi + 0x270], ebx
test ecx, ecx
je 0x402489
mov eax, 0x288df0cb
imul ecx
sar edx, 5
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x402473
mov dword [ebp - 0x5c], ecx
movq xmm0, qword [ebx]
mov esi, dword [ebx + 0x18]
mov di, word [ebx + 0x1c]
mov eax, dword [ebp - 0x8c]
movq qword [ebp - 0xac], xmm0
movq xmm0, qword [ebx + 8]
movq qword [ebp - 0xa4], xmm0
movq xmm0, qword [ebx + 0x10]
movq qword [ebp - 0x9c], xmm0
movq xmm0, qword [ebp - 0x94]
movq qword [ebx], xmm0
mov dword [ebx + 8], eax
mov eax, dword [ebp - 0x34]
mov edi, edi
inc eax
cmp eax, 0x1d10
jl 0x4024d0
mov dword [ebp - 0x34], eax
mov eax, dword [ebp + 0x10]
mov eax, dword [eax + 0x270]
call eax
movq xmm0, qword [ebp - 0xac]
movq qword [ebx], xmm0
movq xmm0, qword [ebp - 0xa4]
movq qword [ebx + 8], xmm0
movq xmm0, qword [ebp - 0x9c]
movq qword [ebx + 0x10], xmm0
mov dword [ebx + 0x18], esi
mov word [ebx + 0x1c], di
mov eax, 0x263b
dec eax
jne 0x402518
mov edi, dword [ebp + 0x10]
xor esi, esi
cmp dword [edi], esi
jbe 0x402567
mov eax, dword [edi + 0x128]
inc esi
mov al, byte [eax + 3]
xor byte [esi + ebx - 1], al
movzx ecx, byte [esi + ebx - 1]
mov eax, dword [edi + 0x128]
mov dl, byte [eax + 2]
xor dl, cl
mov byte [esi + ebx - 1], dl
mov eax, dword [edi + 0x128]
mov cl, byte [eax + 1]
xor cl, dl
mov byte [esi + ebx - 1], cl
mov eax, dword [edi + 0x128]
mov al, byte [eax]
xor al, cl
mov byte [esi + ebx - 1], al
cmp esi, dword [edi]
jb 0x402524
mov eax, dword [ebp - 0x3c]
lea ebx, [ebx]
inc eax
cmp eax, 0x3044
jl 0x402570
mov dword [ebp - 0x3c], eax
mov eax, dword [ebp - 0x48]
mov ecx, 0x1ce1
mov edx, 0x29
cmp eax, 0x29
cmovg eax, edx
dec ecx
jne 0x402588
mov dword [ebp - 0x48], eax
mov eax, dword [ebp - 0x50]
test eax, eax
je 0x4025b0
jmp 0x4025a0
cdq
and edx, 0x7f
add eax, edx
sar eax, 7
test eax, eax
jne 0x4025a0
mov dword [ebp - 0x50], eax
mov ecx, dword [ebp - 0x58]
test ecx, ecx
je 0x4025cf
mov eax, 0xa57eb503
imul ecx
add edx, ecx
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x4025b7
mov dword [ebp - 0x58], ecx
mov ecx, dword [ebp - 0x60]
test ecx, ecx
je 0x4025ec
mov eax, 0x51eb851f
imul ecx
sar edx, 5
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x4025d6
mov dword [ebp - 0x60], ecx
mov ecx, dword [ebp - 0x68]
test ecx, ecx
je 0x40260b
mov eax, 0x8b70344b
imul ecx
add edx, ecx
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x4025f3
mov dword [ebp - 0x68], ecx
mov ecx, dword [ebp - 0x70]
test ecx, ecx
je 0x402628
mov eax, 0x1b4e81b5
imul ecx
sar edx, 4
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x402612
mov dword [ebp - 0x70], ecx
mov eax, dword [ebp - 8]
inc eax
mov dword [ebp - 8], eax
cmp eax, dword [edi + 0xcc]
jb 0x4023d0
mov ebx, dword [ebp - 4]
call fcn.00403550
mov dword [edi + 0x88], eax
add eax, 0xfffffffe
push eax
push dword [edi + 0x104]
call fcn.00401120
push 0x6ca0ffe
push ebx
call fcn.00401d50
add esp, 0x10
mov ebx, 0x63e3
jmp 0x402670
mov eax, 0x66666667
imul ebx
sar edx, 2
mov ebx, edx
shr ebx, 0x1f
add ebx, edx
jne 0x402670
mov eax, dword [ebp + 0xc]
mov ebx, dword [ebp - 4]
cdq
and edx, 0xff
mov ecx, 0x6a
lea esi, [edx + eax]
sar esi, 8
mov eax, 0x82f
mov edx, 0xe0
cmp ecx, edx
cmovg ecx, edx
dec eax
jne 0x4026a5
mov eax, 0x58d
mov edx, 0xc8
mov ecx, 0xbc
lea esp, [esp]
cmp ecx, edx
cmovl ecx, edx
dec eax
jne 0x4026c0
test esi, esi
je 0x4026e8
mov edi, dword [ebp + 8]
nop
push ebx
push 0x100
push edi
call fcn.00403240
add esp, 0xc
add edi, 0x100
dec esi
jne 0x4026d0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret