Function at 0x48c21d
Capabilities:
Encrypt data using rc4 ksa

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x1c
push ebx
push esi
mov esi, ecx
mov ebx, edx
push edi
mov edi, dword [ebp + 8]
push 4
mov eax, dword [esi + 8]
cdq
sub eax, edx
mov dword [ebp - 4], ebx
mov ecx, eax
mov dword [ebp - 0x14], esi
mov eax, edi
sar ecx, 1
cdq
and edx, 3
mov dword [ebp - 0x1c], ecx
add eax, edx
sar eax, 2
mov dword [ebp - 0x10], eax
xor eax, eax
mov dword [ebp - 0xc], eax
pop edx
test ecx, ecx
jle 0x48c2aa
mov ecx, ebx
mov dword [ebp - 8], ebx
mov edx, dword [esi + 8]
sub edx, eax
mov dword [ebp - 0x18], ecx
dec edx
imul edx, edi
add edx, ebx
cmp dword [ebp - 0x10], 0
jle 0x48c299
mov ebx, dword [ebp - 0x10]
mov edi, ecx
push 4
pop esi
mov ecx, dword [edx]
mov eax, dword [edi]
mov dword [edx], eax
add edx, esi
mov dword [edi], ecx
add edi, esi
dec ebx
jne 0x48c27b
mov esi, dword [ebp - 0x14]
mov edi, dword [ebp + 8]
mov ebx, dword [ebp - 4]
mov eax, dword [ebp - 0xc]
mov ecx, dword [ebp - 8]
inc eax
add ecx, edi
mov dword [ebp - 0xc], eax
mov dword [ebp - 8], ecx
cmp eax, dword [ebp - 0x1c]
jl 0x48c25f
push 4
pop edx
movzx eax, word [esi + 0xe]
xor ecx, ecx
inc ecx
cmp ax, cx
jne 0x48c346
mov edx, dword [esi + 8]
dec edx
mov dword [ebp - 0x10], edx
js 0x48c683
lea eax, [edx + 1]
mov dword [ebp + 8], eax
mov eax, edi
neg eax
mov dword [ebp - 0xc], eax
mov eax, edx
imul eax, edi
add eax, ebx
mov dword [ebp - 0x1c], eax
mov edi, eax
mov ecx, dword [esi + 4]
mov eax, ecx
imul eax, dword [ebp + 8]
dec eax
dec ecx
mov dword [ebp - 0x1c], ecx
lea eax, [ebx + eax*4]
mov dword [ebp - 0x18], eax
js 0x48c333
mov esi, ecx
mov ebx, eax
mov eax, esi
cdq
and edx, 7
add eax, edx
xor edx, edx
sar eax, 3
inc edx
mov ecx, eax
shl ecx, 3
sub ecx, esi
add ecx, 7
shl edx, cl
test byte [edi + eax], dl
mov eax, 0xff000000
push 0xffffffffffffffff
pop ecx
cmovne eax, ecx
dec esi
mov dword [ebx], eax
lea ebx, [ebx - 4]
jns 0x48c2fa
mov esi, dword [ebp - 0x14]
mov ebx, dword [ebp - 4]
mov edx, dword [ebp - 0x10]
add edi, dword [ebp - 0xc]
dec edx
dec dword [ebp + 8]
mov dword [ebp - 0x10], edx
test edx, edx
jns 0x48c2e0
jmp 0x48c683
cmp ax, dx
jne 0x48c422
mov eax, dword [esi + 8]
dec eax
mov dword [ebp - 0xc], eax
js 0x48c683
mov ecx, eax
imul ecx, edi
neg edi
mov dword [ebp + 8], edi
mov dword [ebp - 0x10], ecx
mov edx, dword [esi + 4]
mov dword [ebp - 8], edx
test dl, 1
je 0x48c3a2
mov eax, edx
cdq
sub eax, edx
sar eax, 1
add eax, ecx
mov ecx, dword [ebp - 8]
movzx eax, byte [eax + ebx]
shr eax, 4
mov edx, dword [esi + eax*4 + 0x28]
mov eax, dword [ebp - 0xc]
or edx, 0xff000000
imul ecx, eax
add ecx, dword [ebp - 8]
mov dword [ebx + ecx*4 - 4], edx
mov edx, dword [ebp - 8]
dec edx
mov ecx, dword [esi + 4]
imul ecx, eax
dec ecx
add ecx, edx
lea eax, [ebx + ecx*4]
mov ecx, dword [ebp - 0x10]
mov dword [ebp - 0x1c], eax
dec ecx
mov eax, edx
cdq
sub eax, edx
sar eax, 1
add ecx, eax
mov dword [ebp - 0x18], eax
add ecx, ebx
mov dword [ebp - 0x14], ecx
test eax, eax
jle 0x48c406
mov edx, dword [ebp - 0x1c]
mov edi, eax
mov ebx, ecx
movzx eax, byte [ebx]
mov ecx, eax
and eax, 0xf
shr ecx, 4
push 4
mov eax, dword [esi + eax*4 + 0x28]
or eax, 0xff000000
mov dword [edx], eax
pop eax
sub edx, eax
mov eax, dword [esi + ecx*4 + 0x28]
or eax, 0xff000000
push 4
mov dword [edx], eax
pop eax
sub edx, eax
dec ebx
dec edi
jne 0x48c3d1
mov edi, dword [ebp + 8]
mov ebx, dword [ebp - 4]
mov eax, dword [ebp - 0xc]
mov ecx, dword [ebp - 0x10]
dec eax
add ecx, edi
mov dword [ebp - 0xc], eax
mov dword [ebp - 0x10], ecx
test eax, eax
jns 0x48c369
jmp 0x48c683
cmp eax, 8
jne 0x48c4ac
mov edx, dword [esi + 8]
dec edx
mov dword [ebp - 0x14], edx
js 0x48c683
mov eax, edx
imul eax, edi
neg edi
mov dword [ebp + 8], edi
mov dword [ebp - 0xc], eax
lea eax, [edx + 1]
mov dword [ebp - 0x10], eax
mov ecx, dword [esi + 4]
mov eax, ecx
imul eax, dword [ebp - 0x10]
and dword [ebp - 8], 0
dec eax
lea eax, [ebx + eax*4]
mov dword [ebp - 0x1c], eax
mov eax, dword [ebp - 0xc]
dec eax
add eax, ecx
add eax, ebx
mov dword [ebp - 0x18], eax
test ecx, ecx
jle 0x48c499
mov ecx, dword [ebp - 0x1c]
mov ebx, eax
mov edi, dword [ebp - 8]
push 4
pop edx
movzx eax, byte [ebx]
mov eax, dword [esi + eax*4 + 0x28]
or eax, 0xff000000
mov dword [ecx], eax
sub ecx, edx
dec ebx
inc edi
cmp edi, dword [esi + 4]
jl 0x48c479
mov edi, dword [ebp + 8]
mov ebx, dword [ebp - 4]
mov edx, dword [ebp - 0x14]
add dword [ebp - 0xc], edi
dec edx
dec dword [ebp - 0x10]
mov dword [ebp - 0x14], edx
test edx, edx
jns 0x48c44b
jmp 0x48c683
cmp eax, 0x10
jne 0x48c583
mov eax, dword [esi + 8]
dec eax
mov dword [ebp - 0xc], eax
js 0x48c683
mov edx, eax
imul edx, edi
inc eax
neg edi
mov dword [ebp - 0x10], eax
mov dword [ebp + 8], edi
mov dword [ebp - 8], edx
mov ecx, dword [esi + 4]
mov eax, ecx
imul eax, dword [ebp - 0x10]
and dword [ebp - 0x14], 0
dec eax
lea eax, [ebx + eax*4]
mov dword [ebp - 0x1c], eax
mov eax, edx
cdq
sub eax, edx
sar eax, 1
dec eax
add eax, ecx
lea eax, [ebx + eax*2]
mov dword [ebp - 0x18], eax
test ecx, ecx
jle 0x48c564
mov ebx, dword [ebp - 0x1c]
mov edi, eax
movzx edx, word [edi]
lea edi, [edi - 2]
mov ecx, edx
mov eax, edx
and ecx, 0xfffffc00
and eax, 0x3e0
or ecx, 0xffff8000
shl ecx, 3
or ecx, eax
mov eax, edx
shl ecx, 2
and eax, 0x7000
or ecx, eax
mov eax, edx
add ecx, ecx
and eax, 0x1f
or ecx, eax
mov eax, edx
shl ecx, 2
and eax, 0x380
or ecx, eax
shr edx, 2
add ecx, ecx
and edx, 7
or ecx, edx
push 4
pop eax
mov dword [ebx], ecx
sub ebx, eax
mov eax, dword [ebp - 0x14]
inc eax
mov dword [ebp - 0x14], eax
cmp eax, dword [esi + 4]
jl 0x48c500
mov edi, dword [ebp + 8]
mov ebx, dword [ebp - 4]
mov eax, dword [ebp - 0xc]
mov edx, dword [ebp - 8]
dec eax
dec dword [ebp - 0x10]
add edx, edi
mov dword [ebp - 0xc], eax
mov dword [ebp - 8], edx
test eax, eax
jns 0x48c4d3
jmp 0x48c683
cmp eax, 0x18
jne 0x48c606
mov edx, dword [esi + 8]
dec edx
mov dword [ebp - 0x14], edx
js 0x48c683
mov eax, edx
imul eax, edi
neg edi
mov dword [ebp + 8], edi
mov dword [ebp - 0xc], eax
lea eax, [edx + 1]
mov dword [ebp - 0x10], eax
mov ecx, dword [esi + 4]
mov eax, ecx
imul eax, dword [ebp - 0x10]
and dword [ebp - 8], 0
dec eax
lea eax, [ebx + eax*4]
mov dword [ebp - 0x1c], eax
imul eax, ecx, 3
add eax, 0xfffffffd
add eax, dword [ebp - 0xc]
add eax, ebx
mov dword [ebp - 0x18], eax
test ecx, ecx
jle 0x48c5f6
mov ecx, dword [ebp - 0x1c]
mov edi, eax
mov ebx, dword [ebp - 8]
push 4
pop edx
mov eax, dword [edi]
lea edi, [edi - 3]
or eax, 0xff000000
mov dword [ecx], eax
sub ecx, edx
inc ebx
cmp ebx, dword [esi + 4]
jl 0x48c5d9
mov edi, dword [ebp + 8]
mov ebx, dword [ebp - 4]
mov edx, dword [ebp - 0x14]
add dword [ebp - 0xc], edi
dec edx
dec dword [ebp - 0x10]
mov dword [ebp - 0x14], edx
test edx, edx
jns 0x48c5a8
jmp 0x48c683
cmp eax, 0x20
jne 0x48c683
xor eax, eax
mov dword [ebp - 0x10], eax
cmp dword [esi + 8], eax
jle 0x48c683
mov ecx, dword [esi + 4]
mov dword [ebp - 0x14], 0xff
and dword [ebp - 0x18], 0
mov dword [ebp - 0x1c], ebx
test ecx, ecx
jle 0x48c675
mov edi, ebx
mov ebx, dword [ebp - 0x18]
movzx ecx, byte [edi + 3]
movzx eax, byte [edi]
imul eax, ecx
push 4
cdq
idiv dword [ebp - 0x14]
mov byte [edi], al
movzx eax, byte [edi + 1]
imul eax, ecx
cdq
idiv dword [ebp - 0x14]
mov byte [edi + 1], al
movzx eax, byte [edi + 2]
imul eax, ecx
mov ecx, 0xff
cdq
idiv ecx
mov byte [edi + 2], al
mov ecx, dword [esi + 4]
pop eax
add edi, eax
inc ebx
cmp ebx, ecx
jl 0x48c62f
mov edi, dword [ebp + 8]
mov ebx, dword [ebp - 4]
mov eax, dword [ebp - 0x10]
inc eax
add ebx, edi
mov dword [ebp - 0x10], eax
mov dword [ebp - 4], ebx
cmp eax, dword [esi + 8]
jl 0x48c61f
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret