Function at 0x4031a0
Capabilities:
Get disk information
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x421f47
mov eax, dword fs:[0]
push eax
sub esp, 0xab8
mov eax, dword [0x42c070]
xor eax, esp
mov dword [esp + 0xab0], eax
push ebx
push esi
push edi
mov eax, dword [0x42c070]
xor eax, esp
push eax
lea eax, [esp + 0xac8]
mov dword fs:[0], eax
mov eax, dword [ebp + 8]
mov ebx, ecx
push str.SendRewind_run..
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x20], eax
call fcn.00412950
add esp, 4
call fcn.00410640
cmp eax, 1
jne 0x403225
call fcn.00404da0
cmp eax, 1
jne 0x403225
push str.CRNdisDevice::SendRewind__:_FindWin8OSVersion____MatchedMBIM__
call fcn.00412950
add esp, 4
mov eax, 1
jmp 0x4038c5
push 0x7cf
xor edi, edi
lea ecx, [esp + 0x2f1]
push edi
push ecx
mov byte [esp + 0x2f8], 0
call fcn.00418e90
add esp, 0xc
push 0x1f3
lea edx, [esp + 0xf9]
push edi
push edx
mov byte [esp + 0x100], 0
call fcn.00418e90
add esp, 0xc
push 0xd
push str.vid_12d1pid_
lea ecx, [esp + 0x7c]
mov dword [esp + 0x28], edi
mov byte [esp + 0x1e], 0
mov dword [esp + 0x94], 0xf
mov dword [esp + 0x90], edi
mov byte [esp + 0x80], 0
call fcn.00407f80
push 0x10
push 0x42335c
lea eax, [esp + 0x98]
push 0x10
push eax
mov dword [esp + 0xae0], edi
call fcn.004144df
mov ebx, dword [sym.imp.SETUPAPI.dll_CM_Get_Device_IDA]
add esp, 0x10
mov dword [esp + 0x24], edi
push 0x12
push 0
push 0
lea ecx, [esp + 0x9c]
push ecx
call dword [sym.imp.SETUPAPI.dll_SetupDiGetClassDevsA]
mov esi, eax
mov dword [esp + 0x30], esi
cmp esi, 0xffffffff
je 0x4038eb
lea edx, [esp + 0xd8]
push edx
push 0
lea eax, [esp + 0x98]
push eax
push 0
push esi
mov dword [esp + 0xec], 0x1c
mov dword [esp + 0x3c], 0
call dword [sym.imp.SETUPAPI.dll_SetupDiEnumDeviceInterfaces]
test eax, eax
je 0x403877
lea esp, [esp]
mov edi, dword [esp + 0x1c]
lea ecx, [esp + 0xbc]
push ecx
xor eax, eax
lea edx, [esp + 0x3c]
push edx
mov dword [esp + 0x2f4], eax
push 0x7d0
mov byte [esp + 0x2fc], al
lea eax, [esp + 0x2f8]
push eax
lea ecx, [esp + 0xe8]
push ecx
push esi
mov dword [esp + 0xd4], 0x1c
mov dword [esp + 0x304], 5
call dword [sym.imp.SETUPAPI.dll_SetupDiGetDeviceInterfaceDetailA]
test eax, eax
je 0x40383e
lea eax, [esp + 0x2f0]
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x403385
sub eax, edx
add eax, 4
push eax
lea edx, [esp + 0x2f4]
push edx
call fcn.0041377b
push 0x7cb
push 0x4251fc
lea eax, [esp + 0x300]
push 0x7cc
push eax
mov byte [esp + 0x10c], 0
call fcn.004137f7
add esp, 0x18
push 0x1f3
lea ecx, [esp + 0xf8]
push ecx
lea edx, [esp + 0x2f8]
push edx
call dword [sym.imp.KERNEL32.dll_GetVolumeNameForVolumeMountPointA]
test eax, eax
je 0x40383e
lea eax, [esp + 0xf4]
test eax, eax
jne 0x4033fb
mov byte [esp + 0x17], 0x30
jmp 0x403414
lea ecx, [esp + 0xf4]
push ecx
call fcn.00404530
mov byte [esp + 0x17], al
test al, al
je 0x40383e
mov eax, dword [esp + 0xd0]
push 0
push 0x1f4
lea edx, [esp + 0xfc]
push edx
push eax
call ebx
lea ecx, [esp + 0xf4]
push 0x1f4
push ecx
call fcn.0041377b
mov edx, dword [esp + 0xd8]
add esp, 8
push 0
push edx
lea eax, [esp + 0x3c]
push eax
call dword [sym.imp.SETUPAPI.dll_CM_Get_Parent]
mov edx, dword [esp + 0x34]
push 0
push 0x1f4
lea ecx, [esp + 0xfc]
push ecx
push edx
call ebx
lea eax, [esp + 0xf4]
push 0x1f4
push eax
call fcn.0041377b
mov eax, edi
add esp, 8
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x403487
sub eax, edx
je 0x403676
mov eax, edi
lea edx, [eax + 1]
jmp 0x4034a0
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x4034a0
sub eax, edx
cmp eax, 4
jb 0x403545
push 0xd
push str.vid_12d1pid_
lea ecx, [esp + 0x7c]
call fcn.00407f80
mov eax, edi
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x4034c7
sub eax, edx
push eax
push edi
lea eax, [esp + 0x7c]
call fcn.00407630
cmp dword [esp + 0x8c], 0x10
mov eax, dword [esp + 0x78]
jae 0x4034ed
lea eax, [esp + 0x78]
push eax
lea ecx, [esp + 0xf8]
push ecx
call fcn.004139d0
add esp, 8
test eax, eax
jne 0x40351c
lea edx, [esp + 0xf4]
push edx
push str._s_is_not_the_device_we_find
call fcn.00412950
add esp, 8
jmp 0x40383e
mov ecx, dword [esp + 0x18]
push edi
mov byte [esp + 0x1a], 1
call fcn.004030b0
test eax, eax
jne 0x40379d
push str.SendRewind_FindCdRom_false...
call fcn.004129d0
add esp, 4
jmp 0x40379d
mov al, byte [esp + 0x17]
cmp al, byte [edi]
jne 0x40383e
lea ecx, [esp + 0xf4]
push ecx
lea ecx, [esp + 0xa4]
mov byte [esp + 0x1a], 1
call fcn.00406f70
push 0x424da5
lea ecx, [esp + 0x5c]
mov byte [esp + 0xad4], 1
call fcn.00406f70
push 4
push str.pid
lea edx, [esp + 0xa8]
mov bl, 2
push edx
mov byte [esp + 0xadc], bl
call fcn.004079d0
mov esi, eax
cmp esi, 0xffffffff
jne 0x4035b1
push str.no_find_character_
call fcn.004129d0
add esp, 4
lea ecx, [esi + 5]
push 4
lea esi, [esp + 0x40]
lea edx, [esp + 0xa4]
call fcn.00407110
push 0xffffffffffffffff
push 0
push eax
lea ecx, [esp + 0x64]
mov byte [esp + 0xadc], 3
call fcn.004077d0
mov esi, 0x10
mov byte [esp + 0xad0], bl
cmp dword [esp + 0x54], esi
jb 0x4035fb
mov eax, dword [esp + 0x40]
push eax
call fcn.0041300c
add esp, 4
mov eax, dword [esp + 0x5c]
cmp dword [esp + 0x70], esi
jae 0x403609
lea eax, [esp + 0x5c]
mov ecx, dword [esp + 0x18]
push eax
call fcn.004030b0
test eax, eax
jne 0x403624
push str.SendRewind_FindCdrom_return_false...
call fcn.004129d0
add esp, 4
cmp dword [esp + 0x70], esi
jb 0x403637
mov ecx, dword [esp + 0x5c]
push ecx
call fcn.0041300c
add esp, 4
mov byte [esp + 0xad0], 0
mov dword [esp + 0x70], 0xf
mov dword [esp + 0x6c], 0
mov byte [esp + 0x5c], 0
cmp dword [esp + 0xb8], esi
jb 0x40379d
mov edx, dword [esp + 0xa4]
push edx
call fcn.0041300c
add esp, 4
jmp 0x40379d
mov eax, dword [esp + 0x18]
mov edi, dword [eax + 0x70]
mov ecx, eax
cmp edi, dword [ecx + 0x74]
jbe 0x403689
call fcn.00414207
mov esi, dword [esp + 0x18]
mov ebx, dword [esi + 0x64]
mov eax, dword [esi + 0x74]
mov dword [esp + 0x2c], eax
cmp dword [esi + 0x70], eax
jbe 0x4036a1
call fcn.00414207
mov eax, dword [esi + 0x64]
test ebx, ebx
je 0x4036ac
cmp ebx, eax
je 0x4036b1
call fcn.00414207
cmp edi, dword [esp + 0x2c]
je 0x403792
push 0xd
push str.vid_12d1pid_
lea ecx, [esp + 0x7c]
call fcn.00407f80
test ebx, ebx
jne 0x40373a
call fcn.00414207
xor eax, eax
cmp edi, dword [eax + 0x10]
jb 0x4036e0
call fcn.00414207
push 0
lea edx, [edi + 0x1c]
push edx
or eax, 0xffffffff
lea esi, [esp + 0x7c]
call fcn.00407540
cmp dword [esp + 0x8c], 0x10
mov eax, dword [esp + 0x78]
jae 0x403704
lea eax, [esp + 0x78]
push eax
lea eax, [esp + 0xf8]
push eax
call fcn.004139d0
add esp, 8
test eax, eax
jne 0x403742
test ebx, ebx
jne 0x40373e
call fcn.00414207
xor eax, eax
cmp edi, dword [eax + 0x10]
jb 0x40372e
call fcn.00414207
mov esi, dword [esp + 0x18]
add edi, 0x38
jmp 0x403690
mov eax, dword [ebx]
jmp 0x4036d6
mov eax, dword [ebx]
jmp 0x403724
test ebx, ebx
jne 0x403776
call fcn.00414207
cmp edi, dword [ebx + 0x10]
jb 0x403755
call fcn.00414207
mov esi, dword [esp + 0x18]
push 0xffffffffffffffff
push 0
add esi, 0x48
add edi, 0x1c
push edi
mov ecx, esi
call fcn.004077d0
cmp dword [esi + 0x18], 0x10
jb 0x40377a
mov esi, dword [esi + 4]
jmp 0x40377d
mov ebx, dword [ebx]
jmp 0x40374b
add esi, 4
push esi
push str.the_CDROM_PID_is__s
call fcn.00412950
add esp, 8
mov byte [esp + 0x16], 1
jmp 0x40379d
cmp byte [esp + 0x16], 0
je 0x40383e
call fcn.00403120
push 4
push str.._
lea ecx, [esp + 0x60]
mov dword [esp + 0x78], 0xf
mov dword [esp + 0x74], 0
mov byte [esp + 0x64], 0
call fcn.00407f80
mov bl, byte [esp + 0x17]
lea esi, [esp + 0x58]
mov byte [esp + 0xad0], 4
call fcn.00407740
mov bl, 0x3a
call fcn.00407740
mov eax, dword [esp + 0x5c]
mov esi, 0x10
cmp dword [esp + 0x70], esi
jae 0x4037f6
lea eax, [esp + 0x5c]
push eax
call fcn.00402330
mov eax, dword [esp + 0x60]
add esp, 4
cmp dword [esp + 0x70], esi
jae 0x40380d
lea eax, [esp + 0x5c]
push eax
push str.Send_SCSI_command_to_driver___s_
call fcn.00412950
add esp, 8
mov byte [esp + 0xad0], 0
mov dword [esp + 0x20], 1
cmp dword [esp + 0x70], esi
jb 0x40383e
mov ecx, dword [esp + 0x5c]
push ecx
call fcn.0041300c
add esp, 4
mov eax, dword [esp + 0x28]
mov esi, dword [esp + 0x30]
inc eax
lea edx, [esp + 0xd8]
push edx
push eax
mov dword [esp + 0x30], eax
lea eax, [esp + 0x98]
push eax
push 0
push esi
call dword [sym.imp.SETUPAPI.dll_SetupDiEnumDeviceInterfaces]
mov ebx, dword [sym.imp.SETUPAPI.dll_CM_Get_Device_IDA]
test eax, eax
jne 0x403320
mov edi, dword [esp + 0x20]
push esi
call dword [sym.imp.SETUPAPI.dll_SetupDiDestroyDeviceInfoList]
test edi, edi
jne 0x40389f
push 0x1f4
call dword [sym.imp.KERNEL32.dll_Sleep]
mov eax, dword [esp + 0x24]
inc eax
cmp eax, 5
mov dword [esp + 0x24], eax
jl 0x4032c0
push str.SendRewind_exit..
call fcn.00412950
add esp, 4
cmp dword [esp + 0x8c], 0x10
jb 0x4038c3
mov edx, dword [esp + 0x78]
push edx
call fcn.0041300c
add esp, 4
mov eax, edi
mov ecx, dword [esp + 0xac8]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0xab0]
xor ecx, esp
call fcn.00413017
mov esp, ebp
pop ebp
ret 4
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.SetupDiGetClassDevs_error__error_code___d
call fcn.004129d0
add esp, 8
cmp dword [esp + 0x8c], 0x10
jb 0x403916
mov ecx, dword [esp + 0x78]
push ecx
call fcn.0041300c
add esp, 4
xor eax, eax
jmp 0x4038c5