Function at 0x47a21c
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.0066c86c
add esp, 0xc
mov ecx, dword [ebp + 0xc]
mov dword [ebp - 0x28], ecx
jmp 0x47a2ad
mov eax, dword [ebp - 0x28]
movsx edx, byte [eax]
cmp edx, 0x2d
je 0x47a2aa
mov ecx, dword [ebp - 0x28]
movsx eax, byte [ecx]
cmp eax, 0x5f
je 0x47a2aa
mov edx, dword [ebp - 0x28]
movsx ecx, byte [edx]
cmp ecx, 0x20
je 0x47a2aa
xor eax, eax
mov dword [ebp - 0x10], eax
mov edx, dword [ebp - 0x10]
mov cl, byte [edx + 0x75c42c]
mov eax, dword [ebp - 0x28]
mov dl, byte [eax]
cmp cl, dl
jne 0x47a28d
mov ecx, dword [ebp - 0x10]
mov al, byte [ecx + str.0011221189ABCDEFOolLzZiI]
mov edx, dword [ebp - 0x28]
mov byte [edx], al
jmp 0x47a298
inc dword [ebp - 0x10]
mov ecx, dword [ebp - 0x10]
cmp ecx, 0x10
jl 0x47a26b
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 0x47a245
mov dword [ebp - 4], 0x3e76f499
xor dword [ebp - 4], 0x20020920
push dword [ebp - 4]
push 0x75c444
lea ecx, [ebp - 0x20]
push ecx
call fcn.00670e94
add esp, 0xc
xor eax, eax
mov dword [ebp - 0x10], eax
mov edx, dword [ebp - 0x10]
mov ecx, dword [edx*4 + 0x75c3f4]
mov al, byte [ebp + ecx - 0x20]
mov edx, dword [ebp - 0x10]
mov cl, byte [edx + 0x75c414]
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 0x47a2dd
lea ecx, [ebp - 0x240]
push ecx
call fcn.0066ca1c
pop ecx
mov dword [ebp - 0xc], eax
push dword [ebp + 8]
call fcn.0066ca1c
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 0x47a378
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 0x47a36b
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 0x47a33b
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 0x47a3be
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 0x47a3b1
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 0x47a38c
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 0x75c448
mov edx, dword [ebp - 0x10]
add edx, edx
lea ecx, [ebp - 0x12c]
add edx, ecx
push edx
call fcn.00670e94
add esp, 0xc
inc dword [ebp - 0x10]
mov eax, dword [ebp - 0x10]
cmp eax, 0x10
jl 0x47a3c8
lea edx, [ebp - 0x24]
push edx
push 0x75c44d
push SysReAllocStringLen
call sub.ADVAPI32.DLL_RegOpenKeyA
test eax, eax
je 0x47a42d
lea ecx, [ebp - 0x24]
push ecx
push 0x75c474
push SysReAllocStringLen
call sub.ADVAPI32.DLL_RegCreateKeyA
test eax, eax
je 0x47a42d
xor eax, eax
jmp 0x47a480
push dword [ebp + 8]
call fcn.0066ca1c
pop ecx
inc eax
push eax
push dword [ebp + 8]
push 1
push 0
push 0x75c49b
push dword [ebp - 0x24]
call sub.ADVAPI32.DLL_RegSetValueExA
lea edx, [ebp - 0x12c]
push edx
call fcn.0066ca1c
pop ecx
inc eax
push eax
lea ecx, [ebp - 0x12c]
push ecx
push 1
push 0
push 0x75c4a4
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