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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xc0
push ebx
push esi
push edi
mov edi, 0x285b
mov esi, 0x5d88
mov dword [ebp - 0x44], 0xa9
mov dword [ebp - 8], 0x7e3c
mov dword [ebp - 4], 0x6841
mov dword [ebp - 0xc], 0
mov dword [ebp - 0x40], 0x17f4
mov dword [ebp - 0x34], 0
mov dword [ebp - 0x2c], 0x4a9a
mov dword [ebp - 0x3c], 0x630a
mov dword [ebp - 0x48], 0x4474
mov dword [ebp - 0x30], 0
mov dword [ebp - 0x38], 0x63da
xor ebx, ebx
inc ebx
mov eax, 0x92492493
imul ebx
add edx, ebx
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
lea ecx, [eax*8]
sub ecx, eax
mov eax, ebx
sub eax, ecx
jne 0x401d29
inc ebx
cmp ebx, 0x38ab
jl 0x401d05
cmp dword [ebp + 8], 0
mov ebx, 0x5558
je 0x4022d0
mov edx, dword [ebp + 0xc]
test edx, edx
je 0x4022d0
mov eax, dword [ebp + 0x10]
lea ecx, [eax + 0x3c4]
mov eax, dword [eax + 0x234]
xor eax, dword [ecx]
cmp edx, eax
jl 0x4022d0
call fcn.00403380
mov ebx, dword [ebp + 0x10]
lea ecx, [ebx + 0x3c4]
mov dword [ebx + 0xa8], eax
mov eax, dword [ecx]
xor dword [ebx + 0x364], eax
mov edi, dword [ebx + 0x364]
mov dword [ebx + 0x3b8], ecx
mov ecx, 0x6cbd
mov eax, 0x8fb823ef
imul ecx
add edx, ecx
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x401d91
mov eax, dword [ebp + 0xc]
xor edx, edx
div edi
xor esi, esi
imul edi, eax
mov dword [ebx + 0x2dc], edi
test edi, edi
mov dword [ebx + 0xb4], eax
mov edi, ebx
je 0x401e0e
mov ebx, dword [ebp + 8]
mov eax, dword [edi + 0x3b8]
inc esi
mov al, byte [eax]
xor byte [esi + ebx - 1], al
movzx ecx, byte [esi + ebx - 1]
mov eax, dword [edi + 0x3b8]
mov dl, byte [eax + 1]
xor dl, cl
mov byte [esi + ebx - 1], dl
mov eax, dword [edi + 0x3b8]
mov cl, byte [eax + 2]
xor cl, dl
mov byte [esi + ebx - 1], cl
mov eax, dword [edi + 0x3b8]
mov al, byte [eax + 3]
xor al, cl
mov byte [esi + ebx - 1], al
cmp esi, dword [edi + 0x2dc]
jb 0x401dc7
mov ecx, 0x453
mov eax, 0xa0a0a0a1
imul ecx
add edx, ecx
sar edx, 5
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x401e13
mov eax, dword [edi + 0x364]
xor esi, esi
dec eax
je 0x401f20
mov edx, 0xdc
lea esp, [esp]
mov ecx, dword [ebp - 0x44]
mov eax, 0x3621
jmp 0x401e50
cmp ecx, 0xdc
cmovg ecx, edx
dec eax
jne 0x401e50
mov eax, dword [edi + 0x364]
dec eax
push eax
push 1
push edi
mov dword [ebp - 0x44], ecx
call fcn.00403210
mov ecx, dword [ebp - 8]
add esp, 0xc
mov bl, al
test ecx, ecx
je 0x401e98
jmp 0x401e80
mov eax, 0xb21642c9
imul ecx
add edx, ecx
sar edx, 4
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x401e80
mov dword [ebp - 8], ecx
xor eax, eax
lea ebx, [ebx]
cmp bl, byte [edi + eax + 0x128]
je 0x401eb0
inc eax
cmp eax, esi
jbe 0x401ea0
jmp 0x401eb2
xor bl, bl
mov ecx, dword [ebp - 4]
test ecx, ecx
je 0x401ed8
lea esp, [esp]
mov eax, 0x92492493
imul ecx
add edx, ecx
sar edx, 5
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x401ec0
mov dword [ebp - 4], ecx
mov ecx, dword [ebp - 0xc]
cmp ecx, 0x156d
jge 0x401f00
inc ecx
mov eax, ecx
and eax, 0x80000007
jns 0x401ef2
dec eax
or eax, 0xfffffff8
inc eax
jne 0x401ef5
inc ecx
cmp ecx, 0x156d
jl 0x401ee3
mov dword [ebp - 0xc], ecx
test bl, bl
je 0x401f0c
mov byte [edi + esi + 0x128], bl
inc esi
mov eax, dword [edi + 0x364]
dec eax
mov edx, 0xdc
cmp esi, eax
jb 0x401e40
push 0x3a
lea eax, [ebp - 0x83]
push 0
push eax
mov byte [ebp - 0x84], 0
call fcn.004030a0
lea eax, [ebp - 0x84]
push eax
call fcn.00402a30
add esp, 0x10
xor ebx, ebx
mov dword [ebp - 0x28], 0xfd12fa0e
mov dword [ebp - 0x24], 0x7dba8792
mov dword [ebp - 0x20], 0x4635fcfe
mov dword [ebp - 0x1c], 0xe028a09d
mov dword [ebp - 0x18], 0x9d3c1fa9
mov dword [ebp - 0x14], ebx
mov ecx, 0x3630
mov eax, 0xa16b312f
imul ecx
add edx, ecx
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x401f73
movq xmm0, qword [ebp - 0x28]
lea esi, [edi + 0x27c]
mov dword [ebp - 8], esi
movq qword [esi], xmm0
movq xmm0, qword [ebp - 0x20]
movq qword [esi + 8], xmm0
movq xmm0, qword [ebp - 0x18]
movq qword [esi + 0x10], xmm0
mov word [esi + 0x18], bx
inc ecx
mov eax, ecx
and eax, 0x80000003
jns 0x401fc1
dec eax
or eax, 0xfffffffc
inc eax
jne 0x401fc4
inc ecx
cmp ecx, 0x2ed7
jl 0x401fb2
xor eax, eax
mov edi, edi
xor byte [ebp + eax - 0x84], 0x32
inc eax
cmp eax, 0x39
jb 0x401fd0
xor ebx, ebx
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 0x401ffe
inc ebx
cmp ebx, 0x3ab5
jl 0x401fe0
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 0x402021
inc ebx
cmp ebx, 0x4ad4
jl 0x402008
xor eax, eax
mov dword [ebp - 4], eax
cmp dword [edi + 0x364], eax
jbe 0x4021ec
lea ebx, [ebx]
movzx ebx, byte [edi + eax + 0x128]
imul ebx, dword [edi + 0xb4]
mov ecx, dword [ebp - 0x40]
add ebx, dword [ebp + 8]
test ecx, ecx
je 0x402076
lea esp, [esp]
mov eax, 0x1b4e81b5
imul ecx
sar edx, 4
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x402060
mov dword [ebp - 0x40], ecx
mov ecx, dword [ebp - 0x34]
mov dword [edi + 0xd4], ebx
cmp ecx, 0xac0
jge 0x40209a
mov eax, 0xabf
sub eax, ecx
shr eax, 2
lea ecx, [ecx + eax*4]
add ecx, 4
mov dword [ebp - 0x34], ecx
push 0x3a
lea eax, [ebp - 0xbf]
push 0
push eax
mov byte [ebp - 0xc0], 0
call fcn.004030a0
push 0x3a
lea eax, [ebp - 0xc0]
push ebx
push eax
call fcn.00403070
mov ecx, 0xe
lea esi, [ebp - 0x84]
mov edi, ebx
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [ebp - 0x2c]
add esp, 0x18
movsb byte es:[edi], byte [esi]
test ecx, ecx
je 0x4020f6
lea ebx, [ebx]
mov eax, 0x342da7f3
imul ecx
sar edx, 5
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x4020e0
mov dword [ebp - 0x2c], ecx
mov edi, dword [ebp + 0x10]
mov eax, dword [edi + 0xd4]
call eax
mov ecx, dword [ebp - 0x3c]
test ecx, ecx
je 0x402126
jmp 0x402110
mov eax, 0x3531dec1
imul ecx
sar edx, 5
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x402110
mov dword [ebp - 0x3c], ecx
push 0x3a
lea eax, [ebp - 0xc0]
push eax
push ebx
call fcn.00403070
mov ecx, dword [ebp - 0x48]
add esp, 0xc
test ecx, ecx
je 0x402156
nop
mov eax, 0x4c8f8d29
imul ecx
sar edx, 5
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x402140
mov dword [ebp - 0x48], ecx
mov eax, dword [ebp - 0x30]
lea esp, [esp]
inc eax
cmp eax, 0x391e
jl 0x402160
mov ecx, dword [ebp - 0x38]
mov dword [ebp - 0x30], eax
test ecx, ecx
je 0x402188
mov eax, 0x36406c81
imul ecx
sar edx, 5
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x402172
mov dword [ebp - 0x38], ecx
xor esi, esi
cmp dword [edi + 0xb4], esi
jbe 0x4021d9
mov eax, dword [edi + 0x3b8]
inc esi
mov al, byte [eax + 3]
xor byte [esi + ebx - 1], al
movzx ecx, byte [esi + ebx - 1]
mov eax, dword [edi + 0x3b8]
mov dl, byte [eax + 2]
xor dl, cl
mov byte [esi + ebx - 1], dl
mov eax, dword [edi + 0x3b8]
mov cl, byte [eax + 1]
xor cl, dl
mov byte [esi + ebx - 1], cl
mov eax, dword [edi + 0x3b8]
mov al, byte [eax]
xor al, cl
mov byte [esi + ebx - 1], al
cmp esi, dword [edi + 0xb4]
jb 0x402192
mov eax, dword [ebp - 4]
inc eax
mov dword [ebp - 4], eax
cmp eax, dword [edi + 0x364]
jb 0x402040
call fcn.00403380
mov ecx, eax
mov dword [edi + 0x29c], ecx
mov esi, 0x3ab5
mov edi, edi
mov eax, 0x4325c53f
imul esi
sar edx, 4
mov esi, edx
shr esi, 0x1f
add esi, edx
jne 0x402200
mov eax, 0x2300
lea esi, [edi + 0x27c]
mov edi, edi
dec eax
jne 0x402220
mov ebx, 0x2b63
jmp 0x402230
mov eax, 0xae4c415d
imul ebx
add edx, ebx
sar edx, 6
mov ebx, edx
shr ebx, 0x1f
add ebx, edx
jne 0x402230
lea eax, [ecx - 2]
push eax
push dword [edi + 0xa8]
call fcn.00401100
add esp, 8
mov ecx, 0x4fcb
mov edx, 0x37
mov eax, 0xa9
cmp eax, 0x37
cmovl eax, edx
dec ecx
jne 0x402266
push 0x27127098
push esi
call fcn.00401b40
mov eax, dword [ebp + 0xc]
cdq
and edx, 0xff
add esp, 8
lea esi, [edx + eax]
sar esi, 8
test esi, esi
je 0x4022af
mov edi, dword [ebp - 8]
mov ebx, dword [ebp + 8]
push edi
push 0x100
push ebx
call fcn.00403100
add esp, 0xc
add ebx, 0x100
dec esi
jne 0x402297
mov eax, 0x3b7c
mov edx, 0x73
mov ecx, 0xb9
mov edi, edi
cmp ecx, edx
cmovl ecx, edx
dec eax
jne 0x4022c0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, 0x8d3dcb09
imul ebx
add edx, ebx
sar edx, 5
mov ebx, edx
shr ebx, 0x1f
add ebx, edx
jne 0x4022d0
mov eax, 0x91a2b3c5
imul edi
add edx, edi
sar edx, 7
mov edi, edx
shr edi, 0x1f
add edi, edx
jne 0x4022e5
mov ecx, 0x3902
mov edx, 0xa1
mov eax, 0x94
lea esp, [esp]
cmp eax, 0xa1
cmovg eax, edx
dec ecx
jne 0x402310
jmp 0x402320
mov eax, 0x82082083
imul esi
add edx, esi
sar edx, 5
mov esi, edx
shr esi, 0x1f
add esi, edx
jne 0x402320
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret