Function at 0x4d40b4
Capabilities:
Encode data using xor
Encrypt data using rc4 prga

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffffdc
push ebx
push esi
push edi
mov dword [ebp - 8], ecx
mov ebx, edx
mov dword [ebp - 4], eax
mov edi, dword [ebp + 8]
mov esi, dword [ebp + 0xc]
cmp byte [ebx], 0
je 0x4d458d
xor eax, eax
mov dword [ebp - 0x18], eax
movzx edx, si
imul edx, edx, 0x49
lea edx, [ebx + edx*2]
mov eax, edi
and eax, 0xff
imul eax, eax, 0x49
add edx, eax
xor ecx, ecx
mov cl, byte [ebp - 0x18]
movzx edx, byte [edx + ecx + 0x64]
mov dword [ebp - 0x20], edx
movzx edx, si
imul edx, edx, 0x49
lea edx, [ebx + edx*2]
add edx, eax
xor ecx, ecx
mov cl, byte [ebp - 0x18]
movzx edx, byte [edx + ecx + 0x5b]
mov dword [ebp - 0xc], edx
movzx edx, si
imul edx, edx, 0x49
lea edx, [ebx + edx*2]
movzx edx, byte [edx + eax + 0x53]
cmp edx, dword [ebp - 0xc]
jl 0x4d458d
dec dword [ebp - 0xc]
cmp dword [ebp - 0xc], 0
jl 0x4d458d
movzx edx, si
imul edx, edx, 0x49
lea edx, [ebx + edx*2]
add edx, eax
xor ecx, ecx
mov cl, byte [ebp - 0xc]
mov byte [edx + ecx + 0x20], 0
movzx edx, si
imul edx, edx, 0x49
lea edx, [ebx + edx*2]
lea eax, [edx + eax]
xor edx, edx
mov dl, byte [ebp - 0x18]
movzx eax, byte [eax + edx*2 + 0x5e]
dec eax
movzx edx, si
imul edx, edx, 0x49
lea edx, [ebx + edx*2]
mov ecx, edi
and ecx, 0xff
imul ecx, ecx, 0x49
add edx, ecx
push edx
xor edx, edx
mov dl, byte [ebp - 0x18]
pop ecx
movzx edx, byte [ecx + edx*2 + 0x5f]
dec edx
mov dword [ebp - 0x14], edx
mov edx, dword [ebp - 0x20]
cmp edx, 6
ja case.default.0x4d4195
jmp dword [edx*4 + 0x4d419c]
mov edx, dword [ebp - 0x14]
sub edx, eax
jl case.default.0x4d4195
inc edx
mov dword [ebp - 0x24], edx
mov dword [ebp - 0x1c], eax
movzx eax, si
imul eax, eax, 0x49
lea eax, [ebx + eax*2]
mov edx, edi
and edx, 0xff
imul edx, edx, 0x49
add eax, edx
xor edx, edx
mov dl, byte [ebp - 0x1c]
mov al, byte [eax + edx + 0x20]
movzx edx, si
imul edx, edx, 0x49
lea edx, [ebx + edx*2]
mov ecx, edi
and ecx, 0xff
imul ecx, ecx, 0x49
add edx, ecx
push edx
xor edx, edx
mov dl, byte [ebp - 0xc]
pop ecx
add byte [ecx + edx + 0x20], al
inc dword [ebp - 0x1c]
dec dword [ebp - 0x24]
jne 0x4d41ca
jmp case.default.0x4d4195
mov edx, dword [ebp - 0x14]
sub edx, eax
jl case.default.0x4d4195
inc edx
mov dword [ebp - 0x24], edx
mov dword [ebp - 0x1c], eax
movzx eax, si
imul eax, eax, 0x49
lea eax, [ebx + eax*2]
mov edx, edi
and edx, 0xff
imul edx, edx, 0x49
add eax, edx
xor edx, edx
mov dl, byte [ebp - 0xc]
mov al, byte [eax + edx + 0x20]
movzx edx, si
imul edx, edx, 0x49
lea edx, [ebx + edx*2]
mov ecx, edi
and ecx, 0xff
imul ecx, ecx, 0x49
add edx, ecx
push edx
xor edx, edx
mov dl, byte [ebp - 0x1c]
pop ecx
xor al, byte [ecx + edx + 0x20]
movzx edx, si
imul edx, edx, 0x49
lea edx, [ebx + edx*2]
mov ecx, edi
and ecx, 0xff
imul ecx, ecx, 0x49
add edx, ecx
push edx
xor edx, edx
mov dl, byte [ebp - 0xc]
pop ecx
mov byte [ecx + edx + 0x20], al
inc dword [ebp - 0x1c]
dec dword [ebp - 0x24]
jne 0x4d4229
jmp case.default.0x4d4195
mov edx, dword [ebp - 0x14]
sub edx, eax
jl 0x4d42ed
inc edx
mov dword [ebp - 0x24], edx
mov dword [ebp - 0x1c], eax
movzx eax, si
imul eax, eax, 0x49
lea eax, [ebx + eax*2]
mov edx, edi
and edx, 0xff
imul edx, edx, 0x49
add eax, edx
xor edx, edx
mov dl, byte [ebp - 0x1c]
mov al, byte [eax + edx + 0x20]
movzx edx, si
imul edx, edx, 0x49
lea edx, [ebx + edx*2]
mov ecx, edi
and ecx, 0xff
imul ecx, ecx, 0x49
add edx, ecx
push edx
xor edx, edx
mov dl, byte [ebp - 0xc]
pop ecx
add byte [ecx + edx + 0x20], al
inc dword [ebp - 0x1c]
dec dword [ebp - 0x24]
jne 0x4d42a5
movzx edx, si
imul edx, edx, 0x49
lea edx, [ebx + edx*2]
mov ecx, edi
and ecx, 0xff
imul ecx, ecx, 0x49
add edx, ecx
push edx
xor eax, eax
mov al, byte [ebp - 0xc]
pop edx
mov cl, 0xff
sub cl, byte [edx + eax + 0x20]
push ecx
movzx edx, si
imul edx, edx, 0x49
lea edx, [ebx + edx*2]
mov ecx, edi
and ecx, 0xff
imul ecx, ecx, 0x49
add edx, ecx
push edx
pop edx
pop ecx
mov byte [edx + eax + 0x20], cl
jmp case.default.0x4d4195
mov edx, dword [ebp - 0x14]
sub edx, eax
jl 0x4d4389
inc edx
mov dword [ebp - 0x24], edx
mov dword [ebp - 0x1c], eax
movzx eax, si
imul eax, eax, 0x49
lea eax, [ebx + eax*2]
mov edx, edi
and edx, 0xff
imul edx, edx, 0x49
add eax, edx
xor edx, edx
mov dl, byte [ebp - 0x1c]
mov al, byte [eax + edx + 0x20]
movzx edx, si
imul edx, edx, 0x49
lea edx, [ebx + edx*2]
mov ecx, edi
and ecx, 0xff
imul ecx, ecx, 0x49
add edx, ecx
push edx
xor edx, edx
mov dl, byte [ebp - 0xc]
pop ecx
add byte [ecx + edx + 0x20], al
inc dword [ebp - 0x1c]
dec dword [ebp - 0x24]
jne 0x4d4341
movzx eax, si
imul eax, eax, 0x49
lea eax, [ebx + eax*2]
mov edx, edi
and edx, 0xff
imul edx, edx, 0x49
add eax, edx
xor edx, edx
mov dl, byte [ebp - 0xc]
mov cl, 0x7f
sub cl, byte [eax + edx + 0x20]
movzx eax, si
imul eax, eax, 0x49
lea eax, [ebx + eax*2]
mov edx, edi
and edx, 0xff
imul edx, edx, 0x49
add eax, edx
push eax
xor eax, eax
mov al, byte [ebp - 0xc]
pop edx
mov byte [edx + eax + 0x20], cl
jmp case.default.0x4d4195
mov edx, dword [ebp - 0x14]
sub edx, eax
jl 0x4d4426
inc edx
mov dword [ebp - 0x24], edx
mov dword [ebp - 0x1c], eax
movzx eax, si
imul eax, eax, 0x49
lea eax, [ebx + eax*2]
mov edx, edi
and edx, 0xff
imul edx, edx, 0x49
add eax, edx
xor edx, edx
mov dl, byte [ebp - 0x1c]
mov al, byte [eax + edx + 0x20]
movzx edx, si
imul edx, edx, 0x49
lea edx, [ebx + edx*2]
mov ecx, edi
and ecx, 0xff
imul ecx, ecx, 0x49
add edx, ecx
push edx
xor edx, edx
mov dl, byte [ebp - 0xc]
pop ecx
add byte [ecx + edx + 0x20], al
inc dword [ebp - 0x1c]
dec dword [ebp - 0x24]
jne 0x4d43de
movzx eax, si
imul eax, eax, 0x49
lea eax, [ebx + eax*2]
mov edx, edi
and edx, 0xff
imul edx, edx, 0x49
add eax, edx
xor edx, edx
mov dl, byte [ebp - 0xc]
mov al, byte [eax + edx + 0x20]
not al
inc eax
movzx edx, si
imul edx, edx, 0x49
lea edx, [ebx + edx*2]
mov ecx, edi
and ecx, 0xff
imul ecx, ecx, 0x49
add edx, ecx
push edx
xor edx, edx
mov dl, byte [ebp - 0xc]
pop ecx
mov byte [ecx + edx + 0x20], al
jmp case.default.0x4d4195
mov edx, dword [ebp - 0x14]
sub edx, eax
jl 0x4d44c4
inc edx
mov dword [ebp - 0x24], edx
mov dword [ebp - 0x1c], eax
movzx eax, si
imul eax, eax, 0x49
lea eax, [ebx + eax*2]
mov edx, edi
and edx, 0xff
imul edx, edx, 0x49
add eax, edx
xor edx, edx
mov dl, byte [ebp - 0x1c]
mov al, byte [eax + edx + 0x20]
movzx edx, si
imul edx, edx, 0x49
lea edx, [ebx + edx*2]
mov ecx, edi
and ecx, 0xff
imul ecx, ecx, 0x49
add edx, ecx
push edx
xor edx, edx
mov dl, byte [ebp - 0xc]
pop ecx
add byte [ecx + edx + 0x20], al
inc dword [ebp - 0x1c]
dec dword [ebp - 0x24]
jne 0x4d447c
movzx eax, si
imul eax, eax, 0x49
lea eax, [ebx + eax*2]
mov edx, edi
and edx, 0xff
imul edx, edx, 0x49
add eax, edx
xor edx, edx
mov dl, byte [ebp - 0xc]
movzx eax, byte [eax + edx + 0x20]
and eax, 0x7f
movzx edx, si
imul edx, edx, 0x49
lea edx, [ebx + edx*2]
mov ecx, edi
and ecx, 0xff
imul ecx, ecx, 0x49
add edx, ecx
push edx
xor edx, edx
mov dl, byte [ebp - 0xc]
pop ecx
mov byte [ecx + edx + 0x20], al
jmp case.default.0x4d4195
mov edx, dword [ebp - 0x14]
sub edx, eax
jl 0x4d4560
inc edx
mov dword [ebp - 0x24], edx
mov dword [ebp - 0x1c], eax
movzx eax, si
imul eax, eax, 0x49
lea eax, [ebx + eax*2]
mov edx, edi
and edx, 0xff
imul edx, edx, 0x49
add eax, edx
xor edx, edx
mov dl, byte [ebp - 0x1c]
mov al, byte [eax + edx + 0x20]
movzx edx, si
imul edx, edx, 0x49
lea edx, [ebx + edx*2]
mov ecx, edi
and ecx, 0xff
imul ecx, ecx, 0x49
add edx, ecx
push edx
xor edx, edx
mov dl, byte [ebp - 0xc]
pop ecx
add byte [ecx + edx + 0x20], al
inc dword [ebp - 0x1c]
dec dword [ebp - 0x24]
jne 0x4d4518
movzx eax, si
imul eax, eax, 0x49
lea eax, [ebx + eax*2]
mov edx, edi
and edx, 0xff
imul edx, edx, 0x49
add eax, edx
xor edx, edx
mov dl, byte [ebp - 0xc]
add byte [eax + edx + 0x20], 0x20
inc dword [ebp - 0x18]
cmp dword [ebp - 0x18], 3
jne 0x4d40d9
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8