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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x134
push ebx
xor eax, eax
push esi
xor esi, esi
push edi
mov edi, 0xf1
mov ebx, 0x3ff9
mov dword [ebp - 0x38], 0x3e66
mov dword [ebp - 0x48], 0x7a89
mov dword [ebp - 0x44], 2
mov dword [ebp - 0x30], 0x54d8
mov dword [ebp - 0x4c], 0x52c6
mov dword [ebp - 4], 0x3aaa
mov dword [ebp - 0x28], 0x1ea6
mov dword [ebp - 0x40], eax
mov dword [ebp - 0x2c], eax
mov dword [ebp - 0x34], 0x7640
mov dword [ebp - 0x3c], 0x1cd8
mov dword [ebp - 8], eax
cmp dword [ebp + 8], eax
je 0x402355
mov edx, dword [ebp + 0xc]
test edx, edx
je 0x402355
mov eax, dword [ebp + 0x10]
lea ecx, [eax + 0x1d0]
mov eax, dword [eax + 0x18c]
xor eax, dword [ecx]
cmp edx, eax
jl 0x402355
call fcn.00403380
mov edx, dword [ebp + 0x10]
lea ecx, [edx + 0x1d0]
mov dword [edx + 0x170], eax
mov eax, dword [ecx]
xor dword [edx + 0x118], eax
mov dword [edx + 0x174], ecx
mov eax, 0x3f6a
mov ecx, 0x25
jmp 0x401cb0
cmp edi, ecx
cmovl edi, ecx
dec eax
jne 0x401cb0
mov edi, dword [ebp + 0x10]
mov eax, dword [ebp + 0xc]
mov ecx, dword [edi + 0x118]
xor edx, edx
div ecx
imul ecx, eax
mov dword [edi + 0x1f0], eax
mov dword [edi + 0x16c], ecx
mov eax, 0x2aaaaaab
imul ebx
mov ebx, edx
shr ebx, 0x1f
add ebx, edx
jne 0x401cd7
xor edi, edi
test ecx, ecx
je 0x401d3c
mov ebx, dword [ebp + 0x10]
mov esi, dword [ebp + 8]
mov eax, dword [ebx + 0x174]
inc edi
mov al, byte [eax]
xor byte [edi + esi - 1], al
movzx ecx, byte [edi + esi - 1]
mov eax, dword [ebx + 0x174]
mov dl, byte [eax + 1]
xor dl, cl
mov byte [edi + esi - 1], dl
mov eax, dword [ebx + 0x174]
mov cl, byte [eax + 2]
xor cl, dl
mov byte [edi + esi - 1], cl
mov eax, dword [ebx + 0x174]
mov al, byte [eax + 3]
xor al, cl
mov byte [edi + esi - 1], al
cmp edi, dword [ebx + 0x16c]
jb 0x401cf3
xor esi, esi
mov ecx, 0x44fa
mov eax, 0xd20d20d3
imul ecx
add edx, ecx
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x401d41
mov eax, 0x1ba7
mov edx, 0x21
mov ecx, 0x18
cmp ecx, edx
cmovl ecx, edx
dec eax
jne 0x401d65
mov ecx, 0x15df
mov eax, 0xe6c2b449
imul ecx
add edx, ecx
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x401d72
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 0x401da5
add esi, esi
jmp 0x401dae
mov eax, esi
cdq
sub eax, edx
sar eax, 1
add esi, eax
cmp esi, 0x28e5
jl 0x401d87
mov edi, dword [ebp + 0x10]
xor esi, esi
mov eax, dword [edi + 0x118]
dec eax
je 0x401e89
mov ecx, dword [ebp - 0x38]
test ecx, ecx
je 0x401de8
nop
mov eax, 0x84210843
imul ecx
add edx, ecx
sar edx, 4
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x401dd0
mov dword [ebp - 0x38], ecx
mov eax, dword [edi + 0x118]
dec eax
push eax
push 1
push edi
call fcn.00403220
add esp, 0xc
mov bl, al
xor ecx, ecx
nop
cmp bl, byte [edi + ecx + 0x21c]
je 0x401e10
inc ecx
cmp ecx, esi
jbe 0x401e00
jmp 0x401e12
xor bl, bl
mov ecx, dword [ebp - 0x48]
test ecx, ecx
je 0x401e36
lea esp, [esp]
mov eax, 0x38e38e39
imul ecx
sar edx, 5
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x401e20
mov dword [ebp - 0x48], ecx
test bl, bl
je 0x401e42
mov byte [edi + esi + 0x21c], bl
inc esi
mov ecx, dword [ebp - 0x44]
mov eax, 0x55c3
mov edx, 0xc5
nop
cmp ecx, edx
cmovl ecx, edx
dec eax
jne 0x401e50
mov dword [ebp - 0x44], ecx
mov ecx, dword [ebp - 0x30]
test ecx, ecx
je 0x401e7a
mov eax, 0xb21642c9
imul ecx
add edx, ecx
sar edx, 5
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x401e62
mov dword [ebp - 0x30], ecx
mov eax, dword [edi + 0x118]
dec eax
cmp esi, eax
jb 0x401dc8
push 0x71
lea eax, [ebp - 0xbf]
push 0
push eax
mov byte [ebp - 0xc0], 0
call fcn.004030b0
lea eax, [ebp - 0xc0]
push eax
call fcn.004029c0
add esp, 0x10
xor esi, esi
mov dword [ebp - 0x24], 0x22cc75f1
mov dword [ebp - 0x20], 0xc34434ca
mov dword [ebp - 0x1c], 0x4c803387
mov dword [ebp - 0x18], 0xf36d973d
mov dword [ebp - 0x14], 0xdae6fc84
mov dword [ebp - 0x10], esi
jmp 0x401ee0
mov eax, 0x43b3d5b
imul dword [ebp - 0x4c]
sar edx, 1
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [ebp - 0x4c], eax
jne 0x401ee0
mov ecx, 0x4c9f
jmp 0x401f00
mov eax, 0xea0ea0eb
imul ecx
add edx, ecx
sar edx, 5
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x401f00
movq xmm0, qword [ebp - 0x24]
movq qword [edi + 0x144], xmm0
movq xmm0, qword [ebp - 0x1c]
movq qword [edi + 0x14c], xmm0
movq xmm0, qword [ebp - 0x14]
movq qword [edi + 0x154], xmm0
mov word [edi + 0x15c], si
inc ecx
mov eax, ecx
and eax, 0x80000007
jns 0x401f52
dec eax
or eax, 0xfffffff8
inc eax
jne 0x401f57
add ecx, 2
cmp ecx, 0x599c
jl 0x401f43
nop
mov eax, 0x66666667
imul dword [ebp - 4]
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [ebp - 4], eax
jne 0x401f60
mov ecx, 0x531c
lea esp, [esp]
mov eax, 0x8ca29c05
imul ecx
add edx, ecx
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x401f80
xor eax, eax
jmp 0x401fa0
xor byte [ebp + eax - 0xc0], 0x8b
inc eax
cmp eax, 0x70
jb 0x401fa0
mov edi, 0x378d
mov eax, 0x3949660b
imul edi
sar edx, 5
mov edi, edx
shr edi, 0x1f
add edi, edx
jne 0x401fb3
mov edi, dword [ebp + 0x10]
mov eax, 0x6e5f
mov edx, 0x7e
mov ecx, 0xfc
cmp ecx, edx
cmovl ecx, edx
dec eax
jne 0x401fd8
mov ebx, 0x582e
mov eax, 0x60606061
imul ebx
sar edx, 5
mov ebx, edx
shr ebx, 0x1f
add ebx, edx
jne 0x401fe5
mov ecx, 0x6004
lea ecx, [ecx]
mov eax, 0xae4c415d
imul ecx
add edx, ecx
sar edx, 6
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x402000
inc ecx
mov eax, ecx
and eax, 0x80000003
jns 0x402024
dec eax
or eax, 0xfffffffc
inc eax
jne 0x402029
add ecx, 2
cmp ecx, 0x599c
jl 0x402015
xor eax, eax
mov dword [ebp - 4], eax
cmp dword [edi + 0x118], eax
jbe 0x40221b
jmp 0x402050
movzx ebx, byte [edi + eax + 0x21c]
imul ebx, dword [edi + 0x1f0]
add ebx, dword [ebp + 8]
push 0x71
lea eax, [ebp - 0x133]
push 0
push eax
mov dword [edi + 0x1f4], ebx
mov byte [ebp - 0x134], 0
call fcn.004030b0
mov ecx, dword [ebp - 0x28]
add esp, 0xc
test ecx, ecx
je 0x4020a6
lea esp, [esp]
mov eax, 0x63e7063f
imul ecx
sar edx, 6
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x402090
mov dword [ebp - 0x28], ecx
mov edi, dword [ebp - 0x40]
cmp edi, 0x5f55
jge 0x4020cd
mov ecx, 0x5f54
sub ecx, edi
mov eax, 0x38e38e39
mul ecx
shr edx, 1
lea eax, [edx + edi]
lea eax, [eax + edx*8]
add eax, 9
mov dword [ebp - 0x40], eax
mov esi, dword [ebp - 0x2c]
cmp esi, 0x11c
jge 0x4020f5
mov ecx, 0x11b
sub ecx, esi
mov eax, 0xaaaaaaab
mul ecx
shr edx, 2
lea eax, [edx + edx*2]
lea esi, [esi + eax*2]
add esi, 6
mov dword [ebp - 0x2c], esi
push 0x71
lea eax, [ebp - 0x134]
push ebx
push eax
call fcn.00403080
mov ecx, 0x1c
lea esi, [ebp - 0xc0]
mov edi, ebx
add esp, 0xc
rep movsd dword es:[edi], dword [esi]
mov eax, 0x1cc4
jmp 0x402120
dec eax
jne 0x402120
mov ecx, dword [ebp - 0x34]
test ecx, ecx
je 0x402148
lea ebx, [ebx]
mov eax, 0xae4c415d
imul ecx
add edx, ecx
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x402130
mov dword [ebp - 0x34], ecx
mov ecx, dword [ebp - 0x3c]
test ecx, ecx
je 0x402166
nop
mov eax, 0x2aaaaaab
imul ecx
sar edx, 3
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x402150
mov dword [ebp - 0x3c], ecx
mov edi, dword [ebp + 0x10]
mov eax, dword [edi + 0x1f4]
call eax
push 0x71
lea eax, [ebp - 0x134]
push eax
push ebx
call fcn.00403080
xor esi, esi
add esp, 0xc
cmp dword [edi + 0x1f0], esi
jbe 0x4021d7
lea ecx, [ecx]
mov eax, dword [edi + 0x174]
inc esi
mov al, byte [eax + 3]
xor byte [esi + ebx - 1], al
movzx ecx, byte [esi + ebx - 1]
mov eax, dword [edi + 0x174]
mov dl, byte [eax + 2]
xor dl, cl
mov byte [esi + ebx - 1], dl
mov eax, dword [edi + 0x174]
mov cl, byte [eax + 1]
xor cl, dl
mov byte [esi + ebx - 1], cl
mov eax, dword [edi + 0x174]
mov al, byte [eax]
xor al, cl
mov byte [esi + ebx - 1], al
cmp esi, dword [edi + 0x1f0]
jb 0x402190
mov ebx, dword [ebp - 8]
cmp ebx, 0x1abc
jge 0x402208
inc ebx
mov eax, 0x66666667
imul ebx
sar edx, 1
mov eax, edx
shr eax, 0x1f
add eax, edx
mov ecx, ebx
lea eax, [eax + eax*4]
sub ecx, eax
jne 0x4021fd
inc ebx
cmp ebx, 0x1abc
jl 0x4021e2
mov dword [ebp - 8], ebx
mov eax, dword [ebp - 4]
inc eax
mov dword [ebp - 4], eax
cmp eax, dword [edi + 0x118]
jb 0x402050
xor esi, esi
lea ecx, [ecx]
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 0x402244
inc esi
cmp esi, 0x2ee9
jl 0x402220
call fcn.00403380
mov dword [edi + 0xbc], eax
add eax, 0xfffffffe
push eax
push dword [edi + 0x170]
call fcn.004010a0
add esp, 8
mov ebx, 0x658a
mov edi, edi
mov eax, 0x2f149903
imul ebx
sar edx, 5
mov ebx, edx
shr ebx, 0x1f
add ebx, edx
jne 0x402270
push 0xac795ef
lea ebx, [edi + 0x144]
push ebx
call fcn.00401ac0
add esp, 8
mov ecx, 0x7e80
lea esp, [esp]
mov eax, 0xac769185
imul ecx
add edx, ecx
sar edx, 6
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x4022a0
mov eax, dword [ebp + 0xc]
cdq
and edx, 0xff
mov ecx, 0x109c
lea esi, [edx + eax]
sar esi, 8
lea ebx, [ebx]
mov eax, 0x84210843
imul ecx
add edx, ecx
sar edx, 4
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x4022d0
mov eax, 0x618f
mov edx, 0xc7
mov ecx, 0x57
cmp ecx, edx
cmovl ecx, edx
dec eax
jne 0x4022f4
test esi, esi
je 0x40231b
mov edi, dword [ebp + 8]
push ebx
push 0x100
push edi
call fcn.00403110
add esp, 0xc
add edi, 0x100
dec esi
jne 0x402303
mov ecx, 0x46fc
mov eax, 0x8b70344b
imul ecx
add edx, ecx
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x402320
mov ecx, 0xd65
lea ebx, [ebx]
mov eax, 0xe6c2b449
imul ecx
add edx, ecx
sar edx, 6
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x402340
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret