Function at 0x100039a0
Capabilities:
Set registry value

Disassembly:
sub esp, 0x128
mov eax, dword [section..data]
xor eax, esp
mov dword [esp + 0x124], eax
mov eax, dword [esp + 0x130]
push ebp
mov ebp, dword [esp + 0x130]
xor ecx, ecx
cmp ebp, ecx
push edi
mov edi, dword [esp + 0x140]
mov dword [esp + 0x1c], eax
mov byte [esp + 0xb], 0
mov dword [esp + 0x28], ecx
mov dword [esp + 0xc], ecx
je 0x10003c67
cmp eax, ecx
je 0x10003c67
cmp edi, ecx
je 0x10003c67
push ebx
push esi
mov esi, dword [sym.imp.OLEAUT32.dll_SysReAllocString]
push ebp
call esi
mov ebx, eax
mov eax, dword [esp + 0x24]
push eax
mov dword [esp + 0x1c], ebx
call esi
test ebx, ebx
mov dword [esp + 0x2c], eax
je 0x10003c23
test eax, eax
je 0x10003c23
push 0
call dword [sym.imp.ole32.dll_CoInitialize]
lea ecx, [esp + 0x14]
push ecx
push 0x100105cc
push 1
push 0
test eax, eax
push 0x100105bc
setge byte [esp + 0x27]
call dword [sym.imp.ole32.dll_CoCreateInstance]
mov ebx, eax
xor esi, esi
cmp ebx, esi
jl 0x10003ab1
mov eax, dword [esp + 0x14]
cmp eax, esi
je 0x10003ab1
mov ebp, dword [esp + 0x18]
mov edx, dword [eax]
mov edx, dword [edx + 0x18]
lea ecx, [esp + 0x30]
push ecx
push ebp
push eax
call edx
mov ebx, eax
cmp ebx, esi
jl 0x10003c2c
cmp dword [esp + 0x30], esi
je 0x10003c2c
mov edx, dword [esp + 0x144]
mov eax, dword [esp + 0x14]
mov ecx, dword [eax]
push edi
push edx
mov edx, dword [esp + 0x34]
push edx
push ebp
push eax
mov eax, dword [ecx + 0xc]
call eax
mov ebx, eax
cmp ebx, esi
jge 0x10003c2c
push edi
push ebp
call sym.GameuxInstallHelper.dll_RetrieveGUIDForApplicationW
jmp 0x10003c2c
cmp dword [esp + 0x144], 2
mov dword [esp + 0x1c], esi
mov dword [esp + 0x20], esi
jne 0x10003ae2
lea ecx, [esp + 0x28]
push ecx
lea edx, [esp + 0x20]
push edx
push esi
push 0x20006
push esi
push esi
push esi
push str.SoftwareClassesSoftwareMicrosoftWindowsCurrentVersionGameUXGamesToFindOnWindowsUpgrade
push SysReAllocString
jmp 0x10003aff
lea eax, [esp + 0x28]
push eax
lea ecx, [esp + 0x20]
push ecx
push esi
push 0x20006
push esi
push esi
push esi
push str.SoftwareMicrosoftWindowsCurrentVersionGameUXGamesToFindOnWindowsUpgrade
push reloc.OLEAUT32.dll_SysReAllocString
mov esi, dword [sym.imp.ADVAPI32.dll_RegCreateKeyExW]
call esi
test eax, eax
jne 0x10003bf8
push 0xfe
push eax
lea edx, [esp + 0x3e]
push edx
mov word [esp + 0x40], ax
call fcn.100046d0
push 0x100117dc
push edi
call section..text
add esp, 0x14
test eax, eax
je 0x10003b3d
push edi
call dword [sym.imp.ole32.dll_CoCreateGuid]
push 0x80
lea eax, [esp + 0x38]
push eax
push edi
call dword [sym.imp.ole32.dll_StringFromGUID2]
mov ebx, eax
test ebx, ebx
jl 0x10003bf8
lea ecx, [esp + 0x28]
push ecx
mov ecx, dword [esp + 0x20]
lea edx, [esp + 0x24]
push edx
push 0
push 0x20006
push 0
push 0
push 0
lea eax, [esp + 0x50]
push eax
push ecx
call esi
test eax, eax
jne 0x10003be9
mov ecx, 0x104
mov eax, ebp
cmp word [eax], 0
je 0x10003c09
add eax, 2
sub ecx, 1
jne 0x10003b86
xor edx, edx
mov eax, dword [esp + 0x24]
mov ecx, 0x104
cmp word [eax], 0
je 0x10003c16
add eax, 2
sub ecx, 1
jne 0x10003ba3
xor esi, esi
mov eax, dword [esp + 0x20]
mov edi, dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
lea edx, [edx + edx + 2]
push edx
push ebp
push 1
push 0
push str.GDFBinaryPath
push eax
call edi
mov edx, dword [esp + 0x24]
mov eax, dword [esp + 0x20]
lea ecx, [esi + esi + 2]
push ecx
push edx
push 1
push 0
push str.GameInstallPath
push eax
call edi
mov eax, dword [esp + 0x20]
test eax, eax
je 0x10003bf8
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x10003c28
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
jmp 0x10003c28
test ecx, ecx
je 0x10003b98
mov edx, 0x104
sub edx, ecx
jmp 0x10003b9a
test ecx, ecx
je 0x10003bb1
mov esi, 0x104
sub esi, ecx
jmp 0x10003bb3
mov ebx, 0x8007000e
mov ebp, dword [esp + 0x18]
test ebp, ebp
mov esi, dword [sym.imp.OLEAUT32.dll_SysStringLen]
je 0x10003c39
push ebp
call esi
mov eax, dword [esp + 0x2c]
test eax, eax
je 0x10003c44
push eax
call esi
mov eax, dword [esp + 0x14]
test eax, eax
je 0x10003c54
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
cmp byte [esp + 0x13], 0
je 0x10003c61
call dword [sym.imp.ole32.dll_CoUninitialize]
pop esi
mov eax, ebx
pop ebx
jmp 0x10003c6c
mov eax, 0x80070057
mov ecx, dword [esp + 0x12c]
pop edi
pop ebp
xor ecx, esp
call fcn.100046b7
add esp, 0x128
ret 0x10