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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x120
xor edx, edx
push ebx
push esi
xor ebx, ebx
push edi
mov edi, 0x74a1
mov ecx, 0x71e0
mov esi, 0xec
mov dword [ebp - 0x10], 0x1c71
mov dword [ebp - 0xc], 0x482f
mov dword [ebp - 0x24], edx
mov dword [ebp - 0x20], 0x2154
mov dword [ebp - 0x1c], 0x4239
mov dword [ebp - 0x18], 0x684b
mov dword [ebp - 8], 0x1479
mov dword [ebp - 0x44], 0x75
mov dword [ebp - 0x50], edx
mov dword [ebp - 0x4c], edx
mov dword [ebp - 0x58], edx
mov dword [ebp - 0x14], ebx
mov dword [ebp - 0x54], edx
mov dword [ebp - 0x48], 0x619d
lea esp, [esp]
mov eax, 0x78787879
imul edi
sar edx, 6
mov edi, edx
shr edi, 0x1f
add edi, edx
jne 0x401e00
cmp dword [ebp + 8], ebx
je 0x402450
mov edx, dword [ebp + 0xc]
test edx, edx
je 0x402450
mov edi, dword [ebp + 0x10]
mov eax, dword [edi + 0x98]
xor eax, dword [edi]
cmp edx, eax
jl 0x402450
call fcn.004036f0
mov dword [edi + 0x6c], eax
mov ebx, 0x4c93
mov eax, 0x7a44c6b
imul ebx
sar edx, 1
mov ebx, edx
shr ebx, 0x1f
add ebx, edx
jne 0x401e47
lea esp, [esp]
mov eax, 0x27932b49
imul dword [ebp - 0x10]
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [ebp - 0x10], eax
jne 0x401e60
mov ebx, 0xca5
lea esp, [esp]
mov eax, 0x214d0215
imul ebx
sar edx, 5
mov ebx, edx
shr ebx, 0x1f
add ebx, edx
jne 0x401e80
mov eax, 0x4ec4ec4f
imul dword [ebp - 0xc]
sar edx, 6
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [ebp - 0xc], eax
jne 0x401e93
mov eax, dword [edi]
xor dword [edi + 0x298], eax
mov esi, dword [edi + 0x298]
mov dword [edi + 0x94], edi
mov ecx, 0x980
mov eax, 0x88888889
imul ecx
add edx, ecx
sar edx, 4
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x401ec3
mov eax, dword [ebp + 0xc]
xor edx, edx
div esi
mov dword [edi + 0x1ac], eax
imul eax, esi
xor esi, esi
mov dword [edi + 0x208], eax
test eax, eax
je 0x401f40
mov ebx, dword [ebp + 8]
mov eax, dword [edi + 0x94]
inc esi
mov al, byte [eax]
xor byte [esi + ebx - 1], al
movzx ecx, byte [esi + ebx - 1]
mov eax, dword [edi + 0x94]
mov dl, byte [eax + 1]
xor dl, cl
mov byte [esi + ebx - 1], dl
mov eax, dword [edi + 0x94]
mov cl, byte [eax + 2]
xor cl, dl
mov byte [esi + ebx - 1], cl
mov eax, dword [edi + 0x94]
mov al, byte [eax + 3]
xor al, cl
mov byte [esi + ebx - 1], al
cmp esi, dword [edi + 0x208]
jb 0x401ef7
xor ebx, ebx
mov eax, dword [edi + 0x298]
xor esi, esi
dec eax
je 0x402069
mov ebx, 0xe59
mov eax, dword [ebp - 0x24]
cmp eax, 0x3375
jge 0x401f7e
mov ecx, 0x3374
sub ecx, eax
mov eax, 0xcccccccd
mul ecx
shr edx, 3
lea eax, [edx + edx*4]
mov edx, dword [ebp - 0x24]
lea edx, [edx + eax*2]
add edx, 0xa
mov dword [ebp - 0x24], edx
mov eax, dword [edi + 0x298]
dec eax
push eax
push 1
push edi
call fcn.00403580
add esp, 0xc
mov byte [ebp - 1], al
xor ecx, ecx
cmp al, byte [edi + ecx + 0xac]
je 0x401fa9
inc ecx
cmp ecx, esi
jbe 0x401f96
mov cl, byte [ebp - 1]
jmp 0x401fab
xor cl, cl
cmp dword [ebp - 0x20], 0
je 0x401fcd
mov edi, dword [ebp - 0x20]
mov eax, 0xdbeb61f
imul edi
sar edx, 3
mov edi, edx
shr edi, 0x1f
add edi, edx
jne 0x401fb4
mov dword [ebp - 0x20], edi
mov edi, dword [ebp + 0x10]
test ebx, ebx
je 0x401fe6
mov eax, 0x99d722db
imul ebx
add edx, ebx
sar edx, 7
mov ebx, edx
shr ebx, 0x1f
add ebx, edx
jne 0x401fd1
cmp dword [ebp - 0x1c], 0
je 0x402009
mov edi, dword [ebp - 0x1c]
nop
mov eax, 0x67b23a55
imul edi
sar edx, 5
mov edi, edx
shr edi, 0x1f
add edi, edx
jne 0x401ff0
mov dword [ebp - 0x1c], edi
mov edi, dword [ebp + 0x10]
cmp dword [ebp - 0x18], 0
je 0x40202d
mov edi, dword [ebp - 0x18]
mov eax, 0xb11fd3b9
imul edi
add edx, edi
sar edx, 7
mov edi, edx
shr edi, 0x1f
add edi, edx
jne 0x402012
mov dword [ebp - 0x18], edi
mov edi, dword [ebp + 0x10]
test cl, cl
je 0x402039
mov byte [edi + esi + 0xac], cl
inc esi
mov ecx, dword [ebp - 8]
test ecx, ecx
je 0x402058
mov eax, 0xae4c415d
imul ecx
add edx, ecx
sar edx, 5
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x402040
mov dword [ebp - 8], ecx
mov eax, dword [edi + 0x298]
dec eax
cmp esi, eax
jb 0x401f54
xor ebx, ebx
mov ecx, 0x46bc
mov edi, edi
mov eax, 0x84a9f9c9
imul ecx
add edx, ecx
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x402070
push 0x63
push ecx
lea eax, [ebp - 0xbb]
push eax
mov byte [ebp - 0xbc], cl
call fcn.00403440
lea eax, [ebp - 0xbc]
push eax
call fcn.00402be0
add esp, 0x10
mov ebx, 0xedc
mov edi, edi
mov eax, 0x532ae21d
imul ebx
sar edx, 6
mov ebx, edx
shr ebx, 0x1f
add ebx, edx
jne 0x4020b0
xorps xmm0, xmm0
lea esi, [edi + 0x23c]
movq qword [ebp - 0x2c], xmm0
mov eax, dword [ebp - 0x28]
mov dword [ebp - 0x40], 0xb8cb0064
mov dword [ebp - 0x3c], 0x5b7c9403
movq xmm0, qword [ebp - 0x40]
movq qword [esi], xmm0
mov dword [ebp - 0x38], 0xdbacebe9
mov dword [ebp - 0x34], 0x3bb40099
movq xmm0, qword [ebp - 0x38]
movq qword [esi + 8], xmm0
mov dword [ebp - 0x30], 0xb14fbaa4
movq xmm0, qword [ebp - 0x30]
movq qword [esi + 0x10], xmm0
mov dword [esi + 0x18], eax
mov dword [ebp - 0x10], esi
xor eax, eax
lea esp, [esp]
xor byte [ebp + eax - 0xbc], 0xfd
inc eax
cmp eax, 0x62
jb 0x402120
mov ebx, 0x226c
mov eax, 0x5254e78f
imul ebx
sar edx, 6
mov ebx, edx
shr ebx, 0x1f
add ebx, edx
jne 0x402133
mov ecx, 0x5b29
jmp 0x402150
mov eax, 0x83993053
imul ecx
add edx, ecx
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x402150
xor eax, eax
mov dword [ebp - 8], eax
cmp dword [edi + 0x298], eax
jbe 0x40232b
lea ecx, [edi + 0xac]
lea esi, [eax + 0x76]
nop
movzx edi, byte [eax + ecx]
mov ecx, dword [ebp + 0x10]
mov edx, dword [ebp - 0x44]
imul edi, dword [ecx + 0x1ac]
add edi, dword [ebp + 8]
mov eax, 0x5a2d
mov dword [ebp - 0xc], edi
lea esp, [esp]
cmp edx, 0x76
cmovl edx, esi
dec eax
jne 0x4021a0
mov dword [ecx + 0x21c], edi
mov ecx, dword [ebp - 0x50]
mov dword [ebp - 0x44], edx
cmp ecx, 0x3d40
jge 0x4021cf
mov eax, 0x3d3f
sub eax, ecx
shr eax, 1
lea ecx, [ecx + eax*2]
add ecx, 2
mov dword [ebp - 0x50], ecx
mov eax, dword [ebp - 0x4c]
inc eax
cmp eax, 0x5af9
jl 0x4021d2
push 0x63
mov dword [ebp - 0x4c], eax
lea eax, [ebp - 0x11f]
push 0
push eax
mov byte [ebp - 0x120], 0
call fcn.00403440
mov eax, dword [ebp - 0x58]
add esp, 0xc
lea ebx, [ebx]
inc eax
cmp eax, 0xac5
jl 0x402200
push 0x63
mov dword [ebp - 0x58], eax
lea eax, [ebp - 0x120]
push edi
push eax
call fcn.00403410
add esp, 0xc
cmp ebx, 0x30f8
jge 0x40224e
inc ebx
mov eax, ebx
and eax, 0x80000007
jns 0x402234
dec eax
or eax, 0xfffffff8
inc eax
jne 0x40223a
add ebx, ebx
jmp 0x402243
mov eax, ebx
cdq
sub eax, edx
sar eax, 1
add ebx, eax
cmp ebx, 0x30f8
jl 0x402225
mov dword [ebp - 0x14], ebx
mov ecx, 0x18
lea esi, [ebp - 0xbc]
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
mov esi, dword [ebp - 0x54]
cmp esi, 0x92f
jge 0x402290
mov ecx, 0x92e
sub ecx, esi
mov eax, 0x24924925
mul ecx
sub ecx, edx
shr ecx, 1
add ecx, edx
shr ecx, 2
add esi, 7
lea eax, [ecx*8]
sub eax, ecx
add esi, eax
mov dword [ebp - 0x54], esi
mov eax, dword [ebp + 0x10]
mov eax, dword [eax + 0x21c]
call eax
mov edi, dword [ebp - 0xc]
push 0x63
lea eax, [ebp - 0x120]
push eax
push edi
call fcn.00403410
mov eax, dword [ebp + 0x10]
xor esi, esi
add esp, 0xc
cmp dword [eax + 0x1ac], esi
jbe 0x40230a
mov ebx, eax
nop
mov eax, dword [ebx + 0x94]
inc esi
mov al, byte [eax + 3]
xor byte [esi + edi - 1], al
movzx ecx, byte [esi + edi - 1]
mov eax, dword [ebx + 0x94]
mov dl, byte [eax + 2]
xor dl, cl
mov byte [esi + edi - 1], dl
mov eax, dword [ebx + 0x94]
mov cl, byte [eax + 1]
xor cl, dl
mov byte [esi + edi - 1], cl
mov eax, dword [ebx + 0x94]
mov al, byte [eax]
xor al, cl
mov byte [esi + edi - 1], al
cmp esi, dword [ebx + 0x1ac]
jb 0x4022c0
mov ebx, dword [ebp - 0x14]
mov eax, dword [ebp - 8]
mov edi, dword [ebp + 0x10]
inc eax
mov dword [ebp - 8], eax
lea ecx, [edi + 0xac]
mov esi, 0x76
cmp eax, dword [edi + 0x298]
jb 0x402180
call fcn.004036f0
mov ecx, eax
mov dword [edi + 0x30], ecx
mov edi, 0x32b5
lea ebx, [ebx]
mov eax, 0x66666667
imul edi
sar edx, 2
mov edi, edx
shr edi, 0x1f
add edi, edx
jne 0x402340
mov edi, dword [ebp + 0x10]
lea eax, [ecx - 2]
push eax
push dword [edi + 0x6c]
call fcn.00401110
add esp, 8
mov esi, 0x2b90
lea ebx, [ebx]
mov eax, 0x4c8f8d29
imul esi
sar edx, 5
mov esi, edx
shr esi, 0x1f
add esi, edx
jne 0x402370
push 0x295b1c24
lea esi, [edi + 0x23c]
push esi
call fcn.00401c50
add esp, 8
jmp 0x4023a0
mov eax, 0x3e88cb3d
imul dword [ebp - 0x48]
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [ebp - 0x48], eax
jne 0x4023a0
mov eax, dword [ebp + 0xc]
cdq
and edx, 0xff
lea esi, [edx + eax]
sar esi, 8
test esi, esi
je 0x4023e9
mov edi, dword [ebp - 0x10]
mov ebx, dword [ebp + 8]
push edi
push 0x100
push ebx
call fcn.00403470
add esp, 0xc
add ebx, 0x100
dec esi
jne 0x4023d1
mov ecx, 0x64c0
mov edi, edi
mov eax, 0x91a2b3c5
imul ecx
add edx, ecx
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x4023f0
mov eax, 0x66a3
mov edx, 0xa7
mov ecx, 0x4a
cmp ecx, edx
cmovg ecx, edx
dec eax
jne 0x402414
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 0x40243b
inc ebx
cmp ebx, 0x199c
jl 0x402420
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, 0x151d07eb
imul ecx
sar edx, 3
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x402450
mov eax, 0x506d
mov ecx, 0x10
lea ecx, [ecx]
cmp esi, ecx
cmovl esi, ecx
dec eax
jne 0x402470
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret