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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x78
push ebx
push esi
xor esi, esi
push edi
mov ebx, 0x3883
mov edi, 0xde
mov dword [ebp - 4], 0x277d
mov dword [ebp - 8], 0x6376
mov dword [ebp - 0x10], 0
mov dword [ebp - 0x18], 0x4cfc
mov dword [ebp - 0x20], 0x70ea
mov dword [ebp - 0x28], 0x7d3a
mov dword [ebp - 0x2c], 0xba0
mov dword [ebp - 0x30], 0x6896
mov dword [ebp - 0x34], 0x50bb
mov dword [ebp - 0x38], 0x5d69
cmp dword [ebp + 8], esi
je 0x4022e9
mov edx, dword [ebp + 0xc]
test edx, edx
je 0x4022e9
mov eax, dword [ebp + 0x10]
lea ecx, [eax + 0x3dc]
mov eax, dword [eax + 0x14]
xor eax, dword [ecx]
cmp edx, eax
jl 0x4022e9
call fcn.00403210
mov ecx, dword [ebp + 0x10]
mov dword [ecx + 0xb4], eax
mov eax, 0x3e0f83e1
imul ebx
sar edx, 3
mov ebx, edx
shr ebx, 0x1f
add ebx, edx
jne 0x401d13
mov eax, 0xa4d
mov edx, 0x15
cmp edi, edx
cmovl edi, edx
dec eax
jne 0x401d30
mov esi, 0x581b
lea ecx, [ecx]
mov eax, 0x342da7f3
imul esi
sar edx, 5
mov esi, edx
shr esi, 0x1f
add esi, edx
jne 0x401d40
mov eax, 0x60f25deb
imul dword [ebp - 4]
sar edx, 6
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [ebp - 4], eax
jne 0x401d53
mov eax, dword [ecx + 0x3dc]
xor dword [ecx + 0x18], eax
mov edi, dword [ecx + 0x18]
lea ebx, [ecx + 0x3dc]
mov ecx, 0x1926
mov eax, 0x92492493
imul ecx
add edx, ecx
sar edx, 2
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x401d81
mov eax, dword [ebp + 0x10]
xor edx, edx
mov dword [eax + 0x20], ebx
mov eax, dword [ebp + 0xc]
div edi
mov ebx, dword [ebp + 0x10]
mov dword [ebx + 0x304], eax
imul eax, edi
xor edi, edi
mov dword [ebx + 0x28c], eax
test eax, eax
je 0x401dfd
mov esi, dword [ebp + 8]
mov edi, edi
mov eax, dword [ebx + 0x20]
inc edi
mov al, byte [eax]
xor byte [edi + esi - 1], al
movzx ecx, byte [edi + esi - 1]
mov eax, dword [ebx + 0x20]
mov dl, byte [eax + 1]
xor dl, cl
mov byte [edi + esi - 1], dl
mov eax, dword [ebx + 0x20]
mov cl, byte [eax + 2]
xor cl, dl
mov byte [edi + esi - 1], cl
mov eax, dword [ebx + 0x20]
mov al, byte [eax + 3]
xor al, cl
mov byte [edi + esi - 1], al
cmp edi, dword [ebx + 0x28c]
jb 0x401dc0
xor esi, esi
mov ecx, 0x7e21
mov eax, 0xaf3addc7
imul ecx
add edx, ecx
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x401e02
mov esi, 0x2218
lea esp, [esp]
mov eax, 0x78787879
imul esi
sar edx, 4
mov esi, edx
shr esi, 0x1f
add esi, edx
jne 0x401e20
mov eax, 0x3531dec1
imul dword [ebp - 8]
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [ebp - 8], eax
jne 0x401e33
mov ecx, 0x2a46
nop
mov eax, 0x92492493
imul ecx
add edx, ecx
sar edx, 2
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x401e50
mov eax, dword [ebx + 0x18]
xor edi, edi
dec eax
je 0x401f55
mov eax, dword [ebx + 0x18]
dec eax
push eax
push 1
push ebx
call fcn.00403020
mov edx, dword [ebp + 0x10]
add esp, 0xc
mov bl, al
xor ecx, ecx
jmp 0x401e90
cmp bl, byte [edx + ecx + 0x100]
je 0x401ea0
inc ecx
cmp ecx, edi
jbe 0x401e90
jmp 0x401ea2
xor bl, bl
mov ecx, dword [ebp - 0x10]
cmp ecx, 0x4d57
jge 0x401ebf
mov eax, 0x4d56
sub eax, ecx
shr eax, 1
lea ecx, [ecx + eax*2]
add ecx, 2
mov dword [ebp - 0x10], ecx
mov ecx, dword [ebp - 0x18]
test ecx, ecx
je 0x401ee1
mov eax, 0x91a2b3c5
imul ecx
add edx, ecx
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x401ec6
mov edx, dword [ebp + 0x10]
mov dword [ebp - 0x18], ecx
test bl, bl
je 0x401eed
mov byte [edx + edi + 0x100], bl
inc edi
mov eax, dword [ebp - 0x20]
test eax, eax
je 0x401f04
cdq
and edx, 0x3f
add eax, edx
sar eax, 6
test eax, eax
jne 0x401ef4
mov dword [ebp - 0x20], eax
cmp esi, 0x4182
jge 0x401f2a
lea esp, [esp]
inc esi
mov eax, esi
and eax, 0x80000003
jns 0x401f1f
dec eax
or eax, 0xfffffffc
inc eax
jne 0x401f22
inc esi
cmp esi, 0x4182
jl 0x401f10
mov ecx, dword [ebp - 0x28]
test ecx, ecx
je 0x401f46
mov eax, 0x28c1979
imul ecx
sar edx, 1
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x401f31
mov dword [ebp - 0x28], ecx
mov ebx, dword [ebp + 0x10]
mov eax, dword [ebx + 0x18]
dec eax
cmp edi, eax
jb 0x401e71
xorps xmm0, xmm0
mov dword [ebp - 0x58], 0xa026419f
mov dword [ebp - 0x54], 0x92929bc6
mov dword [ebp - 0x50], 0x9972f41
movq qword [ebp - 0x4c], xmm0
movq qword [ebp - 0x44], xmm0
mov word [ebp - 0x3c], 0
mov byte [ebp - 0x3a], 0
mov eax, 0x2066
mov edx, 6
mov ecx, 5
cmp ecx, edx
cmovl ecx, edx
dec eax
jne 0x401f90
xorps xmm0, xmm0
mov dword [ebp - 0x78], 0xa413ef8d
mov dword [ebp - 0x74], 0x92d3523b
mov dword [ebp - 0x70], 0xf887b37b
mov dword [ebp - 0x6c], 0x5e2c34ac
mov dword [ebp - 0x68], 0x38c1d584
movq qword [ebp - 0x64], xmm0
mov dword [ebp - 0x5c], eax
mov ecx, 0x6bf1
jmp 0x401fd0
mov eax, 0x97012e03
imul ecx
add edx, ecx
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x401fd0
movq xmm0, qword [ebp - 0x78]
movq qword [ebx + 0x374], xmm0
movq xmm0, qword [ebp - 0x70]
movq qword [ebx + 0x37c], xmm0
movq xmm0, qword [ebp - 0x68]
movq qword [ebx + 0x384], xmm0
movq xmm0, qword [ebp - 0x60]
movq qword [ebx + 0x38c], xmm0
xor ebx, ebx
jmp 0x402020
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 0x402044
inc ebx
cmp ebx, 0x6984
jl 0x402020
xor eax, eax
mov edi, edi
xor byte [ebp + eax - 0x58], 0xca
inc eax
cmp eax, 0xc
jb 0x402050
xor ecx, ecx
lea ecx, [ecx]
inc ecx
mov eax, ecx
and eax, 0x80000003
jns 0x40206f
dec eax
or eax, 0xfffffffc
inc eax
jne 0x402072
inc ecx
cmp ecx, 0x4931
jl 0x402060
mov edi, 0x43d6
nop
mov eax, 0x2aaaaaab
imul edi
sar edx, 5
mov edi, edx
shr edi, 0x1f
add edi, edx
jne 0x402080
mov esi, dword [ebp + 0x10]
xor eax, eax
mov dword [ebp - 0x28], eax
lea edi, [esi + 0x374]
cmp dword [esi + 0x18], eax
jbe 0x402240
xor ebx, ebx
lea esp, [esp]
movzx edi, byte [esi + eax + 0x100]
imul edi, dword [esi + 0x304]
add edi, dword [ebp + 8]
mov ecx, dword [ebp - 0x2c]
mov eax, dword [ebp - 0x50]
mov dword [esi + 0x300], edi
movq xmm0, qword [edi]
movq qword [ebp - 0x24], xmm0
movq xmm0, qword [edi + 8]
movq qword [ebp - 0x1c], xmm0
movq xmm0, qword [edi + 0x10]
movq qword [ebp - 0x14], xmm0
movq xmm0, qword [edi + 0x18]
movq qword [ebp - 0xc], xmm0
movq xmm0, qword [ebp - 0x58]
movq qword [edi], xmm0
mov dword [edi + 8], eax
test ecx, ecx
je 0x40211d
mov eax, 0x9cc8e161
imul ecx
add edx, ecx
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x402105
mov dword [ebp - 0x2c], ecx
mov eax, dword [esi + 0x300]
call eax
mov ecx, dword [ebp - 0x30]
test ecx, ecx
je 0x402146
lea esp, [esp]
mov eax, 0x75ded953
imul ecx
sar edx, 6
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x402130
mov dword [ebp - 0x30], ecx
movq xmm0, qword [ebp - 0x24]
mov ecx, dword [ebp - 0x34]
movq qword [edi], xmm0
movq xmm0, qword [ebp - 0x1c]
movq qword [edi + 8], xmm0
movq xmm0, qword [ebp - 0x14]
movq qword [edi + 0x10], xmm0
movq xmm0, qword [ebp - 0xc]
movq qword [edi + 0x18], xmm0
test ecx, ecx
je 0x40218a
mov eax, 0x6f74ae27
imul ecx
sar edx, 6
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x402174
mov dword [ebp - 0x34], ecx
mov edx, dword [ebp + 0x10]
xor esi, esi
cmp dword [edx + 0x304], esi
jbe 0x4021d8
mov eax, dword [edx + 0x20]
inc esi
mov al, byte [eax + 3]
xor byte [esi + edi - 1], al
mov eax, dword [edx + 0x20]
movzx ecx, byte [esi + edi - 1]
mov dl, byte [eax + 2]
mov eax, dword [ebp + 0x10]
xor dl, cl
mov byte [esi + edi - 1], dl
mov eax, dword [eax + 0x20]
mov cl, byte [eax + 1]
xor cl, dl
mov edx, dword [ebp + 0x10]
mov byte [esi + edi - 1], cl
mov eax, dword [edx + 0x20]
mov al, byte [eax]
xor al, cl
mov byte [esi + edi - 1], al
cmp esi, dword [edx + 0x304]
jb 0x402197
mov ecx, dword [ebp - 0x38]
test ecx, ecx
je 0x4021f8
nop
mov eax, 0x88888889
imul ecx
add edx, ecx
sar edx, 6
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x4021e0
mov dword [ebp - 0x38], ecx
cmp ebx, 0x6831
jge 0x402227
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 0x40221e
add ebx, 3
jmp 0x40221f
inc ebx
cmp ebx, 0x6831
jl 0x402200
mov eax, dword [ebp - 0x28]
mov esi, dword [ebp + 0x10]
inc eax
mov dword [ebp - 0x28], eax
cmp eax, dword [esi + 0x18]
jb 0x4020b0
lea edi, [esi + 0x374]
call fcn.00403210
mov dword [esi + 0x258], eax
add eax, 0xfffffffe
push eax
push dword [esi + 0xb4]
call fcn.00401110
push 0x47f2380
push edi
call fcn.00401ac0
add esp, 0x10
mov ecx, 0x621e
mov edx, 0x97
mov eax, 0x95
cmp eax, 0x97
cmovg eax, edx
dec ecx
jne 0x402277
mov eax, dword [ebp + 0xc]
cdq
and edx, 0xff
lea esi, [edx + eax]
sar esi, 8
test esi, esi
je 0x4022b8
mov ebx, dword [ebp + 8]
lea esp, [esp]
push edi
push 0x100
push ebx
call fcn.00402ef0
add esp, 0xc
add ebx, 0x100
dec esi
jne 0x4022a0
mov eax, 0x3693
mov edx, 0x8e
mov ecx, 0xe1
cmp ecx, edx
cmovg ecx, edx
dec eax
jne 0x4022c7
mov ecx, 0x5501
mov eax, 0x88888889
imul ecx
add edx, ecx
sar edx, 3
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x4022d4
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret