Function at 0x4e5880
Capabilities:
Get disk size

Disassembly:
sub esp, 0x148
lea eax, [esp + 0x44]
push ebx
mov ecx, dword [esp + 0x154]
push esi
mov esi, dword [esp + 0x15c]
push edi
mov edi, dword [esp + 0x158]
push eax
push ecx
mov dword [esi], 0
push edi
call fcn.004b92b0
add esp, 0xc
mov ebx, eax
test edi, edi
je 0x4e58c8
mov eax, dword [edi + 0xac]
test eax, eax
je 0x4e58c8
mov ecx, dword [eax + 0x2c]
jmp 0x4e58ca
xor ecx, ecx
lea eax, [esp + 0x50]
push 0
lea edx, [esp + 0x20]
push eax
push edx
push ecx
push edi
call fcn.004aec90
add esp, 0x14
test ax, ax
je 0x4e58f4
mov eax, 0xfffffffe
pop edi
pop esi
pop ebx
add esp, 0x148
ret
test byte [esp + 0x28], 1
je 0x4e5916
mov edx, dword [esp + 0x20]
mov ecx, dword [esp + 0x1c]
xor eax, eax
mov al, byte [edx + ecx]
mov dword [esp + 0xc], eax
test eax, eax
je 0x4e596d
inc dword [esp + 0x20]
jmp 0x4e596d
test byte [esp + 0x28], 2
je 0x4e5945
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x1c]
cmp word [eax + ecx], 0
je 0x4e593b
add dword [esp + 0x20], 2
mov dword [esp + 0xc], 2
jmp 0x4e596d
mov dword [esp + 0xc], 0
jmp 0x4e596d
test edi, edi
je 0x4e5958
mov eax, dword [edi + 0xac]
test eax, eax
je 0x4e5958
mov ecx, dword [eax + 0x2c]
jmp 0x4e595a
xor ecx, ecx
lea eax, [esp + 0xc]
lea edx, [esp + 0x1c]
push eax
push edx
push ecx
call fcn.004ae200
add esp, 0xc
test byte [esp + 0x28], 1
je 0x4e598f
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x1c]
xor eax, eax
mov al, byte [ecx + edx]
mov dword [esp + 0x14], eax
test eax, eax
je 0x4e59e6
inc dword [esp + 0x20]
jmp 0x4e59e6
test byte [esp + 0x28], 2
je 0x4e59be
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x1c]
cmp word [eax + ecx], 0
je 0x4e59b4
add dword [esp + 0x20], 2
mov dword [esp + 0x14], 2
jmp 0x4e59e6
mov dword [esp + 0x14], 0
jmp 0x4e59e6
test edi, edi
je 0x4e59d1
mov eax, dword [edi + 0xac]
test eax, eax
je 0x4e59d1
mov ecx, dword [eax + 0x2c]
jmp 0x4e59d3
xor ecx, ecx
lea eax, [esp + 0x14]
lea edx, [esp + 0x1c]
push eax
push edx
push ecx
call fcn.004ae200
add esp, 0xc
lea ecx, [esp + 0x1c]
xor eax, eax
test edi, edi
mov dword [ecx], eax
mov dword [ecx + 4], eax
mov dword [ecx + 8], eax
mov dword [ecx + 0xc], eax
mov eax, 0
je 0x4e5a06
mov eax, dword [edi + 0xac]
mov ecx, dword [esp + 0xc]
push ecx
push eax
call fcn.004acf60
add esp, 8
cmp eax, 0x41
jb 0x4e5a46
mov eax, 0
test edi, edi
je 0x4e5a28
mov eax, dword [edi + 0xac]
mov ecx, dword [esp + 0xc]
push ecx
push eax
call fcn.004acf60
add esp, 8
cmp eax, 0x5a
ja 0x4e5a46
cmp dword [esp + 0x14], 0x3a
je 0x4e5bf6
lea eax, [esp + 0x50]
lea ecx, [esp + 0x3c]
push eax
push ecx
push edi
call fcn.004c2810
add esp, 0xc
test edi, edi
je 0x4e5a6c
mov eax, dword [edi + 0xac]
test eax, eax
je 0x4e5a6c
mov ecx, dword [eax + 0x2c]
jmp 0x4e5a6e
xor ecx, ecx
mov eax, dword [esp + 0x3c]
push 0
lea edx, [esp + 0x30]
push eax
push edx
push ecx
push edi
call fcn.004aec90
add esp, 0x14
test ax, ax
je 0x4e5a98
mov eax, 0xfffffffe
pop edi
pop esi
pop ebx
add esp, 0x148
ret
test byte [esp + 0x38], 1
je 0x4e5aba
mov ecx, dword [esp + 0x30]
mov edx, dword [esp + 0x2c]
xor eax, eax
mov al, byte [ecx + edx]
mov dword [esp + 0x10], eax
test eax, eax
je 0x4e5b11
inc dword [esp + 0x30]
jmp 0x4e5b11
test byte [esp + 0x38], 2
je 0x4e5ae9
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x2c]
cmp word [eax + ecx], 0
je 0x4e5adf
add dword [esp + 0x30], 2
mov dword [esp + 0x10], 2
jmp 0x4e5b11
mov dword [esp + 0x10], 0
jmp 0x4e5b11
test edi, edi
je 0x4e5afc
mov eax, dword [edi + 0xac]
test eax, eax
je 0x4e5afc
mov ecx, dword [eax + 0x2c]
jmp 0x4e5afe
xor ecx, ecx
lea eax, [esp + 0x10]
lea edx, [esp + 0x2c]
push eax
push edx
push ecx
call fcn.004ae200
add esp, 0xc
test byte [esp + 0x38], 1
je 0x4e5b33
mov edx, dword [esp + 0x30]
mov ecx, dword [esp + 0x2c]
xor eax, eax
mov al, byte [edx + ecx]
mov dword [esp + 0x18], eax
test eax, eax
je 0x4e5b8a
inc dword [esp + 0x30]
jmp 0x4e5b8a
test byte [esp + 0x38], 2
je 0x4e5b62
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x2c]
cmp word [eax + ecx], 0
je 0x4e5b58
add dword [esp + 0x30], 2
mov dword [esp + 0x18], 2
jmp 0x4e5b8a
mov dword [esp + 0x18], 0
jmp 0x4e5b8a
test edi, edi
je 0x4e5b75
mov eax, dword [edi + 0xac]
test eax, eax
je 0x4e5b75
mov ecx, dword [eax + 0x2c]
jmp 0x4e5b77
xor ecx, ecx
lea eax, [esp + 0x18]
lea edx, [esp + 0x2c]
push eax
push edx
push ecx
call fcn.004ae200
add esp, 0xc
lea ecx, [esp + 0x2c]
xor eax, eax
test edi, edi
mov dword [ecx], eax
mov dword [ecx + 4], eax
mov dword [ecx + 8], eax
mov dword [ecx + 0xc], eax
mov eax, 0
je 0x4e5baa
mov eax, dword [edi + 0xac]
mov ecx, dword [esp + 0x10]
push ecx
push eax
call fcn.004acf60
add esp, 8
cmp eax, 0x41
jb 0x4e5c82
mov eax, 0
test edi, edi
je 0x4e5bd0
mov eax, dword [edi + 0xac]
mov ecx, dword [esp + 0x10]
push ecx
push eax
call fcn.004acf60
add esp, 8
cmp eax, 0x5a
ja 0x4e5c82
cmp dword [esp + 0x18], 0x3a
jne 0x4e5c82
mov ebx, dword [esp + 0x3c]
lea eax, [esp + 0x4c]
lea ecx, [esp + 0x40]
lea edx, [esp + 0x44]
push eax
lea eax, [esp + 0x4c]
push ecx
lea ecx, [esp + 0x58]
push edx
mov byte [esp + 0x5e], 0x5c
mov byte [esp + 0x5f], 0
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_GetDiskFreeSpaceA]
test eax, eax
jne 0x4e5c41
push ebx
push str.GetDiskFreeSpace
push edi
call fcn.004ca250
add esp, 0xc
mov eax, 0xfffffffe
pop edi
pop esi
pop ebx
add esp, 0x148
ret
mov ecx, dword [esp + 0x44]
imul ecx, dword [esp + 0x48]
cmp ecx, 0x800
jbe 0x4e5c6a
shr ecx, 0xa
mov eax, dword [esp + 0x40]
imul eax, ecx
pop edi
mov dword [esi], eax
xor eax, eax
pop esi
pop ebx
add esp, 0x148
ret
mov eax, dword [esp + 0x40]
pop edi
imul eax, ecx
shr eax, 0xa
mov dword [esi], eax
xor eax, eax
pop esi
pop ebx
add esp, 0x148
ret
push ebx
push 0xffff8400
push 2
push edi
call fcn.004bda00
add esp, 0x10
mov eax, 0xfffffffe
pop edi
pop esi
pop ebx
add esp, 0x148
ret