Function at 0x4d9ac0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x48
mov eax, dword [0x6480b4]
xor eax, ebp
mov dword [ebp - 4], eax
mov edx, dword [0x64f4a8]
push ebx
push esi
xor ebx, ebx
push edi
test edx, edx
je 0x4d9b09
cmp dword [0x64f4a4], ebx
je 0x4d9b09
mov ecx, edx
lea esi, [ecx + 2]
nop dword [eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x4d9af0
sub ecx, esi
sar ecx, 1
cmp ecx, 0xe
jne 0x4d9b1c
mov ebx, 1
pop edi
pop esi
mov eax, ebx
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0058bb64
mov esp, ebp
pop ebp
ret
push edx
call fcn.005d51a8
push 0xffffffffffffffff
push dword [0x64f4a8]
push 0xffffffffffffffff
call fcn.004fc0a0
lea esi, [eax + 1]
push esi
call fcn.00479f2b
mov edi, eax
add esp, 0x14
mov dword [ebp - 0x40], edi
test edi, edi
je 0x4d9e35
push 0xffffffffffffffff
push dword [0x64f4a8]
push esi
push edi
push 0xffffffffffffffff
call fcn.004fbde0
push 0xffffffffffffffff
push dword [0x64f4a4]
push 0xffffffffffffffff
call fcn.004fc0a0
lea ebx, [eax + 1]
push ebx
call fcn.00479f2b
mov esi, eax
add esp, 0x24
mov dword [ebp - 0x44], esi
mov dword [ebp - 0x38], esi
test esi, esi
je 0x4d9e24
push 0xffffffffffffffff
push dword [0x64f4a4]
push ebx
push esi
push 0xffffffffffffffff
call fcn.004fbde0
mov ecx, esi
mov dword [ebp - 0x34], esi
add esp, 0x14
mov edx, ecx
mov bl, byte [ecx]
test bl, bl
je 0x4d9c6e
nop dword [eax + eax]
cmp bl, 0x7f
jbe 0x4d9c66
mov al, bl
and al, 0xe0
cmp al, 0xc0
jne 0x4d9c66
mov eax, dword [ebp - 0x34]
inc eax
mov dword [ebp - 0x34], eax
mov bh, byte [eax]
test bh, bh
je 0x4d9c6b
movzx ecx, bl
mov eax, ecx
and ecx, 3
shr eax, 2
and eax, 7
lea ecx, [ecx + eax*4]
movzx eax, bh
shl ecx, 6
and eax, 0x3f
add ecx, eax
xor eax, eax
cmp dword [eax*4 + 0x5f9ad8], ecx
je 0x4d9c05
inc eax
cmp eax, 0x20
jb 0x4d9bf4
jmp 0x4d9c0b
lea ecx, [eax + 0x80]
cmp ecx, 0x100
jae 0x4d9c57
cmp ecx, 0x20
jb 0x4d9c43
cmp ecx, 0x81
je 0x4d9c43
cmp ecx, 0x8d
je 0x4d9c43
cmp ecx, 0x8f
je 0x4d9c43
cmp ecx, 0x90
je 0x4d9c43
cmp ecx, 0x9d
je 0x4d9c43
mov byte [edx], cl
inc edx
mov ecx, dword [ebp - 0x34]
mov bl, byte [ecx + 1]
inc ecx
mov dword [ebp - 0x34], ecx
test bl, bl
jne 0x4d9bb0
jmp 0x4d9c6e
mov ecx, dword [ebp - 0x34]
mov byte [edx], bl
mov al, byte [ecx]
mov byte [edx + 1], al
add edx, 2
jmp 0x4d9c46
mov byte [edx], bl
inc edx
jmp 0x4d9c46
mov byte [edx], bl
inc edx
mov byte [edx], 0
mov ebx, 4
mov dword [ebp - 0x1c], edi
nop dword [eax]
push 0x2d
push dword [ebp + ebx - 0x20]
call fcn.005ca430
mov ecx, eax
add esp, 8
test ecx, ecx
je 0x4d9c9b
sub eax, dword [ebp + ebx - 0x20]
inc ecx
jmp 0x4d9ca2
xor eax, eax
mov ecx, 0x5ef904
mov dword [ebp + ebx - 0x1c], ecx
mov dword [ebp + ebx - 0x34], eax
add ebx, 4
cmp ebx, 0x18
jb 0x4d9c80
mov ecx, esi
mov eax, 0x671497
mov dword [ebp - 0x34], eax
mov dword [ebp - 0x3c], eax
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x4d9cc2
sub ecx, edx
je 0x4d9d14
mov dword [ebp - 0x38], 0
xor edi, edi
movzx ebx, byte [edi + esi]
mov eax, ebx
lea edx, [eax - 0x61]
sub al, 0x20
movzx ecx, al
cmp dx, 0x19
mov eax, ebx
cmova ecx, eax
inc edi
movzx eax, cl
mov ecx, dword [ebp - 0x38]
xor eax, ecx
xor dword [ebp - 0x34], eax
add ecx, 0x4781
mov dword [ebp - 0x38], ecx
mov ecx, esi
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x4d9d07
sub ecx, edx
cmp edi, ecx
jb 0x4d9cd6
mov ecx, str.default
xor ebx, ebx
lea edx, [ecx + 1]
nop
mov al, byte [ecx]
inc ecx
test al, al
jne 0x4d9d20
sub ecx, edx
je 0x4d9d65
xor esi, esi
mov edi, 0x671497
movzx eax, byte [ebx + str.default]
push eax
call fcn.005d094d
mov ecx, str.default
xor eax, esi
add esp, 4
xor edi, eax
inc ebx
add esi, 0x4781
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x4d9d55
sub ecx, edx
cmp ebx, ecx
jb 0x4d9d32
mov dword [ebp - 0x3c], edi
mov esi, dword [ebp - 0x3c]
xor edi, edi
xor ebx, ebx
nop dword [eax]
push dword [ebp + ebx - 0x30]
push dword [ebp + ebx - 0x1c]
push 0
call dword [0x644e78]
mov ecx, dword [ebp - 0x34]
add esi, eax
add ecx, eax
xor esi, edi
xor ecx, edi
add ebx, 4
add esp, 0xc
mov dword [ebp - 0x34], ecx
add edi, 0x347f
cmp ebx, 0x14
jb 0x4d9d70
mov ebx, dword [ebp - 8]
lea eax, [ebp - 0x48]
push 0x10
push eax
push ebx
mov dword [ebp - 0x3c], esi
call fcn.005d1e52
mov esi, dword [ebp - 0x44]
lea edx, [ebx + 1]
mov edi, dword [ebp - 0x40]
add esp, 0xc
mov ecx, eax
nop
mov al, byte [ebx]
inc ebx
test al, al
jne 0x4d9dc0
sub ebx, edx
cmp ebx, 4
jne 0x4d9df1
mov eax, dword [ebp - 0x34]
movzx eax, ax
cmp ecx, eax
je 0x4d9de2
mov eax, dword [ebp - 0x3c]
movzx eax, ax
cmp ecx, eax
jne 0x4d9df1
mov eax, dword [ebp - 0x48]
cmp byte [eax], 0
jne 0x4d9df1
mov ebx, 1
jmp 0x4d9df3
xor ebx, ebx
test esi, esi
je 0x4d9e00
push esi
call fcn.0058bb5f
add esp, 4
test edi, edi
je 0x4d9b09
push edi
call fcn.0058bb5f
add esp, 4
mov eax, ebx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0058bb64
mov esp, ebp
pop ebp
ret
lea ecx, [ebp - 0x38]
call fcn.0049a7e0
push edi
call fcn.0058bb5f
add esp, 4
mov ecx, dword [ebp - 4]
xor eax, eax
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.0058bb64
mov esp, ebp
pop ebp
ret