Function at 0x4a7e94
Capabilities:
Encrypt data using rc4 ksa

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffef4
push ebx
push esi
push edi
xor ecx, ecx
mov dword [ebp - 0x10c], ecx
mov ebx, edx
mov edi, eax
xor eax, eax
push ebp
push 0x4a8164
push dword fs:[eax]
mov dword fs:[eax], esp
xor eax, eax
push ebp
push 0x4a7ffb
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, edi
call fcn.00406ae0
mov esi, eax
test esi, esi
jle 0x4a7eda
cmp esi, 0x20
jle 0x4a7f1f
mov eax, esi
add eax, eax
add eax, eax
add eax, eax
mov dword [ebp - 0x108], eax
mov byte [ebp - 0x104], 0
lea eax, [ebp - 0x108]
push eax
push 0
lea edx, [ebp - 0x10c]
mov eax, dword [0x5fad10]
call fcn.00407960
mov ecx, dword [ebp - 0x10c]
mov dl, 1
mov eax, dword [0x496e08]
call fcn.0040de4c
call fcn.00404d1c
xor ecx, ecx
mov byte [ebx + ecx], cl
mov eax, ecx
cdq
idiv esi
movzx eax, byte [edi + edx]
mov byte [ebp + ecx - 0x100], al
mov eax, ecx
inc eax
mov byte [ebx + ecx + 1], al
lea eax, [ecx + 1]
cdq
idiv esi
movzx eax, byte [edi + edx]
mov byte [ebp + ecx - 0xff], al
mov eax, ecx
add al, 2
mov byte [ebx + ecx + 2], al
lea eax, [ecx + 2]
cdq
idiv esi
movzx eax, byte [edi + edx]
mov byte [ebp + ecx - 0xfe], al
mov eax, ecx
add al, 3
mov byte [ebx + ecx + 3], al
lea eax, [ecx + 3]
cdq
idiv esi
movzx eax, byte [edi + edx]
mov byte [ebp + ecx - 0xfd], al
mov eax, ecx
add al, 4
mov byte [ebx + ecx + 4], al
lea eax, [ecx + 4]
cdq
idiv esi
movzx eax, byte [edi + edx]
mov byte [ebp + ecx - 0xfc], al
mov eax, ecx
add al, 5
mov byte [ebx + ecx + 5], al
lea eax, [ecx + 5]
cdq
idiv esi
movzx eax, byte [edi + edx]
mov byte [ebp + ecx - 0xfb], al
mov eax, ecx
add al, 6
mov byte [ebx + ecx + 6], al
lea eax, [ecx + 6]
cdq
idiv esi
movzx eax, byte [edi + edx]
mov byte [ebp + ecx - 0xfa], al
mov eax, ecx
add al, 7
mov byte [ebx + ecx + 7], al
lea eax, [ecx + 7]
cdq
idiv esi
movzx eax, byte [edi + edx]
mov byte [ebp + ecx - 0xf9], al
add ecx, 8
cmp ecx, 0xff
jle 0x4a7f21
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x4a800a
xor ecx, ecx
xor esi, esi
movzx eax, byte [ebx + ecx]
movzx edx, al
movzx edi, byte [ebp + ecx - 0x100]
add edx, edi
add esi, edx
mov edx, esi
movzx edx, dl
mov esi, edx
movzx edx, byte [ebx + esi]
mov byte [ebx + ecx], dl
mov byte [ebx + esi], al
movzx eax, byte [ebx + ecx + 1]
movzx edx, al
movzx edi, byte [ebp + ecx - 0xff]
add edx, edi
add esi, edx
mov edx, esi
movzx edx, dl
mov esi, edx
movzx edx, byte [ebx + esi]
mov byte [ebx + ecx + 1], dl
mov byte [ebx + esi], al
movzx eax, byte [ebx + ecx + 2]
movzx edx, al
movzx edi, byte [ebp + ecx - 0xfe]
add edx, edi
add esi, edx
mov edx, esi
movzx edx, dl
mov esi, edx
movzx edx, byte [ebx + esi]
mov byte [ebx + ecx + 2], dl
mov byte [ebx + esi], al
movzx eax, byte [ebx + ecx + 3]
movzx edx, al
movzx edi, byte [ebp + ecx - 0xfd]
add edx, edi
add esi, edx
mov edx, esi
movzx edx, dl
mov esi, edx
movzx edx, byte [ebx + esi]
mov byte [ebx + ecx + 3], dl
mov byte [ebx + esi], al
movzx eax, byte [ebx + ecx + 4]
movzx edx, al
movzx edi, byte [ebp + ecx - 0xfc]
add edx, edi
add esi, edx
mov edx, esi
movzx edx, dl
mov esi, edx
movzx edx, byte [ebx + esi]
mov byte [ebx + ecx + 4], dl
mov byte [ebx + esi], al
movzx eax, byte [ebx + ecx + 5]
movzx edx, al
movzx edi, byte [ebp + ecx - 0xfb]
add edx, edi
add esi, edx
mov edx, esi
movzx edx, dl
mov esi, edx
movzx edx, byte [ebx + esi]
mov byte [ebx + ecx + 5], dl
mov byte [ebx + esi], al
movzx eax, byte [ebx + ecx + 6]
movzx edx, al
movzx edi, byte [ebp + ecx - 0xfa]
add edx, edi
add esi, edx
mov edx, esi
movzx edx, dl
mov esi, edx
movzx edx, byte [ebx + esi]
mov byte [ebx + ecx + 6], dl
mov byte [ebx + esi], al
movzx eax, byte [ebx + ecx + 7]
movzx edx, al
movzx edi, byte [ebp + ecx - 0xf9]
add edx, edi
add esi, edx
mov edx, esi
movzx edx, dl
mov esi, edx
movzx edx, byte [ebx + esi]
mov byte [ebx + ecx + 7], dl
mov byte [ebx + esi], al
add ecx, 8
cmp ecx, 0xff
jle 0x4a800e
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x4a816b
lea eax, [ebp - 0x10c]
call fcn.004053e8
ret