Function at 0x438b13
Capabilities:
Check if file exists
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x650
mov eax, dword [0x5cd9c4]
xor eax, ebp
mov dword [ebp - 4], eax
mov edx, dword [ebp + 8]
mov eax, dword [ebp + 0xc]
mov ecx, dword [ebp + 0x10]
push ebx
push esi
mov esi, dword [ebp + 0x14]
xor ebx, ebx
mov dword [ebp - 0x644], edx
mov dword [ebp - 0x640], eax
mov dword [ebp - 0x648], ecx
mov dword [ebp - 0x638], ebx
push edi
mov edi, dword [ebp + 0x18]
test edx, edx
je 0x438d93
cmp dword [eax + 0x10], ebx
je 0x438d93
cmp dword [edi + 0x10], ebx
je 0x438d93
push 0x208
lea eax, [ebp - 0x20c]
push ebx
push eax
call fcn.00520800
push 0x208
lea eax, [ebp - 0x61c]
push ebx
push eax
call fcn.00520800
movzx ecx, byte [ebp + 0x1c]
mov eax, 0x206
mov dword [ebp - 0x64c], eax
add esp, 0x18
mov dword [ebp - 0x650], eax
mov eax, dword [ebp - 0x640]
shl ecx, 8
inc ecx
mov dword [ebp - 0x63c], 1
cmp dword [eax + 0x14], 8
jb 0x438bc4
mov eax, dword [eax]
lea edx, [ebp - 0x638]
push edx
push ecx
push ebx
push eax
push dword [ebp - 0x644]
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
jne 0x438d82
mov eax, dword [ebp - 0x648]
cmp dword [eax + 0x14], 8
jb 0x438bf0
mov eax, dword [eax]
lea ecx, [ebp - 0x64c]
push ecx
lea ecx, [ebp - 0x20c]
push ecx
lea ecx, [ebp - 0x63c]
push ecx
push ebx
push eax
push dword [ebp - 0x638]
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
jne 0x438d82
cmp dword [esi + 0x10], ebx
je 0x438c53
cmp dword [esi + 0x14], 8
jb 0x438c28
mov esi, dword [esi]
lea eax, [ebp - 0x650]
push eax
lea eax, [ebp - 0x61c]
push eax
lea eax, [ebp - 0x63c]
push eax
push ebx
push esi
push dword [ebp - 0x638]
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
jne 0x438d82
lea eax, [ebp - 0x20c]
push eax
lea ecx, [ebp - 0x634]
call fcn.00401b4a
lea ecx, [ebp - 0x634]
mov esi, dword [eax + 0x10]
call fcn.004036e0
test esi, esi
jne 0x438c8b
push 0x287
push str.base::RivalMonitor::CheckInstalledReg2
push str.__s__d___szInstallDir_is_empty.
jmp 0x438da2
push 0x208
lea eax, [ebp - 0x414]
push ebx
push eax
call fcn.00520800
add esp, 0xc
lea eax, [ebp - 0x61c]
lea ecx, [ebp - 0x634]
push eax
call fcn.00401b4a
lea ecx, [ebp - 0x634]
mov esi, dword [eax + 0x10]
call fcn.004036e0
test esi, esi
je 0x438d0c
cmp dword [edi + 0x14], 8
jb 0x438ccc
mov edi, dword [edi]
push edi
lea eax, [ebp - 0x61c]
push eax
lea eax, [ebp - 0x20c]
push eax
push 0x56e8d8
lea eax, [ebp - 0x414]
push 0x104
push eax
call fcn.00401ab5
add esp, 0x18
test eax, eax
jns 0x438d3e
push 0x28f
push str.base::RivalMonitor::CheckInstalledReg2
push str.__s__d____snwprintf_s_error.
jmp 0x438da2
cmp dword [edi + 0x14], 8
jb 0x438d14
mov edi, dword [edi]
push edi
lea eax, [ebp - 0x20c]
push eax
lea eax, [ebp - 0x414]
push eax
call dword [sym.imp.SHLWAPI.dll_PathCombineW]
test eax, eax
jne 0x438d3e
push 0x294
push str.base::RivalMonitor::CheckInstalledReg2
push str.__s__d___PathCombine_error.
jmp 0x438da2
lea eax, [ebp - 0x414]
mov esi, str.base::RivalMonitor::CheckInstalledReg2
push eax
push 0x299
push esi
push str.__s__d___file_path_is:__s
call fcn.00402cc1
add esp, 0x10
lea eax, [ebp - 0x414]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x438daa
push 0x29d
push esi
push str.__s__d___file_is_exist.
call fcn.00402cc1
mov bl, 1
jmp 0x438da7
push 0x282
push str.base::RivalMonitor::CheckInstalledReg2
push str.__s__d___RegOpenKey_or_RegQueryValueEx_failed.
jmp 0x438da2
push 0x26d
push str.base::RivalMonitor::CheckInstalledReg2
push str.__s__d___root__subkey__value_filename_is_NULL.
call fcn.00402cc1
add esp, 0xc
cmp dword [ebp - 0x638], 0
je 0x438dbf
push dword [ebp - 0x638]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov ecx, dword [ebp - 4]
mov al, bl
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.0051d360
leave
ret 0x18