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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x98
push ebx
push esi
xor eax, eax
push edi
xor edi, edi
xor ecx, ecx
mov ebx, 0x7d4b
mov esi, 0x56d3
mov dword [ebp - 4], 0x6a38
mov dword [ebp - 0x18], edi
mov dword [ebp - 0x4c], 0x5f7b
mov dword [ebp - 0x1c], edi
mov dword [ebp - 0x60], 0xb3
mov dword [ebp - 0x50], 0x15d5
mov dword [ebp - 0x40], 0x27d9
mov dword [ebp - 0x14], edi
mov dword [ebp - 0x54], 0x2ef2
mov dword [ebp - 8], ecx
mov dword [ebp - 0xc], eax
mov dword [ebp - 0x10], eax
mov dword [ebp - 0x5c], 0x64c6
mov dword [ebp - 0x58], 0x3449
mov dword [ebp - 0x44], 0x20f9
mov dword [ebp - 0x48], 0x5b20
cmp dword [ebp + 8], eax
je 0x4026a0
mov edx, dword [ebp + 0xc]
test edx, edx
je 0x4026a0
mov eax, dword [ebp + 0x10]
lea ecx, [eax + 0x1a8]
mov eax, dword [eax + 0x1b4]
xor eax, dword [ecx]
cmp edx, eax
jl 0x4026a0
call fcn.00403590
mov edx, dword [ebp + 0x10]
lea ecx, [edx + 0x1a8]
mov dword [edx + 0x1a0], eax
mov eax, dword [ecx]
xor dword [edx + 0x218], eax
mov edi, dword [edx + 0x218]
mov dword [edx + 0x60], ecx
mov ecx, 0x3b58
mov edx, 0x7e
mov eax, 0x7c
cmp eax, 0x7e
cmovg eax, edx
dec ecx
jne 0x402095
mov ecx, 0x20c9
mov edx, 0x8f
mov eax, 0x52
lea ecx, [ecx]
cmp eax, 0x8f
cmovg eax, edx
dec ecx
jne 0x4020b0
mov eax, dword [ebp + 0xc]
xor edx, edx
div edi
mov ecx, eax
mov eax, dword [ebp + 0x10]
mov dword [eax + 0x378], ecx
lea ecx, [ecx]
mov eax, 0xb60b60b7
imul ebx
add edx, ebx
sar edx, 6
mov ebx, edx
shr ebx, 0x1f
add ebx, edx
jne 0x4020d0
mov ebx, dword [ebp + 0x10]
imul ecx, edi
xor edi, edi
mov dword [ebx + 0x194], ecx
test ecx, ecx
je 0x402140
mov esi, dword [ebp + 8]
lea ebx, [ebx]
mov eax, dword [ebx + 0x60]
inc edi
mov al, byte [eax]
xor byte [edi + esi - 1], al
movzx ecx, byte [edi + esi - 1]
mov eax, dword [ebx + 0x60]
mov dl, byte [eax + 1]
xor dl, cl
mov byte [edi + esi - 1], dl
mov eax, dword [ebx + 0x60]
mov cl, byte [eax + 2]
xor cl, dl
mov byte [edi + esi - 1], cl
mov eax, dword [ebx + 0x60]
mov al, byte [eax + 3]
xor al, cl
mov byte [edi + esi - 1], al
cmp edi, dword [ebx + 0x194]
jb 0x402100
mov esi, 0x56d3
mov eax, dword [ebx + 0x218]
xor edi, edi
dec eax
je 0x4021aa
jmp 0x402150
mov eax, dword [ebx + 0x218]
dec eax
push eax
push 1
push ebx
call fcn.004033a0
add esp, 0xc
mov cl, al
xor eax, eax
cmp cl, byte [ebx + eax + 0x274]
je 0x402177
inc eax
cmp eax, edi
jbe 0x402167
jmp 0x402179
xor cl, cl
test esi, esi
je 0x402193
lea ecx, [ecx]
mov eax, 0x67b23a55
imul esi
sar edx, 6
mov esi, edx
shr esi, 0x1f
add esi, edx
jne 0x402180
test cl, cl
je 0x40219f
mov byte [ebx + edi + 0x274], cl
inc edi
mov eax, dword [ebx + 0x218]
dec eax
cmp edi, eax
jb 0x402150
xorps xmm0, xmm0
mov dword [ebp - 0x80], 0x95fa9d43
mov dword [ebp - 0x7c], 0x868618f6
mov dword [ebp - 0x78], 0xd54bf39d
movq qword [ebp - 0x74], xmm0
movq qword [ebp - 0x6c], xmm0
mov word [ebp - 0x64], 0
mov byte [ebp - 0x62], 0
xor ebx, ebx
jmp 0x4021e0
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 0x402201
add ebx, 3
jmp 0x402202
inc ebx
cmp ebx, 0x576
jl 0x4021e0
xorps xmm0, xmm0
mov dword [ebp - 0x3c], 0xcf5e3ddb
mov dword [ebp - 0x38], 0x4f714606
mov dword [ebp - 0x34], 0xb0dd5855
mov dword [ebp - 0x30], 0x570836f2
mov dword [ebp - 0x2c], 0xdef61869
movq qword [ebp - 0x28], xmm0
mov eax, 0x78787879
imul dword [ebp - 4]
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [ebp - 4], eax
jne 0x402235
mov edi, dword [ebp + 0x10]
movq xmm0, qword [ebp - 0x3c]
mov eax, dword [ebp - 0x24]
lea ebx, [edi + 8]
xor ecx, ecx
movq qword [ebx], xmm0
movq xmm0, qword [ebp - 0x34]
movq qword [ebx + 8], xmm0
movq xmm0, qword [ebp - 0x2c]
movq qword [ebx + 0x10], xmm0
mov dword [ebx + 0x18], eax
mov word [ebx + 0x1c], 0
lea ecx, [ecx]
inc ecx
mov eax, ecx
and eax, 0x80000007
jns 0x40228f
dec eax
or eax, 0xfffffff8
inc eax
jne 0x402292
inc ecx
cmp ecx, 0x372
jl 0x402280
xor eax, eax
lea esp, [esp]
xor byte [ebp + eax - 0x80], 0x16
inc eax
cmp eax, 0xc
jb 0x4022a0
xor esi, esi
mov dword [ebp - 4], esi
cmp dword [edi + 0x218], esi
jbe 0x4025b3
lea esp, [esp]
mov ebx, dword [ebp - 0x18]
cmp ebx, 0x7d2f
jge 0x4022f8
jmp 0x4022d0
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 0x4022ed
add ebx, 2
cmp ebx, 0x7d2f
jl 0x4022d0
mov dword [ebp - 0x18], ebx
mov ecx, dword [ebp - 0x4c]
test ecx, ecx
je 0x402318
nop
mov eax, 0x82082083
imul ecx
add edx, ecx
sar edx, 6
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x402300
mov dword [ebp - 0x4c], ecx
movzx ebx, byte [esi + edi + 0x274]
imul ebx, dword [edi + 0x378]
mov esi, dword [ebp - 0x1c]
add ebx, dword [ebp + 8]
cmp esi, 0x430c
jge 0x402364
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 0x402359
inc esi
cmp esi, 0x430c
jl 0x402335
mov dword [ebp - 0x1c], esi
mov ecx, dword [ebp - 0x60]
mov eax, 0x25d9
mov edx, 0xb2
cmp ecx, edx
cmovg ecx, edx
dec eax
jne 0x402371
mov dword [ebp - 0x60], ecx
mov ecx, dword [ebp - 0x50]
test ecx, ecx
je 0x40239b
mov eax, 0x99d722db
imul ecx
add edx, ecx
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x402383
mov dword [ebp - 0x50], ecx
mov ecx, dword [ebp - 0x40]
test ecx, ecx
je 0x4023b8
mov eax, 0x4ec4ec4f
imul ecx
sar edx, 2
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x4023a2
mov dword [ebp - 0x40], ecx
mov ecx, dword [ebp - 0x14]
mov dword [edi + 0xec], ebx
cmp ecx, 0x3be3
jge 0x4023ed
lea esp, [esp]
inc ecx
mov eax, ecx
and eax, 0x80000007
jns 0x4023df
dec eax
or eax, 0xfffffff8
inc eax
jne 0x4023e2
inc ecx
cmp ecx, 0x3be3
jl 0x4023d0
mov dword [ebp - 0x14], ecx
mov eax, 0x41a0
dec eax
jne 0x4023f2
movq xmm0, qword [ebx]
mov esi, dword [ebx + 0x18]
mov di, word [ebx + 0x1c]
mov ecx, dword [ebp - 0x54]
mov eax, dword [ebp - 0x78]
movq qword [ebp - 0x88], xmm0
movq xmm0, qword [ebx + 8]
movq qword [ebp - 0x90], xmm0
movq xmm0, qword [ebx + 0x10]
movq qword [ebp - 0x98], xmm0
movq xmm0, qword [ebp - 0x80]
movq qword [ebx], xmm0
mov dword [ebx + 8], eax
test ecx, ecx
je 0x402456
jmp 0x402440
mov eax, 0x30c30c31
imul ecx
sar edx, 3
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x402440
mov dword [ebp - 0x54], ecx
mov eax, dword [ebp - 8]
cmp eax, 0x2159
jge 0x402480
mov ecx, 0x2158
sub ecx, eax
mov eax, 0xcccccccd
mul ecx
mov ecx, dword [ebp - 8]
shr edx, 3
lea eax, [edx + edx*4]
lea ecx, [ecx + eax*2]
add ecx, 0xa
mov dword [ebp - 8], ecx
mov eax, dword [ebp + 0x10]
mov eax, dword [eax + 0xec]
call eax
movq xmm0, qword [ebp - 0x88]
mov eax, dword [ebp - 0xc]
movq qword [ebx], xmm0
movq xmm0, qword [ebp - 0x90]
movq qword [ebx + 8], xmm0
movq xmm0, qword [ebp - 0x98]
movq qword [ebx + 0x10], xmm0
mov dword [ebx + 0x18], esi
mov word [ebx + 0x1c], di
cmp eax, 0x3fb1
jge 0x4024e0
mov ecx, 0x3fb0
sub ecx, eax
mov eax, 0xaaaaaaab
mul ecx
mov eax, dword [ebp - 0xc]
shr edx, 1
add eax, edx
lea eax, [eax + edx*2]
add eax, 3
mov dword [ebp - 0xc], eax
mov edi, dword [ebp + 0x10]
xor esi, esi
cmp dword [edi + 0x378], esi
jbe 0x40252b
lea ecx, [ecx]
mov eax, dword [edi + 0x60]
inc esi
mov al, byte [eax + 3]
xor byte [esi + ebx - 1], al
movzx ecx, byte [esi + ebx - 1]
mov eax, dword [edi + 0x60]
mov dl, byte [eax + 2]
xor dl, cl
mov byte [esi + ebx - 1], dl
mov eax, dword [edi + 0x60]
mov cl, byte [eax + 1]
xor cl, dl
mov byte [esi + ebx - 1], cl
mov eax, dword [edi + 0x60]
mov al, byte [eax]
xor al, cl
mov byte [esi + ebx - 1], al
cmp esi, dword [edi + 0x378]
jb 0x4024f0
mov ecx, dword [ebp - 0x10]
cmp ecx, 0x680d
jge 0x40255f
inc ecx
mov eax, ecx
and eax, 0x80000001
jns 0x402545
dec eax
or eax, 0xfffffffe
inc eax
jne 0x40254b
add ecx, ecx
jmp 0x402554
mov eax, ecx
cdq
sub eax, edx
sar eax, 1
add ecx, eax
cmp ecx, 0x680d
jl 0x402536
mov dword [ebp - 0x10], ecx
mov ecx, dword [ebp - 0x5c]
test ecx, ecx
je 0x40257e
mov eax, 0x92492493
imul ecx
add edx, ecx
sar edx, 6
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x402566
mov dword [ebp - 0x5c], ecx
mov ecx, dword [ebp - 0x58]
test ecx, ecx
je 0x40259d
mov eax, 0x81020409
imul ecx
add edx, ecx
sar edx, 6
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x402585
mov dword [ebp - 0x58], ecx
mov esi, dword [ebp - 4]
inc esi
mov dword [ebp - 4], esi
cmp esi, dword [edi + 0x218]
jb 0x4022c0
lea ebx, [edi + 8]
mov ecx, 0x5f68
jmp 0x4025c0
mov eax, 0x84210843
imul ecx
add edx, ecx
sar edx, 4
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x4025c0
call fcn.00403590
mov dword [edi + 0x22c], eax
add eax, 0xfffffffe
push eax
push dword [edi + 0x1a0]
call fcn.004010c0
add esp, 8
mov ecx, 0x1332
mov eax, 0xf2b9d649
imul ecx
add edx, ecx
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x4025f7
lea esp, [esp]
mov eax, 0x15390949
imul dword [ebp - 0x44]
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [ebp - 0x44], eax
jne 0x402610
push 0x12e07948
push ebx
call fcn.00401d50
add esp, 8
mov eax, 0x4ec4ec4f
imul dword [ebp - 0x48]
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [ebp - 0x48], eax
jne 0x402635
mov eax, dword [ebp + 0xc]
cdq
and edx, 0xff
lea esi, [edx + eax]
sar esi, 8
test esi, esi
je 0x40267b
mov edi, dword [ebp + 8]
push ebx
push 0x100
push edi
call fcn.00403270
add esp, 0xc
add edi, 0x100
dec esi
jne 0x402663
mov ecx, 0x6f9d
mov eax, 0x8dda5203
imul ecx
add edx, ecx
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x402680
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
inc edi
mov eax, 0x66666667
imul edi
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
lea ecx, [eax + eax*4]
add ecx, ecx
mov eax, edi
sub eax, ecx
jne 0x4026be
inc edi
cmp edi, 0x1957
jl 0x4026a0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret