Function at 0x433d30
Capabilities:
Get common file path
Get disk size
Get program files directory
Query environment variable

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4d77b2
mov eax, dword fs:[0]
push eax
sub esp, 0x3c0
mov eax, dword [0x52ad60]
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 - 4], 0
mov dword [ebp - 0x220], 0
mov dword [ebx], 0
mov eax, dword [0x52a6d0]
mov ecx, 0x52a6d0
mov dword [ebp - 0x224], ebx
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebx], eax
mov dword [ebp - 4], 0
mov dword [ebp - 0x220], 1
mov dword [ebp - 0x21c], 0
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
mov esi, dword [0x52f558]
mov edi, eax
test esi, esi
jne 0x433e20
push str.kernel32.dll
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
test eax, eax
je 0x433f4e
push str.IsWow64Process
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov esi, eax
mov dword [0x52f558], esi
test esi, esi
je 0x433f4e
mov edx, dword [0x52f408]
lea ecx, [edx + 1]
lea eax, [edx + 2]
imul eax, ecx
imul eax, edx
cdq
mov ecx, 0x18
idiv ecx
cmp edx, 3
jne 0x433e20
push 0
push 0
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_GetDiskFreeSpaceW]
mov esi, dword [0x52f558]
lea eax, [ebp - 0x21c]
push eax
push edi
call esi
test eax, eax
je 0x433f4e
cmp dword [ebp - 0x21c], 0
je 0x433f4e
mov edx, dword [0x52f408]
lea ecx, [edx + 1]
lea eax, [edx + 2]
imul eax, ecx
imul eax, edx
cdq
mov ecx, 0x15
idiv ecx
cmp edx, 0x13
jne 0x433ec5
xor esi, esi
call fcn.004b42bc
movd xmm0, eax
cvtdq2pd xmm0, xmm0
inc esi
movsd qword [ebp + esi*8 - 0x3d4], xmm0
cmp esi, 0x35
jb 0x433e60
xor ecx, ecx
mov edi, edi
mov eax, 0x34
cmp ecx, eax
jge 0x433ebf
lea esp, [esp]
movsd xmm0, qword [ebp + eax*8 - 0x3cc]
movsd xmm1, qword [ebp + eax*8 - 0x3d4]
comisd xmm0, xmm1
jbe 0x433eba
movsd qword [ebp + eax*8 - 0x3cc], xmm1
movsd qword [ebp + eax*8 - 0x3d4], xmm0
dec eax
cmp eax, ecx
jg 0x433e90
inc ecx
cmp ecx, 0x35
jl 0x433e80
push 0
push 0
push str.ProgramW6432
call dword [sym.imp.KERNEL32.dll_GetEnvironmentVariableW]
test eax, eax
je 0x433fff
lea esi, [eax + 1]
xor ecx, ecx
mov eax, esi
mov edx, 2
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.004b31e0
add esp, 4
mov edi, eax
push esi
push edi
push str.ProgramW6432
call dword [sym.imp.KERNEL32.dll_GetEnvironmentVariableW]
test eax, eax
je 0x433f38
test edi, edi
jne 0x433f15
xor ecx, ecx
jmp 0x433f2f
mov ecx, edi
lea edx, [ecx + 2]
lea ebx, [ebx]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x433f20
sub ecx, edx
sar ecx, 1
push ecx
push edi
mov ecx, ebx
call fcn.004046f0
test edi, edi
je 0x433fff
push edi
call fcn.004b429b
add esp, 4
jmp 0x433fff
xor eax, eax
push 0x206
push eax
mov word [ebp - 0x218], ax
lea eax, [ebp - 0x216]
push eax
call fcn.004b84f0
mov esi, dword [0x52f408]
mov eax, esi
imul eax, esi
cdq
mov ecx, 0xc
idiv ecx
add esp, 0xc
cmp edx, 2
jne 0x433fbf
mov eax, 0x51eb851f
imul esi
sar edx, 5
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
imul ecx, ecx, 0x64
sub esi, ecx
xor ecx, ecx
lea eax, [esi + 0x2f4]
mov edx, 4
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.004b31e0
push eax
call fcn.004b429b
add esp, 8
lea eax, [ebp - 0x218]
push eax
push 0
push 0
push 0x26
push 0
call dword [sym.imp.SHELL32.dll_SHGetFolderPathW]
test eax, eax
js 0x433fff
lea ecx, [ebp - 0x218]
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x433fe1
sub ecx, edx
sar ecx, 1
push ecx
lea eax, [ebp - 0x218]
push eax
mov ecx, ebx
call fcn.004046f0
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.004b3a11
mov esp, ebp
pop ebp
ret