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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xd4
push ebx
push esi
push edi
xor edi, edi
xor esi, esi
xor eax, eax
mov ebx, 0x51a7
mov dword [ebp - 8], 0x4dc5
mov dword [ebp - 0x38], 0x71e1
mov dword [ebp - 0x48], 0x3c4a
mov dword [ebp - 0x44], 0xc7
mov dword [ebp - 0xc], eax
mov dword [ebp - 0x4c], eax
mov dword [ebp - 4], eax
mov dword [ebp - 0x28], eax
mov dword [ebp - 0x2c], eax
mov dword [ebp - 0x40], 0x1502
mov dword [ebp - 0x30], 0x27f0
mov dword [ebp - 0x34], 0x69f0
mov dword [ebp - 0x3c], 0x753b
mov edi, edi
inc edi
mov eax, 0x2aaaaaab
imul edi
mov eax, edx
shr eax, 0x1f
add eax, edx
lea ecx, [eax + eax*2]
add ecx, ecx
mov eax, edi
sub eax, ecx
jne 0x401b8b
inc edi
cmp edi, 0x772e
jl 0x401b70
cmp dword [ebp + 8], esi
je 0x402160
mov ecx, dword [ebp + 0xc]
test ecx, ecx
je 0x402160
mov eax, dword [ebp + 0x10]
lea edi, [eax + 0x98]
mov eax, dword [eax + 0x2f4]
xor eax, dword [edi]
cmp ecx, eax
jl 0x402160
call fcn.00403000
mov esi, dword [ebp + 0x10]
mov dword [esi + 0x3cc], eax
mov eax, dword [edi]
xor dword [esi + 0x26c], eax
mov ecx, dword [esi + 0x26c]
lea esp, [esp]
mov eax, 0x13e22cbd
imul ebx
sar edx, 3
mov ebx, edx
shr ebx, 0x1f
add ebx, edx
jne 0x401be0
mov dword [esi + 0x278], edi
lea esp, [esp]
mov eax, 0x60606061
imul dword [ebp - 8]
sar edx, 6
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [ebp - 8], eax
jne 0x401c00
mov eax, dword [ebp + 0xc]
xor edx, edx
div ecx
mov edi, esi
imul ecx, eax
mov dword [ebp - 8], ecx
mov dword [edi + 0x378], ecx
mov dword [edi + 0x250], eax
mov ecx, 0x7ab7
mov eax, 0x95a02569
imul ecx
add edx, ecx
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x401c37
xor esi, esi
cmp dword [ebp - 8], esi
jbe 0x401c9d
mov ebx, dword [ebp + 8]
mov eax, dword [edi + 0x278]
inc esi
mov al, byte [eax]
xor byte [esi + ebx - 1], al
movzx ecx, byte [esi + ebx - 1]
mov eax, dword [edi + 0x278]
mov dl, byte [eax + 1]
xor dl, cl
mov byte [esi + ebx - 1], dl
mov eax, dword [edi + 0x278]
mov cl, byte [eax + 2]
xor cl, dl
mov byte [esi + ebx - 1], cl
mov eax, dword [edi + 0x278]
mov al, byte [eax + 3]
xor al, cl
mov byte [esi + ebx - 1], al
cmp esi, dword [edi + 0x378]
jb 0x401c56
mov eax, 0x15e4
mov edx, 0xa6
mov ecx, 0x8d
lea esp, [esp]
cmp ecx, edx
cmovg ecx, edx
dec eax
jne 0x401cb0
jmp 0x401cc0
mov eax, 0x78787879
imul dword [ebp - 0x38]
sar edx, 3
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [ebp - 0x38], eax
jne 0x401cc0
jmp 0x401ce0
mov eax, 0x15390949
imul dword [ebp - 0x48]
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [ebp - 0x48], eax
jne 0x401ce0
mov eax, dword [edi + 0x26c]
xor esi, esi
dec eax
je 0x401dba
mov eax, dword [edi + 0x26c]
dec eax
push eax
push 1
push edi
call fcn.00402e80
add esp, 0xc
mov bl, al
xor ecx, ecx
lea ecx, [ecx]
cmp bl, byte [ecx + edi + 0x150]
je 0x401d30
inc ecx
cmp ecx, esi
jbe 0x401d20
jmp 0x401d32
xor bl, bl
mov ecx, dword [ebp - 0x44]
mov eax, 0x6d35
mov edx, 0xe7
nop
cmp ecx, edx
cmovg ecx, edx
dec eax
jne 0x401d40
mov eax, dword [ebp - 0xc]
mov dword [ebp - 0x44], ecx
cmp eax, 0x5910
jge 0x401d73
mov ecx, 0x590f
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
test bl, bl
je 0x401d7f
mov byte [esi + edi + 0x150], bl
inc esi
mov eax, dword [ebp - 0x4c]
inc eax
cmp eax, 0x643
jl 0x401d82
mov ecx, dword [ebp - 4]
mov dword [ebp - 0x4c], eax
cmp ecx, 0x370b
jge 0x401dab
mov eax, 0x370a
sub eax, ecx
shr eax, 2
lea ecx, [ecx + eax*4]
add ecx, 4
mov dword [ebp - 4], ecx
mov eax, dword [edi + 0x26c]
dec eax
cmp esi, eax
jb 0x401d06
xor ebx, ebx
lea esp, [esp]
inc ebx
mov eax, 0x2aaaaaab
imul ebx
mov eax, edx
shr eax, 0x1f
add eax, edx
lea ecx, [eax + eax*2]
add ecx, ecx
mov eax, ebx
sub eax, ecx
jne 0x401ddd
add ebx, 5
cmp ebx, 0x443d
jl 0x401dc0
push 0x42
lea eax, [ebp - 0x8f]
push 0
push eax
mov byte [ebp - 0x90], 0
call fcn.00402d10
lea eax, [ebp - 0x90]
push eax
call fcn.00402730
lea ebx, [edi + 0x3ec]
mov dword [ebp - 0x24], 0xcc1eca43
mov dword [ebp - 0x20], 0xca6e4e31
movq xmm0, qword [ebp - 0x24]
movq qword [ebx], xmm0
mov dword [ebp - 0x1c], 0x96328a99
mov dword [ebp - 0x18], 0xff1afe5f
movq xmm0, qword [ebp - 0x1c]
mov dword [ebp - 0x14], 0xb23953c4
mov eax, dword [ebp - 0x14]
movq qword [ebx + 8], xmm0
add esp, 0x10
xor ecx, ecx
mov dword [ebx + 0x10], eax
mov word [ebx + 0x14], cx
mov byte [ebx + 0x16], cl
jmp 0x401e60
xor byte [ebp + ecx - 0x90], 0xe9
inc ecx
cmp ecx, 0x41
jb 0x401e60
mov eax, 0x1183
cdq
and edx, 3
add eax, edx
sar eax, 2
test eax, eax
jne 0x401e73
mov ecx, 0x64cd
mov eax, 0x84a9f9c9
imul ecx
add edx, ecx
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x401e85
mov eax, 0x5e5
nop
dec eax
jne 0x401ea0
mov eax, 0x42b0
mov edx, 0xef
mov ecx, 0xf5
cmp ecx, edx
cmovg ecx, edx
dec eax
jne 0x401eb2
mov dword [ebp - 4], eax
cmp dword [edi + 0x26c], eax
jbe 0x402089
lea esp, [esp]
movzx ebx, byte [eax + edi + 0x150]
imul ebx, dword [edi + 0x250]
add ebx, dword [ebp + 8]
push 0x42
lea eax, [ebp - 0xd3]
push 0
push eax
mov dword [edi + 0x280], ebx
mov byte [ebp - 0xd4], 0
call fcn.00402d10
mov ecx, dword [ebp - 0x28]
add esp, 0xc
cmp ecx, 0x2ed6
jge 0x401f2f
lea ecx, [ecx]
inc ecx
mov eax, ecx
and eax, 0x80000007
jns 0x401f1f
dec eax
or eax, 0xfffffff8
inc eax
jne 0x401f24
add ecx, 2
cmp ecx, 0x2ed6
jl 0x401f10
mov dword [ebp - 0x28], ecx
push 0x42
lea eax, [ebp - 0xd4]
push ebx
push eax
call fcn.00402ce0
mov ecx, 0x10
lea esi, [ebp - 0x90]
mov edi, ebx
rep movsd dword es:[edi], dword [esi]
movsb byte es:[edi], byte [esi]
mov esi, dword [ebp - 0x2c]
add esp, 0xc
cmp esi, 0x5435
jge 0x401f78
mov ecx, 0x5434
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 - 0x2c], eax
mov ecx, dword [ebp - 0x40]
test ecx, ecx
je 0x401f98
nop
mov eax, 0x891ac73b
imul ecx
add edx, ecx
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x401f80
mov dword [ebp - 0x40], ecx
mov edi, dword [ebp + 0x10]
mov eax, dword [edi + 0x280]
call eax
mov eax, 0x78b7
dec eax
jne 0x401fa8
push 0x42
lea eax, [ebp - 0xd4]
push eax
push ebx
call fcn.00402ce0
xor esi, esi
add esp, 0xc
cmp dword [edi + 0x250], esi
jbe 0x402017
jmp 0x401fd0
mov eax, dword [edi + 0x278]
inc esi
mov al, byte [eax + 3]
xor byte [esi + ebx - 1], al
movzx ecx, byte [esi + ebx - 1]
mov eax, dword [edi + 0x278]
mov dl, byte [eax + 2]
xor dl, cl
mov byte [esi + ebx - 1], dl
mov eax, dword [edi + 0x278]
mov cl, byte [eax + 1]
xor cl, dl
mov byte [esi + ebx - 1], cl
mov eax, dword [edi + 0x278]
mov al, byte [eax]
xor al, cl
mov byte [esi + ebx - 1], al
cmp esi, dword [edi + 0x250]
jb 0x401fd0
mov ecx, dword [ebp - 0x30]
test ecx, ecx
je 0x402038
mov edi, edi
mov eax, 0x8b70344b
imul ecx
add edx, ecx
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x402020
mov dword [ebp - 0x30], ecx
mov ecx, dword [ebp - 0x34]
test ecx, ecx
je 0x402058
nop
mov eax, 0x92492493
imul ecx
add edx, ecx
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x402040
mov dword [ebp - 0x34], ecx
mov eax, dword [ebp - 0x3c]
test eax, eax
je 0x402070
nop
cdq
and edx, 0x1f
add eax, edx
sar eax, 5
test eax, eax
jne 0x402060
mov dword [ebp - 0x3c], eax
mov eax, dword [ebp - 4]
inc eax
mov dword [ebp - 4], eax
cmp eax, dword [edi + 0x26c]
jb 0x401ed0
lea ebx, [edi + 0x3ec]
mov eax, 0x382
mov edx, 0x2e
mov ecx, 0xf0
cmp ecx, edx
cmovl ecx, edx
dec eax
jne 0x402098
mov ecx, 0x5925
mov eax, 0x92492493
imul ecx
add edx, ecx
sar edx, 4
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x4020a5
call fcn.00403000
mov dword [edi], eax
add eax, 0xfffffffe
push eax
push dword [edi + 0x3cc]
call fcn.004010f0
push 0x191c2bdd
push ebx
call fcn.00401a40
add esp, 0x10
mov ecx, 0x1ce8
mov edx, 0xf5
mov eax, 0xb5
lea ecx, [ecx]
cmp eax, 0xf5
cmovg eax, edx
dec ecx
jne 0x4020f0
mov eax, dword [ebp + 0xc]
cdq
and edx, 0xff
lea esi, [edx + eax]
sar esi, 8
test esi, esi
je 0x40212a
mov edi, dword [ebp + 8]
push ebx
push 0x100
push edi
call fcn.00402d70
add esp, 0xc
add edi, 0x100
dec esi
jne 0x402112
mov eax, 0x4a02
mov edx, 0xfc
mov ecx, 0x35
lea esp, [esp]
cmp ecx, edx
cmovg ecx, edx
dec eax
jne 0x402140
mov eax, 0x70d0
lea ecx, [ecx]
dec eax
jne 0x402150
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
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 0x402179
inc esi
cmp esi, 0x53e4
jl 0x402160
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret