Function at 0x4d23a0
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.00470ec0
push 0xffffffffffffffff
push 0
lea ecx, [esi + 0x28]
call fcn.004d2d40
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.004d2520
test eax, eax
je 0x4d22f9
push edi
nop
movzx edi, word [esi + 0x3c]
test ebx, ebx
je 0x4d207b
cmp edi, 0x46
jne 0x4d2066
push 0
mov ecx, esi
call fcn.004d1660
test eax, eax
je case.0x4d2090.68
mov ecx, dword [esi + 8]
mov eax, dword [esi]
movzx eax, word [eax + ecx*2]
cmp eax, 0x30
je 0x4d2055
cmp eax, 0x31
jne case.0x4d2090.68
sub eax, 0x30
mov dword [esi + 0x10], eax
lea eax, [ecx + 1]
mov dword [esi + 8], eax
jmp 0x4d22e9
cmp edi, 0x4d
je 0x4d2074
cmp edi, 0x6d
jne case.0x4d2090.68
mov dword [ebp + 0xc], 0
mov ebx, edi
lea eax, [ebx - 0x43]
cmp eax, 0x37
ja case.0x4d2090.68
movzx eax, byte [eax + 0x4d231c]
jmp dword [eax*4 + 0x4d2308]
mov ecx, esi
call fcn.004d10a0
add ebx, 0xffffffb8
cmp ebx, 0x2e
ja case.0x4d20ad.1
movzx eax, byte [ebx + 0x4d2370]
jmp dword [eax*4 + 0x4d2354]
push 0
mov ecx, esi
call fcn.004d23a0
fadd dword [esi + 0x4c]
fstp dword [esi + 0x4c]
jmp case.0x4d20ad.1
lea eax, [ebp - 0x10]
push 0
push edi
push eax
mov ecx, esi
call fcn.004d24d0
mov ecx, dword [eax]
mov eax, dword [eax + 4]
mov dword [esi + 0x4c], ecx
mov dword [esi + 0x50], eax
jmp case.0x4d20ad.1
push 0
mov ecx, esi
call fcn.004d23a0
fadd dword [esi + 0x50]
jmp 0x4d210a
push 0
mov ecx, esi
call fcn.004d23a0
fstp dword [esi + 0x4c]
jmp case.0x4d20ad.1
lea eax, [ebp - 0x18]
jmp 0x4d20c8
push 0
mov ecx, esi
call fcn.004d23a0
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.004d16c0
push 1
mov ecx, esi
call fcn.004d1660
test eax, eax
jne 0x4d20a1
mov dword [ebp + 8], 0x4c
jmp 0x4d22e6
push 0
push edi
lea eax, [ebp - 0x20]
mov ecx, esi
push eax
call fcn.004d24d0
sub esp, 8
mov ecx, dword [eax]
mov eax, dword [eax + 4]
mov dword [esi + 0x50], eax
fld dword [esi + 0x50]
fstp dword [esp + 4]
mov dword [esi + 0x4c], ecx
mov ecx, esi
fld dword [esi + 0x4c]
fstp dword [esp]
call fcn.004d0730
mov ecx, dword [esi + 0x50]
mov eax, dword [esi + 0x4c]
mov dword [esi + 0x58], ecx
mov ecx, esi
push 1
mov dword [esi + 0xc], 1
mov dword [esi + 0x54], eax
mov dword [ebp + 8], 0x4d
call fcn.004d1660
test eax, eax
je 0x4d22e6
mov dword [ebp + 8], 0x4c
push 0
push edi
lea eax, [ebp - 0x28]
mov ecx, esi
push eax
call fcn.004d24d0
sub esp, 8
mov ecx, dword [eax]
mov eax, dword [eax + 4]
mov dword [esi + 0x50], eax
fld dword [esi + 0x50]
fstp dword [esp + 4]
mov dword [esi + 0x4c], ecx
mov ecx, esi
fld dword [esi + 0x4c]
fstp dword [esp]
call fcn.004d16c0
push 1
mov ecx, esi
call fcn.004d1660
test eax, eax
jne 0x4d21a3
jmp 0x4d22e6
mov ecx, esi
call fcn.004d10a0
lea esp, [esp]
cmp ebx, 0x53
je 0x4d2217
cmp ebx, 0x73
je 0x4d2217
push 0
push edi
lea eax, [ebp - 0x30]
mov ecx, esi
push eax
call fcn.004d24d0
push 1
fld dword [eax]
fstp dword [ebp - 8]
fld dword [eax + 4]
lea eax, [ebp - 0x38]
jmp 0x4d2241
cmp word [ebp + 8], 0x43
jne 0x4d2233
lea eax, [ebp - 0x40]
mov ecx, esi
push eax
call fcn.004d2560
fld dword [eax]
fstp dword [ebp - 8]
fld dword [eax + 4]
jmp 0x4d223c
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.004d24d0
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.004d24d0
sub esp, 0x18
mov ecx, dword [eax]
mov eax, dword [eax + 4]
mov dword [esi + 0x50], eax
fld dword [esi + 0x50]
fstp dword [esp + 0x14]
mov dword [esi + 0x4c], ecx
mov ecx, esi
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.004d07b0
push 1
mov ecx, esi
mov dword [ebp + 8], 0x43
call fcn.004d1660
test eax, eax
jne 0x4d21f0
jmp 0x4d22e6
mov ecx, esi
call fcn.004d10a0
mov ecx, esi
call fcn.004d0860
mov eax, dword [esi + 0x54]
mov ecx, dword [esi + 0x58]
mov dword [esi + 0xc], 0
mov dword [ebp + 8], 0x5a
mov dword [esi + 0x4c], eax
mov dword [esi + 0x50], ecx
mov ebx, dword [ebp + 0xc]
mov ecx, esi
call fcn.004d2520
test eax, eax
jne 0x4d2020
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc
mov ecx, esi
call fcn.004d31e0
in eax, 0x21
dec ebp
add byte [edi + 0x41004d20], dl
and dword [ebp], ecx
mov esi, 0x1004d22
and ecx, dword [ebp]
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
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
out dx, al
and byte [ebp], cl
cld
and byte [ebp], cl
add dword [ecx], esp
dec ebp
add byte [eax + 0x20c5004d], dh
dec ebp
add al, ah
and byte [ebp], cl
or eax, 0x4d21
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
push edi
push dword [ebp + 8]
mov edi, ecx
call fcn.004d1660
test eax, eax
je 0x4d24bc
mov ecx, dword [edi + 8]
mov esi, dword [edi]
mov dword [ebp - 8], 0
movzx eax, word [esi + ecx*2]
cmp eax, 0x2b
je 0x4d23dd
mov edx, ecx
cmp eax, 0x2d
jne 0x4d23e3
mov dword [ebp - 8], 1
inc ecx
mov edx, ecx
mov dword [edi + 8], ecx
cmp word [esi + ecx*2], 0x30
fld qword [0x5d8ed8]
mov dword [ebp + 8], 0
jb 0x4d2437
lea eax, [esi + 2]
lea eax, [eax + ecx*2]
mov dword [ebp - 4], eax
movzx eax, word [esi + ecx*2]
cmp eax, 0x39
ja 0x4d2437
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 0x4d2400
cmp word [esi + edx*2], 0x2e
jne 0x4d2498
inc edx
mov dword [ebp - 4], 0x3f800000
mov dword [edi + 8], edx
cmp word [esi + edx*2], 0x30
jb 0x4d2498
fld dword [ebp - 4]
lea ecx, [esi + 2]
lea ecx, [ecx + edx*2]
movzx eax, word [esi + edx*2]
cmp eax, 0x39
ja 0x4d2496
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 0x4d2459
fstp st(0)
cmp dword [ebp - 8], 0
fstp st(0)
movss xmm0, dword [ebp + 8]
pop edi
pop esi
je 0x4d24ae
xorps xmm0, xmmword [0x5e5240]
movss dword [ebp + 8], xmm0
fld dword [ebp + 8]
mov esp, ebp
pop ebp
ret 4
mov ecx, edi
call fcn.004d31e0
int3