Function at 0x4230a0
Capabilities:
Get disk information

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x4baeb1
mov eax, dword fs:[0]
push eax
sub esp, 0x8e0
mov eax, dword [0x4ed310]
xor eax, esp
mov dword [esp + 0x8d8], eax
push ebx
push esi
push edi
mov eax, dword [0x4ed310]
xor eax, esp
push eax
lea eax, [esp + 0x8f0]
mov dword fs:[0], eax
mov eax, dword [ebp + 8]
xor ebx, ebx
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x50], eax
mov dword [esp + 0x20], ebx
mov dword [esp + 0x24], ebx
mov dword [esp + 0x28], ebx
mov dword [esp + 0x8f8], ebx
mov dword [esp + 0x30], ebx
mov dword [esp + 0x34], ebx
mov dword [esp + 0x38], ebx
xor edi, edi
mov byte [esp + 0x8f8], 1
cmp byte [ecx + 8], 0
mov dword [esp + 0x18], edi
je 0x4231e8
mov dword [esp + 0x14], ebx
jmp 0x423130
mov ecx, dword [esp + 0x14]
push ecx
push str..SCSI_d:
lea edx, [esp + 0x90]
push 0x28
push edx
call fcn.00403a10
add esp, 0x10
push ebx
push ebx
push 3
push ebx
push 3
push 0xc0000000
lea eax, [esp + 0xa0]
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov esi, eax
cmp esi, 0xffffffff
je 0x4231e4
push ebx
lea ecx, [esp + 0x58]
push ecx
push 0x800
lea edx, [esp + 0xf0]
push edx
push ebx
push ebx
push 0x4100c
push esi
call dword [sym.imp.KERNEL32.dll_DeviceIoControl]
test eax, eax
je 0x4231cb
movzx ecx, byte [esp + 0xe4]
xor eax, eax
cmp ecx, ebx
jle 0x4231cb
mov edx, dword [esp + 0x14]
shl edx, 8
mov dword [esp + 0x40], edx
jmp 0x4231b4
mov edx, dword [esp + 0x40]
mov ebx, eax
or ebx, edx
movzx edx, di
inc eax
inc edi
mov word [esp + edx*2 + 0xb0], bx
cmp eax, ecx
jl 0x4231b0
xor ebx, ebx
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, dword [esp + 0x14]
inc eax
mov dword [esp + 0x14], eax
cmp eax, 0x1a
jl 0x423130
mov dword [esp + 0x18], edi
push str..X:
lea eax, [esp + 0x8c]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyW]
mov dword [esp + 0x14], 0x41
mov cx, word [esp + 0x14]
lea edx, [esp + 0x90]
push edx
mov word [esp + 0x94], cx
call dword [sym.imp.KERNEL32.dll_GetDriveTypeW]
cmp eax, 5
jne 0x423709
push 0
push 0x80
push 3
push 0
push 3
push 0xc0000000
lea eax, [esp + 0xa0]
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov dword [esp + 0x40], eax
cmp eax, 0xffffffff
je 0x423709
or eax, 0xffffffff
xor ecx, ecx
mov dword [esp + 0x74], 7
mov dword [esp + 0x70], 0
mov word [esp + 0x60], cx
mov dword [esp + 0x7c], eax
mov dword [esp + 0x80], eax
mov dword [esp + 0x84], eax
mov esi, dword [esp + 0x40]
xor eax, eax
push eax
lea edx, [esp + 0x58]
push edx
push 8
mov byte [esp + 0x904], 2
mov dword [esp + 0x54], eax
mov dword [esp + 0x58], eax
lea eax, [esp + 0x54]
push eax
push ecx
push ecx
push 0x41018
push esi
call dword [sym.imp.KERNEL32.dll_DeviceIoControl]
test eax, eax
je 0x42349d
mov eax, dword [esp + 0x4c]
movzx edx, byte [esp + 0x4e]
mov edi, dword [esp + 0x24]
movzx ecx, al
mov dword [esp + 0x7c], ecx
movzx ecx, byte [esp + 0x4f]
movzx ebx, ah
lea eax, [esp + 0x10]
mov dword [esp + 0x80], edx
mov edx, dword [esp + 0x20]
mov dword [esp + 0x84], ecx
mov dword [esp + 0x10], ebx
cmp eax, edi
jae 0x42335b
mov ecx, eax
cmp edx, ecx
ja 0x42335b
mov ecx, dword [esp + 0x28]
mov ebx, eax
sub ebx, edx
sar ebx, 1
cmp edi, ecx
jne 0x42334e
mov eax, edi
sub eax, edx
sar eax, 1
cmp eax, 0x7ffffffe
ja 0x4237a9
sub ecx, edx
inc eax
sar ecx, 1
cmp eax, ecx
jbe 0x42334e
mov edx, ecx
shr edx, 1
mov esi, SHChangeNotifyRegister
sub esi, edx
cmp esi, ecx
jae 0x423334
xor ecx, ecx
jmp 0x423336
add ecx, edx
cmp ecx, eax
jae 0x42333c
mov ecx, eax
push ecx
lea esi, [esp + 0x24]
call fcn.00422110
mov edi, dword [esp + 0x24]
mov edx, dword [esp + 0x20]
test edi, edi
je 0x4233ad
mov dx, word [edx + ebx*2]
mov word [edi], dx
jmp 0x4233ad
mov ecx, dword [esp + 0x28]
cmp edi, ecx
jne 0x4233a6
mov eax, edi
sub eax, edx
sar eax, 1
cmp eax, 0x7ffffffe
ja 0x4237a9
sub ecx, edx
inc eax
sar ecx, 1
cmp eax, ecx
jbe 0x4233a6
mov edx, ecx
shr edx, 1
mov esi, SHChangeNotifyRegister
sub esi, edx
cmp esi, ecx
jae 0x423390
xor ecx, ecx
jmp 0x423392
add ecx, edx
cmp ecx, eax
jae 0x423398
mov ecx, eax
push ecx
lea esi, [esp + 0x24]
call fcn.00422110
mov edi, dword [esp + 0x24]
test edi, edi
je 0x4233ad
mov word [edi], bx
movzx ecx, byte [esp + 0x4c]
mov edx, dword [esp + 0x34]
mov ebx, dword [esp + 0x30]
add edi, 2
lea eax, [esp + 0x10]
mov dword [esp + 0x24], edi
mov dword [esp + 0x10], ecx
cmp eax, edx
jae 0x42343c
mov ecx, eax
cmp ebx, ecx
ja 0x42343c
mov ecx, dword [esp + 0x38]
mov edi, eax
sub edi, ebx
sar edi, 1
cmp edx, ecx
jne 0x423428
mov eax, edx
sub eax, ebx
sar eax, 1
cmp eax, 0x7ffffffe
ja 0x4237a9
sub ecx, ebx
inc eax
sar ecx, 1
cmp eax, ecx
jbe 0x423428
mov edx, ecx
shr edx, 1
mov esi, SHChangeNotifyRegister
sub esi, edx
cmp esi, ecx
jae 0x42340e
xor ecx, ecx
jmp 0x423410
add ecx, edx
cmp ecx, eax
jae 0x423416
mov ecx, eax
push ecx
lea esi, [esp + 0x34]
call fcn.00422110
mov edx, dword [esp + 0x34]
mov ebx, dword [esp + 0x30]
test edx, edx
je 0x423433
mov ax, word [ebx + edi*2]
mov word [edx], ax
mov edi, dword [esp + 0x24]
jmp 0x42359b
mov ecx, dword [esp + 0x38]
cmp edx, ecx
jne 0x42348b
mov eax, edx
sub eax, ebx
sar eax, 1
cmp eax, 0x7ffffffe
ja 0x4237a9
sub ecx, ebx
inc eax
sar ecx, 1
cmp eax, ecx
jbe 0x42348b
mov edx, ecx
shr edx, 1
mov esi, SHChangeNotifyRegister
sub esi, edx
cmp esi, ecx
jae 0x423471
xor ecx, ecx
jmp 0x423473
add ecx, edx
cmp ecx, eax
jae 0x423479
mov ecx, eax
push ecx
lea esi, [esp + 0x34]
call fcn.00422110
mov edx, dword [esp + 0x34]
mov ebx, dword [esp + 0x30]
test edx, edx
je 0x42359b
mov cx, word [esp + 0x10]
jmp 0x423598
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0x32
jne 0x4236e6
mov ebx, dword [esp + 0x14]
mov edi, dword [esp + 0x24]
xor eax, eax
movzx edx, bx
mov dword [esp + 0x80], eax
mov dword [esp + 0x84], eax
mov dword [esp + 0x10], eax
sub edx, 0x41
lea eax, [esp + 0x10]
mov dword [esp + 0x7c], edx
cmp eax, edi
jae 0x42350e
mov ecx, eax
mov eax, dword [esp + 0x20]
cmp eax, ecx
ja 0x42350e
mov esi, ecx
sub esi, eax
sar esi, 1
cmp edi, dword [esp + 0x28]
jne 0x423501
lea eax, [esp + 0x20]
call fcn.004220c0
mov edi, dword [esp + 0x24]
mov eax, dword [esp + 0x20]
test edi, edi
je 0x42352a
mov dx, word [eax + esi*2]
mov word [edi], dx
jmp 0x42352a
cmp edi, dword [esp + 0x28]
jne 0x423521
lea eax, [esp + 0x20]
call fcn.004220c0
mov edi, dword [esp + 0x24]
test edi, edi
je 0x42352a
xor eax, eax
mov word [edi], ax
mov edx, dword [esp + 0x34]
movzx ecx, bx
mov ebx, dword [esp + 0x30]
add edi, 2
lea eax, [esp + 0x10]
mov dword [esp + 0x24], edi
mov dword [esp + 0x10], ecx
cmp eax, edx
jae 0x423578
mov ecx, eax
cmp ebx, ecx
ja 0x423578
mov esi, eax
sub esi, ebx
sar esi, 1
cmp edx, dword [esp + 0x38]
jne 0x42356b
lea eax, [esp + 0x30]
call fcn.004220c0
mov edx, dword [esp + 0x34]
mov ebx, dword [esp + 0x30]
test edx, edx
je 0x42359b
mov ax, word [ebx + esi*2]
mov word [edx], ax
jmp 0x42359b
cmp edx, dword [esp + 0x38]
jne 0x42358f
lea eax, [esp + 0x30]
call fcn.004220c0
mov edx, dword [esp + 0x34]
mov ebx, dword [esp + 0x30]
test edx, edx
je 0x42359b
mov cx, word [esp + 0x14]
mov word [edx], cx
mov eax, dword [esp + 0x1c]
add edx, 2
cmp byte [eax + 8], 0
mov dword [esp + 0x34], edx
je 0x42361f
mov eax, dword [esp + 0x20]
sub edx, ebx
sar edx, 1
mov cx, word [ebx + edx*2 - 2]
sub edi, eax
shl cx, 8
sar edi, 1
or cx, word [eax + edi*2 - 2]
movzx eax, word [esp + 0x18]
movzx ebx, cx
xor ecx, ecx
test eax, eax
jle 0x4235e3
cmp bx, word [esp + ecx*2 + 0xb0]
jbe 0x4235e3
inc ecx
cmp ecx, eax
jl 0x4235d4
cmp ecx, eax
jne 0x4235f1
mov word [esp + ecx*2 + 0xb0], bx
jmp 0x42361b
cmp bx, word [esp + ecx*2 + 0xb0]
lea esi, [esp + ecx*2 + 0xb0]
jae 0x42361f
sub eax, ecx
add eax, eax
push eax
lea edx, [esp + ecx*2 + 0xb6]
push esi
push edx
call fcn.00498a10
add esp, 0xc
mov word [esi], bx
inc dword [esp + 0x18]
mov ecx, dword [esp + 0x74]
mov edx, dword [esp + 0x60]
mov eax, edx
cmp ecx, 8
jae 0x423632
lea eax, [esp + 0x60]
mov esi, dword [esp + 0x70]
cmp ecx, 8
lea eax, [eax + esi*2]
mov ecx, edx
jae 0x423644
lea ecx, [esp + 0x60]
test eax, eax
je 0x42364c
sub eax, ecx
sar eax, 1
mov edi, dword [esp + 0x14]
push edi
push 1
push eax
lea ecx, [esp + 0x6c]
call fcn.00401ce0
mov esi, dword [esp + 0x1c]
mov ecx, dword [esi + 0x14]
mov eax, dword [ecx + 4]
add esi, 0x10
cmp byte [eax + 0x15], 0
mov ebx, ecx
jne 0x423687
cmp word [eax + 0xc], di
jae 0x42367d
mov eax, dword [eax + 8]
jmp 0x423681
mov ebx, eax
mov eax, dword [eax]
cmp byte [eax + 0x15], 0
je 0x423672
cmp ebx, ecx
je 0x423691
cmp di, word [ebx + 0xc]
jae 0x4236bc
mov ax, word [esp + 0x14]
lea edi, [esp + 0x58]
mov word [esp + 0x58], ax
mov dword [esp + 0x5c], 0
call fcn.00423f90
push ebx
lea edi, [esp + 0x48]
mov ecx, esi
call fcn.00423d90
mov ebx, dword [esp + 0x44]
mov ecx, dword [esp + 0x40]
mov edi, dword [esp + 0x50]
mov dword [ebx + 0x10], ecx
lea ecx, [esp + 0x60]
call fcn.00422930
mov byte [esp + 0x8f8], 1
cmp dword [esp + 0x74], 8
jb 0x423709
mov edx, dword [esp + 0x60]
push edx
jmp 0x423701
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov byte [esp + 0x8f8], 1
cmp dword [esp + 0x74], 8
jb 0x423709
mov eax, dword [esp + 0x60]
push eax
call fcn.0049855c
add esp, 4
mov eax, dword [esp + 0x14]
inc eax
mov dword [esp + 0x14], eax
cmp ax, 0x5a
jbe 0x423203
mov ecx, dword [esp + 0x1c]
cmp byte [ecx + 8], 0
je 0x4237e5
cmp word [esp + 0x18], 0
jbe 0x4237e5
mov edi, dword [esp + 0x50]
mov esi, dword [edi]
mov ecx, dword [edi + 4]
sub ecx, esi
mov eax, 0x66666667
imul ecx
sar edx, 4
mov eax, edx
shr eax, 0x1f
xor ebx, ebx
add eax, edx
je 0x4237e5
mov ecx, dword [esp + 0x20]
mov eax, dword [esp + 0x30]
sub eax, ecx
mov dword [esp + 0x10], ebx
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x44], eax
xor ecx, ecx
xor eax, eax
cmp cx, word [esp + 0x18]
jae 0x4237be
mov edx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x44]
movzx ecx, word [ecx + edx]
movzx edx, word [edx]
shl ecx, 8
or ecx, edx
nop
movzx edx, ax
movzx edx, word [esp + edx*2 + 0xb0]
cmp edx, ecx
je 0x4237b3
inc eax
cmp ax, word [esp + 0x18]
jb 0x423790
jmp 0x4237be
push str.vector_T__too_long
call fcn.00497968
mov ecx, dword [esp + 0x10]
movzx eax, ax
mov dword [ecx + esi + 0x1c], eax
mov esi, dword [edi]
mov ecx, dword [edi + 4]
add dword [esp + 0x1c], 2
add dword [esp + 0x10], 0x28
sub ecx, esi
mov eax, 0x66666667
imul ecx
sar edx, 4
mov eax, edx
shr eax, 0x1f
inc ebx
add eax, edx
cmp ebx, eax
jb 0x423770
cmp dword [esp + 0x30], 0
je 0x4237f9
mov ecx, dword [esp + 0x30]
push ecx
call fcn.0049855c
add esp, 4
cmp dword [esp + 0x20], 0
je 0x42380d
mov edx, dword [esp + 0x20]
push edx
call fcn.0049855c
add esp, 4
mov al, 1
mov ecx, dword [esp + 0x8f0]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x8d8]
xor ecx, esp
call fcn.00499155
mov esp, ebp
pop ebp
ret 4