Function at 0x4e8440
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x5c4
push ebx
push ebp
push edi
push 0x44
xor ebx, ebx
lea eax, [esp + 0x48]
push ebx
push eax
mov byte [0x58cd14], 0
call fcn.004ed3e0
mov ebp, dword [esp + 0x5e4]
mov edi, dword [esp + 0x5e0]
add esp, 0xc
cmp ebp, 0x100
jbe 0x4e8484
mov ecx, dword [edi + 0x400]
mov dword [esp + 0x34], ecx
jmp 0x4e848c
mov dword [esp + 0x34], 0x10
mov ecx, edi
mov edx, ebp
mov eax, dword [ecx]
add dword [esp + eax*4 + 0x44], 1
lea eax, [esp + eax*4 + 0x44]
add ecx, 4
sub edx, 1
jne 0x4e8490
cmp dword [esp + 0x44], ebp
jne 0x4e84c7
mov edx, dword [esp + 0x5e8]
mov eax, dword [esp + 0x5ec]
pop edi
mov dword [edx], ebx
mov dword [eax], ebx
pop ebp
xor eax, eax
pop ebx
add esp, 0x5c4
ret
mov ecx, 1
lea esp, [esp]
cmp dword [esp + ecx*4 + 0x44], ebx
jne 0x4e84de
add ecx, 1
cmp ecx, 0x10
jbe 0x4e84d0
push esi
mov esi, dword [esp + 0x5f0]
cmp dword [esi], ecx
mov edx, ecx
mov dword [esp + 0x10], edx
jae 0x4e84f2
mov dword [esi], ecx
mov eax, 0x10
cmp dword [esp + eax*4 + 0x48], ebx
jne 0x4e8502
sub eax, 1
jne 0x4e84f7
cmp dword [esi], eax
mov dword [esp + 0x2c], eax
jbe 0x4e850c
mov dword [esi], eax
mov esi, 1
shl esi, cl
cmp ecx, eax
jae 0x4e8526
sub esi, dword [esp + ecx*4 + 0x48]
js 0x4e8532
add ecx, 1
add esi, esi
cmp ecx, eax
jb 0x4e8517
mov ecx, dword [esp + eax*4 + 0x48]
sub esi, ecx
mov dword [esp + 0x44], esi
jns 0x4e8542
pop esi
pop edi
pop ebp
mov eax, 2
pop ebx
add esp, 0x5c4
ret
add ecx, esi
mov dword [esp + eax*4 + 0x48], ecx
xor ecx, ecx
sub eax, 1
mov dword [esp + 0xd4], ebx
je 0x4e8573
xor esi, esi
jmp 0x4e8560
add ecx, dword [esp + esi + 0x4c]
add esi, 4
sub eax, 1
mov dword [esp + esi + 0xd4], ecx
jne 0x4e8560
xor esi, esi
mov eax, dword [edi]
add edi, 4
cmp eax, ebx
je 0x4e8598
mov ecx, dword [esp + eax*4 + 0xd0]
lea eax, [esp + eax*4 + 0xd0]
mov dword [esp + ecx*4 + 0x154], esi
add ecx, 1
mov dword [eax], ecx
add esi, 1
cmp esi, ebp
jb 0x4e8575
xor ebp, ebp
lea ecx, [esp + 0x154]
or esi, 0xffffffff
xor edi, edi
cmp edx, dword [esp + 0x2c]
mov dword [esp + 0x28], ebp
mov dword [esp + 0xd0], ebx
mov dword [esp + 0x18], ecx
mov dword [esp + 0x8c], ebx
mov dword [esp + 0x114], ebx
mov dword [esp + 0x3c], ebx
jg 0x4e88cf
lea eax, [edx - 1]
mov dword [esp + 0x34], eax
lea eax, [esp + edx*4 + 0x48]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x24]
mov eax, dword [eax]
test eax, eax
mov dword [esp + 0x14], eax
je 0x4e88b4
lea esp, [esp]
mov eax, dword [esp + esi*4 + 0x90]
sub dword [esp + 0x14], 1
add eax, ebx
cmp edx, eax
jle 0x4e876e
lea ecx, [esp + 0x114]
sub ecx, 4
mov dword [esp + 0x40], ecx
jmp 0x4e8630
mov edx, dword [esp + 0x2c]
mov ecx, dword [esp + 0x5f0]
mov ebp, eax
mov eax, dword [ecx]
sub edx, ebp
add esi, 1
cmp edx, eax
mov dword [esp + 0x30], ebp
jbe 0x4e864e
mov edx, eax
mov ebx, dword [esp + 0x10]
sub ebx, ebp
mov ecx, ebx
mov eax, 1
shl eax, cl
mov ecx, dword [esp + 0x14]
add ecx, 1
cmp eax, ecx
jbe 0x4e8695
mov edi, dword [esp + 0x24]
or ecx, 0xffffffff
sub ecx, dword [esp + 0x14]
add ebx, 1
add eax, ecx
cmp ebx, edx
jae 0x4e8695
lea esp, [esp]
mov ecx, dword [edi + 4]
add edi, 4
add eax, eax
cmp eax, ecx
jbe 0x4e8695
add ebx, 1
sub eax, ecx
cmp ebx, edx
jb 0x4e8680
mov eax, dword [esp + 0x38]
lea edx, [ebx + ebp]
cmp edx, eax
jbe 0x4e86a8
cmp ebp, eax
jae 0x4e86a8
mov ebx, eax
sub ebx, ebp
mov ecx, ebx
mov edi, 1
shl edi, cl
xor ecx, ecx
mov edx, 8
mov dword [esp + esi*4 + 0x90], ebx
lea eax, [edi + 1]
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.004eceb1
mov edx, dword [esp + 0x5f0]
lea ecx, [eax + 8]
add eax, 4
add esp, 4
test esi, esi
mov dword [edx], ecx
mov edx, dword [esp + 0x30]
mov dword [esp + 0x5ec], eax
mov dword [eax], 0
mov dword [esp + 0x3c], ecx
mov dword [esp + esi*4 + 0x114], ecx
je 0x4e874f
mov al, byte [esp + esi*4 + 0x8c]
mov ebp, dword [esp + 0x28]
mov byte [esp + 0x1d], al
add bl, 0x10
mov byte [esp + 0x1c], bl
mov ebx, ecx
mov ecx, edx
mov eax, 1
shl eax, cl
sub ecx, dword [esp + esi*4 + 0x8c]
mov dword [esp + esi*4 + 0xd0], ebp
mov dword [esp + 0x20], ebx
sub eax, 1
and eax, ebp
mov ebp, dword [esp + 0x1c]
shr eax, cl
mov ecx, dword [esp + 0x40]
mov ecx, dword [ecx + esi*4]
mov dword [ecx + eax*8], ebp
mov dword [ecx + eax*8 + 4], ebx
mov eax, dword [esp + esi*4 + 0x90]
add eax, edx
cmp dword [esp + 0x10], eax
jg 0x4e8630
mov ebx, dword [esp + 0x30]
mov ebp, dword [esp + 0x28]
mov ecx, dword [esp + 0x18]
mov eax, dword [esp + 0x5dc]
mov dl, byte [esp + 0x10]
sub dl, bl
lea eax, [esp + eax*4 + 0x154]
cmp ecx, eax
mov byte [esp + 0x1d], dl
jb 0x4e8791
mov byte [esp + 0x1c], 0x63
jmp 0x4e87fe
mov eax, dword [ecx]
cmp eax, dword [esp + 0x5e0]
jae 0x4e87b4
mov dx, word [ecx]
cmp eax, 0x100
setb al
add al, 0xf
mov byte [esp + 0x1c], al
mov word [esp + 0x20], dx
jmp 0x4e87f7
cmp dword [esp + 0x5e8], 0
je 0x4e88fe
cmp dword [esp + 0x5e4], 0
je 0x4e88fe
sub eax, dword [esp + 0x5e0]
mov edx, dword [esp + 0x5e8]
add eax, eax
mov dl, byte [eax + edx]
mov byte [esp + 0x1c], dl
mov edx, dword [esp + 0x5e4]
mov ax, word [eax + edx]
mov word [esp + 0x20], ax
add ecx, 4
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + 0x10]
sub ecx, ebx
mov edx, 1
shl edx, cl
mov eax, ebp
mov ecx, ebx
shr eax, cl
cmp eax, edi
jae 0x4e8840
mov ecx, dword [esp + 0x3c]
lea ecx, [ecx + eax*8]
lea esp, [esp]
mov ebp, dword [esp + 0x1c]
mov dword [ecx], ebp
mov ebp, dword [esp + 0x20]
mov dword [ecx + 4], ebp
lea ebp, [edx*8]
add eax, edx
add ecx, ebp
cmp eax, edi
jb 0x4e8820
mov ebp, dword [esp + 0x28]
mov ecx, dword [esp + 0x34]
mov eax, 1
shl eax, cl
test ebp, eax
je 0x4e8858
nop
xor ebp, eax
shr eax, 1
test ebp, eax
jne 0x4e8850
mov edx, 1
mov ecx, ebx
shl edx, cl
xor ebp, eax
mov dword [esp + 0x28], ebp
sub edx, 1
and edx, ebp
cmp edx, dword [esp + esi*4 + 0xd0]
je 0x4e88a1
jmp 0x4e8880
sub ebx, dword [esp + esi*4 + 0x8c]
sub esi, 1
mov eax, 1
mov ecx, ebx
shl eax, cl
sub eax, 1
and eax, ebp
cmp eax, dword [esp + esi*4 + 0xd0]
jne 0x4e8880
cmp dword [esp + 0x14], 0
mov edx, dword [esp + 0x10]
mov ecx, dword [esp + 0x18]
jne 0x4e8600
add dword [esp + 0x24], 4
add dword [esp + 0x34], 1
add edx, 1
cmp edx, dword [esp + 0x2c]
mov dword [esp + 0x10], edx
jle 0x4e85e7
cmp dword [esp + 0x44], 0
mov ecx, dword [esp + 0x90]
mov edx, dword [esp + 0x5f0]
mov dword [edx], ecx
je 0x4e88f1
mov eax, 1
cmp dword [esp + 0x2c], eax
jne 0x4e88f3
xor eax, eax
pop esi
pop edi
pop ebp
pop ebx
add esp, 0x5c4
ret
pop esi
pop edi
pop ebp
mov byte [0x58cd14], 1
xor eax, eax
pop ebx
add esp, 0x5c4
ret