Function at 0x6640ec50
Capabilities:
Get disk information

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
mov ebx, eax
sub esp, 0x8c
mov eax, dword [eax + 0xa8]
mov dword [esp + 4], eax
movzx eax, word [ebx + 0x98]
mov dword [esp], eax
call fcn.6642fb90
movzx edx, byte [eax]
mov esi, eax
cmp dl, 0xff
jne 0x6640ec88
movzx edx, byte [eax + 7]
add esi, 7
test dl, dl
je 0x6640ed68
movzx eax, dl
mov byte [ebp - 0x6c], dl
add eax, 0x40
mov dword [ebp - 0x4a], 0x3a
mov word [ebp - 0x4c], ax
lea eax, [ebp - 0x4c]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_GetDriveTypeW]
movzx edx, byte [ebp - 0x6c]
sub esp, 4
add edx, 0x40
cmp eax, 1
mov eax, 0x5b
cmova eax, edx
mov edx, dword [esi + 5]
mov byte [ebp - 0x5c], al
mov byte [ebp - 0x5b], 0x3a
mov eax, dword [esi + 1]
lea edi, [ebp - 0x5c]
mov dword [esp + 4], 0x20
mov dword [ebp - 0x56], edx
mov edx, dword [sym.imp.ucrtbase.dll_strchr]
mov dword [ebp - 0x5a], eax
mov eax, 0x20
mov word [ebp - 0x52], ax
lea eax, [ebp - 0x5a]
mov dword [esp], eax
mov dword [ebp - 0x6c], edx
call edx
mov byte [eax], 0x2e
movzx edx, word [esi + 9]
lea ecx, [eax + 1]
mov word [eax + 1], dx
movzx edx, byte [esi + 0xb]
mov byte [eax + 3], dl
mov edx, 0x20
mov word [eax + 4], dx
mov edx, dword [ebp - 0x6c]
mov dword [esp + 4], 0x20
mov dword [esp], ecx
call edx
mov byte [eax], 0
mov dword [esp + 4], 2
mov dword [esp], edi
call dword [sym.imp.kernel32.dll__lopen]
sub esp, 8
cmp eax, 0xffffffff
jne 0x6640ed78
mov esi, 0xff
test byte [0x664447b0], 8
jne 0x6640edd0
mov eax, esi
mov byte [ebx + 0xb0], al
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret
call fcn.6640e720
add eax, 0x41
jmp 0x6640ecc5
mov dword [esp], eax
mov dword [ebp - 0x6c], eax
call sym.krnl386.exe16_Win32HandleToDosFileHandle
mov edx, dword [ebp - 0x6c]
sub esp, 4
cmp ax, 0xffff
je 0x6640ee48
cmp ax, 0xff
jbe 0x6640ee80
movzx esi, ax
test byte [0x664447b0], 8
jne 0x6640ee10
mov dword [esp], esi
mov esi, 0xff
call sym.krnl386.exe16__lclose16
mov eax, esi
mov byte [ebx + 0xb0], al
sub esp, 4
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret
mov dword [esp + 0x10], edi
mov dword [esp + 0xc], str._lopen___s___failed:_INVALID_HANDLE_VALUE_n
mov dword [esp + 8], str.INT21_OpenFileUsingFCB
mov dword [esp + 4], 0x664447b0
mov dword [esp], 3
call fcn.6640d110
mov eax, esi
mov byte [ebx + 0xb0], al
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret
mov dword [esp + 0x14], edi
mov dword [esp + 0x10], esi
mov dword [esp + 0xc], str.hfile16___d__larger_than_255_for___s__n
mov dword [esp + 8], str.INT21_OpenFileUsingFCB
mov dword [esp + 4], 0x664447b0
mov dword [esp], 3
call fcn.6640d110
jmp 0x6640eda9
test byte [0x664447b0], 8
jne 0x6640eef0
mov esi, 0xff
mov dword [esp], edx
call dword [sym.imp.kernel32.dll_CloseHandle]
mov eax, esi
mov byte [ebx + 0xb0], al
sub esp, 4
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret
mov dword [ebp - 0x70], eax
lea eax, [ebp - 0x4c]
mov dword [esp], edx
mov dword [ebp - 0x6c], edx
mov dword [esp + 4], eax
call dword [sym.imp.kernel32.dll_GetFileInformationByHandle]
mov edx, dword [ebp - 0x6c]
sub esp, 8
test eax, eax
mov ecx, dword [ebp - 0x70]
jne 0x6640ef20
movzx esi, cx
test byte [0x664447b0], 8
je 0x6640eda9
mov dword [esp + 0x18], edi
mov dword [esp + 0x14], edx
mov dword [esp + 0x10], esi
mov dword [esp + 0xc], str.GetFileInformationByHandle__d___p__for___s__failed_n
mov dword [esp + 8], str.INT21_OpenFileUsingFCB
mov dword [esp + 4], 0x664447b0
mov dword [esp], 3
call fcn.6640d110
jmp 0x6640eda9
mov dword [esp + 0x10], edx
mov dword [esp + 0xc], str.Win32HandleToDosFileHandle__p__failed:_HFILE_ERROR_n
mov dword [esp + 8], str.INT21_OpenFileUsingFCB
mov dword [esp + 4], 0x664447b0
mov dword [esp], 3
call fcn.6640d110
mov edx, dword [ebp - 0x6c]
jmp 0x6640ee55
movzx eax, byte [ebp - 0x5c]
mov dword [esi + 0xc], 0x800000
mov dword [ebp - 0x70], ecx
mov dword [ebp - 0x6c], edx
sub eax, 0x40
mov byte [esi], al
mov eax, dword [ebp - 0x28]
mov dword [esi + 0x10], eax
lea eax, [esi + 0x16]
mov dword [esp + 8], eax
lea eax, [esi + 0x14]
mov dword [esp + 4], eax
lea eax, [ebp - 0x38]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_FileTimeToDosDateTime]
mov ecx, dword [ebp - 0x70]
mov dword [esi + 0x19], 0xc2
mov byte [esi + 0x1d], 0
sub esp, 0xc
mov edx, dword [ebp - 0x6c]
mov byte [esi + 0x18], cl
mov eax, dword [ebp - 0x4c]
mov byte [esi + 0x1e], al
xor esi, esi
test byte [0x664447b0], 8
je 0x6640ed55
movzx ecx, cx
mov dword [esp + 0x18], edx
mov dword [esp + 0x14], ecx
mov dword [esp + 0x10], edi
mov dword [esp + 0xc], str.successful_opened_file___s__as__d__handle__p__n
mov dword [esp + 8], str.INT21_OpenFileUsingFCB
mov dword [esp + 4], 0x664447b0
mov dword [esp], 3
call fcn.6640d110
jmp 0x6640ed55