Function at 0x436c40
Capabilities:
Get disk information

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xa2c
mov eax, dword [0x4703d0]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 0xc]
push ebx
push esi
push edi
mov edi, dword [ebp + 8]
mov dword [ebp - 0xa28], eax
xor ebx, ebx
mov eax, edi
mov dword [ebp - 0xa1c], edi
mov dword [ebp - 0xa18], ebx
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
cmp cx, bx
jne 0x436c75
sub eax, edx
sar eax, 1
lea esi, [eax + eax]
mov eax, edi
mov dword [ebp - 0xa20], ebx
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
cmp cx, bx
jne 0x436c92
sub eax, edx
sar eax, 1
cmp eax, 2
jbe 0x436cb1
cmp word [edi + 2], 0x3a
je 0x436fdf
cmp dword [0x471bfc], ebx
jne 0x436e03
push esi
mov word [ebp - 0xa14], bx
call fcn.0043c073
add esp, 4
cmp eax, ebx
mov dword [ebp - 0xa18], eax
je 0x436f57
lea ecx, [ebp - 0xa14]
push ecx
push 0x3ff
call dword [sym.imp.KERNEL32.dll_GetLogicalDriveStringsW]
test eax, eax
je 0x436fdf
mov edx, dword [0x45fc54]
mov ax, word [0x45fc58]
mov dword [ebp - 0xc], edx
mov word [ebp - 8], ax
xor edi, edi
lea ebx, [ebp - 0xa14]
mov cx, word [ebx]
push 0x104
lea edx, [ebp - 0x214]
push edx
lea eax, [ebp - 0xc]
push eax
mov word [ebp - 0xc], cx
call dword [sym.imp.KERNEL32.dll_QueryDosDeviceW]
test eax, eax
je 0x436de2
lea eax, [ebp - 0x214]
lea edx, [eax + 2]
mov edi, edi
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x436d40
sub eax, edx
sar eax, 1
mov esi, eax
cmp esi, 0x104
jae 0x436de2
mov edx, dword [ebp - 0xa1c]
push esi
lea ecx, [ebp - 0x214]
push ecx
push edx
call fcn.0043e502
add esp, 0xc
test eax, eax
jne 0x436de2
mov edi, dword [ebp - 0xa18]
lea eax, [ebp - 0xc]
mov edx, edi
mov ecx, eax
mov dword [ebp - 0xa2c], 1
sub edx, ecx
movzx ecx, word [eax]
mov word [edx + eax], cx
add eax, 2
test cx, cx
jne 0x436d91
mov edx, dword [ebp - 0xa1c]
lea eax, [edx + esi*2]
mov edx, eax
jmp 0x436db0
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x436db0
sub eax, edx
add edi, 0xfffffffe
mov cx, word [edi + 2]
add edi, 2
test cx, cx
jne 0x436dc0
mov ecx, eax
shr ecx, 2
mov esi, edx
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, dword [ebp - 0xa2c]
mov ax, word [ebx]
add ebx, 2
test ax, ax
jne 0x436de2
test edi, edi
jne 0x436fdf
cmp word [ebx], di
jne 0x436d10
jmp 0x436fdf
mov edi, dword [sym.imp.KERNEL32.dll_DeviceIoControl]
lea esp, [esp]
mov eax, dword [ebp - 0xa18]
test eax, eax
je 0x436e23
push eax
call fcn.0043c1ba
add esp, 4
push esi
call fcn.0043c073
mov ebx, eax
add esp, 4
test ebx, ebx
mov dword [ebp - 0xa18], ebx
je 0x436f2b
mov eax, dword [ebp - 0xa1c]
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x436e45
push 0
sub eax, edx
lea ecx, [ebp - 0xa24]
push ecx
mov ecx, dword [0x471bfc]
push esi
sar eax, 1
push ebx
lea edx, [eax + eax + 2]
mov eax, dword [ebp - 0xa1c]
push edx
push eax
push 0x42280c
push ecx
call edi
test eax, eax
jne 0x436fa5
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov ecx, eax
cmp ecx, 8
mov dword [ebp - 0xa20], ecx
je 0x436ea8
cmp ecx, 0xea
je 0x436ee5
cmp ecx, 0x5aa
jne 0x436f63
mov eax, dword [0x46500c]
cmp eax, 0x46500c
je 0x436e10
test byte [eax + 0x3c], 1
je 0x436e10
cmp byte [eax + 0x39], 2
jb 0x436e10
mov ecx, dword [eax + 0x34]
mov edx, dword [eax + 0x30]
push 0x45fbac
push 0x33
push ecx
push edx
call fcn.0041b140
jmp 0x436e10
mov ecx, dword [ebp - 0xa24]
mov esi, ecx
mov eax, dword [0x46500c]
cmp eax, 0x46500c
je 0x436e10
test byte [eax + 0x3c], 1
je 0x436e10
cmp byte [eax + 0x39], 5
jb 0x436e10
mov edx, dword [eax + 0x34]
mov eax, dword [eax + 0x30]
push ecx
push 0x45fbac
push 0x32
push edx
push eax
call fcn.00401230
jmp 0x436e10
mov eax, dword [0x46500c]
cmp eax, 0x46500c
je 0x436f57
test byte [eax + 0x3c], 1
je 0x436f57
cmp byte [eax + 0x39], 2
jb 0x436f57
mov ecx, dword [eax + 0x34]
mov edx, dword [eax + 0x30]
push 0x45fbac
push 0x31
push ecx
push edx
call fcn.0041b140
mov dword [ebp - 0xa20], 8
jmp 0x436fdf
mov eax, dword [0x46500c]
cmp eax, 0x46500c
je 0x436f90
test byte [eax + 0x3c], 1
je 0x436f90
cmp byte [eax + 0x39], 2
jb 0x436f90
mov edx, dword [eax + 0x30]
push ecx
mov ecx, dword [eax + 0x34]
push 0x45fbac
push 0x34
push ecx
push edx
call fcn.00401230
push ebx
call fcn.0043c1ba
add esp, 4
mov dword [ebp - 0xa18], 0
jmp 0x436fdf
mov eax, dword [0x46500c]
cmp eax, 0x46500c
je 0x436fdf
test byte [eax + 0x3c], 1
je 0x436fdf
cmp byte [eax + 0x39], 5
jb 0x436fdf
mov ecx, dword [ebp - 0xa1c]
mov edx, dword [ebp - 0xa18]
push ecx
mov ecx, dword [eax + 0x34]
push edx
mov edx, dword [eax + 0x30]
push 0x45fbac
push 0x35
push ecx
push edx
call fcn.00435b30
mov eax, dword [ebp - 0xa18]
mov ecx, dword [ebp - 0xa28]
mov dword [ecx], eax
mov ecx, dword [ebp - 4]
mov eax, dword [ebp - 0xa20]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.0043c015
mov esp, ebp
pop ebp
ret 8