Function at 0x42ec80
Capabilities:
Encrypt data using rc4 ksa

Disassembly:
sub esp, 0x44c
push ebx
push ebp
xor eax, eax
push esi
mov esi, dword [esp + 0x45c]
movzx edx, word [esi + 0x24]
xor ebp, ebp
cmp byte [esi + 0x22], al
mov dword [esp + 0x2c], edx
movzx edx, byte [esi + 0x2a]
sete al
xor ecx, ecx
cmp byte [esi + 0x12], cl
push edi
sete cl
push 0x400
mov dword [esp + 0x40], edx
lea edx, [esp + 0x60]
push ebp
push edx
mov dword [esp + 0x28], ebp
cmp ecx, eax
movzx eax, word [esi + 0x26]
movzx ecx, word [esi + 0x28]
mov dword [esp + 0x40], eax
movzx eax, byte [esi + 0x2b]
mov dword [esp + 0x44], ecx
movzx ecx, byte [esi + 0x2c]
setne byte [esp + 0x1f]
mov dword [esp + 0x4c], eax
mov dword [esp + 0x50], ecx
call fcn.004858b0
mov edi, dword [esp + 0x474]
xor ebx, ebx
add esp, 0xc
mov dword [esp + 0x18], ebx
mov dword [esp + 0x14], ebp
test edi, edi
jle 0x42eeb9
jmp 0x42ed14
mov ebp, dword [esp + 0x14]
mov edx, dword [esp + 0x464]
cmp ebp, edx
jge 0x42eeb9
mov eax, edi
sub eax, ebx
xor ecx, ecx
mov dword [esp + 0x24], ecx
mov dword [esp + 0x48], eax
test eax, eax
jle 0x42ee8f
mov eax, edx
sub eax, ebp
add eax, 0xfffffff9
mov dword [esp + 0x58], eax
mov eax, ebx
imul eax, edx
mov dword [esp + 0x20], eax
jmp 0x42ed58
mov ecx, dword [esp + 0x24]
mov eax, dword [esp + 0x20]
cmp ecx, dword [esp + 0x58]
jge 0x42ee8f
add eax, ecx
add eax, dword [esp + 0x14]
cmp byte [esp + 0x13], 0
mov ecx, dword [esi + 0x197c]
lea esi, [ecx + eax*2]
movzx eax, word [esi]
je 0x42ed82
rol ax, 8
movzx eax, ax
movzx ecx, word [esp + 0x3c]
movzx eax, ax
mov ebx, eax
shr ebx, cl
movzx ecx, word [esp + 0x40]
and ebx, dword [esp + 0x30]
mov edx, eax
shr edx, cl
movzx ecx, word [esp + 0x44]
and edx, dword [esp + 0x34]
shr eax, cl
add esi, 2
mov dword [esp + 0x50], edx
mov dword [esp + 0x28], esi
and eax, dword [esp + 0x38]
mov dword [esp + 0x54], eax
mov eax, 7
add dword [esp + 0x1c], eax
mov dword [esp + 0x2c], eax
jmp 0x42edd0
cmp byte [esp + 0x13], 0
mov edx, dword [esp + 0x28]
movzx eax, word [edx]
je 0x42ede5
rol ax, 8
movzx eax, ax
movzx ecx, word [esp + 0x3c]
movzx edi, ax
mov ebp, edi
shr ebp, cl
movzx ecx, word [esp + 0x40]
and ebp, dword [esp + 0x30]
mov eax, ebp
sub eax, ebx
cdq
mov ebx, ebp
mov ebp, edi
mov esi, eax
shr ebp, cl
movzx ecx, word [esp + 0x44]
and ebp, dword [esp + 0x34]
xor esi, edx
sub esi, edx
mov eax, ebp
sub eax, dword [esp + 0x50]
shr edi, cl
cdq
xor eax, edx
and edi, dword [esp + 0x38]
sub eax, edx
add esi, eax
mov eax, edi
sub eax, dword [esp + 0x54]
mov dword [esp + 0x50], ebp
cdq
xor eax, edx
sub eax, edx
add esi, eax
cmp esi, 0xff
mov dword [esp + 0x54], edi
jle 0x42ee49
mov esi, 0xff
inc dword [esp + esi*4 + 0x5c]
add dword [esp + 0x28], 2
sub dword [esp + 0x2c], 1
lea esi, [esp + esi*4 + 0x5c]
jne 0x42edd0
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x464]
add dword [esp + 0x20], ecx
mov edi, dword [esp + 0x468]
mov esi, dword [esp + 0x460]
inc eax
cmp eax, dword [esp + 0x48]
mov dword [esp + 0x24], eax
mov edx, ecx
jl 0x42ed50
cmp edx, edi
jle 0x42eea1
add dword [esp + 0x14], edi
mov dword [esp + 0x18], 0
jmp 0x42eead
add dword [esp + 0x18], edx
mov dword [esp + 0x14], 0
mov ebx, dword [esp + 0x18]
cmp ebx, edi
jl 0x42ed10
mov edx, dword [esp + 0x60]
mov ebx, dword [esp + 0x5c]
mov ebp, dword [esp + 0x1c]
lea eax, [edx + ebx]
imul eax, eax, 0x64
cdq
idiv ebp
cmp eax, 0x5a
jl 0x42eee2
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x44c
ret 0xc
xor eax, eax
mov ecx, 1
lea esp, [esp]
mov edx, dword [esp + ecx*4 + 0x5c]
mov esi, edx
imul esi, ecx
imul esi, ecx
add eax, esi
test edx, edx
je 0x42eed3
mov esi, dword [esp + ecx*4 + 0x58]
add esi, esi
cmp edx, esi
jg 0x42eed3
inc ecx
cmp ecx, 8
jl 0x42eef0
xor esi, esi
xor edi, edi
cmp ecx, 0x100
jge 0x42ef72
mov edx, 0x100
sub edx, ecx
cmp edx, 2
jl 0x42ef56
lea edx, [ecx + 1]
lea ecx, [ecx]
mov ebp, dword [esp + ecx*4 + 0x5c]
imul ebp, ecx
imul ebp, ecx
add esi, ebp
mov ebp, dword [esp + ecx*4 + 0x60]
imul ebp, edx
imul ebp, edx
add ecx, 2
add edi, ebp
add edx, 2
cmp ecx, 0xff
jl 0x42ef30
cmp ecx, 0x100
jge 0x42ef6a
mov edx, dword [esp + ecx*4 + 0x5c]
imul edx, ecx
imul edx, ecx
add eax, edx
mov ebp, dword [esp + 0x1c]
add edi, esi
add eax, edi
pop edi
sub ebp, ebx
xor edx, edx
pop esi
div ebp
pop ebp
pop ebx
add esp, 0x44c
ret 0xc