Function at 0x480bc0
Capabilities:
Query environment variable
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x808
mov eax, dword [ebp + 0xc]
push ebx
push esi
push edi
mov dword [ebp - 8], ecx
mov ecx, 0xd
mov esi, str.SOFTWAREMicrosoftWindowsCurrentVersionUninstall_
lea edi, [ebp - 0x808]
rep movsd dword es:[edi], dword [esi]
xor bl, bl
movsb byte es:[edi], byte [esi]
mov ecx, eax
lea esp, [esp]
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x480bf0
lea edi, [ebp - 0x808]
sub eax, ecx
mov esi, ecx
dec edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x480c02
mov edx, dword [ebp + 8]
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
lea eax, [ebp + 8]
push eax
and ecx, 3
push 0x20019
rep movsb byte es:[edi], byte [esi]
push 0
lea ecx, [ebp - 0x808]
push ecx
push edx
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
test eax, eax
jne 0x480ecb
mov edi, dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
lea eax, [ebp + 0xc]
push eax
mov eax, dword [ebp + 8]
lea ecx, [ebp - 0x408]
push ecx
lea edx, [ebp - 4]
push edx
push 0
push str.InstallLocation
push eax
mov dword [ebp + 0xc], 0x400
call edi
mov esi, eax
test esi, esi
je 0x480c92
lea ecx, [ebp + 0xc]
push ecx
mov ecx, dword [ebp + 8]
lea edx, [ebp - 0x408]
push edx
lea eax, [ebp - 4]
push eax
push 0
push str.UninstallString
push ecx
mov bl, 1
mov dword [ebp + 0xc], 0x400
call edi
mov esi, eax
mov edx, dword [ebp + 8]
push edx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
test esi, esi
jne 0x480ecb
mov eax, dword [ebp - 4]
cmp eax, 1
je 0x480d02
cmp eax, 2
jne 0x480ecb
xor eax, eax
jmp 0x480cc0
mov cl, byte [ebp + eax - 0x408]
mov byte [ebp + eax - 0x808], cl
inc eax
test cl, cl
jne 0x480cc0
push 0x400
lea eax, [ebp - 0x408]
push eax
lea ecx, [ebp - 0x808]
push ecx
call dword [sym.imp.KERNEL32.dll_ExpandEnvironmentStringsA]
mov dword [ebp + 0xc], eax
test eax, eax
je 0x480ecb
cmp eax, 0x400
jae 0x480ecb
mov esi, dword [sym.imp.msvcrt.dll_strrchr]
test bl, bl
je 0x480d73
lea edx, [ebp - 0x408]
push 0x5c
push edx
call esi
add esp, 8
test eax, eax
je 0x480ecb
mov byte [eax + 1], 0
lea eax, [ebp - 0x408]
push 0x3a
push eax
call esi
add esp, 8
test eax, eax
je 0x480ecb
lea ecx, [ebp - 0x408]
cmp eax, ecx
je 0x480ecb
dec eax
lea edx, [ebp - 0x808]
sub edx, eax
mov cl, byte [eax]
mov byte [edx + eax], cl
inc eax
test cl, cl
jne 0x480d53
xor eax, eax
nop
mov cl, byte [ebp + eax - 0x808]
mov byte [ebp + eax - 0x408], cl
inc eax
test cl, cl
jne 0x480d60
push 0x400
lea edx, [ebp - 0x808]
push edx
lea eax, [ebp - 0x408]
push eax
call dword [sym.imp.KERNEL32.dll_GetLongPathNameA]
mov dword [ebp + 0xc], eax
test eax, eax
je 0x480db3
cmp eax, 0x400
jae 0x480db3
xor eax, eax
lea esp, [esp]
mov cl, byte [ebp + eax - 0x808]
mov byte [ebp + eax - 0x408], cl
inc eax
test cl, cl
jne 0x480da0
lea ecx, [ebp - 0x408]
push str.uninst
push ecx
call fcn.0045b6b0
add esp, 8
test eax, eax
je 0x480e00
lea edx, [ebp - 0x408]
push 0x5c
push edx
mov byte [eax], 0
call esi
add esp, 8
test eax, eax
je 0x480de4
mov byte [eax + 1], 0
lea eax, [ebp - 0x408]
lea edx, [eax + 1]
lea ecx, [ecx]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x480df0
sub eax, edx
mov edx, eax
mov dword [ebp + 0xc], edx
jmp 0x480e03
mov edx, dword [ebp + 0xc]
cmp byte [ebp - 0x408], 0
je 0x480e44
cmp byte [ebp + edx - 0x409], 0x5c
je 0x480e44
lea eax, [ebp - 0x408]
push 0x606d18
push eax
call sym.GameRanger.exe_long_int___cdecl_strcasesuffix_char_const___char_const__
mov edx, dword [ebp + 0xc]
add esp, 8
test eax, eax
jne 0x480e44
mov byte [ebp + edx - 0x408], 0x5c
mov byte [ebp + edx - 0x407], al
inc edx
mov dword [ebp + 0xc], edx
mov ebx, dword [ebp + 0x10]
test ebx, ebx
je 0x480eb3
mov ecx, ebx
mov esi, ebx
nop
mov al, byte [ecx]
inc ecx
test al, al
jne 0x480e50
sub ecx, esi
lea edi, [ebp - 0x408]
mov eax, ecx
dec edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x480e62
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
mov eax, ebx
rep movsb byte es:[edi], byte [esi]
lea esi, [eax + 1]
lea ecx, [ecx]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x480e80
sub eax, esi
add edx, eax
mov dword [ebp + 0xc], edx
cmp byte [ebp - 0x408], cl
je 0x480eb3
cmp byte [ebp + edx - 0x409], 0x5c
je 0x480eb3
mov byte [ebp + edx - 0x408], 0x5c
mov byte [ebp + edx - 0x407], cl
inc edx
mov dword [ebp + 0xc], edx
lea ecx, [ebp - 0x408]
push ecx
mov ecx, dword [ebp - 8]
call fcn.00480950
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc
pop edi
pop esi
xor al, al
pop ebx
mov esp, ebp
pop ebp
ret 0xc