Function at 0x4d8d80
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x574
xor eax, eax
mov dword [esp + 0xb4], eax
push ebx
mov dword [esp + 0xbc], eax
push esi
mov dword [esp + 0xc4], eax
push edi
mov dword [esp + 0xcc], eax
push ebp
mov dword [esp + 0xd4], eax
mov dword [esp + 0xd8], eax
mov dword [esp + 0xdc], eax
mov dword [esp + 0xe0], eax
mov dword [esp + 0xe4], eax
mov dword [esp + 0xe8], eax
mov edx, dword [esp + 0x588]
mov dword [esp + 0xec], eax
mov ecx, dword [esp + 0x58c]
mov dword [esp + 0xf0], eax
mov dword [esp + 0xf4], eax
mov dword [esp + 0xf8], eax
mov dword [esp + 0xfc], eax
mov dword [esp + 0x100], eax
mov eax, edx
mov esi, dword [eax]
add eax, 4
inc dword [esp + esi*4 + 0xc4]
dec ecx
jne 0x4d8e0c
mov eax, dword [esp + 0x58c]
cmp eax, dword [esp + 0xc4]
jne 0x4d8e52
mov ecx, dword [esp + 0x59c]
mov ebx, dword [esp + 0x5a0]
xor eax, eax
pop ebp
pop edi
mov dword [ecx], 0
pop esi
mov dword [ebx], 0
pop ebx
add esp, 0x574
ret
mov ebx, dword [esp + 0x5a0]
mov ecx, 1
mov eax, dword [ebx]
mov dword [esp + 0x14], eax
lea eax, [esp + 0xc8]
cmp dword [eax], 0
jne 0x4d8e7f
add eax, 4
inc ecx
lea esi, [esp + 0x100]
cmp eax, esi
jbe 0x4d8e6b
mov dword [esp + 0x20], ecx
mov esi, ecx
cmp dword [esp + 0x14], ecx
jae 0x4d8e8f
mov dword [esp + 0x14], esi
mov edi, 0xf
lea eax, [esp + 0x100]
cmp dword [eax], 0
jne 0x4d8eaf
sub eax, 4
dec edi
lea ebp, [esp + 0xc4]
cmp eax, ebp
jne 0x4d8e9b
mov dword [esp + 0x34], edi
cmp dword [esp + 0x14], edi
jbe 0x4d8ebd
mov dword [esp + 0x14], edi
mov eax, dword [esp + 0x14]
mov dword [ebx], eax
mov eax, 1
shl eax, cl
mov dword [esp + 0x3c], eax
cmp ecx, edi
jae 0x4d8ef3
lea eax, [esp + ecx*4 + 0xc4]
mov ebx, dword [eax]
sub dword [esp + 0x3c], ebx
js 0x4d8f12
add eax, 4
inc ecx
mov ebx, dword [esp + 0x3c]
add ebx, ebx
cmp ecx, edi
mov dword [esp + 0x3c], ebx
jb 0x4d8ed9
lea eax, [esp + edi*4 + 0xc4]
mov ecx, dword [eax]
sub dword [esp + 0x3c], ecx
jns 0x4d8f22
mov eax, 0xfffffffd
pop ebp
pop edi
pop esi
pop ebx
add esp, 0x574
ret
mov eax, 0xfffffffd
pop ebp
pop edi
pop esi
pop ebx
add esp, 0x574
ret
add ecx, dword [esp + 0x3c]
lea ebx, [esp + 0x8c]
mov dword [eax], ecx
xor eax, eax
lea ecx, [esp + 0xc8]
dec edi
mov dword [esp + 0x88], eax
je 0x4d8f4f
add eax, dword [ecx]
add ecx, 4
mov dword [ebx], eax
add ebx, 4
dec edi
jne 0x4d8f42
xor edi, edi
mov eax, dword [edx]
add edx, 4
test eax, eax
je 0x4d8f6d
lea ecx, [esp + eax*4 + 0x84]
mov eax, dword [ecx]
inc eax
mov dword [ecx], eax
mov dword [esp + eax*4 + 0x100], edi
inc edi
cmp dword [esp + 0x58c], edi
ja 0x4d8f51
xor edx, edx
lea eax, [esp + 0x104]
mov dword [esp + 0x18], edx
mov dword [esp + 0x84], edx
mov dword [esp + 0x38], eax
mov dword [esp + 0x48], edx
mov eax, dword [esp + 0x14]
mov dword [esp + 0x1c], edx
neg eax
mov dword [esp + 0x10], eax
cmp esi, dword [esp + 0x34]
mov dword [esp + 0x24], 0xffffffff
jg 0x4d9227
mov eax, dword [esp + 0x20]
lea ecx, [esp + eax*4 + 0xc4]
mov dword [esp + 0x30], ecx
mov eax, dword [ecx]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x28]
dec dword [esp + 0x28]
test eax, eax
je 0x4d9215
mov eax, dword [esp + 0x14]
add eax, dword [esp + 0x10]
cmp eax, dword [esp + 0x20]
jge 0x4d90f5
mov esi, dword [esp + 0x24]
mov eax, dword [esp + 0x28]
shl esi, 2
inc eax
mov dword [esp + 0x2c], eax
add esi, 4
mov eax, dword [esp + 0x14]
mov edi, dword [esp + 0x34]
inc dword [esp + 0x24]
add dword [esp + 0x10], eax
sub edi, dword [esp + 0x10]
cmp eax, edi
jae 0x4d9017
mov edi, eax
mov ebx, dword [esp + 0x20]
mov edx, 1
sub ebx, dword [esp + 0x10]
mov cl, bl
shl edx, cl
cmp dword [esp + 0x2c], edx
jae 0x4d9055
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x30]
inc eax
sub edx, eax
cmp ebx, edi
jae 0x4d9055
inc ebx
cmp ebx, edi
jae 0x4d9055
mov eax, dword [ecx + 4]
add edx, edx
add ecx, 4
cmp eax, edx
jae 0x4d9055
sub edx, eax
inc ebx
cmp ebx, edi
jb 0x4d9042
mov eax, 1
mov cl, bl
shl eax, cl
mov ecx, dword [esp + 0x5a4]
push 8
mov dword [esp + 0x20], eax
inc eax
push eax
mov edx, dword [ecx + 0x28]
mov eax, dword [esp + 0x5ac]
push edx
call dword [eax + 0x20]
add esp, 0xc
test eax, eax
je 0x4d9245
lea edx, [eax + 8]
mov ecx, dword [esp + 0x59c]
add eax, 4
mov dword [esp + esi + 0x48], edx
mov dword [ecx], edx
mov dword [esp + 0x59c], eax
mov dword [eax], 0
test esi, esi
je 0x4d90e3
mov eax, dword [esp + 0x18]
mov cl, byte [esp + 0x14]
mov dword [esp + esi + 0x84], eax
mov byte [esp + 0x41], cl
mov ecx, dword [esp + 0x10]
mov byte [esp + 0x40], bl
mov ebx, dword [esp + 0x18]
sub cl, byte [esp + 0x14]
shr ebx, cl
shl ebx, 3
mov dword [esp + 0x44], edx
mov eax, dword [esp + 0x40]
add ebx, dword [esp + esi + 0x44]
mov dword [ebx], eax
mov dword [ebx + 4], edx
mov eax, dword [esp + 0x10]
add eax, dword [esp + 0x14]
cmp eax, dword [esp + 0x20]
jl 0x4d8ffa
mov bl, byte [esp + 0x10]
mov cl, byte [esp + 0x20]
sub cl, bl
mov eax, dword [esp + 0x58c]
mov byte [esp + 0x41], cl
lea ebp, [esp + eax*4 + 0x104]
cmp ebp, dword [esp + 0x38]
ja 0x4d911e
mov byte [esp + 0x40], 0xc0
jmp 0x4d916c
mov eax, dword [esp + 0x38]
mov esi, dword [eax]
cmp dword [esp + 0x590], esi
jbe 0x4d913f
mov al, 0
cmp esi, 0x100
adc al, 0xff
and al, 0x60
mov byte [esp + 0x40], al
jmp 0x4d9163
sub esi, dword [esp + 0x590]
mov eax, dword [esp + 0x598]
shl esi, 2
mov ebp, dword [esp + 0x594]
mov eax, dword [esi + eax]
mov esi, dword [esi + ebp]
add al, 0x50
mov byte [esp + 0x40], al
add dword [esp + 0x38], 4
mov dword [esp + 0x44], esi
mov esi, 1
mov edi, dword [esp + 0x18]
shl esi, cl
mov cl, bl
shr edi, cl
cmp edi, dword [esp + 0x1c]
jae 0x4d91a8
lea ecx, [edx + edi*8]
lea eax, [esi*8]
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x40]
mov ebp, dword [esp + 0x44]
add edi, esi
mov dword [ecx], eax
mov dword [ecx + 4], ebp
add ecx, dword [esp + 0x2c]
cmp edi, dword [esp + 0x1c]
jb 0x4d918f
mov eax, 1
mov cl, byte [esp + 0x20]
dec cl
shl eax, cl
test dword [esp + 0x18], eax
je 0x4d91c8
xor dword [esp + 0x18], eax
shr eax, 1
test dword [esp + 0x18], eax
jne 0x4d91bb
mov cl, bl
xor dword [esp + 0x18], eax
mov eax, dword [esp + 0x24]
lea esi, [esp + eax*4 + 0x84]
mov eax, 1
shl eax, cl
dec eax
and eax, dword [esp + 0x18]
cmp eax, dword [esi]
je 0x4d8fc8
sub esi, 4
mov eax, dword [esp + 0x14]
dec dword [esp + 0x24]
sub dword [esp + 0x10], eax
mov eax, 1
mov cl, byte [esp + 0x10]
shl eax, cl
dec eax
and eax, dword [esp + 0x18]
cmp eax, dword [esi]
jne 0x4d91ed
jmp 0x4d8fc8
inc dword [esp + 0x20]
mov eax, dword [esp + 0x20]
cmp eax, dword [esp + 0x34]
jle 0x4d8fb3
cmp dword [esp + 0x3c], 0
je 0x4d9271
cmp dword [esp + 0x34], 1
je 0x4d9271
mov eax, 0xfffffffb
pop ebp
pop edi
pop esi
pop ebx
add esp, 0x574
ret
cmp dword [esp + 0x24], 0
je 0x4d9261
mov eax, dword [esp + 0x5a4]
mov ecx, dword [esp + 0x48]
push eax
push ecx
call fcn.004d9570
add esp, 8
mov eax, 0xfffffffc
pop ebp
pop edi
pop esi
pop ebx
add esp, 0x574
ret
xor eax, eax
pop ebp
pop edi
pop esi
pop ebx
add esp, 0x574
ret