Function at 0x442d40
Capabilities:
Encrypt data using rc4 ksa

Disassembly:
pushfd
pushal
xor eax, eax
cmp dword [esp + 0x48], eax
je 0x442d62
mov eax, dword [0x4cdcf0]
cmp eax, 0xffffffff
jne 0x442d5e
call fcn.004433e4
mov eax, dword [0x4cdcf0]
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x3c]
mov edx, dword [esp + 0x44]
lea eax, [eax + eax*2]
mov dword [0x4cdcec], edx
mov dword [0x4cdce8], eax
cmp dword [esp + 0x30], 0x100
jae 0x443060
cmp dword [esp + 0x48], 1
je 0x442ed0
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x38]
mul ecx
mov ebx, eax
mov ebp, edx
add ecx, dword [esp + 0x34]
xor edi, edi
mov eax, dword [esp + 0x34]
mul edi
add eax, ebx
adc edx, ebp
div ecx
mov esi, eax
shl eax, 8
mov dword [edi*4 + 0x4cbce0], esi
shl esi, 0x10
mov dword [edi*4 + 0x4cc0e0], eax
shl eax, 0x10
mov dword [edi*4 + 0x4cc4e0], esi
mov dword [edi*4 + 0x4cc8e0], eax
inc edi
cmp edi, 0x100
jne 0x442da5
mov edi, dword [esp + 0x28]
mov esi, dword [esp + 0x2c]
sub edi, esi
mov ebp, dword [0x4cdce8]
mov ecx, esi
mov ebx, esi
and ecx, 3
and ebx, 0xfffffffc
add ecx, ebp
mov edx, dword [ebx]
add ecx, 0x1f
shr ecx, 6
je 0x442e19
sbb edx, edx
and edx, 0x20
add ebx, edx
mov eax, dword [ebx]
mov edx, dword [ebx + 0x20]
add ebx, 0x40
dec ecx
jne 0x442e0e
sub ecx, edi
push esi
sub ecx, esi
and ecx, 3
je 0x442e39
xor edx, edx
mov dl, byte [esi]
inc esi
mov al, byte [edx*4 + 0x4cbce0]
dec ebp
mov byte [esi + edi - 1], al
je 0x442ea9
dec ecx
jne 0x442e25
mov ecx, ebp
shr ebp, 2
je 0x442e91
push ecx
mov eax, dword [esi]
add esi, 4
mov ebx, eax
mov ecx, eax
shr ebx, 0x10
mov edx, eax
shr eax, 0x18
and ebx, 0xff
shr ecx, 8
and edx, 0xff
mov eax, dword [eax*4 + 0x4cc8e0]
and ecx, 0xff
mov ebx, dword [ebx*4 + 0x4cc4e0]
mov edx, dword [edx*4 + 0x4cbce0]
mov ecx, dword [ecx*4 + 0x4cc0e0]
or eax, ebx
or ecx, edx
or eax, ecx
dec ebp
mov dword [esi + edi - 4], eax
jne 0x442e41
pop ecx
and ecx, 3
je 0x442ea9
xor edx, edx
mov dl, byte [esi]
inc esi
mov al, byte [edx*4 + 0x4cbce0]
dec ecx
mov byte [esi + edi - 1], al
jne 0x442e98
pop esi
mov edx, dword [0x4cdcec]
mov eax, dword [esp + 0x40]
add esi, edx
dec eax
mov dword [esp + 0x40], eax
jne 0x442deb
popal
popfd
ret
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x38]
mul ecx
mov ebx, eax
mov ebp, edx
add ecx, dword [esp + 0x34]
xor edi, edi
mov eax, dword [esp + 0x34]
mul edi
add eax, ebx
adc edx, ebp
div ecx
mov dword [edi*4 + 0x4cbce0], eax
inc edi
cmp edi, 0x100
jne 0x442ee4
mov eax, dword [esp + 0x34]
mov ebx, dword [esp + 0x38]
add ebx, eax
mov ecx, 0x100
mul ecx
div ebx
movd mm4, eax
punpcklwd mm4, mm4
punpckldq mm4, mm4
mov eax, dword [esp + 0x38]
mov ebx, dword [esp + 0x34]
add ebx, eax
mul dword [esp + 0x30]
div ebx
movd mm5, eax
punpcklwd mm5, mm5
punpckldq mm5, mm5
pxor mm6, mm6
mov edi, dword [esp + 0x28]
mov esi, dword [esp + 0x2c]
sub edi, esi
mov ebp, dword [0x4cdce8]
mov ecx, esi
mov ebx, esi
and ecx, 3
and ebx, 0xfffffffc
add ecx, ebp
mov edx, dword [ebx]
add ecx, 0x1f
shr ecx, 6
je 0x442f70
sbb edx, edx
and edx, 0x20
add ebx, edx
mov eax, dword [ebx]
mov edx, dword [ebx + 0x20]
add ebx, 0x40
dec ecx
jne 0x442f65
sub ecx, edi
push esi
sub ecx, esi
and ecx, 7
je 0x442fc9
mov eax, ecx
and ecx, 3
je 0x442f9b
xor edx, edx
mov dl, byte [esi]
inc esi
mov dl, byte [edx*4 + 0x4cbce0]
dec ebp
mov byte [esi + edi - 1], dl
je 0x44303a
dec ecx
jne 0x442f83
cmp ebp, 4
jb 0x443027
test eax, 4
je 0x442fc9
movd mm0, dword [esi]
punpcklbw mm0, mm6
pmullw mm0, mm4
add esi, 4
sub ebp, 4
psrlw mm0, 8
paddw mm0, mm5
packuswb mm0, mm6
movd dword [esi + edi - 4], mm0
mov ecx, ebp
shr ecx, 3
je 0x442ffe
movq mm0, qword [esi]
movq mm2, mm0
punpckhbw mm0, mm6
pmullw mm0, mm4
punpcklbw mm2, mm6
pmullw mm2, mm4
add esi, 8
dec ecx
psrlw mm0, 8
psrlw mm2, 8
paddw mm0, mm5
paddw mm2, mm5
packuswb mm2, mm0
movq qword [esi + edi - 8], mm2
jne 0x442fd0
and ebp, 7
je 0x44303a
sub ebp, 4
jb 0x443024
movd mm0, dword [esi]
punpcklbw mm0, mm6
pmullw mm0, mm4
psrlw mm0, 8
paddw mm0, mm5
packuswb mm0, mm6
movd dword [esi + edi], mm0
je 0x44303a
add esi, 4
and ebp, 3
xor edx, edx
mov dl, byte [esi]
inc esi
mov al, byte [edx*4 + 0x4cbce0]
dec ebp
mov byte [esi + edi - 1], al
jne 0x443029
pop esi
mov edx, dword [0x4cdcec]
mov eax, dword [esp + 0x40]
add esi, edx
dec eax
mov dword [esp + 0x40], eax
jne 0x442f42
emms
popal
popfd
ret
cmp dword [esp + 0x48], 1
je 0x443210
mov edx, dword [esp + 0x34]
mov ebx, dword [esp + 0x38]
add ebx, edx
je 0x44320d
mov edi, 0x4cbce0
call fcn.00442ca4
mov ebx, dword [esp + 0x34]
mov edx, dword [esp + 0x38]
add ebx, edx
mov edi, 0x4ccce0
call fcn.00442ca4
mov edi, dword [esp + 0x28]
mov esi, dword [esp + 0x2c]
mov ebx, dword [esp + 0x30]
sub edi, esi
sub ebx, esi
mov dword [0x4cdce4], edi
mov dword [0x4cdce0], ebx
mov ebp, dword [0x4cdce8]
add ebx, esi
mov ecx, esi
mov edi, esi
and ecx, 3
and edi, 0xfffffffc
and ebx, 0xfffffffc
add ecx, ebp
add ecx, 0x1f
sub ebx, edi
shr ecx, 5
mov eax, dword [edi]
mov edx, dword [edi + ebx]
add edi, 0x20
dec ecx
jne 0x4430d4
sub ecx, esi
mov edi, dword [0x4cdce4]
mov ebx, dword [0x4cdce0]
push esi
sub ecx, edi
and ecx, 3
je 0x44311d
xor eax, eax
xor edx, edx
mov al, byte [esi]
mov dl, byte [esi + ebx]
inc esi
mov eax, dword [eax*4 + 0x4cbce0]
mov edx, dword [edx*4 + 0x4ccce0]
add eax, edx
dec ebp
mov byte [esi + edi - 1], al
je 0x4431f5
dec ecx
jne 0x4430f9
mov ecx, ebp
shr ebp, 2
je 0x4431cf
push ecx
mov eax, dword [esi + ebx]
add esi, 4
mov ebx, eax
and eax, 0xff
mov edx, ebx
and ebx, 0xff00
mov ecx, dword [eax*4 + 0x4ccce0]
shr ebx, 8
mov eax, edx
shr edx, 0x18
mov ebx, dword [ebx*4 + 0x4cd0e0]
and eax, 0xff0000
mov edx, dword [edx*4 + 0x4cd8e0]
shr eax, 0x10
mov edi, dword [esi - 4]
add ecx, ebx
mov ebx, dword [eax*4 + 0x4cd4e0]
add ecx, edx
mov edx, edi
and edi, 0xff
mov eax, edx
and edx, 0xff00
mov edi, dword [edi*4 + 0x4cbce0]
shr edx, 8
add ecx, ebx
mov ebx, eax
mov edx, dword [edx*4 + 0x4cc0e0]
shr ebx, 0x18
add ecx, edi
and eax, 0xff0000
shr eax, 0x10
mov ebx, dword [ebx*4 + 0x4cc8e0]
mov edi, dword [0x4cdce4]
add ecx, edx
mov eax, dword [eax*4 + 0x4cc4e0]
add ecx, ebx
mov ebx, dword [0x4cdce0]
add ecx, eax
mov dword [esi + edi - 4], ecx
dec ebp
jne 0x443129
pop ecx
and ecx, 3
je 0x4431f5
xor eax, eax
xor edx, edx
mov al, byte [esi]
mov dl, byte [esi + ebx]
inc esi
mov eax, dword [eax*4 + 0x4cbce0]
mov edx, dword [edx*4 + 0x4ccce0]
add eax, edx
dec ecx
mov byte [esi + edi - 1], al
jne 0x4431d8
pop esi
mov edx, dword [0x4cdcec]
mov eax, dword [esp + 0x40]
add esi, edx
dec eax
mov dword [esp + 0x40], eax
jne 0x4430b5
popal
popfd
ret
mov edx, dword [esp + 0x34]
mov ebx, dword [esp + 0x38]
add ebx, edx
je 0x4433e1
mov edi, 0x4cbce0
call fcn.00442d04
mov ebx, dword [esp + 0x34]
mov edx, dword [esp + 0x38]
add ebx, edx
mov edi, 0x4ccce0
call fcn.00442d04
mov eax, dword [esp + 0x34]
mov ebx, dword [esp + 0x38]
add ebx, eax
mov ecx, 0x100
mul ecx
div ebx
sub ecx, eax
movd mm4, eax
movd mm5, ecx
punpcklwd mm4, mm4
punpcklwd mm5, mm5
punpckldq mm4, mm4
punpckldq mm5, mm5
pxor mm6, mm6
mov edi, dword [esp + 0x28]
mov esi, dword [esp + 0x2c]
mov ebx, dword [esp + 0x30]
sub edi, esi
sub ebx, esi
mov dword [0x4cdce4], edi
mov dword [0x4cdce0], ebx
mov ebp, dword [0x4cdce8]
add ebx, esi
mov ecx, esi
mov edi, esi
and ecx, 3
and edi, 0xfffffffc
and ebx, 0xfffffffc
add ecx, ebp
add ecx, 0x1f
sub ebx, edi
shr ecx, 5
mov eax, dword [edi]
mov edx, dword [edi + ebx]
add edi, 0x20
dec ecx
jne 0x4432a3
sub ecx, esi
mov edi, dword [0x4cdce4]
push esi
sub ecx, edi
mov ebx, dword [0x4cdce0]
and ecx, 7
je 0x44332b
mov eax, ecx
and ecx, 3
je 0x4432f3
xor eax, eax
xor edx, edx
mov al, byte [esi]
mov dl, byte [esi + ebx]
inc esi
mov eax, dword [eax*4 + 0x4cbce0]
mov edx, dword [edx*4 + 0x4ccce0]
add eax, edx
dec ebp
mov byte [esi + edi - 1], al
je 0x4433c7
dec ecx
jne 0x4432cf
cmp ebp, 4
jb 0x4433a6
test eax, 4
je 0x44332b
movd mm0, dword [esi]
movd mm1, dword [esi + ebx]
punpcklbw mm0, mm6
pmullw mm0, mm4
punpcklbw mm1, mm6
pmullw mm1, mm5
add esi, 4
sub ebp, 4
paddw mm0, mm1
psrlw mm0, 8
packuswb mm0, mm6
movd dword [esi + edi - 4], mm0
mov ecx, ebp
shr ecx, 3
je 0x443373
movq mm0, qword [esi]
movq mm1, qword [esi + ebx]
movq mm2, mm0
punpckhbw mm0, mm6
movq mm3, mm1
pmullw mm0, mm4
punpckhbw mm1, mm6
pmullw mm1, mm5
punpcklbw mm2, mm6
pmullw mm2, mm4
punpcklbw mm3, mm6
pmullw mm3, mm5
add esi, 8
paddw mm0, mm1
dec ecx
psrlw mm0, 8
paddw mm2, mm3
psrlw mm2, 8
packuswb mm2, mm0
movq qword [esi + edi - 8], mm2
jne 0x443332
and ebp, 7
je 0x4433c7
sub ebp, 4
jb 0x4433a3
movd mm0, dword [esi]
movd mm1, dword [esi + ebx]
punpcklbw mm0, mm6
pmullw mm0, mm4
punpcklbw mm1, mm6
pmullw mm1, mm5
paddw mm0, mm1
psrlw mm0, 8
packuswb mm0, mm6
movd dword [esi + edi], mm0
je 0x4433c7
add esi, 4
and ebp, 3
xor eax, eax
xor edx, edx
mov al, byte [esi]
mov dl, byte [esi + ebx]
inc esi
mov eax, dword [eax*4 + 0x4cbce0]
mov edx, dword [edx*4 + 0x4ccce0]
add eax, edx
dec ebp
mov byte [esi + edi - 1], al
jne 0x4433aa
pop esi
mov edx, dword [0x4cdcec]
mov eax, dword [esp + 0x40]
add esi, edx
dec eax
mov dword [esp + 0x40], eax
jne 0x443284
emms
popal
popfd
ret