Function at 0x4722fd
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
mov eax, 0x1028
call fcn.0048855d
mov eax, dword [0x10023014]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, ecx
mov ecx, dword [ebp + 0x1c]
push ebx
push esi
push edi
cmp dword [eax + 0xc], 0
mov edi, dword [ebp + 8]
mov dword [ebp - 0x1018], eax
mov dword [ebp - 0x1010], edi
mov dword [ebp - 0x100c], ecx
je 0x472571
mov ax, word [ebp + 0x10]
xor ecx, ecx
xor edx, edx
mov dword [ebp - 0x101c], ecx
cmp dx, ax
jae 0x47255c
movzx edx, ax
dec edx
mov dword [ebp - 0x1028], edx
nop
movzx eax, cx
mov esi, 0x1000
cmp eax, edx
jne 0x472373
mov eax, dword [ebp + 0x18]
test eax, eax
je 0x472373
movzx esi, ax
push 0xffb
lea eax, [ebp - 0xfff]
or ebx, 0xffffffff
push 0
push eax
mov dword [ebp - 0x1008], ebx
call fcn.00478f2d
add esp, 0xc
movzx esi, si
mov dword [ebp - 0x1014], esi
test edi, edi
je 0x472571
test esi, esi
je 0x472571
cmp esi, 0x1000
ja 0x472571
push esi
lea eax, [ebp - 0x1004]
push 0
push eax
call fcn.00478f2d
push esi
lea eax, [ebp - 0x1004]
push edi
push eax
call fcn.0047842d
lea ecx, [esi - 1]
add esp, 0x18
xor edi, edi
mov dword [ebp - 0x1020], ecx
test ecx, ecx
je 0x47245d
mov esi, dword [ebp - 0x1010]
lea ecx, [ebp - 0x1002]
mov ebx, dword [ebp - 0x1014]
sub ecx, esi
mov eax, dword [ebp - 0x1020]
mov dword [ebp - 0x1024], ecx
nop dword [eax]
cmp byte [esi], 0x90
jne 0x47244b
mov al, byte [esi + 1]
cmp al, 0xe8
je 0x47241d
cmp al, 0xe9
jne 0x472448
mov eax, ebx
sub eax, edi
cmp eax, 6
jae 0x47242b
add eax, 0xfffffffe
jmp 0x472430
mov eax, 4
push eax
lea eax, [esi + ecx]
push 0x10020008
push eax
call fcn.0047842d
mov ecx, dword [ebp - 0x1024]
add esp, 0xc
lea eax, [ebx - 1]
inc edi
inc esi
cmp edi, eax
jb 0x47240d
mov ebx, dword [ebp - 0x1008]
mov esi, dword [ebp - 0x1014]
mov eax, dword [0x10020010]
xor edx, edx
mov dword [ebp - 0x1004], eax
mov al, byte [0x10020014]
mov byte [ebp - 0x1000], al
test esi, esi
je 0x4724a5
mov edi, dword [ebp - 0x1018]
mov edi, dword [edi + 0xc]
nop word [eax + eax]
movzx ecx, byte [ebp + edx - 0x1004]
inc edx
movzx eax, bl
xor ecx, eax
shr ebx, 8
xor ebx, dword [edi + ecx*4]
cmp edx, esi
jb 0x47248d
mov eax, dword [ebp - 0x100c]
mov edi, dword [ebp - 0x1018]
mov edx, dword [eax]
movzx ecx, dl
movzx eax, bl
xor ecx, eax
shr edx, 8
mov eax, dword [edi + 0xc]
mov eax, dword [eax + ecx*4]
mov ecx, dword [ebp - 0x100c]
xor eax, edx
mov dword [ebp - 0x1008], eax
mov edx, eax
mov dword [ecx], eax
mov eax, ebx
shr eax, 8
movzx ecx, al
movzx eax, dl
xor ecx, eax
shr edx, 8
mov eax, dword [edi + 0xc]
mov eax, dword [eax + ecx*4]
mov ecx, dword [ebp - 0x100c]
xor eax, edx
mov dword [ebp - 0x1008], eax
mov edx, eax
mov dword [ecx], eax
mov eax, ebx
shr eax, 0x10
movzx ecx, al
movzx eax, dl
xor ecx, eax
shr edx, 8
mov eax, dword [edi + 0xc]
shr ebx, 0x18
mov ecx, dword [eax + ecx*4]
xor ecx, edx
mov edx, dword [ebp - 0x100c]
movzx eax, cl
xor ebx, eax
mov dword [edx], ecx
mov eax, dword [edi + 0xc]
mov edi, dword [ebp - 0x1010]
shr ecx, 8
add edi, esi
mov dword [ebp - 0x1010], edi
xor ecx, dword [eax + ebx*4]
mov dword [edx], ecx
mov ecx, dword [ebp - 0x101c]
mov edx, dword [ebp - 0x1028]
inc ecx
mov dword [ebp - 0x101c], ecx
cmp cx, word [ebp + 0x10]
jb 0x47235d
pop edi
pop esi
mov al, 1
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00476c3e
mov esp, ebp
pop ebp
ret 0x18
mov ecx, dword [ebp - 4]
xor al, al
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.00476c3e
mov esp, ebp
pop ebp
ret 0x18