Function at 0x416390
Capabilities:
Get file size

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x18
mov al, byte [ebp + 8]
push ebx
push esi
mov esi, ecx
push edi
push 0
push 0x50af83
lea edi, [esi + 8]
mov byte [esi + 4], al
mov ecx, edi
call fcn.00404ce0
mov ecx, dword [edi + 0x10]
or eax, 0xffffffff
mov dl, byte [esi + 4]
sub eax, ecx
mov byte [ebp + 0xb], dl
cmp eax, 1
jbe 0x4165a1
lea ebx, [ecx + 1]
cmp ebx, 0xfffffffe
ja 0x4165ab
mov eax, dword [edi + 0x14]
cmp eax, ebx
jae 0x4163f9
push ecx
push ebx
mov ecx, edi
call fcn.00405280
mov dl, byte [ebp + 0xb]
test ebx, ebx
je 0x41642a
cmp dword [edi + 0x14], 0x10
mov ecx, dword [edi + 0x10]
jb 0x416412
mov eax, dword [edi]
jmp 0x416414
test ebx, ebx
jne 0x4163ec
mov dword [edi + 0x10], ebx
cmp eax, 0x10
jb 0x41640b
mov eax, dword [edi]
mov byte [eax], bl
jmp 0x41642a
mov eax, edi
mov byte [eax], 0
jmp 0x41642a
mov eax, edi
mov byte [eax + ecx], dl
cmp dword [edi + 0x14], 0x10
mov dword [edi + 0x10], ebx
jb 0x416424
mov eax, dword [edi]
jmp 0x416426
mov eax, edi
mov byte [eax + ebx], 0
push 0x18
push str.:NetDiskBufferFile.data
mov ecx, edi
call fcn.00404960
cmp dword [edi + 0x14], 0x10
jb 0x416440
mov edi, dword [edi]
push 0
push 0x20000080
push 4
push 0
push 1
push 0xc0000000
push edi
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov dword [esi + 0x20], eax
cmp eax, 0xffffffff
je 0x416529
lea eax, [ebp + 8]
mov dword [ebp + 8], 0
push eax
mov ecx, esi
call fcn.004168a0
test al, al
je 0x416529
mov eax, dword [ebp + 8]
cmp eax, 0x1400
jbe 0x416490
add eax, 0xffffec00
jmp 0x416492
xor eax, eax
mov dword [esi + 0x2c], 0
cmp dword [esi + 0x2c], 0
mov dword [esi + 0x28], eax
ja 0x4164a9
cmp eax, 0x80000
jbe 0x4164b7
mov dword [esi + 0x28], 0x80000
mov dword [esi + 0x2c], 0
mov eax, dword [esi + 0x28]
mov ecx, dword [esi + 0x2c]
shld ecx, eax, 0x14
mov dword [ebp - 0x14], 0
shl eax, 0x14
mov dword [esi + 0x28], eax
lea eax, [ebp - 0x14]
push eax
push dword [esi + 0x20]
mov dword [esi + 0x2c], ecx
mov dword [ebp - 0x10], 0
call dword [sym.imp.KERNEL32.dll_GetFileSizeEx]
test eax, eax
je 0x416529
mov eax, dword [ebp - 0x14]
mov cl, 0x20
add dword [esi + 0x28], eax
mov eax, dword [ebp - 0x10]
adc dword [esi + 0x2c], eax
mov eax, dword [esi + 0x28]
mov edx, dword [esi + 0x2c]
call fcn.004f4bb0
push 0
mov dword [ebp - 8], eax
lea eax, [ebp - 8]
push eax
push dword [esi + 0x28]
push dword [esi + 0x20]
call dword [sym.imp.KERNEL32.dll_SetFilePointer]
cmp eax, 0xffffffff
je 0x416529
push dword [esi + 0x20]
call dword [sym.imp.KERNEL32.dll_SetEndOfFile]
test eax, eax
jne 0x41654c
mov eax, dword [esi + 0x20]
xor bl, bl
cmp eax, 0xffffffff
je 0x416596
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov dword [esi + 0x20], 0xffffffff
mov al, bl
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
mov eax, dword [esi + 0x28]
mov ecx, dword [esi + 0x2c]
shrd eax, ecx, 0x10
mov dword [esi + 0x38], 0
shr ecx, 0x10
push ecx
push eax
push str.disk_data_pool_max_block_count:__I64u
push str.disk_data_pool_t::init
push 0x5d
push str.d:_slaveworkspace_netdiskgamevirtualdiskserverdisk_data_pool.h
push 4
mov dword [esi + 0x40], eax
mov dword [esi + 0x44], ecx
mov dword [esi + 0x3c], 0
call fcn.0040eb60
add esp, 0x1c
lea eax, [esi + 0x30]
push eax
call dword [sym.imp.KERNEL32.dll_InitializeSListHead]
mov bl, 1
pop edi
pop esi
mov al, bl
pop ebx
mov esp, ebp
pop ebp
ret 4
push str.string_too_long
call fcn.004c790d
push str.string_too_long
call fcn.004c790d
int3