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

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffbc8
push 0x75c4e3
push 0x822840
push 0x75c4dd
lea eax, [ebp - 0x438]
push eax
call fcn.00670e94
add esp, 0x10
push 0
lea edx, [ebp - 0x438]
push edx
call fcn.0066e7cc
add esp, 8
test eax, eax
je 0x47a7e6
push str.uikey.ini
push 0x822944
push 0x75c4ed
lea ecx, [ebp - 0x438]
push ecx
call fcn.00670e94
add esp, 0x10
push 0
lea eax, [ebp - 0x438]
push eax
call fcn.0066e7cc
add esp, 8
test eax, eax
je 0x47a819
push 0x75c503
push 0x822840
push 0x75c4fd
lea edx, [ebp - 0x438]
push edx
call fcn.00670e94
add esp, 0x10
push 0
lea ecx, [ebp - 0x438]
push ecx
call fcn.0066e7cc
add esp, 8
test eax, eax
je 0x47a84c
push str.ultraiso.ini
push 0x822944
push 0x75c510
lea eax, [ebp - 0x438]
push eax
call fcn.00670e94
add esp, 0x10
push 0
lea edx, [ebp - 0x438]
push edx
call fcn.0066e7cc
add esp, 8
test eax, eax
jne 0x47a929
lea ecx, [ebp - 0x134]
push ecx
push dword [ebp + 8]
lea eax, [ebp - 0x438]
push eax
call fcn.0047a484
add esp, 0xc
test eax, eax
je 0x47a929
xor edx, edx
mov dword [ebp - 0x10], edx
xor ecx, ecx
mov dword [ebp - 0x14], ecx
jmp 0x47a8ba
mov eax, dword [ebp - 0x10]
mov dl, byte [ebp + eax - 0x134]
cmp dl, 0x2d
je 0x47a8b7
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 0x47a892
mov eax, dword [ebp + 0xc]
mov edx, dword [ebp - 0x14]
mov byte [eax + edx], 0
mov dword [ebp - 0xc], 0x10
jmp 0x47a8de
dec dword [ebp - 0xc]
mov ecx, dword [ebp - 0xc]
test ecx, ecx
jle 0x47a8f5
mov eax, dword [ebp + 0xc]
mov edx, dword [ebp - 0xc]
movsx ecx, byte [eax + edx - 1]
cmp ecx, 0x58
je 0x47a8db
mov eax, dword [ebp + 0xc]
mov edx, dword [ebp - 0xc]
mov byte [eax + edx], 0
push dword [ebp + 8]
push 0xa04008
call fcn.0066c9ec
add esp, 8
push dword [ebp + 0xc]
push 0xa0410c
call fcn.0066c9ec
add esp, 8
mov eax, 1
jmp 0x47abf6
lea edx, [ebp - 0x24]
push edx
push 0x75c523
push SysReAllocStringLen
call sub.ADVAPI32.DLL_RegOpenKeyA
test eax, eax
je 0x47a947
xor eax, eax
jmp 0x47abf6
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 0x47a984
lea edx, [ebp - 0x334]
push edx
push dword [ebp + 8]
call fcn.0066c9ec
add esp, 8
jmp 0x47a98b
xor eax, eax
jmp 0x47abf6
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 0x47a9cc
lea edx, [ebp - 0x334]
push edx
lea ecx, [ebp - 0x134]
push ecx
call fcn.0066c9ec
add esp, 8
jmp 0x47a9d3
xor eax, eax
jmp 0x47abf6
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 0x47aa03
mov cl, byte [ebp - 0x31]
cmp cl, 0x39
ja 0x47aa03
add byte [ebp - 0x31], 0xd0
jmp 0x47aa31
mov al, byte [ebp - 0x31]
cmp al, 0x61
jb 0x47aa18
mov dl, byte [ebp - 0x31]
cmp dl, 0x66
ja 0x47aa18
add byte [ebp - 0x31], 0xa9
jmp 0x47aa31
mov cl, byte [ebp - 0x31]
cmp cl, 0x41
jb 0x47aa2d
mov al, byte [ebp - 0x31]
cmp al, 0x46
ja 0x47aa2d
add byte [ebp - 0x31], 0xc9
jmp 0x47aa31
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 0x47aa63
mov al, byte [ebp - 0x31]
cmp al, 0x39
ja 0x47aa63
add byte [ebp - 0x31], 0xd0
jmp 0x47aa92
mov dl, byte [ebp - 0x31]
cmp dl, 0x61
jb 0x47aa79
mov cl, byte [ebp - 0x31]
cmp cl, 0x66
ja 0x47aa79
add byte [ebp - 0x31], 0xa9
jmp 0x47aa92
mov al, byte [ebp - 0x31]
cmp al, 0x41
jb 0x47aa8e
mov dl, byte [ebp - 0x31]
cmp dl, 0x46
ja 0x47aa8e
add byte [ebp - 0x31], 0xc9
jmp 0x47aa92
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 0x47a9e0
mov dword [ebp - 4], 0x3e76f499
xor dword [ebp - 4], 0x20020920
push dword [ebp - 4]
push 0x75c560
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 - 0x134], al
inc dword [ebp - 0x10]
mov eax, dword [ebp - 0x10]
cmp eax, 8
jl 0x47aad5
push dword [ebp + 8]
call fcn.0066ca1c
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 0x47ab67
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 0x47ab5a
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 0x47ab2a
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 0x47abb0
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 0x47ab9e
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 0x47ab7b
jmp 0x47abb0
dec dword [ebp - 0xc]
mov edx, dword [ebp - 0xc]
test edx, edx
jle 0x47abc7
mov ecx, dword [ebp + 0xc]
mov eax, dword [ebp - 0xc]
movsx edx, byte [ecx + eax - 1]
cmp edx, 0x58
je 0x47abad
mov ecx, dword [ebp + 0xc]
mov eax, dword [ebp - 0xc]
mov byte [ecx + eax], 0
push dword [ebp + 8]
push 0xa04008
call fcn.0066c9ec
add esp, 8
push dword [ebp + 0xc]
push 0xa0410c
call fcn.0066c9ec
add esp, 8
mov eax, 1
mov esp, ebp
pop ebp
ret