Function at 0x4e0171
Capabilities:
Encode data using xor

Disassembly:
push 0x5c
mov eax, 0x525aac
call fcn.0051c5b5
mov dword [ebp - 0x38], edx
mov esi, ecx
mov eax, dword [edx]
lea ecx, [ebp - 0x68]
push ecx
mov ecx, edx
call dword [eax + 0x50]
xor ebx, ebx
mov ecx, esi
mov edi, ebx
mov eax, dword [eax + 4]
mov dword [ebp - 0x3c], eax
call fcn.004d6543
xor ecx, ecx
inc ecx
test al, al
je 0x4e02cb
mov ecx, dword [ebp - 0x3c]
push esi
push dword [ebp - 0x38]
call fcn.004dadac
mov dword [ebp - 0x40], eax
mov eax, dword [eax + 0x3c]
nop
xor ecx, ecx
inc ecx
cmp eax, ecx
je 0x4e02cb
nop word [eax + eax]
push esi
push dword [ebp - 0x38]
lea ecx, [ebp - 0x30]
call fcn.004d66c4
push esi
push dword [ebp - 0x38]
lea ecx, [ebp - 0x60]
mov dword [ebp - 4], ebx
call fcn.004d66c4
xor eax, eax
mov ecx, esi
inc eax
mov byte [ebp - 4], al
call fcn.004fa4e9
mov ecx, esi
mov eax, dword [eax + 0x14]
mov dword [ebp - 0x38], eax
call fcn.004fa4e9
mov ebx, dword [ebp - 0x40]
lea ecx, [ebp - 0x30]
push ecx
mov ecx, ebx
mov eax, dword [eax + 0x14]
add eax, 0x58
mov dword [ebp - 0x3c], eax
mov eax, dword [ebx]
call dword [eax + 0x14]
mov eax, dword [ebx]
lea ecx, [ebp - 0x60]
push ecx
mov ecx, ebx
call dword [eax + 0x18]
mov ecx, dword [ebp - 0x2c]
lea edx, [ebp - 0x60]
push edx
lea edx, [ebp - 0x30]
push edx
mov eax, dword [ecx]
mov eax, dword [eax + 0x10]
call eax
test al, al
jne 0x4e0293
mov ebx, dword [ebp - 0x3c]
mov ecx, dword [ebp - 0x38]
lea edx, [ebp - 0x28]
call fcn.004dfdba
lea edx, [ebp - 0x18]
mov ecx, ebx
lea esi, [eax + 2]
call fcn.004dff85
add esi, eax
lea edx, [ebp - 0x30]
xor ecx, ecx
mov eax, esi
inc ecx
or eax, ecx
mov ecx, dword [ebp - 0x2c]
bsr eax, eax
push edx
imul eax, eax, 9
add eax, 0x49
shr eax, 6
add eax, esi
add edi, eax
mov eax, dword [ecx]
call dword [eax + 0x44]
mov ecx, dword [ebp - 0x2c]
lea edx, [ebp - 0x60]
push edx
lea edx, [ebp - 0x30]
push edx
mov eax, dword [ecx]
mov eax, dword [eax + 0x10]
call eax
test al, al
je 0x4e0240
mov byte [ebp - 4], 2
lea edx, [ebp - 0x60]
mov ecx, dword [ebp - 0x5c]
push edx
mov eax, dword [ecx]
call dword [eax + 0x3c]
lea ecx, [ebp - 0x58]
call fcn.004d664e
mov dword [ebp - 4], 3
lea eax, [ebp - 0x30]
mov ecx, dword [ebp - 0x2c]
push eax
mov edx, dword [ecx]
call dword [edx + 0x3c]
lea ecx, [ebp - 0x28]
call fcn.004d664e
jmp case.default.0x4e0317
cmp dword [esi + 0x20], 3
jne 0x4e02e2
mov ecx, dword [ebp - 0x3c]
push esi
push dword [ebp - 0x38]
call fcn.004d7d87
mov dword [ebp - 0x34], eax
jmp 0x4e0306
mov eax, dword [esi + 0x30]
mov eax, dword [eax + 0x10]
cmp byte [eax + 0x2f], bl
jne 0x4e0303
mov ecx, dword [ebp - 0x3c]
push esi
push dword [ebp - 0x38]
call fcn.004d7cf6
test al, al
mov ecx, ebx
push 1
pop eax
cmovne ecx, eax
mov dword [ebp - 0x34], ecx
mov ecx, esi
call fcn.004d6518
dec eax
cmp eax, 0x11
ja case.default.0x4e0317
jmp dword [eax*4 + 0x4e0662]
cmp dword [esi + 0x20], 3
jne 0x4e034e
cmp dword [ebp - 0x34], ebx
jbe case.default.0x4e0317
mov ecx, dword [ebp - 0x3c]
push ebx
push esi
push dword [ebp - 0x38]
call fcn.004d84b7
mov ecx, eax
call fcn.004cf86c
add edi, eax
inc ebx
cmp ebx, dword [ebp - 0x34]
jb 0x4e032d
jmp case.default.0x4e0317
mov ecx, dword [ebp - 0x3c]
push esi
push dword [ebp - 0x38]
call fcn.004d8376
mov ecx, eax
call fcn.004cf86c
mov edi, eax
jmp case.default.0x4e0317
cmp dword [esi + 0x20], 3
jne 0x4e0398
cmp dword [ebp - 0x34], ebx
jbe case.default.0x4e0317
mov ecx, dword [ebp - 0x3c]
push ebx
push esi
push dword [ebp - 0x38]
call fcn.004d8755
push edx
push eax
call fcn.004cf800
add edi, eax
inc ebx
cmp ebx, dword [ebp - 0x34]
jb 0x4e0377
jmp case.default.0x4e0317
mov ecx, dword [ebp - 0x3c]
push esi
push dword [ebp - 0x38]
call fcn.004d85fd
push edx
push eax
call fcn.004cf800
jmp 0x4e0361
cmp dword [esi + 0x20], 3
jne 0x4e03f0
cmp dword [ebp - 0x34], ebx
jbe case.default.0x4e0317
mov ecx, dword [ebp - 0x3c]
push ebx
push esi
push dword [ebp - 0x38]
call fcn.004d84b7
mov ecx, eax
add eax, eax
sar ecx, 0x1f
xor ecx, eax
xor eax, eax
inc eax
or ecx, eax
bsr eax, ecx
imul eax, eax, 9
add eax, 0x49
shr eax, 6
add edi, eax
inc ebx
cmp ebx, dword [ebp - 0x34]
jb 0x4e03bc
jmp case.default.0x4e0317
mov ecx, dword [ebp - 0x3c]
push esi
push dword [ebp - 0x38]
call fcn.004d8376
mov ecx, eax
add eax, eax
sar ecx, 0x1f
xor ecx, eax
xor eax, eax
inc eax
or ecx, eax
bsr eax, ecx
imul edi, eax, 9
add edi, 0x49
shr edi, 6
jmp case.default.0x4e0317
cmp dword [esi + 0x20], 3
jne 0x4e044b
cmp dword [ebp - 0x34], ebx
jbe case.default.0x4e0317
mov ecx, dword [ebp - 0x3c]
push ebx
push esi
push dword [ebp - 0x38]
call fcn.004d8755
push edx
push eax
call fcn.004d1212
add edi, eax
inc ebx
cmp ebx, dword [ebp - 0x34]
jb 0x4e042a
jmp case.default.0x4e0317
mov ecx, dword [ebp - 0x3c]
push esi
push dword [ebp - 0x38]
call fcn.004d85fd
push edx
push eax
call fcn.004d1212
jmp 0x4e0361
cmp dword [esi + 0x20], 3
jne 0x4e049d
cmp dword [ebp - 0x34], ebx
jbe case.default.0x4e0317
mov ecx, dword [ebp - 0x3c]
push ebx
push esi
push dword [ebp - 0x38]
call fcn.004d89e3
xor ecx, ecx
inc ecx
or eax, ecx
bsr eax, eax
imul eax, eax, 9
add eax, 0x49
shr eax, 6
add edi, eax
inc ebx
cmp ebx, dword [ebp - 0x34]
jb 0x4e0472
jmp case.default.0x4e0317
mov ecx, dword [ebp - 0x3c]
push esi
push dword [ebp - 0x38]
call fcn.004d88a2
xor ecx, ecx
inc ecx
or eax, ecx
bsr eax, eax
jmp 0x4e040d
cmp dword [esi + 0x20], 3
jne 0x4e04e6
cmp dword [ebp - 0x34], ebx
jbe case.default.0x4e0317
mov ecx, dword [ebp - 0x3c]
push ebx
push esi
push dword [ebp - 0x38]
call fcn.004d8c81
push edx
push eax
call fcn.004cf800
add edi, eax
inc ebx
cmp ebx, dword [ebp - 0x34]
jb 0x4e04c5
jmp case.default.0x4e0317
mov ecx, dword [ebp - 0x3c]
push esi
push dword [ebp - 0x38]
call fcn.004d8b29
jmp 0x4e03a4
mov edi, dword [ebp - 0x34]
shl edi, 2
jmp case.default.0x4e0317
mov edi, dword [ebp - 0x34]
shl edi, 3
jmp case.default.0x4e0317
mov edi, dword [ebp - 0x34]
jmp case.default.0x4e0317
cmp dword [esi + 0x20], 3
jne 0x4e0545
cmp dword [ebp - 0x34], ebx
jbe case.default.0x4e0317
mov ecx, dword [ebp - 0x3c]
push ebx
push esi
push dword [ebp - 0x38]
call fcn.004da3e5
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0x28]
add edi, eax
inc ebx
cmp ebx, dword [ebp - 0x34]
jb 0x4e0524
jmp case.default.0x4e0317
push ecx
mov ecx, dword [ebp - 0x3c]
push esi
push dword [ebp - 0x38]
call fcn.004d9f0f
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0x28]
jmp 0x4e0361
cmp dword [esi + 0x20], 3
jne 0x4e058e
cmp dword [ebp - 0x34], ebx
jbe case.default.0x4e0317
mov ecx, dword [ebp - 0x3c]
push ebx
push esi
push dword [ebp - 0x38]
call fcn.004da3e5
mov ecx, eax
call fcn.004d4a0a
add edi, eax
inc ebx
cmp ebx, dword [ebp - 0x34]
jb 0x4e056d
jmp case.default.0x4e0317
push ecx
mov ecx, dword [ebp - 0x3c]
push esi
push dword [ebp - 0x38]
call fcn.004d9f0f
mov ecx, eax
call fcn.004d4a0a
jmp 0x4e0361
cmp dword [esi + 0x20], 3
jne 0x4e05d8
cmp dword [ebp - 0x34], ebx
jbe case.default.0x4e0317
mov ecx, dword [ebp - 0x3c]
push ebx
push esi
push dword [ebp - 0x38]
call fcn.004d9d03
mov ecx, dword [eax + 8]
call fcn.004cf86c
add edi, eax
inc ebx
cmp ebx, dword [ebp - 0x34]
jb 0x4e05b6
jmp case.default.0x4e0317
mov ecx, dword [ebp - 0x3c]
push esi
push dword [ebp - 0x38]
call fcn.004d9afc
mov ecx, dword [eax + 8]
call fcn.004cf86c
jmp 0x4e0361
mov eax, ebx
mov dword [ebp - 0x40], eax
cmp dword [ebp - 0x34], eax
jbe case.default.0x4e0317
mov dword [ebp - 0x28], ebx
mov dword [ebp - 0x18], ebx
mov dword [ebp - 0x14], 0xf
mov byte [ebp - 0x28], bl
mov dword [ebp - 4], 4
cmp dword [esi + 0x20], 3
push ecx
mov ecx, dword [ebp - 0x3c]
jne 0x4e0628
push eax
push esi
push dword [ebp - 0x38]
call fcn.004d9982
jmp 0x4e0631
push esi
push dword [ebp - 0x38]
call fcn.004d968b
mov ecx, eax
mov eax, dword [ecx + 0x10]
or eax, 1
bsr eax, eax
imul eax, eax, 9
add eax, 0x49
shr eax, 6
add eax, dword [ecx + 0x10]
or dword [ebp - 4], 0xffffffff
add edi, eax
mov eax, dword [ebp - 0x40]
inc eax
mov dword [ebp - 0x40], eax
cmp eax, dword [ebp - 0x34]
jb 0x4e05fb
mov eax, edi
call fcn.0051c56a
ret