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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x98
xor eax, eax
push ebx
push esi
xor esi, esi
push edi
mov ecx, 0x6c00
mov edi, 0x5fb5
mov ebx, 0x8b3
mov dword [ebp - 0x18], esi
mov dword [ebp - 0x40], 0x40ef
mov dword [ebp - 0x44], 0x17d9
mov dword [ebp - 0x94], 0x6faa
mov dword [ebp - 0x8c], 0x1929
mov dword [ebp - 0x10], esi
mov dword [ebp - 0x84], esi
mov dword [ebp - 0x14], eax
mov dword [ebp - 8], 0x16
mov dword [ebp - 4], eax
mov dword [ebp - 0xc], eax
mov dword [ebp - 0x38], 0x5d88
mov dword [ebp - 0x58], 0x332c
mov dword [ebp - 0x50], 0x73fb
mov dword [ebp - 0x60], eax
mov dword [ebp - 0x3c], 0x7eb9
mov dword [ebp - 0x4c], eax
mov dword [ebp - 0x54], 0x183c
mov dword [ebp - 0x5c], 0xc4d
mov dword [ebp - 0x64], 0x1892
mov dword [ebp - 0x48], eax
cmp dword [ebp + 8], eax
je 0x40259c
cmp dword [ebp + 0xc], eax
je 0x40259c
mov eax, dword [ebp + 0x10]
lea edx, [eax + 0xbc]
mov eax, dword [eax + 0x9c]
xor eax, dword [edx]
cmp dword [ebp + 0xc], eax
jl 0x40259c
mov eax, 0x3159721f
imul ecx
sar edx, 5
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x401ee3
call fcn.004033f0
mov edx, dword [ebp + 0x10]
lea ecx, [edx + 0xbc]
mov dword [edx + 0xa4], eax
mov eax, dword [ecx]
xor dword [edx + 0x29c], eax
mov eax, 0x3479
dec eax
jne 0x401f17
mov eax, dword [ebp + 0xc]
mov dword [edx + 0x264], ecx
mov ecx, dword [ebp + 0x10]
xor edx, edx
div dword [ecx + 0x29c]
mov ecx, eax
mov eax, dword [ebp + 0x10]
mov dword [eax + 0x254], ecx
lea esp, [esp]
mov eax, 0xb40b40b5
imul edi
add edx, edi
sar edx, 6
mov edi, edx
shr edi, 0x1f
add edi, edx
jne 0x401f40
mov eax, 0x92492493
imul ebx
add edx, ebx
sar edx, 2
mov ebx, edx
shr ebx, 0x1f
add ebx, edx
jne 0x401f55
mov ebx, dword [ebp + 0x10]
mov eax, 0x14a5
mov edx, dword [ebx + 0x29c]
imul edx, ecx
mov dword [ebx + 0x260], edx
mov edi, 0x66
mov ecx, 0xbf
jmp 0x401f90
cmp ecx, edi
cmovg ecx, edi
dec eax
jne 0x401f90
xor edi, edi
test edx, edx
je 0x401fea
mov esi, dword [ebp + 8]
mov eax, dword [ebx + 0x264]
inc edi
mov al, byte [eax]
xor byte [edi + esi - 1], al
movzx ecx, byte [edi + esi - 1]
mov eax, dword [ebx + 0x264]
mov dl, byte [eax + 1]
xor dl, cl
mov byte [edi + esi - 1], dl
mov eax, dword [ebx + 0x264]
mov cl, byte [eax + 2]
xor cl, dl
mov byte [edi + esi - 1], cl
mov eax, dword [ebx + 0x264]
mov al, byte [eax + 3]
xor al, cl
mov byte [edi + esi - 1], al
cmp edi, dword [ebx + 0x260]
jb 0x401fa1
xor esi, esi
mov eax, 0x3277
mov edx, 0x83
mov ecx, 0xa3
lea esp, [esp]
cmp ecx, edx
cmovl ecx, edx
dec eax
jne 0x402000
mov eax, 0x3d66
mov edx, 0xa2
mov ecx, 0xbe
cmp ecx, edx
cmovl ecx, edx
dec eax
jne 0x402017
nop
inc esi
mov eax, esi
and eax, 0x80000001
jns 0x40202f
dec eax
or eax, 0xfffffffe
inc eax
jne 0x402034
add esi, 2
cmp esi, 0x492b
jl 0x402020
mov edi, ebx
xor esi, esi
mov eax, dword [edi + 0x29c]
dec eax
je 0x40221a
lea ecx, [ecx]
mov ebx, dword [ebp - 0x18]
cmp ebx, 0x4d0d
jge 0x40208f
jmp 0x402060
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 0x402084
inc ebx
cmp ebx, 0x4d0d
jl 0x402060
mov dword [ebp - 0x18], ebx
mov eax, dword [ebp - 0x40]
test eax, eax
je 0x4020a6
cdq
and edx, 0x1f
add eax, edx
sar eax, 5
test eax, eax
jne 0x402096
mov dword [ebp - 0x40], eax
mov ecx, dword [ebp - 0x44]
test ecx, ecx
je 0x4020c6
lea ecx, [ecx]
mov eax, 0x78787879
imul ecx
sar edx, 6
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x4020b0
mov dword [ebp - 0x44], ecx
mov ecx, dword [ebp - 0x94]
test ecx, ecx
je 0x4020e9
mov eax, 0x487ede05
imul ecx
sar edx, 5
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x4020d0
mov dword [ebp - 0x94], ecx
mov ecx, dword [ebp - 0x8c]
test ecx, ecx
je 0x40210c
mov eax, 0x2f149903
imul ecx
sar edx, 5
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x4020f3
mov dword [ebp - 0x8c], ecx
mov ecx, dword [ebp - 0x10]
cmp ecx, 0x12cd
jge 0x402136
inc ecx
mov eax, ecx
and eax, 0x80000001
jns 0x402126
dec eax
or eax, 0xfffffffe
inc eax
jne 0x40212b
add ecx, 2
cmp ecx, 0x12cd
jl 0x402117
mov dword [ebp - 0x10], ecx
mov eax, dword [ebp - 0x84]
lea esp, [esp]
inc eax
cmp eax, 0x5c94
jl 0x402140
mov dword [ebp - 0x84], eax
mov eax, dword [edi + 0x29c]
dec eax
push eax
push 1
push edi
call fcn.00403200
add esp, 0xc
mov bl, al
xor ecx, ecx
cmp bl, byte [edi + ecx + 0xc8]
je 0x402175
inc ecx
cmp ecx, esi
jbe 0x402165
jmp 0x402177
xor bl, bl
mov edx, dword [ebp - 0x14]
cmp edx, 0x3bb3
jge 0x4021a0
mov ecx, 0x3bb2
sub ecx, edx
mov eax, 0xaaaaaaab
mul ecx
mov eax, dword [ebp - 0x14]
shr edx, 1
add eax, edx
lea eax, [eax + edx*2]
add eax, 3
mov dword [ebp - 0x14], eax
mov ecx, dword [ebp - 8]
mov eax, 0x1629
mov edx, 0xe6
lea ecx, [ecx]
cmp ecx, edx
cmovl ecx, edx
dec eax
jne 0x4021b0
mov eax, dword [ebp - 4]
mov dword [ebp - 8], ecx
mov edi, edi
inc eax
cmp eax, 0x6402
jl 0x4021c0
mov dword [ebp - 4], eax
test bl, bl
je 0x4021d7
mov byte [edi + esi + 0xc8], bl
inc esi
mov ebx, dword [ebp - 0xc]
cmp ebx, 0x2b03
jge 0x40220b
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 0x402200
inc ebx
cmp ebx, 0x2b03
jl 0x4021e2
mov dword [ebp - 0xc], ebx
mov eax, dword [edi + 0x29c]
dec eax
cmp esi, eax
jb 0x402050
xorps xmm0, xmm0
lea ebx, [edi + 0x28]
movq qword [ebp - 0x74], xmm0
movq qword [ebp - 0x6c], xmm0
mov dword [ebp - 0x34], 0xc6efe26d
mov dword [ebp - 0x30], 0x9f63a93b
movq xmm0, qword [ebp - 0x34]
movq qword [ebx], xmm0
mov dword [ebp - 0x2c], 0xbe049278
mov dword [ebp - 0x28], 0xa9838cfb
movq xmm0, qword [ebp - 0x2c]
movq qword [ebx + 8], xmm0
mov dword [ebp - 0x24], 0x77b57be7
mov dword [ebp - 0x20], 0
movq xmm0, qword [ebp - 0x24]
movq qword [ebx + 0x10], xmm0
mov dword [ebp - 0x80], 0x12cdaa74
mov dword [ebp - 0x7c], 0xb17971e1
mov dword [ebp - 0x78], 0xe27cc4aa
mov dword [ebp - 8], ebx
mov byte [ebx + 0x18], 0
xor eax, eax
nop
xor byte [ebp + eax - 0x80], 0x21
inc eax
cmp eax, 0xc
jb 0x402290
xor esi, esi
lea ecx, [ecx]
inc esi
mov eax, 0x66666667
imul esi
sar edx, 1
mov eax, edx
shr eax, 0x1f
add eax, edx
mov ecx, esi
lea eax, [eax + eax*4]
sub ecx, eax
jne 0x4022bb
inc esi
cmp esi, 0x3289
jl 0x4022a0
xor eax, eax
mov dword [ebp - 4], eax
cmp dword [edi + 0x29c], eax
jbe 0x402514
mov ebx, edi
jmp 0x4022e0
movzx edi, byte [ebx + eax + 0xc8]
imul edi, dword [ebx + 0x254]
add edi, dword [ebp + 8]
mov ecx, dword [ebp - 0x38]
mov dword [ebx + 0x248], edi
test ecx, ecx
je 0x402313
nop
mov eax, 0x2aaaaaab
imul ecx
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x402300
mov dword [ebp - 0x38], ecx
mov ecx, dword [ebp - 0x58]
test ecx, ecx
je 0x402336
lea ebx, [ebx]
mov eax, 0x78787879
imul ecx
sar edx, 4
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x402320
mov dword [ebp - 0x58], ecx
mov ecx, dword [ebp - 0x50]
test ecx, ecx
je 0x402356
lea ecx, [ecx]
mov eax, 0x38e38e39
imul ecx
sar edx, 4
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x402340
mov dword [ebp - 0x50], ecx
movq xmm0, qword [edi]
mov bl, byte [edi + 0x18]
mov esi, dword [ebp - 0x60]
mov eax, dword [ebp - 0x78]
movq qword [ebp - 0x88], xmm0
movq xmm0, qword [edi + 8]
movq qword [ebp - 0x90], xmm0
movq xmm0, qword [edi + 0x10]
movq qword [ebp - 0x98], xmm0
movq xmm0, qword [ebp - 0x80]
movq qword [edi], xmm0
mov dword [edi + 8], eax
cmp esi, 0x6915
jge 0x4023b6
mov ecx, 0x6914
sub ecx, esi
mov eax, 0xcccccccd
mul ecx
shr edx, 3
lea eax, [edx + edx*4]
lea esi, [esi + eax*2]
add esi, 0xa
mov dword [ebp - 0x60], esi
mov eax, dword [ebp + 0x10]
mov eax, dword [eax + 0x248]
call eax
movq xmm0, qword [ebp - 0x88]
mov ecx, dword [ebp - 0x3c]
movq qword [edi], xmm0
movq xmm0, qword [ebp - 0x90]
movq qword [edi + 8], xmm0
movq xmm0, qword [ebp - 0x98]
movq qword [edi + 0x10], xmm0
mov byte [edi + 0x18], bl
test ecx, ecx
je 0x402407
mov eax, 0x4325c53f
imul ecx
sar edx, 5
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x4023f1
mov dword [ebp - 0x3c], ecx
mov ebx, dword [ebp - 0x4c]
cmp ebx, 0x173c
jge 0x40242f
mov ecx, 0x173b
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 - 0x4c], ebx
mov ebx, dword [ebp + 0x10]
xor esi, esi
cmp dword [ebx + 0x254], esi
jbe 0x402487
lea esp, [esp]
mov eax, dword [ebx + 0x264]
inc esi
mov al, byte [eax + 3]
xor byte [esi + edi - 1], al
movzx ecx, byte [esi + edi - 1]
mov eax, dword [ebx + 0x264]
mov dl, byte [eax + 2]
xor dl, cl
mov byte [esi + edi - 1], dl
mov eax, dword [ebx + 0x264]
mov cl, byte [eax + 1]
xor cl, dl
mov byte [esi + edi - 1], cl
mov eax, dword [ebx + 0x264]
mov al, byte [eax]
xor al, cl
mov byte [esi + edi - 1], al
cmp esi, dword [ebx + 0x254]
jb 0x402440
mov ecx, dword [ebp - 0x54]
test ecx, ecx
je 0x4024a8
mov edi, edi
mov eax, 0x92492493
imul ecx
add edx, ecx
sar edx, 6
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x402490
mov dword [ebp - 0x54], ecx
mov ecx, dword [ebp - 0x5c]
test ecx, ecx
je 0x4024c8
nop
mov eax, 0x82082083
imul ecx
add edx, ecx
sar edx, 6
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x4024b0
mov dword [ebp - 0x5c], ecx
mov ecx, dword [ebp - 0x64]
test ecx, ecx
je 0x4024e6
nop
mov eax, 0x2d4279a3
imul ecx
sar edx, 5
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x4024d0
mov dword [ebp - 0x64], ecx
mov eax, dword [ebp - 0x48]
lea esp, [esp]
inc eax
cmp eax, 0xac5
jl 0x4024f0
mov dword [ebp - 0x48], eax
mov eax, dword [ebp - 4]
inc eax
mov dword [ebp - 4], eax
cmp eax, dword [ebx + 0x29c]
jb 0x4022e0
mov ebx, dword [ebp - 8]
mov edi, dword [ebp + 0x10]
call fcn.004033f0
lea ecx, [eax - 2]
push ecx
push dword [edi + 0xa4]
mov dword [edi + 0x24], eax
call fcn.004010d0
push 0xb451eb4
push ebx
call fcn.00401d30
mov eax, dword [ebp + 0xc]
cdq
and edx, 0xff
add esp, 0x10
lea esi, [edx + eax]
sar esi, 8
test esi, esi
je 0x402568
mov edi, dword [ebp + 8]
push ebx
push 0x100
push edi
call fcn.004030d0
add esp, 0xc
add edi, 0x100
dec esi
jne 0x402550
mov ecx, 0x831
lea ecx, [ecx]
mov eax, 0xaf3addc7
imul ecx
add edx, ecx
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x402570
mov eax, 0xccf
mov edx, 0x61
mov ecx, 0x8a
cmp ecx, edx
cmovl ecx, edx
dec eax
jne 0x402594
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret