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

Disassembly:
mov ecx, dword [esp + 0x10]
sub esp, 0x220
push ebx
push ebp
xor ebp, ebp
push esi
or eax, 0xffffffff
cmp ecx, ebp
push edi
jne 0x40ea2b
xor eax, eax
jmp 0x40ea2d
mov dword [ecx], ebp
mov esi, dword [esp + 0x234]
mov cl, byte [esi]
neg cl
sbb ecx, ecx
test eax, ecx
jne 0x40ea54
push 0x57
call fcn.0040b130
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x220
ret 0x10
push 0x42a320
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
call fcn.0040e7b0
push 0x104
push esi
lea edx, [esp + 0x30]
push edx
call fcn.00409b20
lea ecx, [esp + 0x28]
mov byte [esp + 0x12b], 0
call fcn.0040e6e0
test eax, eax
jne 0x40ead0
cmp byte [esi], 0x5c
je 0x40eac0
mov edi, dword [sym.imp.MSVCRT.dll_strstr]
push 0x422b68
push esi
call edi
add esp, 8
test eax, eax
jne 0x40eac0
push 0x422b64
push esi
call edi
add esp, 8
test eax, eax
jne 0x40eac0
push ebp
lea edx, [esp + 0x2c]
mov ecx, esi
call fcn.0040e6f0
jmp 0x40ead0
push 0x104
push esi
lea eax, [esp + 0x30]
push eax
call fcn.00409b20
push 4
lea ecx, [esp + 0x2c]
push ecx
lea edx, [esp + 0x18]
push edx
call fcn.00409b20
lea eax, [esp + 0x10]
push eax
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 ecx, [esp + 0x130]
push ecx
lea edx, [esp + 0x24]
push edx
push ebp
push ebp
push ebp
push ebp
lea eax, [esp + 0x2c]
push eax
mov dword [esp + 0x3c], ebp
call dword [sym.imp.KERNEL32.dll_GetVolumeInformationA]
test eax, eax
jne 0x40eb2b
xor edi, edi
jmp 0x40eb9e
lea ecx, [esp + 0x20]
push ecx
lea edx, [esp + 0x1c]
push edx
lea eax, [esp + 0x1c]
push eax
lea ecx, [esp + 0x30]
push ecx
lea edx, [esp + 0x20]
push edx
mov dword [esp + 0x38], ebp
mov dword [esp + 0x28], ebp
mov dword [esp + 0x2c], ebp
mov dword [esp + 0x34], ebp
call dword [sym.imp.KERNEL32.dll_GetDiskFreeSpaceA]
test eax, eax
jne 0x40eb62
xor edi, edi
jmp 0x40eb9e
mov eax, dword [esp + 0x1c]
mov edx, dword [esp + 0x12c]
mov ecx, dword [esp + 0x18]
mov ebx, dword [esp + 0x14]
and eax, 4
xor eax, edx
xor eax, ecx
xor eax, ebx
xor eax, esi
mov ecx, eax
shr ecx, 0x10
xor ecx, eax
cmp cx, 0x1f00
je 0x40eb99
cmp cx, 0x805
je 0x40eb99
xor edi, edi
jmp 0x40eb9e
mov edi, 1
mov ebx, dword [esp + 0x23c]
test bl, 1
je 0x40ebcf
cmp edi, ebp
jne 0x40ebcf
push 0xf
call fcn.0040b130
push 0x42a320
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x220
ret 0x10
push ebp
push ebp
push 3
push ebp
push 1
push 0x80000000
lea eax, [esp + 0x40]
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov ebp, eax
cmp ebp, 0xffffffff
jne 0x40ec07
push 0x42a320
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x220
ret 0x10
push 8
push 0xfffffffffffffffe
push str.._AUARCHIVEREC__
push 0x14c
call fcn.00408660
xor esi, esi
cmp eax, esi
je 0x40ec27
mov dword [eax], esi
mov dword [eax + 4], esi
mov esi, eax
push 0x104
lea ecx, [esp + 0x2c]
push ecx
lea edx, [esi + 8]
push edx
call fcn.00409b20
mov ecx, dword [esp + 0x238]
mov eax, edi
neg eax
sbb eax, eax
and eax, 3
test edi, edi
mov dword [esi + 0x10c], ebp
mov dword [esi + 0x110], eax
mov dword [esi + 0x114], ecx
mov dword [esi + 0x144], 1
je 0x40ec76
mov dword [esi + 0x110], 3
jmp 0x40ec85
xor edx, edx
mov dl, bl
shr edx, 1
and edx, 1
mov dword [esi + 0x110], edx
push 0
push 0xe66
push str.c:projects_storm_sourceSFile.cpp
push 0x20
call fcn.00408660
push 0
push ebp
mov dword [esi + 0x134], eax
mov dword [esi + 0x12c], 0
call dword [sym.imp.KERNEL32.dll_GetFileSize]
mov dword [esi + 0x130], eax
mov eax, dword [esp + 0x240]
push eax
push edi
mov edx, ebx
mov ecx, esi
call fcn.0040ecf0
push 0x42a320
mov esi, eax
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
pop edi
mov eax, esi
pop esi
pop ebp
pop ebx
add esp, 0x220
ret 0x10