Function at 0x4d3499
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x62c
push edi
push esi
push ebx
lea eax, [ebp - 0x9c]
mov dword [ebp - 0x5cc], eax
mov dword [ebp - 0x5b8], 0x10
cmp dword [ebp + 0xc], 0x100
jbe 0x4d34d3
mov edx, dword [ebp + 8]
mov edx, dword [edx + 0x400]
mov dword [ebp - 0x5b8], edx
lea ebx, [ebp - 0x50]
xor edx, edx
mov edi, ebx
mov eax, edx
cld
mov ecx, 0x11
rep stosd dword es:[edi], eax
mov eax, dword [ebp + 8]
mov dword [ebp - 0x5d0], eax
mov edx, dword [ebp + 0xc]
mov dword [ebp - 0x5c4], edx
mov edx, ebx
nop
mov ecx, dword [ebp - 0x5d0]
mov eax, dword [ecx]
shl eax, 2
inc dword [eax + edx]
add ecx, 4
mov dword [ebp - 0x5d0], ecx
dec dword [ebp - 0x5c4]
jne 0x4d34f9
mov ebx, dword [ebp + 0xc]
cmp dword [ebp - 0x50], ebx
jne 0x4d3539
mov esi, dword [ebp + 0x1c]
mov dword [esi], 0
mov edi, dword [ebp + 0x20]
mov dword [edi], 0
xor eax, eax
jmp 0x4d3c46
mov ebx, 1
cmp dword [ebp - 0x4c], 0
jne 0x4d3555
lea eax, [ebp - 0x50]
mov esi, esi
inc ebx
cmp ebx, 0x10
ja 0x4d3555
cmp dword [eax + ebx*4], 0
je 0x4d3549
mov dword [ebp - 0x5c8], ebx
mov eax, dword [ebp + 0x20]
cmp dword [eax], ebx
jae 0x4d3564
mov dword [eax], ebx
mov dword [ebp - 0x5c4], 0x10
mov ecx, dword [ebp + 0x20]
mov edx, dword [ecx]
cmp dword [ebp - 0x10], 0
jne 0x4d3591
lea eax, [ebp - 0x50]
nop
dec dword [ebp - 0x5c4]
je 0x4d3591
mov esi, dword [ebp - 0x5c4]
cmp dword [eax + esi*4], 0
je 0x4d357d
mov edi, dword [ebp - 0x5c4]
mov dword [ebp - 0x5bc], edi
cmp edx, edi
jbe 0x4d35a6
mov eax, dword [ebp + 0x20]
mov dword [eax], edi
mov dword [ebp - 0x5dc], 1
mov ecx, ebx
shl dword [ebp - 0x5dc], cl
cmp ebx, dword [ebp - 0x5bc]
jae 0x4d35e7
lea eax, [ebp - 0x50]
mov esi, esi
mov esi, dword [eax + ebx*4]
sub dword [ebp - 0x5dc], esi
js 0x4d35fc
inc ebx
mov edi, dword [ebp - 0x5dc]
add edi, edi
mov dword [ebp - 0x5dc], edi
cmp ebx, dword [ebp - 0x5c4]
jb 0x4d35c5
mov edx, dword [ebp - 0x5c4]
shl edx, 2
mov eax, dword [edx + ebp - 0x50]
sub dword [ebp - 0x5dc], eax
jns 0x4d3609
mov eax, 2
jmp 0x4d3c46
add eax, dword [ebp - 0x5dc]
mov dword [edx + ebp - 0x50], eax
xor ebx, ebx
mov dword [ebp - 0x5ac], 0
lea eax, [ebp - 0x4c]
mov dword [ebp - 0x5d0], eax
lea ecx, [ebp - 0x5a8]
lea edx, [ebp - 0x560]
mov dword [ebp - 0x5f4], edx
lea esi, [ebp - 0x5b0]
mov dword [ebp - 0x5f0], esi
mov edi, dword [ebp - 0x5bc]
shl edi, 2
mov dword [ebp - 0x5fc], edi
dec dword [ebp - 0x5c4]
je 0x4d367b
mov eax, dword [ebp - 0x5d0]
add ebx, dword [eax]
mov dword [ecx], ebx
add eax, 4
mov dword [ebp - 0x5d0], eax
add ecx, 4
dec dword [ebp - 0x5c4]
jne 0x4d365d
mov ebx, dword [ebp - 0x5f4]
xor edx, edx
mov edi, ebx
mov eax, edx
cld
mov ecx, 0x120
rep stosd dword es:[edi], eax
mov eax, dword [ebp + 8]
mov dword [ebp - 0x5d0], eax
mov dword [ebp - 0x5c4], edx
mov ecx, dword [ebp - 0x5f0]
mov edx, dword [ebp - 0x5f4]
mov dword [ebp - 0x5e4], edx
nop
mov esi, dword [ebp - 0x5d0]
mov ebx, dword [esi]
add esi, 4
mov dword [ebp - 0x5d0], esi
test ebx, ebx
je 0x4d36e5
lea eax, [ebx*4]
mov edi, dword [eax + ecx]
shl edi, 2
mov ebx, dword [ebp - 0x5c4]
mov edx, dword [ebp - 0x5e4]
mov dword [edi + edx], ebx
inc dword [eax + ecx]
inc dword [ebp - 0x5c4]
mov esi, dword [ebp + 0xc]
cmp dword [ebp - 0x5c4], esi
jb 0x4d36b1
mov edi, dword [ebp - 0x5f0]
mov eax, dword [ebp - 0x5fc]
mov edi, dword [eax + edi]
mov dword [ebp + 0xc], edi
mov dword [ebp - 0x5c4], 0
mov dword [ebp - 0x5b0], 0
mov edx, dword [ebp - 0x5f4]
mov dword [ebp - 0x5d0], edx
mov dword [ebp - 0x5c0], 0xffffffff
mov ecx, dword [ebp - 0x5cc]
mov dword [ecx - 4], 0
mov dword [ebp - 0x5d8], 0
mov dword [ebp - 0xe0], 0
mov dword [ebp - 0x5d4], 0
mov dword [ebp - 0x5e0], 0
mov ebx, dword [ebp - 0x5bc]
cmp dword [ebp - 0x5c8], ebx
jg 0x4d3c1f
mov eax, dword [ebp - 0x5c8]
shl eax, 2
mov esi, dword [eax + ebp - 0x50]
dec esi
mov dword [ebp - 0x5b4], esi
mov dword [ebp - 0x604], eax
cmp esi, 0xffffffff
je 0x4d3c07
nop
mov edi, dword [ebp - 0x5c0]
mov eax, dword [ebp - 0x5cc]
mov edx, dword [eax + edi*4]
mov eax, dword [ebp - 0x5d8]
add eax, edx
cmp dword [ebp - 0x5c8], eax
jle 0x4d3a42
shl edi, 2
mov dword [ebp - 0x608], edi
add dword [ebp - 0x5d8], edx
add dword [ebp - 0x608], 4
inc dword [ebp - 0x5c0]
mov edx, dword [ebp - 0x5bc]
mov dword [ebp - 0x5e0], edx
mov ecx, dword [ebp - 0x5d8]
sub dword [ebp - 0x5e0], ecx
mov ebx, dword [ebp + 0x20]
mov eax, dword [ebx]
mov esi, dword [ebp - 0x5e0]
mov dword [ebp - 0x5e8], esi
cmp esi, eax
jbe 0x4d380f
mov dword [ebp - 0x5e8], eax
mov edi, dword [ebp - 0x5e8]
mov dword [ebp - 0x5e0], edi
mov ebx, dword [ebp - 0x5c8]
sub ebx, dword [ebp - 0x5d8]
mov dword [ebp - 0x61c], 1
mov ecx, ebx
shl dword [ebp - 0x61c], cl
mov eax, dword [ebp - 0x5b4]
inc eax
cmp dword [ebp - 0x61c], eax
jbe 0x4d38af
dec dword [ebp - 0x61c]
mov esi, dword [ebp - 0x5b4]
sub dword [ebp - 0x61c], esi
mov edi, dword [ebp - 0x604]
lea ecx, [edi + ebp - 0x50]
inc ebx
cmp ebx, dword [ebp - 0x5e0]
jae 0x4d38af
mov eax, dword [ebp - 0x61c]
add eax, eax
mov dword [ebp - 0x61c], eax
add ecx, 4
mov eax, dword [ecx]
cmp dword [ebp - 0x61c], eax
jbe 0x4d38af
nop
sub dword [ebp - 0x61c], eax
inc ebx
cmp ebx, dword [ebp - 0x5e8]
jae 0x4d38af
mov edx, dword [ebp - 0x61c]
add edx, edx
mov dword [ebp - 0x61c], edx
add ecx, 4
mov eax, dword [ecx]
cmp edx, eax
ja 0x4d3889
mov eax, dword [ebp - 0x5d8]
add eax, ebx
cmp eax, dword [ebp - 0x5b8]
jbe 0x4d38d5
mov ecx, dword [ebp - 0x5b8]
cmp dword [ebp - 0x5d8], ecx
jae 0x4d38d5
mov ebx, ecx
sub ebx, dword [ebp - 0x5d8]
mov dword [ebp - 0x5e0], 1
mov ecx, ebx
shl dword [ebp - 0x5e0], cl
mov esi, dword [ebp - 0x608]
mov edi, dword [ebp - 0x5cc]
mov dword [edi + esi], ebx
add esp, 0xfffffff4
mov edx, dword [ebp - 0x5e0]
lea eax, [edx*8 + 8]
push eax
call fcn.004e0a0d
mov dword [ebp - 0x5d4], eax
add esp, 0x10
test eax, eax
jne 0x4d393d
cmp dword [ebp - 0x5c0], 0
je 0x4d3930
add esp, 0xfffffff4
push dword [ebp - 0xe0]
call fcn.004d3c51
mov eax, 3
jmp 0x4d3c46
mov eax, dword [ebp - 0x5d4]
add eax, 8
mov ecx, dword [ebp + 0x1c]
mov dword [ecx], eax
mov esi, dword [ebp - 0x5d4]
add esi, 4
mov dword [ebp + 0x1c], esi
mov edi, dword [ebp - 0x5d4]
mov dword [edi + 4], 0
lea edx, [ebp - 0xe0]
mov dword [ebp - 0x5ec], edx
mov dword [ebp - 0x5d4], eax
mov ecx, dword [ebp - 0x608]
mov dword [ecx + edx], eax
mov dword [ebp - 0x600], ecx
cmp dword [ebp - 0x5c0], 0
je 0x4d3a1f
mov edi, dword [ebp - 0x5c4]
mov esi, dword [ebp - 0x5f0]
mov dword [esi + ecx], edi
mov eax, dword [ebp - 0x600]
mov ecx, dword [ebp - 0x5cc]
movzx edx, byte [ecx + eax - 4]
shl edx, 8
mov eax, dword [ebp - 0x618]
xor ah, ah
or eax, edx
mov dword [ebp - 0x618], eax
lea eax, [ebx + 0x10]
mov byte [ebp - 0x618], al
mov ebx, dword [ebp - 0x5d4]
mov dword [ebp - 0x614], ebx
mov eax, 1
mov ecx, dword [ebp - 0x5d8]
shl eax, cl
dec eax
and eax, edi
mov ebx, dword [ebp - 0x600]
mov esi, dword [ebp - 0x5cc]
sub ecx, dword [esi + ebx - 4]
shr eax, cl
mov edi, dword [ebp - 0x5c0]
mov ecx, dword [ebp - 0x5ec]
mov edx, dword [ecx + edi*4 - 4]
mov ebx, dword [ebp - 0x618]
mov esi, dword [ebp - 0x614]
mov dword [edx + eax*8], ebx
mov dword [edx + eax*8 + 4], esi
mov esi, dword [ebp - 0x600]
mov edi, dword [ebp - 0x5cc]
mov edx, dword [edi + esi]
mov eax, dword [ebp - 0x5d8]
add eax, edx
cmp dword [ebp - 0x5c8], eax
jg 0x4d37c9
mov al, byte [ebp - 0x5c8]
sub al, byte [ebp - 0x5d8]
and eax, 0xff
shl eax, 8
mov edx, dword [ebp - 0x618]
xor dh, dh
or edx, eax
mov dword [ebp - 0x618], edx
mov edx, dword [ebp + 0xc]
mov ecx, dword [ebp - 0x5f4]
lea eax, [ecx + edx*4]
cmp dword [ebp - 0x5d0], eax
jb 0x4d3a85
mov byte [ebp - 0x618], 0x63
jmp 0x4d3ae5
mov ebx, dword [ebp - 0x5d0]
mov eax, dword [ebx]
cmp eax, dword [ebp + 0x10]
jae 0x4d3ac1
mov cl, 0xf
cmp eax, 0xff
ja 0x4d3a9d
mov cl, 0x10
mov byte [ebp - 0x618], cl
mov esi, dword [ebp - 0x5d0]
movzx eax, word [esi]
mov word [ebp - 0x614], ax
add esi, 4
mov dword [ebp - 0x5d0], esi
jmp 0x4d3ae5
sub eax, dword [ebp + 0x10]
mov edi, dword [ebp + 0x18]
mov dl, byte [edi + eax*2]
mov byte [ebp - 0x618], dl
mov edx, dword [ebp + 0x14]
movzx eax, word [edx + eax*2]
mov word [ebp - 0x614], ax
add dword [ebp - 0x5d0], 4
mov ecx, dword [ebp - 0x5c8]
sub ecx, dword [ebp - 0x5d8]
mov dword [ebp - 0x61c], 1
shl dword [ebp - 0x61c], cl
mov ebx, dword [ebp - 0x5c4]
mov ecx, dword [ebp - 0x5d8]
shr ebx, cl
mov esi, dword [ebp - 0x5b4]
dec esi
mov dword [ebp - 0x5f8], esi
mov edi, dword [ebp - 0x5c0]
shl edi, 2
mov dword [ebp - 0x600], edi
mov ecx, dword [ebp - 0x5c8]
dec ecx
cmp ebx, dword [ebp - 0x5e0]
jae 0x4d3b64
lea esi, [esi]
mov eax, dword [ebp - 0x618]
mov edx, dword [ebp - 0x614]
mov esi, dword [ebp - 0x5d4]
mov dword [esi + ebx*8], eax
mov dword [esi + ebx*8 + 4], edx
add ebx, dword [ebp - 0x61c]
cmp ebx, dword [ebp - 0x5e0]
jb 0x4d3b3d
mov ebx, 1
shl ebx, cl
test dword [ebp - 0x5c4], ebx
je 0x4d3b85
mov esi, esi
xor dword [ebp - 0x5c4], ebx
shr ebx, 1
test dword [ebp - 0x5c4], ebx
jne 0x4d3b75
xor dword [ebp - 0x5c4], ebx
mov eax, 1
mov ecx, dword [ebp - 0x5d8]
shl eax, cl
dec eax
and eax, dword [ebp - 0x5c4]
mov ebx, dword [ebp - 0x5f0]
mov esi, dword [ebp - 0x600]
cmp eax, dword [esi + ebx]
je 0x4d3bf2
mov edx, 1
dec dword [ebp - 0x5c0]
mov edi, dword [ebp - 0x5c0]
mov eax, dword [ebp - 0x5cc]
mov edi, dword [eax + edi*4]
sub dword [ebp - 0x5d8], edi
mov eax, edx
mov ecx, dword [ebp - 0x5d8]
shl eax, cl
dec eax
and eax, dword [ebp - 0x5c4]
mov ebx, dword [ebp - 0x5c0]
mov esi, dword [ebp - 0x5f0]
cmp eax, dword [esi + ebx*4]
jne 0x4d3bb5
mov edi, dword [ebp - 0x5f8]
mov dword [ebp - 0x5b4], edi
cmp edi, 0xffffffff
jne 0x4d379d
inc dword [ebp - 0x5c8]
mov eax, dword [ebp - 0x5bc]
cmp dword [ebp - 0x5c8], eax
jle 0x4d3779
mov edx, dword [ebp - 0x5cc]
mov eax, dword [edx]
mov ecx, dword [ebp + 0x20]
mov dword [ecx], eax
xor eax, eax
cmp dword [ebp - 0x5dc], 0
je 0x4d3c46
cmp dword [ebp - 0x5bc], 1
setne al
and eax, 0xff
lea esp, [ebp - 0x638]
pop ebx
pop esi
pop edi
leave
ret