Function at 0x5d17d0
Capabilities:
Get common file path
Query or enumerate registry value
Read file on windows
Resolve function by parsing pe exports

Disassembly:
push 0xffffffffffffffff
push 0x643f4c
mov eax, dword fs:[0]
push eax
mov eax, 0x303b0
call fcn.00635b40
mov eax, dword [0x699fe8]
xor eax, esp
mov dword [esp + 0x303a8], eax
push ebx
push ebp
push esi
push edi
mov eax, dword [0x699fe8]
xor eax, esp
push eax
lea eax, [esp + 0x303c4]
mov dword fs:[0], eax
mov eax, dword [esp + 0x303d8]
mov ebx, dword [esp + 0x303d4]
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x303dc]
mov dword [esp + 0x3c], ecx
mov dword [esp + 0x40], edx
mov dword [esp + 0x34], eax
call fcn.005af4e0
test al, al
je 0x5d1925
push 2
mov edi, 0xf
xor esi, esi
push 0x6674b0
lea ecx, [esp + 0x68]
mov dword [esp + 0x80], edi
mov dword [esp + 0x7c], esi
mov byte [esp + 0x6c], 0
call fcn.00404330
mov dword [esp + 0x303cc], esi
lea esi, [esp + 0x44]
call fcn.005af590
lea edx, [esp + 0x60]
lea esi, [esp + 0x7c]
mov byte [esp + 0x303cc], 1
call fcn.005b0520
mov ebp, 0x10
cmp dword [eax + 0x18], ebp
jb 0x5d189c
mov ecx, dword [eax + 4]
jmp 0x5d189f
lea ecx, [eax + 4]
lea edx, [esp + 0xb4]
mov al, byte [ecx]
mov byte [edx], al
add ecx, 1
add edx, 1
test al, al
jne 0x5d18a6
cmp dword [esp + 0x94], ebp
jb 0x5d18cd
mov ecx, dword [esp + 0x80]
push ecx
call fcn.0061c19a
add esp, 4
xor esi, esi
cmp dword [esp + 0x5c], ebp
mov dword [esp + 0x94], edi
mov dword [esp + 0x90], esi
mov byte [esp + 0x80], 0
jb 0x5d18f8
mov edx, dword [esp + 0x48]
push edx
call fcn.0061c19a
add esp, 4
mov dword [esp + 0x303cc], 0xffffffff
cmp dword [esp + 0x78], ebp
mov dword [esp + 0x5c], edi
mov dword [esp + 0x58], esi
mov byte [esp + 0x48], 0
jb 0x5d193d
mov eax, dword [esp + 0x64]
push eax
call fcn.0061c19a
add esp, 4
jmp 0x5d193d
push 0x104
lea ecx, [esp + 0xb8]
push ecx
call dword [sym.imp.KERNEL32.dll_GetWindowsDirectoryA]
mov ebp, 0x10
lea eax, [esp + 0xb4]
lea edx, [eax + 1]
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x5d1947
sub eax, edx
cmp byte [esp + eax + 0xb3], 0x5c
je 0x5d197a
lea edi, [esp + 0xb4]
add edi, 0xffffffff
mov al, byte [edi + 1]
add edi, 1
test al, al
jne 0x5d1966
mov dx, word [0x66f784]
mov word [edi], dx
lea eax, [esp + 0xb4]
add eax, 0xffffffff
mov cl, byte [eax + 1]
add eax, 1
test cl, cl
jne 0x5d1984
mov ecx, dword [str.popcreg.dat]
mov edx, dword [0x676318]
mov dword [eax], ecx
mov ecx, dword [0x67631c]
mov dword [eax + 4], edx
lea edx, [esp + 0xb4]
push 0x658580
push edx
mov dword [eax + 8], ecx
call fcn.0061ceb1
mov esi, eax
add esp, 8
test esi, esi
je 0x5d1b28
push esi
push 1
lea eax, [esp + 0x20]
push 2
push eax
call fcn.0061d24e
add esp, 0x10
cmp eax, 1
jne 0x5d1b1f
movzx eax, word [esp + 0x18]
push esi
push eax
lea ecx, [esp + 0x3c4]
push 1
push ecx
mov byte [esp + eax + 0x3cc], 0
call fcn.0061d24e
push esi
push 1
lea edx, [esp + 0x30]
push 2
push edx
call fcn.0061d24e
add esp, 0x20
cmp eax, 1
jne 0x5d1b1f
movzx eax, word [esp + 0x18]
push esi
push eax
mov byte [esp + eax + 0x103c4], 0
lea eax, [esp + 0x103c4]
push 1
push eax
call fcn.0061d24e
push esi
push 1
lea ecx, [esp + 0x30]
push 2
push ecx
call fcn.0061d24e
add esp, 0x20
cmp eax, 1
jne 0x5d1b1f
movzx eax, word [esp + 0x18]
push esi
push eax
lea edx, [esp + 0x203c4]
push 1
push edx
mov byte [esp + eax + 0x203cc], 0
call fcn.0061d24e
push esi
push 1
lea eax, [esp + 0x44]
push 2
push eax
call fcn.0061d24e
add esp, 0x20
cmp eax, 1
jne 0x5d1b1f
push esi
push eax
lea ecx, [esp + 0x30]
push 2
push ecx
call fcn.0061d24e
add esp, 0x10
cmp eax, 1
jne 0x5d1b1f
lea eax, [esp + 0x3bc]
lea edx, [eax + 1]
lea ecx, [ecx]
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x5d1ab0
mov edi, dword [ebx + 0x58]
sub eax, edx
mov ebp, eax
cmp edi, ebp
mov eax, edi
mov ecx, edi
jb 0x5d1aca
mov ecx, ebp
cmp dword [ebx + 0x5c], 0x10
jb 0x5d1ad5
mov eax, dword [ebx + 0x48]
jmp 0x5d1ad8
lea eax, [ebx + 0x48]
push ecx
lea edx, [esp + 0x3c0]
push edx
push eax
call fcn.00441a60
add esp, 0xc
test eax, eax
jne 0x5d1aff
cmp edi, ebp
jb 0x5d1aff
cmp edi, ebp
setne al
test eax, eax
je 0x5d1d44
push esi
push 1
lea eax, [esp + 0x20]
push 2
push eax
call fcn.0061d24e
add esp, 0x10
cmp eax, 1
mov ebp, 0x10
je 0x5d19e2
push esi
call fcn.0061cf36
add esp, 4
add ebx, 0x7c
push ebx
mov edi, str.SOFTWARE_
lea esi, [esp + 0x48]
call fcn.00445160
add esp, 4
mov edi, eax
lea eax, [esp + 0x98]
mov dword [esp + 0x303cc], 2
call fcn.005b09f0
mov ebx, 4
mov byte [esp + 0x303cc], bl
cmp dword [esp + 0x5c], ebp
jb 0x5d1b75
mov ecx, dword [esp + 0x48]
push ecx
call fcn.0061c19a
add esp, 4
cmp dword [esp + 0xb0], ebp
mov eax, dword [esp + 0x9c]
mov dword [esp + 0x5c], 0xf
mov dword [esp + 0x58], 0
mov byte [esp + 0x48], 0
jae 0x5d1ba1
lea eax, [esp + 0x9c]
lea edx, [esp + 0x24]
push edx
push 0x20006
push 0
push eax
push reloc.OLEAUT32.dll_SysReAllocString
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
test eax, eax
jne 0x5d1d01
mov esi, dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
lea eax, [esp + 0x1c]
push eax
mov eax, dword [esp + 0x28]
lea ecx, [esp + 0x2c0]
push ecx
lea edx, [esp + 0x28]
push edx
push 0
push str.RegName
mov edi, 0x100
push eax
mov dword [esp + 0x38], 1
mov dword [esp + 0x34], edi
call esi
test eax, eax
jne 0x5d1c2e
mov ecx, dword [esp + 0x1c]
mov byte [esp + ecx + 0x2bc], al
lea eax, [esp + 0x2bc]
lea edx, [eax + 1]
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x5d1c11
mov ecx, dword [esp + 0x38]
sub eax, edx
push eax
lea edx, [esp + 0x2c0]
push edx
call fcn.00404330
lea eax, [esp + 0x1c]
push eax
mov eax, dword [esp + 0x28]
lea ecx, [esp + 0x1c0]
push ecx
lea edx, [esp + 0x28]
push edx
push 0
push str.RegCode
push eax
mov dword [esp + 0x38], 1
mov dword [esp + 0x34], edi
call esi
test eax, eax
jne 0x5d1c90
mov ecx, dword [esp + 0x1c]
mov byte [esp + ecx + 0x1bc], al
lea eax, [esp + 0x1bc]
lea edx, [eax + 1]
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x5d1c73
mov ecx, dword [esp + 0x3c]
sub eax, edx
push eax
lea edx, [esp + 0x1c0]
push edx
call fcn.00404330
lea eax, [esp + 0x1c]
push eax
mov eax, dword [esp + 0x28]
lea ecx, [esp + 0x34]
push ecx
lea edx, [esp + 0x28]
push edx
push 0
push str.TimesPlayed
push eax
mov dword [esp + 0x38], ebx
mov dword [esp + 0x34], ebx
call esi
test eax, eax
jne 0x5d1cc3
mov ecx, dword [esp + 0x30]
mov edx, dword [esp + 0x40]
mov dword [edx], ecx
lea eax, [esp + 0x1c]
push eax
mov eax, dword [esp + 0x28]
lea ecx, [esp + 0x34]
push ecx
lea edx, [esp + 0x28]
push edx
push 0
push str.TimesExecuted
push eax
mov dword [esp + 0x38], ebx
mov dword [esp + 0x34], ebx
call esi
test eax, eax
jne 0x5d1cf6
mov ecx, dword [esp + 0x30]
mov edx, dword [esp + 0x34]
mov dword [edx], ecx
mov eax, dword [esp + 0x24]
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
cmp dword [esp + 0xb0], ebp
jb 0x5d1d1a
mov ecx, dword [esp + 0x9c]
push ecx
call fcn.0061c19a
add esp, 4
mov ecx, dword [esp + 0x303c4]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x303a8]
xor ecx, esp
call fcn.0061efd1
add esp, 0x303bc
ret 0xc
lea ecx, [esp + 0x103bc]
push ecx
mov ecx, dword [esp + 0x3c]
call fcn.00404300
mov ecx, dword [esp + 0x3c]
lea edx, [esp + 0x203bc]
push edx
call fcn.00404300
movsx eax, word [esp + 0x2c]
mov ecx, dword [esp + 0x40]
movsx edx, word [esp + 0x28]
mov dword [ecx], eax
mov eax, dword [esp + 0x34]
push esi
mov dword [eax], edx
call fcn.0061cf36
jmp 0x5d1d17