Function at 0x40ab30
Capabilities:
Query environment variable
Read .ini file

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x468
mov eax, dword [0x4f2500]
xor eax, esp
mov dword [esp + 0x464], eax
mov eax, dword [ebp + 8]
mov dword [esp + 4], eax
mov eax, dword [0x4f7510]
push esi
push edi
test eax, eax
jne 0x40ab7d
push 0x24d0
call fcn.0042336c
add esp, 4
test eax, eax
je 0x40ab76
mov esi, eax
call fcn.00415ef0
jmp 0x40ab78
xor eax, eax
mov dword [0x4f7510], eax
lea ecx, [eax + 0x1450]
lea esi, [ecx + 2]
mov dx, word [ecx]
add ecx, 2
test dx, dx
jne 0x40ab86
sub ecx, esi
sar ecx, 1
cmp ecx, 4
jbe 0x40ad51
test eax, eax
jne 0x40abc3
push 0x24d0
call fcn.0042336c
add esp, 4
test eax, eax
je 0x40abbc
mov esi, eax
call fcn.00415ef0
jmp 0x40abbe
xor eax, eax
mov dword [0x4f7510], eax
mov edi, eax
test eax, eax
jne 0x40abf2
push 0x24d0
call fcn.0042336c
add esp, 4
test eax, eax
je 0x40abe8
mov esi, eax
call fcn.00415ef0
mov dword [0x4f7510], eax
jmp 0x40abf2
mov dword [0x4f7510], 0
lea ecx, [esp + 0x10]
push ecx
add edi, 0x1450
push edi
call dword [sym.imp.KERNEL32.dll_FindFirstFileW]
cmp eax, 0xffffffff
je 0x40acda
push eax
call dword [sym.imp.KERNEL32.dll_FindClose]
xor edx, edx
push 0x206
push edx
lea eax, [esp + 0x1a]
push eax
mov word [esp + 0x1c], dx
call fcn.004276b0
add esp, 0xc
push 0x104
lea ecx, [esp + 0x14]
push ecx
push str._localappdata_GamePPVConfig.ini
call dword [sym.imp.KERNEL32.dll_ExpandEnvironmentStringsW]
mov eax, dword [0x4f7510]
test eax, eax
jne 0x40ac6d
push 0x24d0
call fcn.0042336c
add esp, 4
test eax, eax
je 0x40ac66
mov esi, eax
call fcn.00415ef0
jmp 0x40ac68
xor eax, eax
mov dword [0x4f7510], eax
lea edi, [eax + 0x1450]
test eax, eax
jne 0x40ac98
push 0x24d0
call fcn.0042336c
add esp, 4
test eax, eax
je 0x40ac91
mov esi, eax
call fcn.00415ef0
jmp 0x40ac93
xor eax, eax
mov dword [0x4f7510], eax
lea ecx, [eax + 0x410]
sub ecx, edi
movzx eax, word [edi]
mov word [ecx + edi], ax
add edi, 2
test ax, ax
jne 0x40aca0
mov eax, dword [esp + 0xc]
lea edx, [esp + 0x10]
push edx
push 0x14
add eax, 0x450
push eax
push 0x4cb44c
push 0x4ccb64
push str.GamePlusPlus
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
jmp 0x40adbf
mov eax, dword [0x4f7510]
test eax, eax
jne 0x40ad04
push 0x24d0
call fcn.0042336c
add esp, 4
test eax, eax
je 0x40acfd
mov esi, eax
call fcn.00415ef0
jmp 0x40acff
xor eax, eax
mov dword [0x4f7510], eax
lea edi, [eax + 0x618]
test eax, eax
jne 0x40ad2f
push 0x24d0
call fcn.0042336c
add esp, 4
test eax, eax
je 0x40ad28
mov esi, eax
call fcn.00415ef0
jmp 0x40ad2a
xor eax, eax
mov dword [0x4f7510], eax
lea ecx, [eax + 0x410]
sub ecx, edi
jmp 0x40ad40
movzx eax, word [edi]
mov word [ecx + edi], ax
add edi, 2
test ax, ax
jne 0x40ad40
jmp 0x40adbf
test eax, eax
jne 0x40ad76
push 0x24d0
call fcn.0042336c
add esp, 4
test eax, eax
je 0x40ad6f
mov esi, eax
call fcn.00415ef0
jmp 0x40ad71
xor eax, eax
mov dword [0x4f7510], eax
lea edi, [eax + 0x618]
test eax, eax
jne 0x40ada1
push 0x24d0
call fcn.0042336c
add esp, 4
test eax, eax
je 0x40ad9a
mov esi, eax
call fcn.00415ef0
jmp 0x40ad9c
xor eax, eax
mov dword [0x4f7510], eax
lea ecx, [eax + 0x410]
sub ecx, edi
lea esp, [esp]
movzx eax, word [edi]
mov word [ecx + edi], ax
add edi, 2
test ax, ax
jne 0x40adb0
push 0x208
lea ecx, [esp + 0x264]
push 0
push ecx
call fcn.004276b0
add esp, 0xc
push 0x104
lea edx, [esp + 0x264]
push edx
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
mov eax, dword [0x4f7510]
test eax, eax
jne 0x40ae15
push 0x24d0
call fcn.0042336c
add esp, 4
test eax, eax
je 0x40ae0e
mov esi, eax
call fcn.00415ef0
jmp 0x40ae10
xor eax, eax
mov dword [0x4f7510], eax
mov edi, eax
test eax, eax
jne 0x40ae44
push 0x24d0
call fcn.0042336c
add esp, 4
test eax, eax
je 0x40ae3a
mov esi, eax
call fcn.00415ef0
mov dword [0x4f7510], eax
jmp 0x40ae44
mov dword [0x4f7510], 0
add edi, 0x1040
push edi
lea eax, [esp + 0x264]
push eax
call fcn.004156b0
mov edx, dword [0x4f36ec]
mov eax, dword [edx + 0xc]
mov ecx, 0x4f36ec
call eax
add eax, 0x10
mov dword [esp + 8], eax
mov eax, dword [0x4f7510]
test eax, eax
jne 0x40ae99
push 0x24d0
call fcn.0042336c
add esp, 4
test eax, eax
je 0x40ae92
mov esi, eax
call fcn.00415ef0
jmp 0x40ae94
xor eax, eax
mov dword [0x4f7510], eax
add eax, 0x1040
push eax
push 0x4ccb74
lea edi, [esp + 0x10]
call fcn.00404650
mov ecx, dword [esp + 0x14]
mov ecx, dword [ecx + 0x47c]
add esp, 8
test ecx, ecx
je 0x40aeca
mov edx, dword [ecx]
mov eax, dword [esp + 8]
mov edx, dword [edx + 0x2c]
push eax
call edx
mov eax, dword [0x4f7510]
test eax, eax
jne 0x40aef4
push 0x24d0
call fcn.0042336c
add esp, 4
test eax, eax
je 0x40aeed
mov esi, eax
call fcn.00415ef0
jmp 0x40aeef
xor eax, eax
mov dword [0x4f7510], eax
add eax, 0x1040
push eax
push str.GamePP_V_s_Setup
lea edi, [esp + 0x10]
call fcn.00404650
mov eax, dword [esp + 0x14]
mov ecx, dword [eax + 0x4b0]
mov esi, dword [esp + 0x10]
add esp, 8
test ecx, ecx
je 0x40af25
mov edx, dword [ecx]
mov eax, dword [edx + 0x2c]
push esi
call eax
lea eax, [esi - 0x10]
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40af41
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [esp + 0x46c]
pop edi
pop esi
xor ecx, esp
call fcn.0042292e
mov esp, ebp
pop ebp
ret 4