Function at 0x30d7a0
Capabilities:
Check os version
Get common file path
Get disk information

Disassembly:
push edi
sub esp, 0x2f4
mov eax, dword [esp + 0x2fc]
mov edx, dword [eax]
test edx, edx
mov edi, dword [esp + 0x300]
jl 0x30db0f
mov eax, dword [edi]
cmp eax, 4
je 0x30daed
test eax, eax
je 0x30d818
cmp eax, 3
je 0x30d818
cmp eax, 5
jne 0x30d7fa
mov eax, dword [esp + 0x304]
mov edx, dword [esp + 0x308]
mov dword [eax], 0x1000
mov dword [edx], 0
add esp, 0x2f4
pop edi
ret
call dword [sym.imp.MSVCRT.dll__errno]
mov edx, 0x16
mov dword [eax], edx
mov eax, dword [esp + 0x308]
mov dword [eax], edx
add esp, 0x2f4
pop edi
ret
lea eax, [esp]
push eax
push edx
call dword [sym.imp.MSVCRT.dll__fstat]
add esp, 8
cmp eax, 0xffffffff
je 0x30dad4
lea eax, [esp + 0x24]
push eax
push 0x104
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryA]
test eax, eax
je 0x30daa9
push 1
call dword [sym.imp.KERNEL32.dll_SetErrorMode]
mov eax, dword [edi]
cmp eax, 3
jne 0x30d893
lea edi, [esp + 0x24]
xor eax, eax
mov dh, byte [edi]
mov ecx, edi
test dh, dh
je 0x30d870
add ecx, 1
add eax, 1
mov dl, byte [ecx]
test dl, dl
jne 0x30d864
mov ecx, dword [esp + 0x304]
neg eax
add eax, 0x102
mov edx, 0xff
cmp eax, 0xff
jl 0x30d88c
mov eax, edx
mov dword [ecx], eax
jmp 0x30d99d
lea eax, [esp + 0x128]
push 0x94
push 0
push eax
call fcn.00311ff4
add esp, 0xc
mov dword [esp + 0x128], 0x94
lea eax, [esp + 0x128]
push eax
call dword [sym.imp.KERNEL32.dll_GetVersionExA]
test eax, eax
je 0x30da7e
mov eax, dword [esp + 0x138]
cmp eax, 2
jne 0x30d989
mov eax, dword [esp + 0x12c]
cmp eax, 4
jbe 0x30d989
push 0x31da4c
call dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
test eax, eax
je 0x30da38
push 0x31da6c
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
test eax, eax
je 0x30da0d
lea ecx, [esp + 0x24]
lea edx, [esp + 0x1bc]
push 0x104
push edx
push ecx
call eax
test eax, eax
je 0x30d9dd
lea ecx, [esp + 0x1bc]
lea eax, [esp + 0x2c0]
push 0x32
xor edx, edx
push eax
push edx
push edx
push edx
push edx
push edx
push ecx
call dword [sym.imp.KERNEL32.dll_GetVolumeInformationA]
test eax, eax
je 0x30d9ad
lea eax, [esp + 0x2c0]
push 0x31da80
push eax
call dword [sym.imp.MSVCRT.dll__stricmp]
add esp, 8
test eax, eax
jne 0x30d97a
mov eax, dword [esp + 0x304]
mov dword [eax], 0x3ff
jmp 0x30d99d
mov eax, dword [esp + 0x304]
mov dword [eax], 0
jmp 0x30d99d
mov eax, dword [esp + 0x304]
mov ecx, dword [esp + 0x308]
xor edx, edx
mov dword [eax], edx
mov dword [ecx], edx
push 0
call dword [sym.imp.KERNEL32.dll_SetErrorMode]
add esp, 0x2f4
pop edi
ret
call fcn.003057f4
call dword [sym.imp.MSVCRT.dll__errno]
mov edx, dword [esp + 0x308]
mov ecx, dword [esp + 0x304]
mov eax, dword [eax]
mov dword [edx], eax
xor edi, edi
mov dword [ecx], edi
push edi
call dword [sym.imp.KERNEL32.dll_SetErrorMode]
add esp, 0x2f4
pop edi
ret
call fcn.003057f4
call dword [sym.imp.MSVCRT.dll__errno]
mov edx, dword [esp + 0x308]
mov ecx, dword [esp + 0x304]
mov eax, dword [eax]
mov dword [edx], eax
xor edi, edi
mov dword [ecx], edi
push edi
call dword [sym.imp.KERNEL32.dll_SetErrorMode]
add esp, 0x2f4
pop edi
ret
call dword [sym.imp.MSVCRT.dll__errno]
mov ecx, dword [esp + 0x304]
mov edx, 0xe
mov dword [eax], edx
mov eax, dword [esp + 0x308]
mov dword [eax], edx
mov dword [ecx], 0
add esp, 0x2f4
pop edi
ret
push 0x31da4c
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
test eax, eax
jne 0x30d8fe
call dword [sym.imp.MSVCRT.dll__errno]
mov edx, 0xe
mov dword [eax], edx
mov eax, dword [esp + 0x308]
push 0
mov dword [eax], edx
call dword [sym.imp.KERNEL32.dll_SetErrorMode]
mov eax, dword [esp + 0x304]
mov dword [eax], 0
add esp, 0x2f4
pop edi
ret
call fcn.003057f4
mov eax, dword [esp + 0x304]
mov dword [eax], 0
call dword [sym.imp.MSVCRT.dll__errno]
mov edx, dword [esp + 0x308]
mov eax, dword [eax]
mov dword [edx], eax
add esp, 0x2f4
pop edi
ret
call fcn.003057f4
call dword [sym.imp.MSVCRT.dll__errno]
mov edx, dword [esp + 0x308]
mov ecx, dword [esp + 0x304]
mov eax, dword [eax]
mov dword [edx], eax
mov dword [ecx], 0
add esp, 0x2f4
pop edi
ret
call dword [sym.imp.MSVCRT.dll__errno]
mov edx, dword [esp + 0x308]
mov eax, dword [eax]
mov dword [edx], eax
add esp, 0x2f4
pop edi
ret
mov eax, dword [esp + 0x304]
mov edx, dword [esp + 0x308]
mov dword [eax], 0x104
mov dword [edx], 0
add esp, 0x2f4
pop edi
ret
call dword [sym.imp.MSVCRT.dll__errno]
mov edx, 9
mov dword [eax], edx
mov eax, dword [esp + 0x308]
mov dword [eax], edx
add esp, 0x2f4
pop edi
ret