Function at 0x403240
Capabilities:
Get disk information

Disassembly:
mov eax, dword fs:[0]
push 0xffffffffffffffff
push 0x42dc04
push eax
mov dword fs:[0], esp
sub esp, 0x120
push ebx
push ebp
mov ebp, dword [esp + 0x138]
mov ebx, dword [sym.imp.USER32.dll_SendMessageA]
push esi
mov esi, ecx
push edi
mov eax, dword [esi + 0xaac]
test eax, eax
jne 0x4032a3
lea eax, [ebp + ebp*2]
push 0
lea eax, [eax + eax*4]
lea edi, [esi + eax*4]
lea ecx, [edi + 0x7c]
call fcn.00423f5e
mov eax, dword [esi + 0xadc]
mov ecx, dword [edi + 0x4d8]
push eax
push 0
push 0x172
push ecx
call ebx
lea edi, [ebp*8]
sub edi, ebp
shl edi, 3
mov dword [esp + 0x24], edi
mov eax, dword [edi + 0x43f920]
test eax, eax
je 0x4032d3
cmp eax, 0xffffffff
je 0x4032d3
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov dword [edi + 0x43f920], 0
push 0x43fc78
lea ecx, [esp + 0x2c]
mov dword [edi + 0x43f918], 1
mov dword [esp + 0x24], 0
call fcn.00422a7b
push 0x43b2fc
lea edx, [esp + 0x20]
push eax
push edx
mov dword [esp + 0x144], 0
call fcn.00422ca2
lea ecx, [esp + 0x28]
mov byte [esp + 0x138], 2
call fcn.00422a0d
test ebp, ebp
jl 0x40385a
cmp ebp, 0x10
jge 0x40385a
mov eax, dword [0x43b2f8]
mov ecx, 0x40
mov dword [esp + 0x2c], eax
xor eax, eax
lea edi, [esp + 0x30]
lea edx, [esp + 0x2c]
rep stosd dword es:[edi], eax
mov edi, dword [esp + 0x24]
push edx
mov cl, byte [edi + 0x43f8f0]
mov byte [esp + 0x30], cl
call dword [sym.imp.KERNEL32.dll_GetDriveTypeA]
cmp eax, 2
jne 0x403877
mov eax, dword [edi + 0x43f91c]
test eax, eax
je 0x403877
lea edi, [esi + ebp*4 + 0x47c]
push 0x43fc78
mov ecx, edi
call fcn.00422b96
mov eax, dword [esi + 0x1c]
push 0xfffffffffffffffe
push ebp
push 0x5ff
push eax
call ebx
push 0x1e
push ebp
mov ecx, esi
call fcn.00404fa0
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x2c]
lea eax, [ecx + 0x43f8f8]
push eax
push edx
call fcn.00408df0
add esp, 8
test eax, eax
je 0x403730
mov eax, dword [esi + 0xa50]
push 0
push 0
push 0x147
push eax
call ebx
push 0x43b2f0
lea ecx, [esp + 0x14]
mov dword [esp + 0x1c], eax
call fcn.00422a7b
mov ecx, dword [esp + 0x24]
push 0
push 0x400
mov byte [esp + 0x140], 3
mov edx, dword [ecx + 0x43f8fc]
lea eax, [ecx + 0x43f8f8]
push edx
mov eax, dword [eax]
push eax
call fcn.00413250
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x14], eax
test ecx, ecx
je 0x40342a
cmp ecx, 1
je 0x40342a
cmp ecx, 2
je 0x403438
push 0x43b2e8
jmp 0x40343d
cmp eax, 0x200000
jae 0x403438
push 0x43b2e4
jmp 0x40343d
push 0x43b2f0
lea ecx, [esp + 0x14]
call fcn.00422b96
mov ecx, dword [esp + 0x24]
mov eax, dword [ecx + 0x43f914]
test eax, eax
je 0x40371f
mov eax, dword [esp + 0x14]
cmp eax, 0x2000
je 0x4037b6
test eax, eax
je 0x4037b6
cmp eax, 0xffffffff
je 0x4037b6
mov edx, dword [ecx + 0x43f8f8]
lea eax, [ecx + 0x43f8f8]
push 0
push 0x200
mov ecx, dword [eax + 4]
push ecx
push edx
call fcn.00413250
cmp eax, 0xffffffff
je 0x4037b6
mov eax, dword [esi + 0x1c]
push 0xfffffffffffffffe
push ebp
push 0x5ff
push eax
call ebx
push 0x43fc78
lea ecx, [esp + 0x1c]
call fcn.00422a7b
push 0x43b2d4
lea ecx, [esp + 0x18]
push eax
push ecx
mov byte [esp + 0x144], 6
call fcn.00422ca2
push eax
mov ecx, edi
mov byte [esp + 0x13c], 7
call fcn.00422b46
lea ecx, [esp + 0x14]
mov byte [esp + 0x138], 6
call fcn.00422a0d
lea ecx, [esp + 0x18]
mov byte [esp + 0x138], 3
call fcn.00422a0d
mov edx, dword [esi + 0x1c]
push 0xffffffffffffffff
push ebp
push 0x5ff
push edx
call ebx
mov ecx, dword [esi + 0xab0]
xor eax, eax
test ecx, ecx
setne al
push eax
push ecx
lea edx, [esp + 0x18]
mov ecx, esp
mov dword [esp + 0x1c], esp
push edx
call fcn.00422782
push ecx
lea eax, [esi + 0xac4]
mov ecx, esp
mov dword [esp + 0x24], esp
push eax
mov byte [esp + 0x148], 8
call fcn.00422782
mov ecx, dword [esp + 0x38]
mov byte [esp + 0x144], 3
push ecx
call fcn.004092a0
add esp, 0x10
mov dword [esp + 0x20], eax
test eax, eax
je 0x40371f
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x2c]
lea edx, [eax + 0x43f908]
lea eax, [eax + 0x43f900]
push edx
push eax
push ecx
call fcn.00408f30
add esp, 0xc
test eax, eax
je 0x403717
mov eax, dword [esi + 0xabc]
push 0x43fc78
push eax
call fcn.00412c4d
add esp, 8
test eax, eax
je 0x403708
mov eax, dword [esi + 0xac0]
push 0xfffffffffffffffe
test eax, eax
push ebp
push 0x5ff
jne 0x403672
mov edx, dword [esi + 0x1c]
push edx
call ebx
push 0x43fc78
lea ecx, [esp + 0x1c]
call fcn.00422a7b
push 0x43b2c4
push eax
lea eax, [esp + 0x1c]
mov byte [esp + 0x140], 9
push eax
call fcn.00422ca2
push eax
mov ecx, edi
mov byte [esp + 0x13c], 0xa
call fcn.00422b46
lea ecx, [esp + 0x14]
mov byte [esp + 0x138], 9
call fcn.00422a0d
lea ecx, [esp + 0x18]
mov byte [esp + 0x138], 3
call fcn.00422a0d
mov ecx, dword [esi + 0x1c]
push 0xffffffffffffffff
push ebp
push 0x5ff
push ecx
call ebx
mov edx, dword [esi + 0xac8]
mov ecx, dword [esp + 0x24]
lea eax, [esp + 0x1c]
push edx
mov dl, byte [ecx + 0x43f8f0]
push eax
lea eax, [esi + 0xabc]
mov ecx, esi
push eax
push edx
push ebp
call fcn.00405260
test eax, eax
je 0x403717
mov ecx, dword [esp + 0x2c]
push ebp
push ecx
mov ecx, esi
call fcn.00404980
jmp 0x40371f
mov eax, dword [esi + 0x1c]
push eax
call ebx
push 0x43fc78
lea ecx, [esp + 0x1c]
call fcn.00422a7b
push 0x43b2b4
lea ecx, [esp + 0x18]
push eax
push ecx
mov byte [esp + 0x144], 0xb
call fcn.00422ca2
push eax
mov ecx, edi
mov byte [esp + 0x13c], 0xc
call fcn.00422b46
lea ecx, [esp + 0x14]
mov byte [esp + 0x138], 0xb
call fcn.00422a0d
lea ecx, [esp + 0x18]
mov byte [esp + 0x138], 3
call fcn.00422a0d
mov edx, dword [esi + 0x1c]
push 0xffffffffffffffff
push ebp
push 0x5ff
push edx
call ebx
mov eax, dword [esi + 0xac8]
mov edx, dword [esp + 0x24]
push eax
lea ecx, [esp + 0x20]
lea eax, [esi + 0xabc]
push ecx
push eax
mov al, byte [edx + 0x43f8f0]
push eax
push ebp
mov ecx, esi
call fcn.00405700
test eax, eax
je 0x403717
mov ecx, dword [esp + 0x2c]
push ebp
push ecx
mov ecx, esi
call fcn.00404980
jmp 0x40371f
mov dword [esp + 0x20], 0
lea ecx, [esp + 0x10]
mov byte [esp + 0x138], 2
call fcn.00422a0d
mov edx, dword [esi + ebp*4 + 0x87c]
push edx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, dword [esp + 0x20]
mov dword [esi + ebp*4 + 0x87c], 0
test eax, eax
jne 0x40376b
mov eax, dword [esi + 0x1c]
push 0xfffffffffffffffe
push ebp
push 0x5ff
push eax
call ebx
lea ecx, [esp + 0x1c]
push ecx
mov ecx, edi
call fcn.00422b46
mov edx, dword [esp + 0x20]
mov eax, dword [esi + 0x1c]
push edx
push ebp
push 0x5ff
push eax
call ebx
mov eax, dword [esi + 0xaac]
test eax, eax
jne 0x403799
lea ebp, [ebp + ebp*2]
push 1
lea ecx, [ebp + ebp*4]
lea ecx, [esi + ecx*4 + 0x7c]
call fcn.00423f5e
lea ecx, [esp + 0x1c]
mov dword [esp + 0x138], 0xffffffff
call fcn.00422a0d
mov eax, dword [esp + 0x20]
jmp 0x40388d
mov edx, dword [esi + 0x1c]
push 0xfffffffffffffffe
push ebp
push 0x5ff
push edx
call ebx
push 0x43fc78
lea ecx, [esp + 0x1c]
call fcn.00422a7b
push 0x43b2fc
push eax
lea eax, [esp + 0x1c]
mov byte [esp + 0x140], 4
push eax
call fcn.00422ca2
push eax
mov ecx, edi
mov byte [esp + 0x13c], 5
call fcn.00422b46
lea ecx, [esp + 0x14]
mov byte [esp + 0x138], 4
call fcn.00422a0d
lea ecx, [esp + 0x18]
mov byte [esp + 0x138], 3
call fcn.00422a0d
mov ecx, dword [esi + 0x1c]
push 0
push ebp
push 0x5ff
push ecx
call ebx
mov eax, dword [esi + 0xaac]
test eax, eax
jne 0x403847
lea ebp, [ebp + ebp*2]
push 1
lea edx, [ebp + ebp*4]
lea ecx, [esi + edx*4 + 0x7c]
call fcn.00423f5e
lea ecx, [esp + 0x10]
mov byte [esp + 0x138], 2
call fcn.00422a0d
jmp 0x403877
mov eax, dword [esi + 0xaac]
test eax, eax
jne 0x403877
lea ebp, [ebp + ebp*2]
push 1
lea eax, [ebp + ebp*4]
lea ecx, [esi + eax*4 + 0x7c]
call fcn.00423f5e
lea ecx, [esp + 0x1c]
mov dword [esp + 0x138], 0xffffffff
call fcn.00422a0d
xor eax, eax
mov ecx, dword [esp + 0x130]
pop edi
pop esi
pop ebp
mov dword fs:[0], ecx
pop ebx
add esp, 0x12c
ret 4