Function at 0x22797912
Capabilities:
Get storage device properties

Disassembly:
push ebp
mov eax, 0x2b2c
lea ebp, [esp - 0x2ab0]
call fcn.2279a4c0
mov eax, dword [0x227a16b0]
push ebx
push esi
mov esi, dword [ebp + 0x2ab8]
xor ebx, ebx
push ebx
push ebx
push 3
push ebx
push 3
push ebx
xor eax, ebp
push 0x2279c968
mov dword [ebp + 0x2aac], eax
mov byte [ebp - 0x59], bl
call dword [sym.imp.KERNEL32.dll_CreateFileA]
cmp eax, 0xffffffff
mov dword [ebp - 0x60], eax
je 0x22797a5d
push edi
push 0xc
lea eax, [ebp - 0x58]
push ebx
push eax
call sub.MSVCR71.dll_memset
mov edi, 0x2710
push edi
lea eax, [ebp - 0x4c]
push ebx
push eax
mov dword [ebp - 0x58], ebx
mov dword [ebp - 0x54], ebx
call sub.MSVCR71.dll_memset
add esp, 0x18
push ebx
lea eax, [ebp - 0x64]
push eax
push edi
lea eax, [ebp - 0x4c]
push eax
push 0xc
lea eax, [ebp - 0x58]
push eax
push 0x2d1400
push dword [ebp - 0x60]
mov dword [ebp - 0x64], ebx
call dword [sym.imp.KERNEL32.dll_DeviceIoControl]
test eax, eax
je 0x22797a53
lea eax, [ebp + 0x26c4]
push eax
push 1
push dword [ebp - 0x34]
lea eax, [ebp - 0x4c]
push eax
call fcn.227972f6
movsx eax, byte [ebp + 0x26c4]
mov edi, dword [sym.imp.MSVCR71.dll_isalnum]
push eax
call edi
add esp, 0x14
test eax, eax
jne 0x227979e7
movsx eax, byte [ebp + 0x26d7]
push eax
call edi
test eax, eax
pop ecx
je 0x22797a53
lea eax, [ebp + 0x26c4]
push eax
mov ecx, esi
call dword [sym.imp.MSVCP71.dll_public:_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char______thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::assign_char_const__]
lea eax, [ebp - 0x70]
push eax
mov ecx, esi
mov byte [ebp - 0x5a], 0x20
call dword [sym.imp.MSVCP71.dll_public:_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::iterator___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::end_void_]
mov edi, eax
lea eax, [ebp - 0x6c]
push eax
mov ecx, esi
call dword [sym.imp.MSVCP71.dll_public:_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::iterator___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::end_void_]
mov dword [ebp - 0x68], eax
lea eax, [ebp - 0x74]
push eax
mov ecx, esi
call dword [sym.imp.MSVCP71.dll_public:_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::iterator___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::begin_void_]
lea ecx, [ebp - 0x5a]
push ecx
mov ecx, dword [ebp - 0x68]
push dword [ecx]
push dword [eax]
lea eax, [ebp - 0x7c]
push eax
call fcn.22797499
add esp, 0x10
push dword [edi]
mov ecx, esi
push dword [eax]
lea eax, [ebp - 0x78]
push eax
call dword [sym.imp.MSVCP71.dll_public:_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::iterator___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::erase_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::iterator__class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::iterator_]
cmp dword [esi + 0x14], ebx
je 0x22797a53
mov byte [ebp - 0x59], 1
push dword [ebp - 0x60]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
pop edi
mov ecx, dword [ebp + 0x2aac]
mov al, byte [ebp - 0x59]
pop esi
xor ecx, ebp
pop ebx
call fcn.2279a349
add ebp, 0x2ab0
leave
ret