Function at 0x47a504
Capabilities:
Encode data using xor
Set registry value

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffdc0
xor eax, eax
mov dword [ebp - 0x14], eax
push 0x11
push 0
lea edx, [ebp - 0x240]
push edx
call fcn.0066cc88
add esp, 0xc
mov ecx, dword [ebp + 0xc]
mov dword [ebp - 0x28], ecx
jmp 0x47a595
mov eax, dword [ebp - 0x28]
movsx edx, byte [eax]
cmp edx, 0x2d
je 0x47a592
mov ecx, dword [ebp - 0x28]
movsx eax, byte [ecx]
cmp eax, 0x5f
je 0x47a592
mov edx, dword [ebp - 0x28]
movsx ecx, byte [edx]
cmp ecx, 0x20
je 0x47a592
xor eax, eax
mov dword [ebp - 0x10], eax
mov edx, dword [ebp - 0x10]
mov cl, byte [edx + 0x765538]
mov eax, dword [ebp - 0x28]
mov dl, byte [eax]
cmp cl, dl
jne 0x47a575
mov ecx, dword [ebp - 0x10]
mov al, byte [ecx + str.0011221189ABCDEFOolLzZiI]
mov edx, dword [ebp - 0x28]
mov byte [edx], al
jmp 0x47a580
inc dword [ebp - 0x10]
mov ecx, dword [ebp - 0x10]
cmp ecx, 0x10
jl 0x47a553
mov eax, dword [ebp - 0x14]
mov edx, dword [ebp - 0x28]
mov cl, byte [edx]
mov byte [ebp + eax - 0x240], cl
inc dword [ebp - 0x14]
inc dword [ebp - 0x28]
mov eax, dword [ebp - 0x28]
mov dl, byte [eax]
test dl, dl
jne 0x47a52d
mov dword [ebp - 4], 0x3e76f499
xor dword [ebp - 4], 0x20020920
push dword [ebp - 4]
push 0x765550
lea ecx, [ebp - 0x20]
push ecx
call fcn.006712b0
add esp, 0xc
xor eax, eax
mov dword [ebp - 0x10], eax
mov edx, dword [ebp - 0x10]
mov ecx, dword [edx*4 + 0x765500]
mov al, byte [ebp + ecx - 0x20]
mov edx, dword [ebp - 0x10]
mov cl, byte [edx + 0x765520]
xor al, cl
mov edx, dword [ebp - 0x10]
mov byte [ebp + edx - 0x12c], al
inc dword [ebp - 0x10]
mov eax, dword [ebp - 0x10]
cmp eax, 8
jl 0x47a5c5
lea ecx, [ebp - 0x240]
push ecx
call fcn.0066ce38
pop ecx
mov dword [ebp - 0xc], eax
push dword [ebp + 8]
call fcn.0066ce38
pop ecx
mov dword [ebp - 8], eax
xor eax, eax
mov dword [ebp - 0x14], eax
xor edx, edx
mov dword [ebp - 0x10], edx
mov ecx, dword [ebp - 0x10]
mov eax, dword [ebp - 0xc]
cmp ecx, eax
jge 0x47a660
mov edx, dword [ebp - 0x10]
mov cl, byte [ebp + edx - 0x240]
mov eax, dword [ebp - 0x14]
mov dl, byte [ebp + eax - 0x12c]
xor cl, dl
mov eax, dword [ebp - 0x10]
mov byte [ebp + eax - 0x22c], cl
inc dword [ebp - 0x14]
mov edx, dword [ebp - 0x14]
cmp edx, 8
jl 0x47a653
xor ecx, ecx
mov dword [ebp - 0x14], ecx
inc dword [ebp - 0x10]
mov eax, dword [ebp - 0x10]
mov edx, dword [ebp - 0xc]
cmp eax, edx
jl 0x47a623
xor ecx, ecx
mov dword [ebp - 0x14], ecx
xor eax, eax
mov dword [ebp - 0x10], eax
mov edx, dword [ebp - 0x10]
mov ecx, dword [ebp - 0xc]
cmp edx, ecx
jge 0x47a6a6
mov eax, dword [ebp + 8]
mov edx, dword [ebp - 0x14]
mov cl, byte [eax + edx]
mov eax, dword [ebp - 0x10]
xor byte [ebp + eax - 0x22c], cl
inc dword [ebp - 0x14]
mov edx, dword [ebp - 0x14]
mov ecx, dword [ebp - 8]
cmp edx, ecx
jl 0x47a699
xor eax, eax
mov dword [ebp - 0x14], eax
inc dword [ebp - 0x10]
mov edx, dword [ebp - 0x10]
mov ecx, dword [ebp - 0xc]
cmp edx, ecx
jl 0x47a674
xor eax, eax
mov dword [ebp - 0x10], eax
xor edx, edx
mov dword [ebp - 0x10], edx
mov ecx, dword [ebp - 0x10]
xor eax, eax
mov al, byte [ebp + ecx - 0x22c]
push eax
push 0x765554
mov edx, dword [ebp - 0x10]
add edx, edx
lea ecx, [ebp - 0x12c]
add edx, ecx
push edx
call fcn.006712b0
add esp, 0xc
inc dword [ebp - 0x10]
mov eax, dword [ebp - 0x10]
cmp eax, 0x10
jl 0x47a6b0
lea edx, [ebp - 0x24]
push edx
push 0x765559
push SysReAllocStringLen
call sub.ADVAPI32.DLL_RegOpenKeyA
test eax, eax
je 0x47a715
lea ecx, [ebp - 0x24]
push ecx
push 0x765580
push SysReAllocStringLen
call sub.ADVAPI32.DLL_RegCreateKeyA
test eax, eax
je 0x47a715
xor eax, eax
jmp 0x47a768
push dword [ebp + 8]
call fcn.0066ce38
pop ecx
inc eax
push eax
push dword [ebp + 8]
push 1
push 0
push 0x7655a7
push dword [ebp - 0x24]
call sub.ADVAPI32.DLL_RegSetValueExA
lea edx, [ebp - 0x12c]
push edx
call fcn.0066ce38
pop ecx
inc eax
push eax
lea ecx, [ebp - 0x12c]
push ecx
push 1
push 0
push 0x7655b0
push dword [ebp - 0x24]
call sub.ADVAPI32.DLL_RegSetValueExA
push dword [ebp - 0x24]
call sub.ADVAPI32.DLL_RegCloseKey
mov eax, 1
mov esp, ebp
pop ebp
ret