Function at 0x40e2e0
Capabilities:
Get disk information

Disassembly:
mov rax, rsp
sub rsp, 0xa08
mov qword [rsp + 0x88], 0xfffffffffffffffe
mov qword [rax + 8], rbx
mov qword [rax + 0x10], rbp
mov qword [rax + 0x18], rsi
mov qword [rax + 0x20], rdi
mov qword [rax - 8], r12
mov qword [rax - 0x10], r13
mov rax, qword [0x0045c120]
xor rax, rsp
mov qword [rsp + 0x9e0], rax
call fcn.00418ad4
mov r11, rax
xor r13d, r13d
mov ecx, r13d
test rax, rax
setne cl
test ecx, ecx
jne 0x40e343
mov ecx, 0x80004005
call fcn.00401000
int3
mov rax, qword [rax]
mov rcx, r11
call qword [rax + 0x18]
add rax, 0x18
mov qword [rsp + 0x50], rax
call fcn.00418ad4
mov r11, rax
mov ecx, r13d
test rax, rax
setne cl
test ecx, ecx
jne 0x40e375
mov ecx, 0x80004005
call fcn.00401000
int3
mov rax, qword [rax]
mov rcx, r11
call qword [rax + 0x18]
lea rbx, [rax + 0x18]
mov qword [rsp + 0x80], rbx
mov ecx, dword [0x0045300c]
sub ecx, 2
je 0x40e53d
sub ecx, 1
je 0x40e3b1
sub ecx, 1
je 0x40e3fb
cmp ecx, 1
je 0x40e449
jmp 0x40e5f5
lea rdx, [0x00440ddc]
lea rcx, [0x0045da60]
call fcn.00427680
mov rdi, rax
test rax, rax
je 0x40e3fb
mov r8, rax
mov edx, 0x400
lea rcx, [rsp + 0x5e0]
call fcn.00428230
mov rcx, rdi
call fcn.00427260
movzx r11d, byte [rsp + 0x5e0]
mov byte [0x00453009], r11b
jmp 0x40e402
mov r11b, byte [0x00453009]
movsx r8d, r11b
lea rdx, str.._c:
lea rcx, [rsp + 0x2c0]
call fcn.00427d80
lea rcx, [rsp + 0x2c0]
call fcn.00405f60
mov r8d, eax
lea rdx, [rsp + 0xb0]
lea rcx, str.Info_2_2_:___dp_volume__Find_the_CDRom__s_and_Send_rewind___d_n
call fcn.00405500
mov ecx, 0x1388
call qword [sym.imp.KERNEL32.dll_Sleep]
mov rax, qword [0x004aae00]
mov rdi, rax
mov rsi, qword [0x004aae08]
cmp rax, rsi
jbe 0x40e472
call fcn.00426090
mov rsi, qword [0x004aae08]
mov rax, qword [0x004aae00]
lea r12, [0x004aadf8]
mov qword [rsp + 0x60], r12
mov qword [rsp + 0x68], rdi
movaps xmm0, xmmword [rsp + 0x60]
movdqa xmmword [rsp + 0x60], xmm0
mov rbp, qword [rsp + 0x60]
mov rdi, qword [rsp + 0x68]
cmp rax, rsi
jbe 0x40e4a2
call fcn.00426090
test rbp, rbp
je 0x40e4ac
cmp rbp, r12
je 0x40e4b1
call fcn.00426090
cmp rdi, rsi
je 0x40e52d
test rbp, rbp
jne 0x40e4c0
call fcn.00426090
cmp rdi, qword [rbp + 0x10]
jb 0x40e4cb
call fcn.00426090
cmp qword [rdi + 0x20], 0x10
jb 0x40e4db
lea rsi, [rdi + 8]
mov rdx, qword [rsi]
jmp 0x40e4e2
lea rsi, [rdi + 8]
mov rdx, rsi
lea rcx, str.Info_2_3_:Check_fake_PID__s_whether_a_mass_storage_device_n
call fcn.00405500
cmp rdi, qword [rbp + 0x10]
jb 0x40e4f9
call fcn.00426090
cmp qword [rdi + 0x20], 0x10
jb 0x40e503
mov rsi, qword [rsi]
mov rcx, rsi
call fcn.0040d680
cmp rdi, qword [rbp + 0x10]
jb 0x40e516
call fcn.00426090
add rdi, 0x28
mov rsi, qword [0x004aae08]
mov rax, qword [0x004aae00]
jmp 0x40e498
mov ecx, 0xbb8
call qword [sym.imp.KERNEL32.dll_Sleep]
jmp 0x40e5f5
mov dil, 0x61
movzx esi, dil
mov r8d, esi
lea rdx, [0x00441f0c]
lea rcx, [rsp + 0x4d0]
call fcn.00427d80
mov r8d, 0x104
lea rdx, [rsp + 0xb0]
lea rcx, [rsp + 0x4d0]
call qword [sym.imp.KERNEL32.dll_QueryDosDeviceA]
test eax, eax
je 0x40e5dc
lea rcx, [rsp + 0xb0]
call fcn.004251a0
lea rdx, str.cdrom
lea rcx, [rsp + 0xb0]
call fcn.00424c70
test rax, rax
je 0x40e5dc
mov r8d, esi
lea rdx, str.._c:
lea rcx, [rsp + 0x2c0]
call fcn.00427d80
lea rcx, [rsp + 0x2c0]
call fcn.00405f60
mov r8d, eax
lea rdx, [rsp + 0xb0]
lea rcx, str.Info_2_1_:___dp_all_Find_the_CDRom__s_and_Send_rewind___d_n
call fcn.00405500
add dil, 1
cmp dil, 0x7a
jbe 0x40e540
mov ecx, 0x1388
call qword [sym.imp.KERNEL32.dll_Sleep]
mov r9d, 4
xor r8d, r8d
xor edx, edx
xor ecx, ecx
call qword [sym.imp.SETUPAPI.dll_SetupDiGetClassDevsA]
mov rbp, rax
cmp rax, 0xffffffffffffffff
jne 0x40e663
lea rcx, str.Error_:_SetupDiGetClassDevs_error...
call fcn.00405500
nop
lea rdx, [rbx - 0x18]
mov ebx, ebp
mov eax, ebp
lock xadd dword [rdx + 0x10], eax
add eax, ebp
test eax, eax
jg 0x40e63b
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x50]
add rdx, 0xffffffffffffffe8
lock xadd dword [rdx + 0x10], ebx
add ebx, 0xffffffff
test ebx, ebx
jg 0x40e659
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov eax, 0x4e26
jmp 0x40e947
mov dword [rsp + 0x90], 0x20
mov r12d, r13d
lea r8, [rsp + 0x90]
xor edx, edx
mov rcx, rax
call qword [sym.imp.SETUPAPI.dll_SetupDiEnumDeviceInfo]
test eax, eax
je 0x40e8fd
nop
mov rsi, r13
mov dword [rsp + 0x40], r13d
mov dword [rsp + 0x48], r13d
mov dword [rsp + 0x44], r13d
lea rax, [rsp + 0x40]
mov qword [rsp + 0x30], rax
mov dword [rsp + 0x28], r13d
mov qword [rsp + 0x20], r13
lea r9, [rsp + 0x4c]
mov r8d, 1
lea rdx, [rsp + 0x90]
mov rcx, rbp
call qword [sym.imp.SETUPAPI.dll_SetupDiGetDeviceRegistryPropertyA]
test eax, eax
jne 0x40e74b
call qword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0xd
je 0x40e8dd
call qword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0x7a
jne 0x40e8dd
test rsi, rsi
je 0x40e702
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_LocalFree]
mov edx, dword [rsp + 0x40]
mov ecx, 0x40
call qword [sym.imp.KERNEL32.dll_LocalAlloc]
mov rsi, rax
lea rax, [rsp + 0x40]
mov qword [rsp + 0x30], rax
mov eax, dword [rsp + 0x40]
mov dword [rsp + 0x28], eax
mov qword [rsp + 0x20], rsi
lea r9, [rsp + 0x4c]
mov r8d, 1
lea rdx, [rsp + 0x90]
mov rcx, rbp
call qword [sym.imp.SETUPAPI.dll_SetupDiGetDeviceRegistryPropertyA]
test eax, eax
je 0x40e6d6
mov rdi, rsi
cmp byte [rsi], 0
je 0x40e8d4
nop
nop
nop
mov eax, dword [rsp + 0x40]
add rax, rsi
cmp rdi, rax
jae 0x40e8d4
mov rcx, rdi
call fcn.004251a0
xor edx, edx
mov rcx, rdi
call fcn.00402450
test eax, eax
je 0x40e8d4
mov rdx, rdi
lea rcx, str.Info__:_Find_device__ID:__s..._n
call fcn.00405500
xor edx, edx
mov r8d, 0xff
lea rcx, [rsp + 0x3d0]
call fcn.00425320
lea r8, [rsp + 0x3d0]
lea rdx, [rsp + 0x90]
mov rcx, rbp
call fcn.00402280
lea rdx, [0x00440d80]
lea rcx, [rsp + 0x3d0]
call fcn.00424c70
test rax, rax
je 0x40e8d4
xor edx, edx
mov r8d, 0xff
lea rcx, [rsp + 0x1c0]
call fcn.00425320
lea r8, [rsp + 0x1c0]
lea rdx, [rsp + 0x90]
mov rcx, rbp
call fcn.004077c0
lea rdx, str.usbstor
lea rcx, [rsp + 0x1c0]
call fcn.00424c70
test rax, rax
je 0x40e8d4
xor r9d, r9d
mov r8d, dword [rsp + 0xa4]
lea rdx, [rsp + 0x44]
lea rcx, [rsp + 0x48]
call qword [sym.imp.SETUPAPI.dll_CM_Get_DevNode_Status]
test eax, eax
je 0x40e8bd
lea rdx, [rsp + 0x60]
lea rcx, [rsp + 0x90]
mov rax, qword [rcx]
mov qword [rdx], rax
mov rax, qword [rcx + 8]
mov qword [rdx + 8], rax
mov rax, qword [rcx + 0x10]
mov qword [rdx + 0x10], rax
mov rax, qword [rcx + 0x18]
mov qword [rdx + 0x18], rax
lea rdx, [rsp + 0x60]
mov rcx, rbp
call fcn.00405e90
test eax, eax
je 0x40e8a4
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_lstrlenA]
movsxd rcx, eax
lea rdi, [rdi + rcx + 1]
cmp byte [rdi], 0
jne 0x40e760
jmp 0x40e8d4
lea r8, [rsp + 0x1c0]
mov rdx, rdi
lea rcx, str.Info_2_5_:_Cant_find__s__s__devnodes_status__Delete_this_device_n
call fcn.00405500
jmp 0x40e8d4
lea r8, [rsp + 0x1c0]
mov rdx, rdi
lea rcx, str.Info_2_4_:_s__s__Device_is_present__dont_remove__n
call fcn.00405500
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_LocalFree]
add r12d, 1
lea r8, [rsp + 0x90]
mov edx, r12d
mov rcx, rbp
call qword [sym.imp.SETUPAPI.dll_SetupDiEnumDeviceInfo]
test eax, eax
jne 0x40e690
mov rcx, rbp
call qword [sym.imp.SETUPAPI.dll_SetupDiDestroyDeviceInfoList]
nop
lea rdx, [rbx - 0x18]
mov ebx, 0xffffffff
mov eax, ebx
lock xadd dword [rdx + 0x10], eax
add eax, ebx
test eax, eax
jg 0x40e927
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x50]
add rdx, 0xffffffffffffffe8
lock xadd dword [rdx + 0x10], ebx
add ebx, 0xffffffff
test ebx, ebx
jg 0x40e945
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
xor eax, eax
mov rcx, qword [rsp + 0x9e0]
xor rcx, rsp
call fcn.004252f0
mov rbx, qword [rsp + 0xa10]
mov rbp, qword [rsp + 0xa18]
mov rsi, qword [rsp + 0xa20]
mov rdi, qword [rsp + 0xa28]
mov r12, qword [rsp + 0xa00]
mov r13, qword [rsp + 0x9f8]
add rsp, 0xa08
ret