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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xec
push ebx
push esi
mov esi, 0xb6
push edi
mov ecx, 0x5a94
lea edi, [esi - 0x43]
mov ebx, 0x5087
mov dword [ebp - 0x40], 0x2002
mov dword [ebp - 0x60], 0x728a
mov dword [ebp - 0x5c], 0
mov dword [ebp - 0x28], 0
mov dword [ebp - 0x50], 0x3e73
mov dword [ebp - 0x38], 0xdd
mov dword [ebp - 0x58], 0x49e9
mov dword [ebp - 4], 0x3b3f
mov dword [ebp - 0xc], 0
mov dword [ebp - 0x2c], 0x5a95
mov dword [ebp - 0x48], 0
mov dword [ebp - 0x54], 0x4225
mov dword [ebp - 0x30], 0xb0
mov dword [ebp - 0x34], 0x9d
mov dword [ebp - 8], 0
mov dword [ebp - 0x3c], 0x5936
mov dword [ebp - 0x44], 0x3cec
mov dword [ebp - 0x4c], 0x331f
lea esp, [esp]
mov eax, 0xb11fd3b9
imul ecx
add edx, ecx
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x401b50
cmp dword [ebp + 8], ecx
je 0x40219a
mov edx, dword [ebp + 0xc]
test edx, edx
je 0x40219a
mov eax, dword [ebp + 0x10]
lea ecx, [eax + 0xe0]
mov eax, dword [eax + 0x36c]
xor eax, dword [ecx]
cmp edx, eax
jl 0x40219a
call fcn.00403100
mov edx, dword [ebp + 0x10]
mov dword [ebp - 0x64], 0x4e
lea ecx, [edx + 0xe0]
mov dword [edx + 0x160], eax
mov eax, dword [ecx]
xor dword [edx + 0x458], eax
mov eax, 0x6631
lea ebx, [ebx]
cmp esi, 0x4e
cmovg esi, dword [ebp - 0x64]
dec eax
jne 0x401bc0
mov dword [edx + 0x3f0], ecx
mov eax, 0x7298
mov ecx, 0x13
lea ebx, [ebx]
cmp edi, ecx
cmovl edi, ecx
dec eax
jne 0x401be0
mov edi, dword [ebp + 0x10]
mov eax, dword [ebp + 0xc]
mov ecx, dword [edi + 0x458]
xor edx, edx
div ecx
mov esi, 9
mov edx, eax
mov dword [edi + 4], edx
imul edx, ecx
mov dword [edi + 0x1c], edx
mov ecx, 0x6909
mov eax, 0x7e
cmp eax, 9
cmovl eax, esi
dec ecx
jne 0x401c12
mov ecx, 0x560a
mov esi, 0xd1
mov eax, 0x2a
lea ebx, [ebx]
cmp eax, 0xd1
cmovg eax, esi
dec ecx
jne 0x401c30
xor esi, esi
test edx, edx
je 0x401c90
mov ebx, dword [ebp + 8]
mov eax, dword [edi + 0x3f0]
inc esi
mov al, byte [eax]
xor byte [esi + ebx - 1], al
movzx ecx, byte [esi + ebx - 1]
mov eax, dword [edi + 0x3f0]
mov dl, byte [eax + 1]
xor dl, cl
mov byte [esi + ebx - 1], dl
mov eax, dword [edi + 0x3f0]
mov cl, byte [eax + 2]
xor cl, dl
mov byte [esi + ebx - 1], cl
mov eax, dword [edi + 0x3f0]
mov al, byte [eax + 3]
xor al, cl
mov byte [esi + ebx - 1], al
cmp esi, dword [edi + 0x1c]
jb 0x401c44
mov ebx, 0x5087
lea ecx, [ecx]
mov eax, 0xa57eb503
imul ebx
add edx, ebx
sar edx, 6
mov ebx, edx
shr ebx, 0x1f
add ebx, edx
jne 0x401c90
mov eax, 0x28c1979
imul dword [ebp - 0x40]
sar edx, 1
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [ebp - 0x40], eax
jne 0x401ca5
mov eax, dword [edi + 0x458]
xor esi, esi
dec eax
je 0x401e35
lea ebx, [ebx]
mov ecx, dword [ebp - 0x60]
test ecx, ecx
je 0x401cef
mov eax, 0x8a42f871
imul ecx
add edx, ecx
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x401cd7
mov dword [ebp - 0x60], ecx
mov ebx, dword [ebp - 0x5c]
cmp ebx, 0x38d2
jge 0x401d17
mov ecx, 0x38d1
sub ecx, ebx
mov eax, 0xcccccccd
mul ecx
shr edx, 3
lea eax, [edx + edx*4]
lea ebx, [ebx + eax*2]
add ebx, 0xa
mov dword [ebp - 0x5c], ebx
mov eax, dword [edi + 0x458]
dec eax
push eax
push 1
push edi
call fcn.00402f80
add esp, 0xc
mov bl, al
xor eax, eax
mov edi, edi
cmp bl, byte [edi + eax + 0x184]
je 0x401d40
inc eax
cmp eax, esi
jbe 0x401d30
jmp 0x401d42
xor bl, bl
mov edx, dword [ebp - 0x28]
cmp edx, 0x1f40
jge 0x401d6d
mov ecx, 0x1f3f
sub ecx, edx
mov eax, 0xcccccccd
mul ecx
shr edx, 3
lea eax, [edx + edx*4]
mov edx, dword [ebp - 0x28]
lea edx, [edx + eax*2]
add edx, 0xa
mov dword [ebp - 0x28], edx
mov ecx, dword [ebp - 0x50]
test ecx, ecx
je 0x401d8c
mov eax, 0x99d722db
imul ecx
add edx, ecx
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x401d74
mov dword [ebp - 0x50], ecx
mov ecx, dword [ebp - 0x38]
mov eax, 0x1e00
mov edx, 0x67
lea esp, [esp]
cmp ecx, edx
cmovl ecx, edx
dec eax
jne 0x401da0
mov dword [ebp - 0x38], ecx
mov ecx, dword [ebp - 0x58]
test ecx, ecx
je 0x401dc8
mov eax, 0xdbeb61f
imul ecx
sar edx, 3
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x401db2
mov dword [ebp - 0x58], ecx
mov ecx, dword [ebp - 4]
test ecx, ecx
je 0x401de6
nop
mov eax, 0x4bda12f7
imul ecx
sar edx, 3
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x401dd0
mov dword [ebp - 4], ecx
test bl, bl
je 0x401df2
mov byte [edi + esi + 0x184], bl
inc esi
mov ebx, dword [ebp - 0xc]
cmp ebx, 0x69b0
jge 0x401e26
lea ecx, [ecx]
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 0x401e1b
inc ebx
cmp ebx, 0x69b0
jl 0x401e00
mov dword [ebp - 0xc], ebx
mov eax, dword [edi + 0x458]
dec eax
cmp esi, eax
jb 0x401cd0
push 0x43
lea eax, [ebp - 0xa7]
push 0
push eax
mov byte [ebp - 0xa8], 0
call fcn.00402e10
lea eax, [ebp - 0xa8]
push eax
call fcn.004027a0
add esp, 0x10
mov eax, 0x63ec
mov edx, 0x6d
mov ecx, 0xcd
lea ebx, [ebx]
cmp ecx, edx
cmovl ecx, edx
dec eax
jne 0x401e70
lea ebx, [edi + 0x13c]
mov dword [ebp - 0x24], 0xee58462
mov dword [ebp - 0x20], 0xe8480fb7
movq xmm0, qword [ebp - 0x24]
movq qword [ebx], xmm0
mov dword [ebp - 0x1c], 0x5318470a
mov dword [ebp - 0x18], 0x1408f20b
movq xmm0, qword [ebp - 0x1c]
mov dword [ebp - 0x14], 0x41ab06a4
mov eax, dword [ebp - 0x14]
xor ecx, ecx
movq qword [ebx + 8], xmm0
mov dword [ebx + 0x10], eax
mov word [ebx + 0x14], cx
mov byte [ebx + 0x16], cl
mov eax, 0x2684
mov edx, 0xbc
mov ecx, 0xac
cmp ecx, edx
cmovl ecx, edx
dec eax
jne 0x401ed2
lea ebx, [ebx]
xor byte [ebp + eax - 0xa8], 0xe9
inc eax
cmp eax, 0x42
jb 0x401ee0
mov edi, 0x3747
mov eax, 0x60606061
imul edi
sar edx, 6
mov edi, edx
shr edi, 0x1f
add edi, edx
jne 0x401ef3
mov edi, dword [ebp + 0x10]
xor ecx, ecx
mov dword [ebp - 4], ecx
cmp dword [edi + 0x458], ecx
jbe 0x4020f1
lea ebx, [ebx]
mov ebx, dword [ebp - 0x2c]
test ebx, ebx
je 0x401f46
jmp 0x401f30
mov eax, 0x13e22cbd
imul ebx
sar edx, 4
mov ebx, edx
shr ebx, 0x1f
add ebx, edx
jne 0x401f30
mov dword [ebp - 0x2c], ebx
movzx ebx, byte [ecx + edi + 0x184]
imul ebx, dword [edi + 4]
add ebx, dword [ebp + 8]
mov eax, dword [ebp - 0x48]
inc eax
cmp eax, 0x2612
jl 0x401f58
push 0x43
mov dword [ebp - 0x48], eax
lea eax, [ebp - 0xeb]
push 0
push eax
mov dword [edi + 0x124], ebx
mov byte [ebp - 0xec], 0
call fcn.00402e10
mov ecx, dword [ebp - 0x54]
add esp, 0xc
test ecx, ecx
je 0x401fa8
lea ebx, [ebx]
mov eax, 0xe070381d
imul ecx
add edx, ecx
sar edx, 6
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x401f90
mov dword [ebp - 0x54], ecx
push 0x43
lea eax, [ebp - 0xec]
push ebx
push eax
call fcn.00402de0
mov ecx, 0x10
lea esi, [ebp - 0xa8]
mov edi, ebx
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [ebp - 0x30]
add esp, 0xc
movsw word es:[edi], word [esi]
mov eax, 0x1d2a
mov edx, 0x99
cmp ecx, edx
cmovg ecx, edx
dec eax
jne 0x401fd8
mov edi, dword [ebp + 0x10]
mov dword [ebp - 0x30], ecx
mov eax, dword [edi + 0x124]
call eax
mov ecx, dword [ebp - 0x34]
mov eax, 0x4bc9
mov edx, 4
jmp 0x402000
cmp ecx, edx
cmovl ecx, edx
dec eax
jne 0x402000
push 0x43
lea eax, [ebp - 0xec]
push eax
push ebx
mov dword [ebp - 0x34], ecx
call fcn.00402de0
mov ecx, dword [ebp - 8]
add esp, 0xc
cmp ecx, 0x38e7
jge 0x402046
inc ecx
mov eax, ecx
and eax, 0x80000001
jns 0x402037
dec eax
or eax, 0xfffffffe
inc eax
jne 0x40203b
add ecx, ecx
cmp ecx, 0x38e7
jl 0x402028
mov dword [ebp - 8], ecx
mov ecx, dword [ebp - 0x3c]
test ecx, ecx
je 0x402066
lea ecx, [ecx]
mov eax, 0x2aaaaaab
imul ecx
sar edx, 2
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x402050
mov dword [ebp - 0x3c], ecx
xor esi, esi
cmp dword [edi + 4], esi
jbe 0x4020b4
lea ecx, [ecx]
mov eax, dword [edi + 0x3f0]
inc esi
mov al, byte [eax + 3]
xor byte [esi + ebx - 1], al
movzx ecx, byte [esi + ebx - 1]
mov eax, dword [edi + 0x3f0]
mov dl, byte [eax + 2]
xor dl, cl
mov byte [esi + ebx - 1], dl
mov eax, dword [edi + 0x3f0]
mov cl, byte [eax + 1]
xor cl, dl
mov byte [esi + ebx - 1], cl
mov eax, dword [edi + 0x3f0]
mov al, byte [eax]
xor al, cl
mov byte [esi + ebx - 1], al
cmp esi, dword [edi + 4]
jb 0x402070
mov ecx, dword [ebp - 0x44]
test ecx, ecx
je 0x4020d8
jmp 0x4020c0
mov eax, 0xb40b40b5
imul ecx
add edx, ecx
sar edx, 6
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x4020c0
mov dword [ebp - 0x44], ecx
mov ecx, dword [ebp - 4]
inc ecx
mov dword [ebp - 4], ecx
cmp ecx, dword [edi + 0x458]
jb 0x401f20
lea ebx, [edi + 0x13c]
call fcn.00403100
mov dword [edi + 0x39c], eax
add eax, 0xfffffffe
push eax
push dword [edi + 0x160]
call fcn.004010f0
add esp, 8
xor esi, esi
inc esi
mov eax, 0x2aaaaaab
imul esi
mov eax, edx
shr eax, 0x1f
add eax, edx
lea ecx, [eax + eax*2]
add ecx, ecx
mov eax, esi
sub eax, ecx
jne 0x40212d
add esi, 2
cmp esi, 0x1a3e
jl 0x402110
push 0x5ee1268
push ebx
call fcn.00401a00
add esp, 8
mov ecx, 0xdbc
dec ecx
jne 0x402148
mov eax, dword [ebp + 0xc]
cdq
and edx, 0xff
lea esi, [edx + eax]
sar esi, 8
test esi, esi
je 0x40217a
mov edi, dword [ebp + 8]
push ebx
push 0x100
push edi
call fcn.00402e70
add esp, 0xc
add edi, 0x100
dec esi
jne 0x402162
mov eax, 0x9ef
nop
dec eax
jne 0x402180
mov eax, 0x78787879
imul dword [ebp - 0x4c]
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [ebp - 0x4c], eax
jne 0x402183
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret