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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xc8
push ebx
push esi
push edi
xor edi, edi
mov ecx, 0x46
mov ebx, 0x135
lea esi, [ecx + 0x5c]
mov dword [ebp - 4], 0x691b
mov dword [ebp - 8], edi
mov dword [ebp - 0x44], 0x29c3
mov dword [ebp - 0x40], 0xa01
mov dword [ebp - 0x34], 3
mov dword [ebp - 0x3c], edi
mov dword [ebp - 0x2c], edi
mov dword [ebp - 0x38], 0x6729
mov dword [ebp - 0x30], 0x6e2c
cmp dword [ebp + 8], edi
je 0x402421
cmp dword [ebp + 0xc], edi
je 0x402421
mov eax, dword [ebp + 0x10]
lea edx, [eax + 0xb0]
mov eax, dword [eax + 0x3c0]
xor eax, dword [edx]
cmp dword [ebp + 0xc], eax
jl 0x402421
call fcn.00403570
mov edx, dword [ebp + 0x10]
lea ecx, [edx + 0xb0]
mov dword [edx + 0x3d0], eax
mov eax, dword [ecx]
xor dword [edx + 0x60], eax
mov eax, 0xb11fd3b9
imul ebx
add edx, ebx
sar edx, 7
mov ebx, edx
shr ebx, 0x1f
add ebx, edx
jne 0x401ef3
mov edi, dword [ebp + 0x10]
mov eax, dword [ebp + 0xc]
mov ebx, dword [edi + 0x60]
xor edx, edx
div ebx
mov dword [edi + 0x3a4], ecx
mov ecx, eax
mov dword [edi + 0x88], ecx
mov edi, 0x69d0
jmp 0x401f30
mov eax, 0x2aaaaaab
imul edi
sar edx, 4
mov edi, edx
shr edi, 0x1f
add edi, edx
jne 0x401f30
mov eax, 0x7fb8
cdq
and edx, 3
add eax, edx
sar eax, 2
test eax, eax
jne 0x401f48
mov eax, dword [ebp + 0x10]
imul ecx, ebx
xor ebx, ebx
mov dword [eax + 0x244], ecx
test ecx, ecx
je 0x401fbe
mov edi, dword [ebp + 8]
mov esi, eax
lea esp, [esp]
mov eax, dword [esi + 0x3a4]
inc ebx
mov al, byte [eax]
xor byte [ebx + edi - 1], al
movzx ecx, byte [ebx + edi - 1]
mov eax, dword [esi + 0x3a4]
mov dl, byte [eax + 1]
xor dl, cl
mov byte [ebx + edi - 1], dl
mov eax, dword [esi + 0x3a4]
mov cl, byte [eax + 2]
xor cl, dl
mov byte [ebx + edi - 1], cl
mov eax, dword [esi + 0x3a4]
mov al, byte [eax + 3]
xor al, cl
mov byte [ebx + edi - 1], al
cmp ebx, dword [esi + 0x244]
jb 0x401f70
mov esi, 0xa2
xor edi, edi
mov ecx, 0x4955
mov edx, 0x41
mov eax, 0x1a
lea ecx, [ecx]
cmp eax, 0x41
cmovl eax, edx
dec ecx
jne 0x401fd0
mov eax, 0x578d
mov edx, 0x79
mov ecx, 0xb1
cmp ecx, edx
cmovl ecx, edx
dec eax
jne 0x401fe8
mov ecx, dword [ebp + 0x10]
xor ebx, ebx
mov eax, dword [ecx + 0x60]
dec eax
je 0x40205f
jmp 0x402000
mov eax, dword [ecx + 0x60]
dec eax
push eax
push 1
push ecx
call fcn.00403400
mov dl, al
add esp, 0xc
mov ecx, 0x57d9
mov eax, 0xd
lea esp, [esp]
cmp esi, eax
cmovl esi, eax
dec ecx
jne 0x402020
mov ecx, dword [ebp + 0x10]
xor eax, eax
lea ecx, [ecx]
cmp dl, byte [ecx + eax + 0xc0]
je 0x402040
inc eax
cmp eax, ebx
jbe 0x402030
jmp 0x402042
xor dl, dl
inc edi
cmp edi, 0x4093
jl 0x402042
test dl, dl
je 0x402057
mov byte [ecx + ebx + 0xc0], dl
inc ebx
mov eax, dword [ecx + 0x60]
dec eax
cmp ebx, eax
jb 0x402000
push 0x3e
lea eax, [ebp - 0x87]
push 0
push eax
mov byte [ebp - 0x88], 0
call fcn.004032c0
lea eax, [ebp - 0x88]
push eax
call fcn.00402af0
xorps xmm0, xmm0
add esp, 0x10
mov dword [ebp - 0x28], 0xce02fcc
mov dword [ebp - 0x24], 0x5fddbc06
mov dword [ebp - 0x20], 0x7837256e
mov dword [ebp - 0x1c], 0xa97cad31
mov dword [ebp - 0x18], 0x6b9c0915
movq qword [ebp - 0x14], xmm0
xor bl, bl
mov eax, 0x2fe2
mov edx, 0x66
mov ecx, 0x6d
cmp ecx, edx
cmovg ecx, edx
dec eax
jne 0x4020c1
lea esp, [esp]
mov eax, 0x38e38e39
imul dword [ebp - 4]
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [ebp - 4], eax
jne 0x4020d0
mov edi, dword [ebp + 0x10]
movq xmm0, qword [ebp - 0x28]
mov eax, dword [ebp - 0x10]
lea esi, [edi + 0x314]
mov dword [ebp - 0x48], 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 dword [esi + 0x18], eax
mov word [esi + 0x1c], 0
mov byte [esi + 0x1e], bl
mov eax, 0x2037
mov edx, 0x9a
mov ecx, 0x20
mov edi, edi
cmp ecx, edx
cmovg ecx, edx
dec eax
jne 0x402130
jmp 0x402140
xor byte [ebp + eax - 0x88], 0xe5
inc eax
cmp eax, 0x3d
jb 0x402140
mov ecx, 0x32c7
mov eax, 0x82082083
imul ecx
add edx, ecx
sar edx, 6
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x402153
mov ecx, 0x2de1
lea ecx, [ecx]
mov eax, 0xf2b9d649
imul ecx
add edx, ecx
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x402170
mov eax, 0x5c1f
mov edx, 0x7c
mov ecx, 0x6b
cmp ecx, edx
cmovg ecx, edx
dec eax
jne 0x402194
xor ebx, ebx
mov dword [ebp - 4], ebx
cmp dword [edi + 0x60], ebx
jbe 0x402345
lea esi, [eax + 0x20]
lea ecx, [ecx]
mov ecx, dword [ebp - 8]
cmp ecx, 0xdc6
jge 0x4021df
jmp 0x4021c0
inc ecx
mov eax, ecx
and eax, 0x80000001
jns 0x4021cf
dec eax
or eax, 0xfffffffe
inc eax
jne 0x4021d4
add ecx, 5
cmp ecx, 0xdc6
jl 0x4021c0
mov dword [ebp - 8], ecx
mov ecx, dword [ebp - 0x44]
test ecx, ecx
je 0x4021fc
mov eax, 0x13e22cbd
imul ecx
sar edx, 4
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x4021e6
mov dword [ebp - 0x44], ecx
movzx ebx, byte [ebx + edi + 0xc0]
imul ebx, dword [edi + 0x88]
mov ecx, dword [ebp - 0x40]
add ebx, dword [ebp + 8]
test ecx, ecx
je 0x40222d
mov eax, 0xa0a0a0a1
imul ecx
add edx, ecx
sar edx, 6
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x402215
mov dword [ebp - 0x40], ecx
mov ecx, dword [ebp - 0x34]
mov eax, 0x5871
cmp ecx, 0x20
cmovl ecx, esi
dec eax
jne 0x402235
mov eax, dword [ebp - 0x3c]
mov dword [ebp - 0x34], ecx
mov dword [edi + 0x394], ebx
lea ebx, [ebx]
inc eax
cmp eax, 0x5e46
jl 0x402250
mov esi, dword [ebp - 0x2c]
mov dword [ebp - 0x3c], eax
cmp esi, 0x1e55
jge 0x402283
mov ecx, 0x1e54
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 - 0x2c], esi
push 0x3e
lea eax, [ebp - 0xc7]
push 0
push eax
mov byte [ebp - 0xc8], 0
call fcn.004032c0
push 0x3e
lea eax, [ebp - 0xc8]
push ebx
push eax
call fcn.00403290
mov ecx, 0xf
lea esi, [ebp - 0x88]
mov edi, ebx
rep movsd dword es:[edi], dword [esi]
movsb byte es:[edi], byte [esi]
mov edi, dword [ebp + 0x10]
add esp, 0x18
mov eax, dword [edi + 0x394]
call eax
lea eax, [ebp - 0xc8]
push 0x3e
push eax
push ebx
call fcn.00403290
xor esi, esi
add esp, 0xc
cmp dword [edi + 0x88], esi
jbe 0x40232a
mov eax, dword [edi + 0x3a4]
inc esi
mov al, byte [eax + 3]
xor byte [esi + ebx - 1], al
movzx ecx, byte [esi + ebx - 1]
mov eax, dword [edi + 0x3a4]
mov dl, byte [eax + 2]
xor dl, cl
mov byte [esi + ebx - 1], dl
mov eax, dword [edi + 0x3a4]
mov cl, byte [eax + 1]
xor cl, dl
mov byte [esi + ebx - 1], cl
mov eax, dword [edi + 0x3a4]
mov al, byte [eax]
xor al, cl
mov byte [esi + ebx - 1], al
cmp esi, dword [edi + 0x88]
jb 0x4022e3
mov ebx, dword [ebp - 4]
inc ebx
mov dword [ebp - 4], ebx
mov esi, 0x20
cmp ebx, dword [edi + 0x60]
jb 0x4021b0
lea esi, [edi + 0x314]
call fcn.00403570
mov dword [edi + 0x28c], eax
add eax, 0xfffffffe
push eax
push dword [edi + 0x3d0]
call fcn.00401120
add esp, 8
mov ecx, 0x67d
mov eax, 0xea0ea0eb
imul ecx
add edx, ecx
sar edx, 6
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x402367
push 0x49967a0
push esi
call fcn.00401d60
mov eax, dword [ebp + 0xc]
cdq
and edx, 0xff
add esp, 8
lea esi, [edx + eax]
sar esi, 8
test esi, esi
je 0x4023c0
mov edi, dword [ebp - 0x48]
mov ebx, dword [ebp + 8]
push edi
push 0x100
push ebx
call fcn.004032f0
add esp, 0xc
add ebx, 0x100
dec esi
jne 0x4023a4
lea esp, [esp]
mov eax, 0x4c8f8d29
imul dword [ebp - 0x38]
sar edx, 6
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [ebp - 0x38], eax
jne 0x4023c0
xor ebx, ebx
lea esp, [esp]
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 0x4023fb
inc ebx
cmp ebx, 0x63b0
jl 0x4023e0
mov eax, 0x38e38e39
imul dword [ebp - 0x30]
sar edx, 3
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [ebp - 0x30], eax
jne 0x402403
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, 0x663c
mov edx, 0xd4
jmp 0x402430
cmp ecx, edx
cmovl ecx, edx
dec eax
jne 0x402430
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret