Function at 0x30d354
Capabilities:
Check os version
Get disk information

Disassembly:
push edi
push esi
push ebp
push ebx
sub esp, 0x1f4
mov edi, dword [esp + 0x20c]
mov edx, dword [edi]
mov esi, dword [esp + 0x210]
mov ebp, dword [esp + 0x218]
cmp edx, dword [esp + 0x21c]
ja 0x30d53f
mov eax, dword [esi]
cmp eax, 4
je 0x30d780
test eax, eax
je 0x30d3d5
cmp eax, 3
je 0x30d3d5
cmp eax, 5
jne 0x30d3ba
mov eax, dword [esp + 0x214]
mov dword [eax], 0x1000
mov dword [ebp], 0
add esp, 0x1f4
pop ebx
pop ebp
pop esi
pop edi
ret
call dword [sym.imp.MSVCRT.dll__errno]
mov edx, 0x16
mov dword [eax], edx
mov dword [ebp], edx
add esp, 0x1f4
pop ebx
pop ebp
pop esi
pop edi
ret
add edx, 1
push edx
call dword [sym.imp.MSVCRT.dll_malloc]
mov ebx, eax
add esp, 4
test ebx, ebx
je 0x30d76a
push dword [edi]
push dword [esp + 0x20c]
push ebx
call fcn.00312070
lea ecx, [esp + 0xc]
push ecx
push ebx
mov edx, dword [edi]
mov byte [ebx + edx], 0
call dword [sym.imp.MSVCRT.dll__stat]
add esp, 0x14
mov dword [ebp], eax
cmp eax, 0xffffffff
je 0x30d74d
push 1
call dword [sym.imp.KERNEL32.dll_SetErrorMode]
mov edx, dword [esi]
cmp edx, 3
je 0x30d674
lea edx, [esp + 0x24]
push 0x94
push 0
push edx
call fcn.00311ff4
add esp, 0xc
mov dword [esp + 0x24], 0x94
lea edx, [esp + 0x24]
push edx
call dword [sym.imp.KERNEL32.dll_GetVersionExA]
test eax, eax
je 0x30d645
mov edx, dword [esp + 0x34]
cmp edx, 2
jne 0x30d516
mov edx, dword [esp + 0x28]
cmp edx, 4
jbe 0x30d516
push 0x31da4c
call dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
test eax, eax
je 0x30d5fa
push 0x31da6c
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
test eax, eax
je 0x30d5cb
lea edx, [esp + 0xb8]
push 0x104
push edx
push ebx
call eax
test eax, eax
je 0x30d594
lea esi, [esp + 0xb8]
lea edx, [esp + 0x1bc]
push 0x32
xor ecx, ecx
push edx
push ecx
push ecx
push ecx
push ecx
push ecx
push esi
call dword [sym.imp.KERNEL32.dll_GetVolumeInformationA]
test eax, eax
je 0x30d55d
lea edx, [esp + 0x1bc]
push 0x31da80
push edx
call dword [sym.imp.MSVCRT.dll__stricmp]
add esp, 8
test eax, eax
jne 0x30d507
mov edx, dword [esp + 0x214]
mov dword [edx], 0x3ff
jmp 0x30d524
mov edx, dword [esp + 0x214]
mov dword [edx], 0
jmp 0x30d524
mov ecx, dword [esp + 0x214]
xor edx, edx
mov dword [ebp], edx
mov dword [ecx], edx
push 0
call dword [sym.imp.KERNEL32.dll_SetErrorMode]
push ebx
call dword [sym.imp.MSVCRT.dll_free]
pop ecx
add esp, 0x1f4
pop ebx
pop ebp
pop esi
pop edi
ret
mov dword [ebp], 0x16
call dword [sym.imp.MSVCRT.dll__errno]
mov dword [eax], 0x16
add esp, 0x1f4
pop ebx
pop ebp
pop esi
pop edi
ret
call fcn.003057f4
call dword [sym.imp.MSVCRT.dll__errno]
push 0
mov edx, dword [eax]
mov dword [ebp], edx
call dword [sym.imp.KERNEL32.dll_SetErrorMode]
mov edx, dword [esp + 0x214]
mov dword [edx], 0
push ebx
call dword [sym.imp.MSVCRT.dll_free]
add esp, 0x1f8
pop ebx
pop ebp
pop esi
pop edi
ret
call fcn.003057f4
call dword [sym.imp.MSVCRT.dll__errno]
push 0
mov edx, dword [eax]
mov dword [ebp], edx
call dword [sym.imp.KERNEL32.dll_SetErrorMode]
mov edx, dword [esp + 0x214]
mov dword [edx], 0
push ebx
call dword [sym.imp.MSVCRT.dll_free]
add esp, 0x1f8
pop ebx
pop ebp
pop esi
pop edi
ret
call dword [sym.imp.MSVCRT.dll__errno]
mov ecx, dword [esp + 0x214]
push ebx
mov edx, 0xe
mov dword [eax], edx
mov dword [ebp], edx
mov dword [ecx], 0
call dword [sym.imp.MSVCRT.dll_free]
add esp, 0x1f8
pop ebx
pop ebp
pop esi
pop edi
ret
push 0x31da4c
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
test eax, eax
jne 0x30d48b
call dword [sym.imp.MSVCRT.dll__errno]
push ebx
mov edx, 0xe
mov dword [eax], edx
mov dword [ebp], edx
call dword [sym.imp.MSVCRT.dll_free]
pop ecx
push 0
call dword [sym.imp.KERNEL32.dll_SetErrorMode]
mov eax, dword [esp + 0x214]
mov dword [eax], 0
add esp, 0x1f4
pop ebx
pop ebp
pop esi
pop edi
ret
call fcn.003057f4
call dword [sym.imp.MSVCRT.dll__errno]
mov ecx, dword [esp + 0x214]
push ebx
mov edx, dword [eax]
mov dword [ebp], edx
mov dword [ecx], 0
call dword [sym.imp.MSVCRT.dll_free]
add esp, 0x1f8
pop ebx
pop ebp
pop esi
pop edi
ret
lea ecx, [esp + 0xb8]
lea edx, [esp + 0x1f0]
push edx
push ecx
push 0x104
push ebx
call dword [sym.imp.KERNEL32.dll_GetFullPathNameA]
test eax, eax
je 0x30d723
mov esi, dword [esp + 0x1f0]
test esi, esi
je 0x30d6fd
lea edi, [esp + 0xb8]
xor eax, eax
mov dh, byte [edi]
mov ecx, edi
test dh, dh
je 0x30d6c0
add ecx, 1
add eax, 1
mov dl, byte [ecx]
test dl, dl
jne 0x30d6b4
mov ebp, eax
mov edi, esi
xor eax, eax
mov dh, byte [edi]
mov ecx, edi
test dh, dh
je 0x30d6da
add ecx, 1
add eax, 1
mov dl, byte [ecx]
test dl, dl
jne 0x30d6ce
sub eax, ebp
add eax, 0x103
mov ecx, dword [esp + 0x214]
mov edx, 0xff
cmp eax, 0xff
jl 0x30d6f6
mov eax, edx
mov dword [ecx], eax
jmp 0x30d524
lea edi, [esp + 0xb8]
xor eax, eax
mov dh, byte [edi]
mov ecx, edi
test dh, dh
je 0x30d71a
add ecx, 1
add eax, 1
mov dl, byte [ecx]
test dl, dl
jne 0x30d70e
neg eax
add eax, 0x103
jmp 0x30d6e1
call fcn.003057f4
call dword [sym.imp.MSVCRT.dll__errno]
push 0
mov edx, dword [eax]
mov dword [ebp], edx
call dword [sym.imp.KERNEL32.dll_SetErrorMode]
push ebx
call dword [sym.imp.MSVCRT.dll_free]
add esp, 0x1f8
pop ebx
pop ebp
pop esi
pop edi
ret
call dword [sym.imp.MSVCRT.dll__errno]
push ebx
mov edx, dword [eax]
mov dword [ebp], edx
call dword [sym.imp.MSVCRT.dll_free]
add esp, 0x1f8
pop ebx
pop ebp
pop esi
pop edi
ret
call dword [sym.imp.MSVCRT.dll__errno]
mov eax, dword [eax]
mov dword [ebp], eax
add esp, 0x1f4
pop ebx
pop ebp
pop esi
pop edi
ret
mov eax, dword [esp + 0x214]
mov dword [eax], 0x104
mov dword [ebp], 0
add esp, 0x1f4
pop ebx
pop ebp
pop esi
pop edi
ret