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

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x23c
mov eax, dword [0x46700c]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
mov esi, ecx
push edi
lea ecx, reloc.ADVAPI32.dll_TraceMessage
call fcn.004636d2
test esi, esi
je 0x45fa11
movzx eax, word [esi]
cmp eax, 0x41
jb 0x45f84f
lea edi, [eax - 0x40]
cmp eax, 0x5a
jbe 0x45f852
lea edi, [eax - 0x60]
call dword [sym.imp.KERNEL32.dll_GetVersion]
xor esi, esi
inc esi
test eax, eax
jns 0x45f91e
xor ebx, ebx
push ebx
push 0x4000000
push ebx
push ebx
push ebx
push ebx
push 0x424828
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov dword [ebp - reloc.ADVAPI32.dll_TraceMessage], eax
cmp eax, reloc.ADVAPI32.dll_TraceMessage
je 0x45f9ce
push ebx
lea ecx, reloc.ADVAPI32.dll_TraceMessage
mov dword [ebp - reloc.ADVAPI32.dll_TraceMessage], ecx
lea ecx, reloc.ADVAPI32.dll_TraceMessage
push ecx
push 0x1c
lea ecx, reloc.ADVAPI32.dll_TraceMessage
push ecx
push 0x1c
push ecx
push esi
push eax
mov byte [ebp - 0x228], bl
mov dword [ebp - reloc.ADVAPI32.dll_TraceMessage], edi
mov dword [ebp - reloc.ADVAPI32.dll_TraceMessage], 0x860
mov dword [ebp - reloc.ADVAPI32.dll_TraceMessage], 0x440d
mov dword [ebp - reloc.ADVAPI32.dll_TraceMessage], esi
call dword [sym.imp.KERNEL32.dll_DeviceIoControl]
test eax, eax
je case.default.0x45f8f0
test byte [ebp - 0x1e8], 1
jne case.default.0x45f8f0
movzx eax, byte [ebp - 0x227]
cmp eax, 9
ja case.default.0x45f8f0
jmp dword [eax*4 + 0x45fa32]
mov esi, 0x20d
jmp case.0x45f8f0.5
mov esi, 0x15e
jmp case.0x45f8f0.5
mov esi, 0x320
jmp case.0x45f8f0.5
push 2
pop esi
jmp case.0x45f8f0.5
mov esi, ebx
push dword [ebp - 0x22c]
jmp 0x45f9b3
lea eax, [edi + 0x40]
push eax
push 0x424834
lea edx, reloc.ADVAPI32.dll_TraceMessage
call fcn.00463c2d
pop ecx
xor ebx, ebx
pop ecx
test eax, eax
js 0x45f9ce
push ebx
push ebx
push 3
push ebx
push 2
push ebx
push dword [ebp - 0x23c]
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov dword [ebp - reloc.ADVAPI32.dll_TraceMessage], eax
cmp eax, reloc.ADVAPI32.dll_TraceMessage
je 0x45f9d5
push ebx
lea ecx, reloc.ADVAPI32.dll_TraceMessage
push ecx
push 0x1e0
lea ecx, reloc.ADVAPI32.dll_TraceMessage
push ecx
push ebx
push ebx
push 0x70c00
push eax
call dword [sym.imp.KERNEL32.dll_DeviceIoControl]
test eax, eax
je 0x45f9ab
cmp dword [ebp - reloc.ADVAPI32.dll_TraceMessage], ebx
jbe 0x45f9ab
mov eax, dword [ebp - reloc.ADVAPI32.dll_TraceMessage]
cmp eax, esi
je 0x45f9c7
jle 0x45f9ab
cmp eax, 5
jle 0x45f9c0
cmp eax, 0xa
jle 0x45f9c7
cmp eax, 0xb
je 0x45f9bb
cmp eax, 0xc
je 0x45f9ad
mov esi, ebx
push dword [ebp - 0x230]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
jmp 0x45f9d0
push 2
pop esi
jmp 0x45f9ad
mov esi, 0x15e
jmp 0x45f9ad
mov esi, 0x20d
jmp 0x45f9ad
mov esi, ebx
test esi, esi
jne 0x45fa13
inc esi
lea eax, [edi + 0x40]
push eax
push 0x424844
lea edx, reloc.ADVAPI32.dll_TraceMessage
call fcn.00463c2d
pop ecx
pop ecx
push dword [ebp - 0x23c]
call dword [sym.imp.KERNEL32.dll_GetDriveTypeW]
cmp eax, 2
je 0x45fa0c
cmp eax, 3
je 0x45fa13
jbe 0x45fa08
cmp eax, 6
jbe 0x45fa0c
mov esi, ebx
jmp 0x45fa13
push 2
pop esi
jmp 0x45fa13
xor esi, esi
lea eax, reloc.ADVAPI32.dll_TraceMessage
call fcn.00463afc
mov ecx, dword [ebp - 4]
pop edi
mov eax, esi
pop esi
xor ecx, ebp
pop ebx
call fcn.004655f1
leave
ret