Function at 0x4c0710
Capabilities:
Query or enumerate registry value

Disassembly:
mov al, byte [0xcf38ac]
sub esp, 0x2c
push ebx
xor ebx, ebx
cmp al, bl
push edi
jne 0x4c09f4
push fcn.004c10d0
call fcn.004f06b9
add esp, 4
push 0xd83fd0
call dword [sym.imp.KERNEL32.dll_InitializeCriticalSection]
push str.UO_Player
push 0x5194a8
push 0xcf35e0
mov dword [0xcf16c8], ebx
mov dword [0x557cd8], ebx
mov byte [0xcf325c], bl
mov byte [0xcf3600], bl
call fcn.004ee486
mov ecx, 0xc
xor eax, eax
mov edi, 0x8d3ce8
add esp, 0xc
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
mov eax, 3
mov ecx, 0x3e3
mov word [0xcf33aa], ax
mov word [0xcf33a6], ax
lea eax, [esp + 0xc]
mov byte [0xcf3238], bl
push eax
push 1
push ebx
push str.SOFTWAREOrigin_Worlds_OnlineUltima_Online1.0
push reloc.WSOCK32.dll_bind
mov byte [0xcf14e0], bl
mov byte [0xcf1500], bl
mov byte [0xcf14c0], bl
mov dword [0xcf3360], 1
mov dword [0xcf3380], ebx
mov dword [0xcf3384], ebx
mov dword [0xcf3388], ebx
mov dword [0xcf336c], ebx
mov dword [0xcf37a0], ebx
mov dword [0xcf35b8], 0x32
mov dword [0xcf33b0], ebx
mov word [0xcf33ac], cx
mov word [0xcf33a8], cx
mov dword [0xcf3258], ebx
mov dword [0xcf1688], ebx
mov dword [0xcf338c], ebx
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
test eax, eax
jne 0x4c0845
mov edx, dword [esp + 0xc]
lea ecx, [esp + 8]
push ecx
push 0xcf33b8
push ebx
push ebx
push str.ExePath
push edx
mov dword [esp + 0x20], 0x104
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
test eax, eax
je 0x4c085e
push 0x10
push str.ERROR
push str.Ultima_Online_does_not_appear_to_be_installed_correctly_on_your_system._n_nPlease_re_install_UO_by_running_the_setup.exe_program_located_on_your_UO_CD_ROM
push ebx
call dword [sym.imp.USER32.dll_MessageBoxA]
pop edi
pop ebx
add esp, 0x2c
ret
push ebp
push esi
mov esi, 0xcf33b8
push 0x5c
push esi
call fcn.004f00e0
add esp, 8
test eax, eax
je 0x4c088e
push 0x5c
push esi
call fcn.004f00e0
inc eax
push 0x5c
mov esi, eax
push esi
call fcn.004f00e0
add esp, 0x10
test eax, eax
jne 0x4c0874
push 1
mov byte [esi], bl
push str.uo.cfg
mov byte [0xcf168c], bl
mov dword [0xcf153c], ebx
call fcn.004a1e00
mov ecx, dword [0xcf1688]
add esp, 8
cmp ecx, ebx
mov eax, str.login.cfg
je 0x4c08bc
mov eax, ecx
push ebx
push eax
call fcn.004a1e00
call fcn.004c1b50
call fcn.004b64b0
call fcn.004c1160
mov dword [0xcf16bc], ebx
mov dword [0xcf16c0], ebx
mov dword [0xcf16c4], 4
mov dword [0xcf35c0], ebx
mov byte [0xcf35bc], bl
mov dword [0xcf16b8], ebx
mov dword [0xcf16b4], ebx
mov dword [0xcf16b0], ebx
mov dword [0xcf16a4], ebx
mov dword [0xcf16ac], ebx
mov dword [0xcf16a8], ebx
mov dword [0xcf16a0], ebx
mov dword [0xcf169c], ebx
mov dword [0xcf1698], ebx
mov dword [0xcf1694], ebx
mov dword [0xcf1690], ebx
mov dword [0xcf14b8], ebx
call dword [0xd84224]
push pe_nt_image_headers32
mov dword [0xcf14b4], eax
call fcn.004ed8ee
add esp, 0xc
mov ebp, eax
call fcn.004a6160
mov edi, eax
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, ebp
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
xor eax, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, ebp
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
dec ecx
xor esi, esi
lea edi, [ecx + ebp]
cmp esi, 1
jne 0x4c09a6
mov eax, dword [0xcf1328]
cmp eax, ebx
je 0x4c09a1
add eax, 2
mov dword [0xcf1328], eax
mov esi, 2
push esi
push str.map_u.mul
push edi
call fcn.004ee486
lea ecx, [esp + 0x24]
push ecx
push ebp
call fcn.004efce6
add esp, 0x14
cmp eax, 0xffffffff
je 0x4c09da
mov eax, dword [0xcf1328]
mov edx, 1
mov ecx, esi
shl edx, cl
add eax, edx
mov dword [0xcf1328], eax
inc esi
mov byte [edi], bl
cmp esi, 0x10
jl 0x4c098b
push ebp
call fcn.004ed4d0
add esp, 4
mov byte [0xcf38ac], 1
pop esi
pop ebp
pop edi
pop ebx
add esp, 0x2c
ret