Function at 0x40ffd0
Capabilities:
Get disk information
Get disk size
Get file size

Disassembly:
mov eax, dword [esp + 0x10]
sub esp, 0x220
push ebx
push ebp
xor ebx, ebx
cmp eax, ebx
push esi
push edi
je 0x40fff5
mov esi, dword [esp + 0x234]
cmp esi, ebx
mov dword [eax], ebx
je 0x40fff5
cmp byte [esi], bl
jne 0x41000b
push 0x57
call fcn.0040c3e0
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x220
ret 0x10
call fcn.0040fd20
push 0x104
push esi
lea eax, [esp + 0x30]
push eax
call fcn.0040a830
lea ecx, [esp + 0x28]
mov byte [esp + 0x12b], bl
call fcn.0040fc40
test eax, eax
jne 0x41007b
cmp byte [esi], 0x5c
je 0x41006b
mov edi, dword [sym.imp.MSVCRT.dll_strstr]
push 0x42beb0
push esi
call edi
add esp, 8
test eax, eax
jne 0x41006b
push 0x42beac
push esi
call edi
add esp, 8
test eax, eax
jne 0x41006b
push ebx
lea edx, [esp + 0x2c]
mov ecx, esi
call fcn.0040fc50
jmp 0x41007b
push 0x104
push esi
lea ecx, [esp + 0x30]
push ecx
call fcn.0040a830
push 4
lea edx, [esp + 0x2c]
push edx
lea eax, [esp + 0x18]
push eax
call fcn.0040a830
lea ecx, [esp + 0x10]
push ecx
call dword [sym.imp.KERNEL32.dll_GetDriveTypeA]
push 0x104
mov esi, eax
xor eax, eax
mov ecx, 0x41
lea edi, [esp + 0x130]
rep stosd dword es:[edi], eax
lea edx, [esp + 0x130]
push edx
lea eax, [esp + 0x24]
push eax
push ebx
push ebx
push ebx
push ebx
lea ecx, [esp + 0x2c]
push ecx
mov dword [esp + 0x3c], ebx
call dword [sym.imp.KERNEL32.dll_GetVolumeInformationA]
test eax, eax
jne 0x4100d6
xor ebp, ebp
jmp 0x410149
lea edx, [esp + 0x20]
push edx
lea eax, [esp + 0x1c]
push eax
lea ecx, [esp + 0x1c]
push ecx
lea edx, [esp + 0x30]
push edx
lea eax, [esp + 0x20]
push eax
mov dword [esp + 0x38], ebx
mov dword [esp + 0x28], ebx
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x34], ebx
call dword [sym.imp.KERNEL32.dll_GetDiskFreeSpaceA]
test eax, eax
jne 0x41010d
xor ebp, ebp
jmp 0x410149
mov eax, dword [esp + 0x1c]
mov edx, dword [esp + 0x12c]
mov ecx, dword [esp + 0x18]
mov ebp, dword [esp + 0x14]
and eax, 4
xor eax, edx
xor eax, ecx
xor eax, ebp
xor eax, esi
mov ecx, eax
shr ecx, 0x10
xor ecx, eax
cmp cx, 0x1f00
je 0x410144
cmp cx, 0x805
je 0x410144
xor ebp, ebp
jmp 0x410149
mov ebp, 1
test byte [esp + 0x23c], 1
je 0x41016d
cmp ebp, ebx
jne 0x41016d
push 0xf
call fcn.0040c3e0
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x220
ret 0x10
push ebx
push ebx
push 3
push ebx
push 1
push 0x80000000
lea ecx, [esp + 0x40]
push ecx
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov edi, eax
cmp edi, 0xffffffff
jne 0x41019a
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x220
ret 0x10
push 0x433cb0
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
push 8
push 0xfffffffffffffffe
push str.._AUARCHIVEREC_SFile_Storm__
push 0x290
call fcn.00408f70
mov esi, eax
cmp esi, ebx
je 0x410211
lea edx, [esi + 8]
push edx
mov dword [esi], ebx
mov dword [esi + 4], ebx
call dword [sym.imp.KERNEL32.dll_InitializeCriticalSection]
inc dword [esi + 0x20]
push 0x433cb0
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
push 0x104
lea eax, [esp + 0x2c]
push eax
lea ecx, [esi + 0x24]
push ecx
call fcn.0040a830
cmp ebp, ebx
mov edx, dword [esp + 0x238]
mov dword [esi + 0x128], edi
mov dword [esi + 0x130], edx
je 0x410215
mov dword [esi + 0x28c], 3
jmp 0x410231
xor esi, esi
jmp 0x4101d0
test byte [esp + 0x23c], 2
je 0x41022b
mov dword [esi + 0x28c], 1
jmp 0x410231
mov dword [esi + 0x28c], ebx
mov eax, dword [esp + 0x23c]
shr eax, 2
push ebx
and eax, 1
push edi
mov dword [esi + 0x12c], eax
mov dword [esi + 0x274], ebx
call dword [sym.imp.KERNEL32.dll_GetFileSize]
mov ecx, dword [esp + 0x240]
mov edx, dword [esp + 0x23c]
push ecx
push ebp
mov ecx, esi
mov dword [esi + 0x278], eax
mov dword [esi + 0x288], ebx
call fcn.00410290
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x220
ret 0x10