Function at 0x64687c10
Capabilities:
Check os version
Link many functions at runtime

Disassembly:
push esi
push ebx
sub esp, 0x2c4
mov dword [esp + 0x2c], 0x94
lea eax, [esp + 0x2c]
mov dword [esp], eax
call sub.KERNEL32.dll_GetVersionExA
push ecx
test eax, eax
je 0x64687d68
xor eax, eax
cmp dword [esp + 0x3c], 1
setne al
mov dword [0x6487657c], eax
mov dword [esp], str.userenv.dll
call sub.KERNEL32.dll_LoadLibraryA
push edx
mov dword [0x64876580], eax
test eax, eax
je 0x64687c6f
mov esi, dword [0x6487657c]
test esi, esi
jne 0x64687e00
xor eax, eax
mov dword [0x64876584], eax
mov dword [esp], str.advapi32.dll
call sub.KERNEL32.dll_LoadLibraryA
push ebx
mov dword [0x64876588], eax
test eax, eax
je 0x64687c9d
mov ecx, dword [0x6487657c]
test ecx, ecx
jne 0x64688038
mov eax, 0x64686468
mov dword [0x64876560], eax
mov dword [esp], str.kernel32.dll
call sub.KERNEL32.dll_LoadLibraryA
push edx
mov ebx, eax
mov dword [0x6487658c], eax
test eax, eax
je 0x64687d4c
mov dword [esp + 4], str.GetFileAttributesExA
mov dword [esp], eax
call sub.KERNEL32.dll_GetProcAddress
sub esp, 8
mov dword [0x64876590], eax
mov eax, dword [0x6487657c]
test eax, eax
jne 0x64687e68
mov dword [0x64876594], 0
mov dword [0x6487656c], 0
mov dword [0x64876570], 0
mov dword [0x64876440], 0x646863c8
mov dword [0x64876444], 0x64686308
mov dword [0x64876568], 0x6468622c
mov dword [0x64876574], 0x64686060
mov dword [0x64876578], 0x64685f78
mov dword [0x64876598], 0x64685e9c
mov dword [0x6487659c], 0x64685d90
mov eax, 0x64685cb4
mov dword [0x648765a0], eax
call fcn.646866b8
test eax, eax
je 0x64687de8
mov eax, 1
add esp, 0x2c4
pop ebx
pop esi
ret
mov esi, dword [0x64876444]
call sub.KERNEL32.dll_GetLastError
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], 0xff
lea ebx, [esp + 0xc0]
mov dword [esp + 0x10], ebx
mov dword [esp + 0xc], 0x400
mov dword [esp + 8], eax
mov dword [esp + 4], 0
mov dword [esp], 0x1200
call esi
sub esp, 0x1c
test eax, eax
je 0x64687e18
mov eax, dword [esp + 0xc0]
test ax, ax
je 0x64687e22
mov edx, ebx
cmp ax, 0xa
jne 0x64687dd9
jmp 0x64687ddf
add edx, 2
mov ax, word [edx]
test ax, ax
je 0x64687e22
cmp ax, 0xa
je 0x64687ddf
cmp ax, 0xd
jne 0x64687dc8
mov word [edx], 0
jmp 0x64687e22
mov dword [esp], 0
call sym.allegro_5.0.10_monolith_mt.dll___PHYSFS_setError
xor eax, eax
add esp, 0x2c4
pop ebx
pop esi
ret
mov dword [esp + 4], str.GetUserProfileDirectoryW
mov dword [esp], eax
call sub.KERNEL32.dll_GetProcAddress
sub esp, 8
jmp 0x64687c6a
mov word [esp + 0xc0], 0
mov dword [esp + 8], 0xff
mov dword [esp + 0xc], 0
mov dword [esp + 4], 0x64876460
mov dword [esp], ebx
call sym.allegro_5.0.10_monolith_mt.dll_PHYSFS_utf8FromUcs2
mov dword [esp], 0x64876460
call sym.allegro_5.0.10_monolith_mt.dll___PHYSFS_setError
mov dword [esp], 0
call sym.allegro_5.0.10_monolith_mt.dll___PHYSFS_setError
xor eax, eax
add esp, 0x2c4
pop ebx
pop esi
ret
mov dword [esp + 4], str.GetFileAttributesExW
mov dword [esp], ebx
call sub.KERNEL32.dll_GetProcAddress
sub esp, 8
mov dword [0x64876594], eax
mov eax, dword [0x6487657c]
test eax, eax
je 0x64687ce8
mov dword [esp + 4], str.FindFirstFileW
mov dword [esp], ebx
call sub.KERNEL32.dll_GetProcAddress
sub esp, 8
mov dword [0x6487656c], eax
mov eax, dword [0x6487657c]
test eax, eax
je 0x64687cf2
mov dword [esp + 4], str.FindNextFileW
mov dword [esp], ebx
call sub.KERNEL32.dll_GetProcAddress
sub esp, 8
mov dword [0x64876570], eax
mov eax, dword [0x6487657c]
test eax, eax
je 0x64687cfc
mov dword [esp + 4], str.GetModuleFileNameW
mov dword [esp], ebx
call sub.KERNEL32.dll_GetProcAddress
sub esp, 8
mov edx, dword [0x6487657c]
test eax, eax
je 0x64688058
mov dword [0x64876440], eax
test edx, edx
je 0x64687d06
mov dword [esp + 4], str.FormatMessageW
mov dword [esp], ebx
call sub.KERNEL32.dll_GetProcAddress
sub esp, 8
mov edx, dword [0x6487657c]
test eax, eax
je 0x64688091
mov dword [0x64876444], eax
test edx, edx
je 0x64687d10
mov dword [esp + 4], str.GetFileAttributesW
mov dword [esp], ebx
call sub.KERNEL32.dll_GetProcAddress
sub esp, 8
mov edx, dword [0x6487657c]
test eax, eax
je 0x64688087
mov dword [0x64876568], eax
test edx, edx
je 0x64687d1a
mov dword [esp + 4], str.GetCurrentDirectoryW
mov dword [esp], ebx
call sub.KERNEL32.dll_GetProcAddress
sub esp, 8
mov edx, dword [0x6487657c]
test eax, eax
je 0x6468807d
mov dword [0x64876574], eax
test edx, edx
je 0x64687d24
mov dword [esp + 4], str.CreateDirectoryW
mov dword [esp], ebx
call sub.KERNEL32.dll_GetProcAddress
sub esp, 8
mov edx, dword [0x6487657c]
test eax, eax
je 0x64688073
mov dword [0x64876578], eax
test edx, edx
je 0x64687d2e
mov dword [esp + 4], str.RemoveDirectoryW
mov dword [esp], ebx
call sub.KERNEL32.dll_GetProcAddress
sub esp, 8
mov edx, dword [0x6487657c]
test eax, eax
je 0x64688069
mov dword [0x64876598], eax
test edx, edx
je 0x64687d38
mov dword [esp + 4], str.CreateFileW
mov dword [esp], ebx
call sub.KERNEL32.dll_GetProcAddress
sub esp, 8
mov edx, dword [0x6487657c]
test eax, eax
je 0x64688062
mov dword [0x6487659c], eax
test edx, edx
je 0x64687d42
mov dword [esp + 4], str.DeleteFileW
mov dword [esp], ebx
call sub.KERNEL32.dll_GetProcAddress
sub esp, 8
test eax, eax
jne 0x64687d47
jmp 0x64687d42
mov dword [esp + 4], str.GetUserNameW
mov dword [esp], eax
call sub.KERNEL32.dll_GetProcAddress
sub esp, 8
test eax, eax
jne 0x64687c98
jmp 0x64687c93
mov eax, 0x646863c8
jmp 0x64687ef8
mov eax, 0x64685d90
jmp 0x64688008
mov eax, 0x64685e9c
jmp 0x64687fde
mov eax, 0x64685f78
jmp 0x64687fb0
mov eax, 0x64686060
jmp 0x64687f82
mov eax, 0x6468622c
jmp 0x64687f54
mov eax, 0x64686308
jmp 0x64687f26