Function at 0x4d3f3c
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 0x4d420c
push dword fs:[eax]
mov dword fs:[eax], esp
xor eax, eax
push ebp
push 0x4d40a3
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, edi
call fcn.00405f30
mov esi, eax
test esi, esi
jle 0x4d3f82
cmp esi, 0x20
jle 0x4d3fc7
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 [0x5b683c]
call fcn.00406db0
mov ecx, dword [ebp - 0x10c]
mov dl, 1
mov eax, dword [0x4c58bc]
call fcn.0040dbc0
call fcn.00404590
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 0x4d3fc9
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x4d40b2
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 0x4d40b6
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x4d4213
lea eax, [ebp - 0x10c]
call fcn.00404c40
ret