Function at 0x4381b0
Capabilities:
Get common file path
Get disk size
Read .ini file

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x59d30b
mov eax, dword fs:[0]
push eax
mov eax, 0x1274
call fcn.0056e430
mov eax, dword [0x608554]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov ebx, ecx
mov dword [ebp - 0x1254], ebx
push ecx
push str.CheckRunEnvironment::CheckDiskSpace
lea ecx, [ebp - 0x1250]
call fcn.0040a480
mov dword [ebp - 4], 0
mov ecx, dword [0x608f30]
cmp ecx, 0x608f30
je 0x438242
test byte [ecx + 0x1c], 1
je 0x438242
cmp dword [0x608f68], 8
mov eax, 0x608f54
mov edx, 0x5caaf4
cmovae eax, dword [0x608f54]
push eax
push dword [ecx + 0x14]
push dword [ecx + 0x10]
mov ecx, 0xe
call fcn.00401840
add esp, 0xc
push 0x800
lea eax, [ebp - 0xa18]
push 0
push eax
call fcn.00571c00
push 0x208
lea eax, [ebp - 0x218]
push 0
push eax
call fcn.00571c00
mov ecx, dword [0x6184f0]
lea eax, [ebp - 0xa18]
add esp, 0x18
xorps xmm0, xmm0
movlpd qword [ebp - 0x1270], xmm0
movlpd qword [ebp - 0x1280], xmm0
movlpd qword [ebp - 0x1278], xmm0
mov ecx, dword [ecx + 0x1c]
push eax
push str.TEMPPATH
call fcn.004f65f0
lea eax, [ebp - 0xa18]
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenW]
mov esi, dword [sym.imp.KERNEL32.dll_lstrcatW]
cmp word [ebp + eax*2 - 0xa1a], 0x5c
je 0x4382cc
push 0x5c692c
lea eax, [ebp - 0xa18]
push eax
call esi
push str.InsDrv.ini
lea eax, [ebp - 0xa18]
push eax
call esi
mov ecx, dword [0x608f30]
cmp ecx, 0x608f30
je 0x438321
test byte [ecx + 0x1c], 4
je 0x438321
cmp dword [0x608f68], 8
lea edx, [ebp - 0xa18]
push edx
mov eax, 0x608f54
mov edx, 0x5caaf4
cmovae eax, dword [0x608f54]
push eax
push dword [ecx + 0x14]
push dword [ecx + 0x10]
mov ecx, 0xf
call fcn.00405920
add esp, 0x10
mov esi, dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntW]
lea eax, [ebp - 0xa18]
push eax
push 0x1f4
push str.Border
push str.DiskSpaceCheck
call esi
mov edi, eax
lea eax, [ebp - 0xa18]
push eax
push 0x19
push str.Margin
push str.DiskSpaceCheck
call esi
mov esi, eax
mov eax, 0x7d0
cmp edi, eax
cmova edi, eax
mov eax, 0xa
cmp esi, eax
cmovb esi, eax
shl edi, 0x14
shl esi, 0x14
mov ecx, dword [0x608f30]
cmp ecx, 0x608f30
je 0x4383f4
test byte [ecx + 0x1c], 4
je 0x4383b9
cmp dword [0x608f68], 8
mov eax, 0x608f54
push edi
cmovae eax, dword [0x608f54]
mov edx, 0x5caaf4
push eax
push dword [ecx + 0x14]
push dword [ecx + 0x10]
mov ecx, 0x10
call fcn.004018a0
mov ecx, dword [0x608f30]
add esp, 0x10
cmp ecx, 0x608f30
je 0x4383f4
test byte [ecx + 0x1c], 4
je 0x4383f4
cmp dword [0x608f68], 8
mov eax, 0x608f54
push esi
cmovae eax, dword [0x608f54]
mov edx, 0x5caaf4
push eax
push dword [ecx + 0x14]
push dword [ecx + 0x10]
mov ecx, 0x11
call fcn.004018a0
add esp, 0x10
push 0x104
lea eax, [ebp - 0x218]
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryW]
lea eax, [ebp - 0x1278]
push eax
lea eax, [ebp - 0x1280]
push eax
lea eax, [ebp - 0x1270]
push eax
lea eax, [ebp - 0x218]
push eax
call dword [sym.imp.KERNEL32.dll_GetDiskFreeSpaceExW]
mov eax, dword [ebp - 0x126c]
mov ecx, dword [ebp - 0x1270]
mov dword [ebp - 0x125c], eax
mov eax, 0x431bde83
mul ecx
mov dword [ebp - 0x1260], ecx
shr edx, 0x12
imul eax, edx, 0xf4240
mov dword [ebp - 0x1268], edx
sub ecx, eax
mov dword [ebp - 0x1258], ecx
mov ecx, dword [0x608f30]
cmp ecx, 0x608f30
je 0x4384ab
test byte [ecx + 0x1c], 4
je 0x4384ab
push dword [ebp - 0x1258]
cmp dword [0x608f68], 8
mov eax, 0x608f54
push edx
cmovae eax, dword [0x608f54]
mov edx, 0x5caaf4
push eax
push dword [ecx + 0x14]
push dword [ecx + 0x10]
mov ecx, 0x12
call fcn.00437f70
mov ecx, dword [0x608f30]
add esp, 0x14
cmp dword [ebp - 0x125c], 0
ja 0x4387d1
jb 0x4384c6
cmp dword [ebp - 0x1260], edi
jae 0x4387d1
call fcn.0049ba70
test eax, eax
je 0x438540
mov ecx, ebx
call fcn.0043a0e0
mov ecx, dword [0x6184f0]
mov ebx, eax
mov ecx, dword [ecx + 0x18]
call fcn.004d2ec0
mov ecx, dword [ebp - 0x1254]
add ebx, eax
call fcn.0043b230
mov edi, eax
mov edx, dword [0x608f30]
cmp edx, 0x608f30
je 0x438536
test byte [edx + 0x1c], 4
je 0x438536
cmp dword [0x608f68], 8
mov ecx, 0x608f54
push ebx
cmovae ecx, dword [0x608f54]
push ecx
push dword [edx + 0x14]
mov ecx, 0x13
push dword [edx + 0x10]
mov edx, 0x5caaf4
call fcn.004018a0
add esp, 0x10
cmp ebx, edi
jbe 0x438540
sub esi, edi
add ebx, esi
jmp 0x438542
mov ebx, esi
lea eax, [ebp - 0xa18]
xor edi, edi
push eax
push 5
push str.WorkMargin
push str.DiskSpaceCheck
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntW]
mov esi, eax
shl esi, 0x14
mov dword [ebp - 0x1264], esi
mov ecx, dword [0x608f30]
cmp ecx, 0x608f30
je 0x4385a7
test byte [ecx + 0x1c], 4
je 0x4385a7
cmp dword [0x608f68], 8
mov eax, 0x608f54
push esi
cmovae eax, dword [0x608f54]
mov edx, 0x5caaf4
push eax
push dword [ecx + 0x14]
push dword [ecx + 0x10]
lea ecx, [edi + 0x14]
call fcn.004018a0
add esp, 0x10
mov ecx, dword [0x6184f0]
push 3
mov ecx, dword [ecx + 4]
call fcn.004feca0
test eax, eax
je 0x4385e4
mov edi, 0x19000
add esi, 0x2800
nop word [eax + eax]
mov ecx, dword [0x6184f0]
add edi, esi
mov ecx, dword [ecx + 4]
call fcn.004fee60
test eax, eax
jne 0x4385d0
mov ecx, dword [0x608f30]
cmp ecx, 0x608f30
je 0x438625
test byte [ecx + 0x1c], 4
je 0x438625
cmp dword [0x608f68], 8
mov eax, 0x608f54
push edi
cmovae eax, dword [0x608f54]
mov edx, 0x5caaf4
push eax
push dword [ecx + 0x14]
push dword [ecx + 0x10]
mov ecx, 0x15
call fcn.004018a0
add esp, 0x10
mov esi, dword [0x6184f0]
push 0x800
push 0
mov eax, dword [esi + 4]
mov eax, dword [eax + 4]
mov eax, dword [eax]
mov dword [ebp - 0x1254], eax
lea eax, [ebp - 0x1218]
push eax
call fcn.00571c00
mov ecx, dword [esi + 0x1c]
lea eax, [ebp - 0x1218]
add esp, 0xc
push eax
push str.INSTALLATION_SELECT
call fcn.004f65f0
mov ecx, 0x5c79d4
lea eax, [ebp - 0x1218]
nop
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x438696
test dx, dx
je 0x438692
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x438696
add eax, 4
add ecx, 4
test dx, dx
jne 0x438670
xor eax, eax
jmp 0x43869b
sbb eax, eax
or eax, 1
test eax, eax
jne 0x4386a6
mov eax, 1
jmp 0x4386b0
mov eax, dword [ebp - 0x1254]
test eax, eax
jle 0x4386b9
imul eax, dword [ebp - 0x1264]
add edi, eax
mov ecx, dword [0x608f30]
cmp ecx, 0x608f30
je 0x438700
test byte [ecx + 0x1c], 4
je 0x438700
cmp dword [0x608f68], 8
mov eax, 0x608f54
push edi
cmovae eax, dword [0x608f54]
mov edx, 0x5caaf4
push eax
push dword [ecx + 0x14]
push dword [ecx + 0x10]
mov ecx, 0x16
call fcn.004018a0
mov ecx, dword [0x608f30]
add esp, 0x10
add ebx, edi
cmp ecx, 0x608f30
je 0x438793
test byte [ecx + 0x1c], 4
je 0x438747
cmp dword [0x608f68], 8
mov eax, 0x608f54
push ebx
cmovae eax, dword [0x608f54]
mov edx, 0x5caaf4
push eax
push dword [ecx + 0x14]
push dword [ecx + 0x10]
mov ecx, 0x17
call fcn.004018a0
mov ecx, dword [0x608f30]
add esp, 0x10
cmp ecx, 0x608f30
je 0x438793
test byte [ecx + 0x1c], 4
je 0x438793
push dword [ebp - 0x1258]
cmp dword [0x608f68], 8
mov eax, 0x608f54
push dword [ebp - 0x1268]
cmovae eax, dword [0x608f54]
mov edx, 0x5caaf4
push eax
push dword [ecx + 0x14]
push dword [ecx + 0x10]
mov ecx, 0x18
call fcn.00437f70
mov ecx, dword [0x608f30]
add esp, 0x14
xor eax, eax
cmp eax, dword [ebp - 0x125c]
jb 0x438815
ja 0x4387a7
cmp ebx, dword [ebp - 0x1260]
jbe 0x438815
push 0xa4
push dword [0x6184fc]
call fcn.00502d80
mov ecx, dword [0x608f30]
add esp, 8
mov ebx, 0x8001001e
mov dword [0x6183ec], 0x1e
jmp 0x438817
cmp ecx, 0x608f30
je 0x438815
test byte [ecx + 0x1c], 4
je 0x438815
cmp dword [0x608f68], 8
mov eax, 0x608f54
mov edx, 0x5caaf4
cmovae eax, dword [0x608f54]
shr edi, 0x14
push edi
push eax
push dword [ecx + 0x14]
push dword [ecx + 0x10]
mov ecx, 0x19
call fcn.004018a0
mov ecx, dword [0x608f30]
add esp, 0x10
xor ebx, ebx
mov byte [ebp - 0x124c], 1
cmp ecx, 0x608f30
je 0x438859
test byte [ecx + 0x1c], 1
je 0x438859
cmp dword [0x608f68], 8
mov eax, 0x608f54
push ebx
cmovae eax, dword [0x608f54]
mov edx, 0x5caaf4
push eax
push dword [ecx + 0x14]
push dword [ecx + 0x10]
mov ecx, 0x1a
call fcn.004018a0
add esp, 0x10
lea ecx, [ebp - 0x1250]
call fcn.0040a570
mov eax, ebx
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.0056d977
mov esp, ebp
pop ebp
ret