Function at 0x50473c
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffe14
push ebx
push esi
xor ebx, ebx
mov dword [ebp - 0x1ec], ebx
mov dword [ebp - 4], ebx
mov dword [ebp - 8], ebx
mov dword [ebp - 0xc], ebx
mov esi, ecx
mov ebx, edx
xor eax, eax
push ebp
push 0x5049f5
push dword fs:[eax]
mov dword fs:[eax], esp
test ebx, ebx
je 0x5049cf
test esi, esi
je 0x5049cf
lea eax, [ebp - 0x1a0]
mov ecx, 0xff
mov edx, 0x194
call fcn.00403bb4
lea eax, [ebp - 0x1a0]
mov edx, 0x504a0c
call fcn.0050461c
lea eax, [ebp - 4]
mov edx, esi
call fcn.0040546c
lea edx, [ebp - 8]
mov eax, ebx
call fcn.0050215c
lea eax, [ebp - 0x1e8]
xor ecx, ecx
mov edx, 0x18
call fcn.00403bb4
mov eax, dword [ebp - 8]
call fcn.00405694
test eax, eax
jle 0x504807
mov ebx, 1
cmp ebx, 0x14
jg 0x504803
mov edx, ebx
dec edx
shr edx, 2
mov esi, 4
sub esi, edx
mov edx, dword [ebp + esi*4 - 0x1e8]
shl edx, 8
mov ecx, dword [ebp - 8]
movzx ecx, byte [ecx + ebx - 1]
add edx, ecx
mov dword [ebp + esi*4 - 0x1e8], edx
inc ebx
dec eax
jne 0x5047d6
lea eax, [ebp - 0x1a0]
call fcn.00504640
lea eax, [ebp - 0x1b8]
xor ecx, ecx
mov edx, 0x18
call fcn.00403bb4
mov dword [ebp - 0x1b8], 1
lea eax, [ebp - 0x1d0]
xor ecx, ecx
mov edx, 0x18
call fcn.00403bb4
mov dword [ebp - 0x1d0], 1
lea eax, [ebp - 0xa0]
mov edx, 0x504a98
call fcn.0050461c
mov eax, dword [ebp - 4]
call fcn.00405694
test eax, eax
jle 0x5048cb
mov ebx, 1
cmp ebx, 0x14
jg 0x50489a
mov edx, ebx
dec edx
shr edx, 2
mov esi, 4
sub esi, edx
mov edx, dword [ebp + esi*4 - 0x1b8]
shl edx, 8
mov ecx, dword [ebp - 4]
movzx ecx, byte [ecx + ebx - 1]
add edx, ecx
mov dword [ebp + esi*4 - 0x1b8], edx
jmp 0x5048c7
cmp ebx, 0x28
jg 0x5048c7
mov edx, ebx
dec edx
shr edx, 2
mov esi, 9
sub esi, edx
mov edx, dword [ebp + esi*4 - 0x1d0]
shl edx, 8
mov ecx, dword [ebp - 4]
movzx ecx, byte [ecx + ebx - 1]
add edx, ecx
mov dword [ebp + esi*4 - 0x1d0], edx
inc ebx
dec eax
jne 0x50486b
lea eax, [ebp - 0x20]
mov edx, 0x504b24
call fcn.0050461c
lea eax, [ebp - 0x1e8]
push eax
lea ecx, [ebp - 0x1d0]
lea edx, [ebp - 0x1b8]
lea eax, [ebp - 0x1a0]
call fcn.005044b4
lea ecx, [ebp - 0xc]
mov edx, 0x28
xor eax, eax
call fcn.00405b58
mov ebx, 0x15
mov eax, ebx
dec eax
shr eax, 2
mov esi, 9
sub esi, eax
lea eax, [ebp - 0xc]
call fcn.004058c4
mov edx, dword [ebp + esi*4 - 0x1d0]
shr edx, 0x18
mov byte [eax + ebx - 1], dl
shl dword [ebp + esi*4 - 0x1d0], 8
inc ebx
cmp ebx, 0x29
jne 0x50490a
mov ebx, 1
mov eax, ebx
dec eax
shr eax, 2
mov esi, 4
sub esi, eax
lea eax, [ebp - 0xc]
call fcn.004058c4
mov edx, dword [ebp + esi*4 - 0x1e8]
shr edx, 0x18
mov byte [eax + ebx - 1], dl
shl dword [ebp + esi*4 - 0x1e8], 8
inc ebx
cmp ebx, 0x15
jne 0x504940
lea edx, [ebp - 0x1ec]
mov eax, dword [ebp - 0xc]
call fcn.0050215c
mov edx, dword [ebp - 0x1ec]
lea eax, [ebp - 0xc]
call fcn.0040546c
mov eax, dword [ebp + 8]
mov edx, dword [ebp - 8]
call fcn.00405428
lea eax, [ebp - 0x1a0]
call fcn.005046dc
test al, al
je 0x5049cf
mov ebx, 1
mov eax, dword [ebp + 8]
call fcn.004058c4
mov edx, dword [ebp + 8]
mov edx, dword [edx]
movzx edx, byte [edx + ebx - 1]
mov ecx, dword [ebp - 0xc]
xor dl, byte [ecx + ebx - 1]
mov byte [eax + ebx - 1], dl
inc ebx
cmp ebx, 0x15
jne 0x5049ac
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x5049fc
lea eax, [ebp - 0x1ec]
call fcn.004053d4
lea eax, [ebp - 0xc]
mov edx, 3
call fcn.004053f8
ret