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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x88
push ebx
xor ebx, ebx
xor edx, edx
push esi
mov eax, 0x4b
push edi
mov dword [ebp - 0x3c], edx
mov dword [ebp - 0x40], edx
mov dword [ebp - 0x10], edx
mov dword [ebp - 0xc], edx
lea ecx, [eax + 7]
mov edi, 0x1dae
mov esi, 0x6a7
mov dword [ebp - 8], 0x7a1d
mov dword [ebp - 0x48], 0x4d6f
mov dword [ebp - 0x5c], ebx
mov dword [ebp - 0x60], 0x66e1
mov dword [ebp - 0x58], 0x561d
mov dword [ebp - 0x50], 0x353d
mov dword [ebp - 0x44], 0x6912
mov dword [ebp - 0x4c], 0x2f49
mov dword [ebp - 0x54], 0x19
mov edx, 0x1ae3
mov dword [ebp - 4], 0xba
cmp eax, 0xba
cmovg eax, dword [ebp - 4]
dec edx
jne 0x401cf5
cmp dword [ebp + 8], ebx
je 0x40231c
cmp dword [ebp + 0xc], ebx
je 0x40231c
mov eax, dword [ebp + 0x10]
lea edx, [eax + 0x1e4]
mov eax, dword [eax + 0x330]
xor eax, dword [edx]
cmp dword [ebp + 0xc], eax
jl 0x40231c
call fcn.00403470
mov ecx, dword [ebp + 0x10]
mov dword [ebp - 4], 0x36
lea edx, [ecx + 0x1e4]
mov dword [ecx + 0xc0], eax
mov eax, dword [edx]
xor dword [ecx + 0x30], eax
mov ecx, 0x555b
mov eax, 0xe2
cmp eax, 0x36
cmovg eax, dword [ebp - 4]
dec ecx
jne 0x401d57
mov ecx, dword [ebp + 0x10]
mov eax, dword [ebp + 0xc]
mov dword [ecx + 0x2b8], edx
xor edx, edx
div dword [ecx + 0x30]
mov dword [ebp - 4], eax
mov dword [ecx + 0x20], eax
inc ebx
mov eax, 0x55555556
imul ebx
mov eax, edx
shr eax, 0x1f
add eax, edx
mov ecx, ebx
lea eax, [eax + eax*2]
sub ecx, eax
jne 0x401d91
inc ebx
cmp ebx, 0x46f9
jl 0x401d78
mov ecx, dword [ebp + 0x10]
mov eax, dword [ebp - 4]
imul eax, dword [ecx + 0x30]
xor ebx, ebx
mov dword [ecx + 0x284], eax
test eax, eax
je 0x401e05
mov edi, dword [ebp + 8]
mov esi, ecx
mov eax, dword [esi + 0x2b8]
inc ebx
mov al, byte [eax]
xor byte [ebx + edi - 1], al
movzx ecx, byte [ebx + edi - 1]
mov eax, dword [esi + 0x2b8]
mov dl, byte [eax + 1]
xor dl, cl
mov byte [ebx + edi - 1], dl
mov eax, dword [esi + 0x2b8]
mov cl, byte [eax + 2]
xor cl, dl
mov byte [ebx + edi - 1], cl
mov eax, dword [esi + 0x2b8]
mov al, byte [eax + 3]
xor al, cl
mov byte [ebx + edi - 1], al
cmp ebx, dword [esi + 0x284]
jb 0x401db4
mov esi, 0x6a7
mov edi, 0x1dae
mov ecx, 0x1615
lea ebx, [ebx]
mov eax, 0x82082083
imul ecx
add edx, ecx
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x401e10
mov ecx, 0x7368
mov edx, 0xe9
mov eax, 0x9a
cmp eax, 0xe9
cmovg eax, edx
dec ecx
jne 0x401e34
mov ebx, dword [ebp + 0x10]
mov dword [ebp - 4], ecx
mov eax, dword [ebx + 0x30]
dec eax
je 0x401ec9
nop
test edi, edi
je 0x401e64
mov eax, edi
cdq
and edx, 7
lea edi, [edx + eax]
sar edi, 3
test edi, edi
jne 0x401e54
mov eax, dword [ebx + 0x30]
dec eax
push eax
push 1
push ebx
call fcn.004032f0
mov edx, dword [ebp - 4]
add esp, 0xc
mov bl, al
mov eax, dword [ebp + 0x10]
xor ecx, ecx
mov edi, edi
cmp bl, byte [eax + ecx + 0xc4]
je 0x401e90
inc ecx
cmp ecx, edx
jbe 0x401e80
jmp 0x401e92
xor bl, bl
test esi, esi
je 0x401eac
mov eax, 0x7e07e07f
imul esi
sar edx, 6
mov esi, edx
shr esi, 0x1f
add esi, edx
jne 0x401e96
mov eax, dword [ebp + 0x10]
mov ecx, dword [ebp - 4]
test bl, bl
je 0x401ebe
mov byte [eax + ecx + 0xc4], bl
inc ecx
mov dword [ebp - 4], ecx
mov ebx, dword [ebp + 0x10]
mov eax, dword [ebx + 0x30]
dec eax
cmp ecx, eax
jb 0x401e50
xorps xmm0, xmm0
lea eax, [ebp - 0x88]
push eax
mov byte [ebp - 0x88], 0
movq qword [ebp - 0x87], xmm0
movq qword [ebp - 0x7f], xmm0
movq qword [ebp - 0x77], xmm0
movq qword [ebp - 0x6f], xmm0
mov dword [ebp - 0x67], 0
call fcn.00402bd0
xorps xmm0, xmm0
add esp, 4
mov dword [ebp - 0x34], 0x682b3873
mov dword [ebp - 0x30], 0xcb7b78d5
mov dword [ebp - 0x2c], 0x29209f7e
mov dword [ebp - 0x28], 0xeb0a9120
mov dword [ebp - 0x24], 0x4b2c9d6
movq qword [ebp - 0x20], xmm0
mov dword [ebp - 0x18], 0
mov eax, 0x2b8b
mov edx, 0x45
mov ecx, 0x85
cmp ecx, edx
cmovl ecx, edx
dec eax
jne 0x401f41
movq xmm0, qword [ebp - 0x34]
lea edi, [ebx + 0x28c]
movq qword [edi], xmm0
movq xmm0, qword [ebp - 0x2c]
movq qword [edi + 8], xmm0
movq xmm0, qword [ebp - 0x24]
movq qword [edi + 0x10], xmm0
movq xmm0, qword [ebp - 0x1c]
movq qword [edi + 0x18], xmm0
jmp 0x401f80
xor byte [ebp + eax - 0x88], 0x72
inc eax
cmp eax, 0x23
jb 0x401f80
mov edi, edi
mov eax, 0x1b4e81b5
imul dword [ebp - 8]
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [ebp - 8], eax
jne 0x401f90
xor eax, eax
mov dword [ebp - 8], eax
cmp dword [ebx + 0x30], eax
jbe 0x402250
jmp 0x401fc0
movzx edi, byte [eax + ebx + 0xc4]
imul edi, dword [ebx + 0x20]
mov ecx, dword [ebp - 0x48]
add edi, dword [ebp + 8]
test ecx, ecx
je 0x401fec
mov eax, 0x10fef011
imul ecx
sar edx, 4
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x401fd6
mov dword [ebp - 0x48], ecx
mov eax, dword [ebp - 0x5c]
nop
inc eax
cmp eax, 0x33d9
jl 0x401ff0
mov ecx, dword [ebp - 0x60]
mov dword [ebp - 0x5c], eax
mov dword [ebx + 0x304], edi
test ecx, ecx
je 0x402028
jmp 0x402010
mov eax, 0x88888889
imul ecx
add edx, ecx
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x402010
mov dword [ebp - 0x60], ecx
mov esi, dword [ebp - 0x3c]
cmp esi, 0x7535
jge 0x402053
mov ecx, 0x7534
sub ecx, esi
mov eax, 0xcccccccd
mul ecx
shr edx, 2
lea eax, [edx + esi]
lea edx, [edx*4 + 5]
add edx, eax
mov dword [ebp - 0x3c], edx
mov ecx, dword [ebp - 0x58]
xorps xmm0, xmm0
mov byte [ebp - 0x38], 0
movq qword [ebp - 0x37], xmm0
movq qword [ebp - 0x2f], xmm0
movq qword [ebp - 0x27], xmm0
movq qword [ebp - 0x1f], xmm0
mov dword [ebp - 0x17], 0
test ecx, ecx
je 0x402098
lea esp, [esp]
mov eax, 0xb21642c9
imul ecx
add edx, ecx
sar edx, 5
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x402080
mov dword [ebp - 0x58], ecx
mov ecx, dword [ebp - 0x50]
test ecx, ecx
je 0x4020b8
nop
mov eax, 0x9c09c09d
imul ecx
add edx, ecx
sar edx, 6
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x4020a0
mov dword [ebp - 0x50], ecx
mov esi, dword [ebp - 0x40]
cmp esi, 0x615
jge 0x4020e0
mov ecx, 0x614
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 - 0x40], esi
push 0x24
lea eax, [ebp - 0x38]
push edi
push eax
call fcn.00403150
mov ecx, dword [ebp - 0x10]
add esp, 0xc
cmp ecx, 0x2b54
jge 0x40211d
lea ebx, [ebx]
inc ecx
mov eax, ecx
and eax, 0x80000007
jns 0x40210f
dec eax
or eax, 0xfffffff8
inc eax
jne 0x402112
inc ecx
cmp ecx, 0x2b54
jl 0x402100
mov dword [ebp - 0x10], ecx
mov ecx, dword [ebp - 0x44]
test ecx, ecx
je 0x40213c
mov eax, 0x8d3dcb09
imul ecx
add edx, ecx
sar edx, 4
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x402124
mov dword [ebp - 0x44], ecx
movq xmm0, qword [ebp - 0x88]
mov ecx, dword [ebp - 0x4c]
movq qword [edi], xmm0
movq xmm0, qword [ebp - 0x80]
movq qword [edi + 8], xmm0
movq xmm0, qword [ebp - 0x78]
movq qword [edi + 0x10], xmm0
movq xmm0, qword [ebp - 0x70]
movq qword [edi + 0x18], xmm0
mov ax, word [ebp - 0x68]
mov word [edi + 0x20], ax
mov al, byte [ebp - 0x66]
mov byte [edi + 0x22], al
test ecx, ecx
je 0x402196
jmp 0x402180
mov eax, 0x17ad2209
imul ecx
sar edx, 4
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x402180
mov dword [ebp - 0x4c], ecx
mov ecx, dword [ebp - 0xc]
cmp ecx, 0x1f2b
jge 0x4021c0
inc ecx
mov eax, ecx
and eax, 0x80000001
jns 0x4021b0
dec eax
or eax, 0xfffffffe
inc eax
jne 0x4021b5
add ecx, 5
cmp ecx, 0x1f2b
jl 0x4021a1
mov dword [ebp - 0xc], ecx
mov eax, dword [ebx + 0x304]
call eax
mov ecx, dword [ebp - 0x54]
mov eax, 0x1561
mov edx, 0x1c
cmp ecx, edx
cmovl ecx, edx
dec eax
jne 0x4021d5
push 0x24
lea eax, [ebp - 0x38]
push eax
push edi
mov dword [ebp - 0x54], ecx
call fcn.00403150
xor esi, esi
add esp, 0xc
cmp dword [ebx + 0x20], esi
jbe 0x40223a
mov eax, dword [ebx + 0x2b8]
inc esi
mov al, byte [eax + 3]
xor byte [esi + edi - 1], al
movzx ecx, byte [esi + edi - 1]
mov eax, dword [ebx + 0x2b8]
mov dl, byte [eax + 2]
xor dl, cl
mov byte [esi + edi - 1], dl
mov eax, dword [ebx + 0x2b8]
mov cl, byte [eax + 1]
xor cl, dl
mov byte [esi + edi - 1], cl
mov eax, dword [ebx + 0x2b8]
mov al, byte [eax]
xor al, cl
mov byte [esi + edi - 1], al
cmp esi, dword [ebx + 0x20]
jb 0x4021f6
mov eax, dword [ebp - 8]
inc eax
mov dword [ebp - 8], eax
cmp eax, dword [ebx + 0x30]
jb 0x401fc0
lea edi, [ebx + 0x28c]
call fcn.00403470
mov dword [ebx + 0x230], eax
add eax, 0xfffffffe
push eax
push dword [ebx + 0xc0]
call fcn.004010f0
add esp, 8
mov eax, 0x7a0f
dec eax
jne 0x402272
push 0x79a5176
push edi
call fcn.00401bb0
add esp, 8
mov ecx, 0x868
jmp 0x402290
mov eax, 0xa57eb503
imul ecx
add edx, ecx
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x402290
mov eax, dword [ebp + 0xc]
cdq
and edx, 0xff
mov edi, 0x381a
lea esi, [edx + eax]
sar esi, 8
lea ebx, [ebx]
mov eax, 0x66666667
imul edi
sar edx, 4
mov edi, edx
shr edi, 0x1f
add edi, edx
jne 0x4022c0
lea edi, [ebx + 0x28c]
test esi, esi
je 0x4022f8
mov ebx, dword [ebp + 8]
push edi
push 0x100
push ebx
call fcn.004031e0
add esp, 0xc
add ebx, 0x100
dec esi
jne 0x4022e0
mov ecx, 0x10a6
lea ecx, [ecx]
mov eax, 0x8dda5203
imul ecx
add edx, ecx
sar edx, 7
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
jne 0x402300
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, 0x35ec
mov edx, 0xca
cmp ecx, edx
cmovg ecx, edx
dec eax
jne 0x402326
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret