Function at 0x4d7d10
Capabilities:
Encrypt data using rc4 prga

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x50
mov eax, dword [ebp + 8]
push ebx
push esi
mov esi, ecx
push 0xffffffffffffffff
push 0
mov dword [esi + 0x40], eax
lea ecx, [esi + 0x14]
mov eax, dword [ebp + 0xc]
mov dword [esi], eax
mov eax, dword [ebp + 0x10]
mov dword [esi + 4], eax
call fcn.00472db0
push 0xffffffffffffffff
push 0
lea ecx, [esi + 0x28]
call fcn.004d86b0
mov dword [ebp - 8], 0
mov ebx, 1
fld dword [ebp - 8]
mov ecx, esi
fst dword [esi + 0x44]
mov dword [ebp - 4], 0
fld dword [ebp - 4]
fst dword [esi + 0x48]
fst dword [esi + 0x50]
fstp dword [esi + 0x58]
mov dword [esi + 0xc], 0
fst dword [esi + 0x4c]
fstp dword [esi + 0x54]
mov dword [ebp + 0xc], ebx
mov dword [ebp + 8], 0x20
call fcn.004d7e90
test eax, eax
je 0x4d7c69
push edi
nop
movzx edi, word [esi + 0x3c]
test ebx, ebx
je 0x4d79eb
cmp edi, 0x46
jne 0x4d79d6
push 0
mov ecx, esi
call fcn.004d6fd0
test eax, eax
je case.0x4d7a00.68
mov ecx, dword [esi + 8]
mov eax, dword [esi]
movzx eax, word [eax + ecx*2]
cmp eax, 0x30
je 0x4d79c5
cmp eax, 0x31
jne case.0x4d7a00.68
sub eax, 0x30
mov dword [esi + 0x10], eax
lea eax, [ecx + 1]
mov dword [esi + 8], eax
jmp 0x4d7c59
cmp edi, 0x4d
je 0x4d79e4
cmp edi, 0x6d
jne case.0x4d7a00.68
mov dword [ebp + 0xc], 0
mov ebx, edi
lea eax, [ebx - 0x43]
cmp eax, 0x37
ja case.0x4d7a00.68
movzx eax, byte [eax + 0x4d7c8c]
jmp dword [eax*4 + 0x4d7c78]
mov ecx, esi
call fcn.004d6a10
add ebx, 0xffffffb8
cmp ebx, 0x2e
ja case.0x4d7a1d.1
movzx eax, byte [ebx + 0x4d7ce0]
jmp dword [eax*4 + 0x4d7cc4]
push 0
mov ecx, esi
call fcn.004d7d10
fadd dword [esi + 0x4c]
fstp dword [esi + 0x4c]
jmp case.0x4d7a1d.1
lea eax, [ebp - 0x10]
push 0
push edi
push eax
mov ecx, esi
call fcn.004d7e40
mov ecx, dword [eax]
mov dword [esi + 0x4c], ecx
mov eax, dword [eax + 4]
mov dword [esi + 0x50], eax
jmp case.0x4d7a1d.1
push 0
mov ecx, esi
call fcn.004d7d10
fadd dword [esi + 0x50]
jmp 0x4d7a7a
push 0
mov ecx, esi
call fcn.004d7d10
fstp dword [esi + 0x4c]
jmp case.0x4d7a1d.1
lea eax, [ebp - 0x18]
jmp 0x4d7a38
push 0
mov ecx, esi
call fcn.004d7d10
fstp dword [esi + 0x50]
fld dword [esi + 0x50]
sub esp, 8
mov ecx, esi
fstp dword [esp + 4]
fld dword [esi + 0x4c]
fstp dword [esp]
call fcn.004d7030
push 1
mov ecx, esi
call fcn.004d6fd0
test eax, eax
jne 0x4d7a11
mov dword [ebp + 8], 0x4c
jmp 0x4d7c56
push 0
push edi
lea eax, [ebp - 0x20]
mov ecx, esi
push eax
call fcn.004d7e40
sub esp, 8
mov ecx, dword [eax]
mov dword [esi + 0x4c], ecx
mov ecx, esi
mov eax, dword [eax + 4]
mov dword [esi + 0x50], eax
fld dword [esi + 0x50]
fstp dword [esp + 4]
fld dword [esi + 0x4c]
fstp dword [esp]
call fcn.004d60a0
mov eax, dword [esi + 0x4c]
mov ecx, esi
mov dword [esi + 0x54], eax
mov eax, dword [esi + 0x50]
push 1
mov dword [esi + 0xc], 1
mov dword [esi + 0x58], eax
mov dword [ebp + 8], 0x4d
call fcn.004d6fd0
test eax, eax
je 0x4d7c56
mov dword [ebp + 8], 0x4c
push 0
push edi
lea eax, [ebp - 0x28]
mov ecx, esi
push eax
call fcn.004d7e40
sub esp, 8
mov ecx, dword [eax]
mov dword [esi + 0x4c], ecx
mov ecx, esi
mov eax, dword [eax + 4]
mov dword [esi + 0x50], eax
fld dword [esi + 0x50]
fstp dword [esp + 4]
fld dword [esi + 0x4c]
fstp dword [esp]
call fcn.004d7030
push 1
mov ecx, esi
call fcn.004d6fd0
test eax, eax
jne 0x4d7b13
jmp 0x4d7c56
mov ecx, esi
call fcn.004d6a10
lea esp, [esp]
cmp ebx, 0x53
je 0x4d7b87
cmp ebx, 0x73
je 0x4d7b87
push 0
push edi
lea eax, [ebp - 0x30]
mov ecx, esi
push eax
call fcn.004d7e40
push 1
fld dword [eax]
fstp dword [ebp - 8]
fld dword [eax + 4]
lea eax, [ebp - 0x38]
jmp 0x4d7bb1
cmp word [ebp + 8], 0x43
jne 0x4d7ba3
lea eax, [ebp - 0x40]
mov ecx, esi
push eax
call fcn.004d7ed0
fld dword [eax]
fstp dword [ebp - 8]
fld dword [eax + 4]
jmp 0x4d7bac
fld dword [esi + 0x4c]
fstp dword [ebp - 8]
fld dword [esi + 0x50]
push 0
lea eax, [ebp - 0x48]
push edi
push eax
mov ecx, esi
fstp dword [ebp - 4]
call fcn.004d7e40
push 1
push edi
mov ecx, dword [eax]
mov eax, dword [eax + 4]
mov dword [esi + 0x44], ecx
mov ecx, esi
mov dword [esi + 0x48], eax
lea eax, [ebp - 0x50]
push eax
call fcn.004d7e40
sub esp, 0x18
mov ecx, dword [eax]
mov dword [esi + 0x4c], ecx
mov ecx, esi
mov eax, dword [eax + 4]
mov dword [esi + 0x50], eax
fld dword [esi + 0x50]
fstp dword [esp + 0x14]
fld dword [esi + 0x4c]
fstp dword [esp + 0x10]
fld dword [esi + 0x48]
fstp dword [esp + 0xc]
fld dword [esi + 0x44]
fstp dword [esp + 8]
fld dword [ebp - 4]
fstp dword [esp + 4]
fld dword [ebp - 8]
fstp dword [esp]
call fcn.004d6120
push 1
mov ecx, esi
mov dword [ebp + 8], 0x43
call fcn.004d6fd0
test eax, eax
jne 0x4d7b60
jmp 0x4d7c56
mov ecx, esi
call fcn.004d6a10
mov ecx, esi
call fcn.004d61d0
mov eax, dword [esi + 0x54]
mov dword [esi + 0x4c], eax
mov eax, dword [esi + 0x58]
mov dword [esi + 0xc], 0
mov dword [ebp + 8], 0x5a
mov dword [esi + 0x50], eax
mov ebx, dword [ebp + 0xc]
mov ecx, esi
call fcn.004d7e90
test eax, eax
jne 0x4d7990
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc
mov ecx, esi
call fcn.004d8ab0
push ebp
jnp 5078216
add byte [edi], al
jp 0x4d7ccc
add byte [ecx + 0x2e004d7a], dh
jl 0x4d7cd4
add byte [ecx + 0x7c], dh
dec ebp
add byte [eax], al
add al, 4
add al, 4
add dword [esp + eax], eax
add al, 1
add al, byte [esp + eax]
add al, 4
add al, 0
add al, 4
add dword [esp + eax], eax
add al, 3
add al, 4
add al, 4
add al, 4
add al, 4
add byte [esp + eax], al
add al, 4
add dword [esp + eax], eax
add al, 1
add al, byte [esp + eax]
add al, 4
add al, 0
add al, 4
add dword [esp + eax], eax
add al, 3
pop esi
jp 5078292
add byte [edx + edi*2 + 0x4d], ch
insb byte es:[edi], dx
jp 5078296
add byte [ecx + 0x7a], dh
jno 0x4d7d48
dec ebp
add byte [edx + edi*2], ah
dec ebp
add byte [0x50004d7a], dh
xor eax, 0x50004d7a
jp 0x4d7d28
add byte [ebp + 0x7a], bh
dec ebp
add byte [eax], al
push es
push es
push es
add dword [esi], eax
push es
push es
push es
push es
push es
push es
push es
push es
add al, byte [esi]
push es
push es
push es
push es
push es
push es
push es
push es
push es
push es
push es
push es
push es
push es
push es
push es
add eax, dword [esi]
push es
push es
add al, 6
push es
push es
push es
push es
push es
push es
push es
push es
add eax, -326412852
push ebp
mov ebp, esp
sub esp, 0xc
push esi
in al, dx
or al, 0x56
push edi
push dword [ebp + 8]
mov edi, ecx
call fcn.004d6fd0
test eax, eax
je 0x4d7e2c
add byte [eax], al
mov ecx, dword [edi + 8]
mov esi, dword [edi]
mov dword [ebp - 8], 0
movzx eax, word [esi + ecx*2]
cmp eax, 0x2b
je 0x4d7d4d
mov edx, ecx
cmp eax, 0x2d
jne 0x4d7d53
mov dword [ebp - 8], 1
clc
add dword [eax], eax
add byte [eax], al
inc ecx
mov edx, ecx
mov dword [edi + 8], ecx
cmp word [esi + ecx*2], 0x30
fld qword [0x5b1370]
mov dword [ebp + 8], 0
jb 0x4d7da7
lea eax, [esi + 2]
lea eax, [eax + ecx*2]
mov dword [ebp - 4], eax
movzx eax, word [esi + ecx*2]
cmp eax, 0x39
ja 0x4d7da7
sub eax, 0x30
lea edx, [ecx + 1]
mov dword [ebp - 0xc], eax
mov ecx, edx
fild dword [ebp - 0xc]
mov eax, dword [ebp - 4]
add dword [ebp - 4], 2
fstp dword [ebp - 0xc]
fld dword [ebp - 0xc]
fld dword [ebp + 8]
fmul st(2)
mov dword [edi + 8], edx
cmp word [eax], 0x30
faddp st(1)
fstp dword [ebp + 8]
jae 0x4d7d70
cmp word [esi + edx*2], 0x2e
jne 0x4d7e08
inc edx
mov dword [ebp - 4], 0x3f800000
mov dword [edi + 8], edx
cmp word [esi + edx*2], 0x30
jb 0x4d7e08
fld dword [ebp - 4]
lea ecx, [esi + 2]
lea ecx, [ecx + edx*2]
movzx eax, word [esi + edx*2]
cmp eax, 0x39
ja 0x4d7e06
fdiv st(1)
sub eax, 0x30
mov dword [ebp - 0xc], eax
inc edx
fstp dword [ebp - 4]
fild dword [ebp - 0xc]
fstp dword [ebp - 0xc]
fld dword [ebp - 0xc]
fld dword [ebp - 4]
fld st(0)
mov dword [edi + 8], edx
movzx eax, word [ecx]
add ecx, 2
fmulp st(2)
fld dword [ebp + 8]
faddp st(2)
fxch st(1)
fstp dword [ebp + 8]
cmp eax, 0x30
jae 0x4d7dc9
fstp st(0)
cmp dword [ebp - 8], 0
fstp st(0)
movss xmm0, dword [ebp + 8]
pop edi
pop esi
je 0x4d7e1e
xorps xmm0, xmmword [0x5b0c30]
movss dword [ebp + 8], xmm0
fld dword [ebp + 8]
mov esp, ebp
pop ebp
ret 4
mov ecx, edi
call fcn.004d8ab0
int3