Function at 0x47aa74
Capabilities:
Encode data using xor
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffbc8
push 0x7655ef
push 0x830214
push 0x7655e9
lea eax, [ebp - 0x438]
push eax
call fcn.006712b0
add esp, 0x10
push 0
lea edx, [ebp - 0x438]
push edx
call fcn.0066ebe8
add esp, 8
test eax, eax
je 0x47aace
push str.uikey.ini
push 0x830318
push 0x7655f9
lea ecx, [ebp - 0x438]
push ecx
call fcn.006712b0
add esp, 0x10
push 0
lea eax, [ebp - 0x438]
push eax
call fcn.0066ebe8
add esp, 8
test eax, eax
je 0x47ab01
push 0x76560f
push 0x830214
push 0x765609
lea edx, [ebp - 0x438]
push edx
call fcn.006712b0
add esp, 0x10
push 0
lea ecx, [ebp - 0x438]
push ecx
call fcn.0066ebe8
add esp, 8
test eax, eax
je 0x47ab34
push str.ultraiso.ini
push 0x830318
push 0x76561c
lea eax, [ebp - 0x438]
push eax
call fcn.006712b0
add esp, 0x10
push 0
lea edx, [ebp - 0x438]
push edx
call fcn.0066ebe8
add esp, 8
test eax, eax
jne 0x47ac11
lea ecx, [ebp - 0x134]
push ecx
push dword [ebp + 8]
lea eax, [ebp - 0x438]
push eax
call fcn.0047a76c
add esp, 0xc
test eax, eax
je 0x47ac11
xor edx, edx
mov dword [ebp - 0x10], edx
xor ecx, ecx
mov dword [ebp - 0x14], ecx
jmp 0x47aba2
mov eax, dword [ebp - 0x10]
mov dl, byte [ebp + eax - 0x134]
cmp dl, 0x2d
je 0x47ab9f
mov ecx, dword [ebp + 0xc]
mov eax, dword [ebp - 0x14]
mov edx, dword [ebp - 0x10]
mov dl, byte [ebp + edx - 0x134]
mov byte [ecx + eax], dl
inc dword [ebp - 0x14]
inc dword [ebp - 0x10]
mov eax, dword [ebp - 0x10]
mov cl, byte [ebp + eax - 0x134]
test cl, cl
jne 0x47ab7a
mov eax, dword [ebp + 0xc]
mov edx, dword [ebp - 0x14]
mov byte [eax + edx], 0
mov dword [ebp - 0xc], 0x10
jmp 0x47abc6
dec dword [ebp - 0xc]
mov ecx, dword [ebp - 0xc]
test ecx, ecx
jle 0x47abdd
mov eax, dword [ebp + 0xc]
mov edx, dword [ebp - 0xc]
movsx ecx, byte [eax + edx - 1]
cmp ecx, 0x58
je 0x47abc3
mov eax, dword [ebp + 0xc]
mov edx, dword [ebp - 0xc]
mov byte [eax + edx], 0
push dword [ebp + 8]
push 0xa119dc
call fcn.0066ce08
add esp, 8
push dword [ebp + 0xc]
push 0xa11ae0
call fcn.0066ce08
add esp, 8
mov eax, 1
jmp 0x47aede
lea edx, [ebp - 0x24]
push edx
push 0x76562f
push SysReAllocStringLen
call sub.ADVAPI32.DLL_RegOpenKeyA
test eax, eax
je 0x47ac2f
xor eax, eax
jmp 0x47aede
mov dword [ebp - 0x2c], 0x100
lea edx, [ebp - 0x2c]
push edx
lea ecx, [ebp - 0x334]
push ecx
lea eax, [ebp - 0x28]
push eax
push 0
push str.UserName
push dword [ebp - 0x24]
call sub.ADVAPI32.DLL_RegQueryValueExA
test eax, eax
jne 0x47ac6c
lea edx, [ebp - 0x334]
push edx
push dword [ebp + 8]
call fcn.0066ce08
add esp, 8
jmp 0x47ac73
xor eax, eax
jmp 0x47aede
mov dword [ebp - 0x2c], 0x100
lea edx, [ebp - 0x2c]
push edx
lea ecx, [ebp - 0x334]
push ecx
lea eax, [ebp - 0x28]
push eax
push 0
push str.Registration
push dword [ebp - 0x24]
call sub.ADVAPI32.DLL_RegQueryValueExA
test eax, eax
jne 0x47acb4
lea edx, [ebp - 0x334]
push edx
lea ecx, [ebp - 0x134]
push ecx
call fcn.0066ce08
add esp, 8
jmp 0x47acbb
xor eax, eax
jmp 0x47aede
push dword [ebp - 0x24]
call sub.ADVAPI32.DLL_RegCloseKey
xor edx, edx
mov dword [ebp - 0x10], edx
mov ecx, dword [ebp - 0x10]
mov al, byte [ebp + ecx*2 - 0x134]
mov byte [ebp - 0x31], al
mov dl, byte [ebp - 0x31]
cmp dl, 0x30
jb 0x47aceb
mov cl, byte [ebp - 0x31]
cmp cl, 0x39
ja 0x47aceb
add byte [ebp - 0x31], 0xd0
jmp 0x47ad19
mov al, byte [ebp - 0x31]
cmp al, 0x61
jb 0x47ad00
mov dl, byte [ebp - 0x31]
cmp dl, 0x66
ja 0x47ad00
add byte [ebp - 0x31], 0xa9
jmp 0x47ad19
mov cl, byte [ebp - 0x31]
cmp cl, 0x41
jb 0x47ad15
mov al, byte [ebp - 0x31]
cmp al, 0x46
ja 0x47ad15
add byte [ebp - 0x31], 0xc9
jmp 0x47ad19
mov byte [ebp - 0x31], 0
mov dl, byte [ebp - 0x31]
shl edx, 4
mov ecx, dword [ebp - 0x10]
mov byte [ebp + ecx - 0x234], dl
mov eax, dword [ebp - 0x10]
mov dl, byte [ebp + eax*2 - 0x133]
mov byte [ebp - 0x31], dl
mov cl, byte [ebp - 0x31]
cmp cl, 0x30
jb 0x47ad4b
mov al, byte [ebp - 0x31]
cmp al, 0x39
ja 0x47ad4b
add byte [ebp - 0x31], 0xd0
jmp 0x47ad7a
mov dl, byte [ebp - 0x31]
cmp dl, 0x61
jb 0x47ad61
mov cl, byte [ebp - 0x31]
cmp cl, 0x66
ja 0x47ad61
add byte [ebp - 0x31], 0xa9
jmp 0x47ad7a
mov al, byte [ebp - 0x31]
cmp al, 0x41
jb 0x47ad76
mov dl, byte [ebp - 0x31]
cmp dl, 0x46
ja 0x47ad76
add byte [ebp - 0x31], 0xc9
jmp 0x47ad7a
mov byte [ebp - 0x31], 0
mov ecx, dword [ebp - 0x10]
mov al, byte [ebp - 0x31]
add byte [ebp + ecx - 0x234], al
inc dword [ebp - 0x10]
mov edx, dword [ebp - 0x10]
cmp edx, 0x10
jl 0x47acc8
mov dword [ebp - 4], 0x3e76f499
xor dword [ebp - 4], 0x20020920
push dword [ebp - 4]
push 0x76566c
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 - 0x134], al
inc dword [ebp - 0x10]
mov eax, dword [ebp - 0x10]
cmp eax, 8
jl 0x47adbd
push dword [ebp + 8]
call fcn.0066ce38
pop ecx
mov dword [ebp - 8], eax
mov dword [ebp - 0xc], 0x10
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 0x47ae4f
mov eax, dword [ebp + 8]
mov edx, dword [ebp - 0x14]
mov cl, byte [eax + edx]
mov eax, dword [ebp - 0x10]
mov dl, byte [ebp + eax - 0x234]
xor cl, dl
mov eax, dword [ebp + 0xc]
mov edx, dword [ebp - 0x10]
mov byte [eax + edx], cl
inc dword [ebp - 0x14]
mov ecx, dword [ebp - 0x14]
mov eax, dword [ebp - 8]
cmp ecx, eax
jl 0x47ae42
xor edx, edx
mov dword [ebp - 0x14], edx
inc dword [ebp - 0x10]
mov ecx, dword [ebp - 0x10]
mov eax, dword [ebp - 0xc]
cmp ecx, eax
jl 0x47ae12
xor edx, edx
mov dword [ebp - 0x14], edx
xor ecx, ecx
mov dword [ebp - 0x10], ecx
mov eax, dword [ebp - 0x10]
mov edx, dword [ebp - 0xc]
cmp eax, edx
jge 0x47ae98
mov ecx, dword [ebp - 0x14]
mov al, byte [ebp + ecx - 0x134]
mov edx, dword [ebp + 0xc]
mov ecx, dword [ebp - 0x10]
xor byte [edx + ecx], al
inc dword [ebp - 0x14]
mov eax, dword [ebp - 0x14]
cmp eax, 8
jl 0x47ae86
xor edx, edx
mov dword [ebp - 0x14], edx
inc dword [ebp - 0x10]
mov ecx, dword [ebp - 0x10]
mov eax, dword [ebp - 0xc]
cmp ecx, eax
jl 0x47ae63
jmp 0x47ae98
dec dword [ebp - 0xc]
mov edx, dword [ebp - 0xc]
test edx, edx
jle 0x47aeaf
mov ecx, dword [ebp + 0xc]
mov eax, dword [ebp - 0xc]
movsx edx, byte [ecx + eax - 1]
cmp edx, 0x58
je 0x47ae95
mov ecx, dword [ebp + 0xc]
mov eax, dword [ebp - 0xc]
mov byte [ecx + eax], 0
push dword [ebp + 8]
push 0xa119dc
call fcn.0066ce08
add esp, 8
push dword [ebp + 0xc]
push 0xa11ae0
call fcn.0066ce08
add esp, 8
mov eax, 1
mov esp, ebp
pop ebp
ret