Function at 0x416910
Capabilities:
Get disk information
Get disk size

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x25c
mov eax, dword [ebp + 0x14]
push ebx
xor ebx, ebx
cmp eax, ebx
push esi
push edi
je 0x416932
mov esi, dword [ebp + 8]
cmp esi, ebx
mov dword [eax], ebx
je 0x416932
cmp byte [esi], bl
jne 0x416944
push 0x57
call fcn.00412210
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret 0x18
call fcn.00416620
push 0x104
push esi
lea eax, [ebp - 0x158]
push eax
call fcn.00410250
lea ecx, [ebp - 0x158]
mov byte [ebp - 0x55], bl
call fcn.00416540
test eax, eax
jne 0x4169bd
mov al, byte [esi]
cmp al, 0x5c
je 0x4169ab
cmp al, 0x2f
je 0x4169ab
mov edi, dword [sym.imp.MSVCRT.dll_strstr]
push 0x457614
push esi
call edi
add esp, 8
test eax, eax
jne 0x4169ab
push 0x457610
push esi
call edi
add esp, 8
test eax, eax
jne 0x4169ab
push ebx
lea edx, [ebp - 0x158]
mov ecx, esi
call fcn.00416550
jmp 0x4169bd
push 0x104
push esi
lea ecx, [ebp - 0x158]
push ecx
call fcn.00410250
push 4
lea edx, [ebp - 0x158]
push edx
lea eax, [ebp + 8]
push eax
call fcn.00410250
lea ecx, [ebp + 8]
push ecx
call dword [sym.imp.KERNEL32.dll_GetDriveTypeA]
push 0x104
mov esi, eax
xor eax, eax
mov ecx, 0x41
lea edi, [ebp - 0x25c]
rep stosd dword es:[edi], eax
lea edx, [ebp - 0x25c]
push edx
lea eax, [ebp - 0xc]
push eax
push ebx
push ebx
push ebx
push ebx
lea ecx, [ebp + 8]
push ecx
mov dword [ebp - 0xc], ebx
call dword [sym.imp.KERNEL32.dll_GetVolumeInformationA]
test eax, eax
jne 0x416a14
mov dword [ebp + 8], ebx
jmp 0x416a7c
lea edx, [ebp - 0x24]
push edx
lea eax, [ebp - 4]
push eax
lea ecx, [ebp - 8]
push ecx
lea edx, [ebp - 0x28]
push edx
lea eax, [ebp + 8]
push eax
mov dword [ebp - 0x28], ebx
mov dword [ebp - 8], ebx
mov dword [ebp - 4], ebx
mov dword [ebp - 0x24], ebx
call dword [sym.imp.KERNEL32.dll_GetDiskFreeSpaceA]
test eax, eax
jne 0x416a43
mov dword [ebp + 8], ebx
jmp 0x416a7c
mov eax, dword [ebp - 0xc]
mov edi, dword [ebp - 0x25c]
mov edx, dword [ebp - 4]
mov ecx, dword [ebp - 8]
and eax, 4
xor eax, edi
xor eax, edx
xor eax, ecx
xor eax, esi
mov ecx, eax
shr ecx, 0x10
xor ecx, eax
cmp cx, 0x1f00
je 0x416a75
cmp cx, 0x805
mov dword [ebp + 8], ebx
jne 0x416a7c
mov dword [ebp + 8], 1
mov eax, dword [ebp + 0x10]
test al, 1
je 0x416a9a
cmp dword [ebp + 8], ebx
jne 0x416a9a
push 0xf
call fcn.00412210
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret 0x18
mov ecx, dword [ebp + 0x18]
and eax, 0x10
cmp ecx, ebx
je 0x416b7f
mov edx, dword [ebp + 0x1c]
cmp edx, ebx
jbe 0x416b7f
cmp eax, ebx
je 0x416b7f
cmp eax, 0x10
jne 0x416bbb
lea eax, [ebp - 0x158]
mov dword [ebp - 0x34], ecx
mov dword [ebp - 0x20], eax
mov eax, 0x1000
lea ecx, [ebp - 0x20]
mov esi, 1
push ebx
push ecx
mov dword [ebp - 0x1c], 0x80000000
mov dword [ebp - 0x18], esi
mov dword [ebp - 0x14], 3
mov dword [ebp - 0x10], 0x80
mov dword [ebp - 0x30], edx
mov dword [ebp - 0x2c], eax
mov dword [ebp - 0x4c], ebx
mov dword [ebp - 0x48], ebx
mov dword [ebp - 0x44], eax
mov dword [ebp - 0x40], 4
mov byte [ebp - 0x3c], bl
mov byte [ebp - 0x3b], 1
mov dword [ebp - 0x38], esi
call fcn.0041e610
mov esi, eax
add esp, 8
cmp esi, ebx
je 0x416bbb
lea edx, [ebp - 0x34]
push esi
push edx
call fcn.0041fbc0
mov edi, eax
add esp, 8
cmp edi, ebx
jne 0x416b55
mov ecx, esi
call fcn.004129a0
push 2
call fcn.00412210
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret 0x18
lea eax, [ebp - 0x4c]
push edi
push eax
call fcn.0041ef00
add esp, 8
cmp eax, ebx
jne 0x416bb5
mov ecx, edi
call fcn.004129a0
push 2
call fcn.00412210
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret 0x18
lea edx, [ebp - 0x20]
lea ecx, [ebp - 0x158]
push ebx
push edx
mov dword [ebp - 0x20], ecx
mov dword [ebp - 0x1c], 0x80000000
mov dword [ebp - 0x18], 1
mov dword [ebp - 0x14], 3
mov dword [ebp - 0x10], 0x80
call fcn.0041e610
add esp, 8
cmp eax, ebx
je 0x416bbb
mov edi, eax
cmp edi, ebx
jne 0x416bcd
push 2
call fcn.00412210
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret 0x18
push 0x45eb20
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
push 8
push 0xfffffffffffffffe
push str.._AUARCHIVEREC_SFile_Storm__
push 0x2a0
call fcn.0040ff20
mov esi, eax
cmp esi, ebx
je 0x416c4f
mov ecx, esi
call fcn.00418320
lea eax, [esi + 8]
push eax
call dword [sym.imp.KERNEL32.dll_InitializeCriticalSection]
lea ecx, [esi + 0x20]
push ecx
call dword [sym.imp.KERNEL32.dll_InitializeCriticalSection]
inc dword [esi + 0x38]
push 0x45eb20
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
push 0x104
lea edx, [ebp - 0x158]
push edx
lea eax, [esi + 0x3c]
push eax
call fcn.00410250
cmp dword [ebp + 8], ebx
mov ecx, dword [ebp + 0xc]
mov dword [esi + 0x140], edi
mov dword [esi + 0x148], ecx
je 0x416c53
mov dword [esi + 0x29c], 3
jmp 0x416c6b
xor esi, esi
jmp 0x416c0f
test byte [ebp + 0x10], 2
je 0x416c65
mov dword [esi + 0x29c], 1
jmp 0x416c6b
mov dword [esi + 0x29c], ebx
mov edx, dword [ebp + 0x10]
shr edx, 2
and edx, 1
lea ecx, [ebp - 0x54]
mov dword [esi + 0x144], edx
mov eax, dword [edi]
push ecx
mov ecx, edi
call dword [eax + 0x10]
mov eax, dword [ebp + 0x14]
mov ecx, dword [ebp + 8]
mov dword [esi + 0x280], ebx
mov edx, dword [ebp - 0x54]
push eax
mov dword [esi + 0x284], edx
mov edx, dword [ebp + 0x10]
push ecx
mov ecx, esi
mov dword [esi + 0x298], ebx
call fcn.00416cc0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x18