Function at 0x4141b0
Capabilities:
Get disk size
Get file attributes

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x5f16b8
mov eax, dword fs:[0]
push eax
sub esp, 0x38
push ebx
push esi
push edi
mov eax, dword [0x6b7e40]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov eax, edx
mov dword [ebp - 0x40], eax
mov ebx, ecx
mov ecx, dword [ebp + 8]
mov dword [eax], 0
mov dword [eax + 4], 0
mov dword [ecx], 0
mov dword [ecx + 4], 0
mov eax, dword [ebx]
mov dword [ebp - 0x38], ecx
cmp dword [eax - 0xc], 0
jne 0x41421b
xor al, al
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
add eax, 0xfffffff0
push eax
call fcn.004046f0
lea esi, [eax + 0x10]
add esp, 4
mov dword [ebp - 0x24], esi
mov dword [ebp - 4], 0
mov ecx, dword [ebx]
call fcn.00414b70
or edi, 0xffffffff
test al, al
jne 0x414361
push 0x63bfdc
lea ecx, [ebp - 0x28]
call fcn.004021e0
lea eax, [ebp - 0x28]
push eax
lea edx, [ebp - 0x24]
mov ecx, ebx
mov byte [ebp - 4], 1
call fcn.0041aa70
add esp, 4
push dword [ebx]
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, edi
je 0x41427c
test al, 0x10
je 0x41433e
mov esi, dword [ebp - 0x24]
mov ecx, esi
call fcn.00414b70
test al, al
jne 0x414341
push 0x63bfdc
lea ecx, [ebp - 0x2c]
call fcn.004021e0
push 0x63bfdc
lea ecx, [ebp - 0x14]
mov byte [ebp - 4], 3
call fcn.004021e0
mov byte [ebp - 4], 4
mov eax, dword [ebx]
sub eax, 0x10
push eax
call fcn.004046f0
add eax, 0x10
add esp, 4
mov dword [ebp - 0x20], eax
lea eax, [ebp - 0x14]
push eax
lea eax, [ebp - 0x2c]
push eax
lea edx, [ebp - 0x24]
lea ecx, [ebp - 0x20]
mov byte [ebp - 4], 5
call fcn.0041abf0
mov byte [ebp - 4], 4
mov edx, dword [ebp - 0x20]
add edx, 0xfffffff0
add esp, 8
lea eax, [edx + 0xc]
mov ecx, edi
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x4142fe
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 3
mov edx, dword [ebp - 0x14]
add edx, 0xfffffff0
mov ecx, edi
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x41431e
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 1
mov edx, dword [ebp - 0x2c]
add edx, 0xfffffff0
mov ecx, edi
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x41433e
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov esi, dword [ebp - 0x24]
mov byte [ebp - 4], 0
mov edx, dword [ebp - 0x28]
add edx, 0xfffffff0
mov ecx, edi
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x414361
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
xorps xmm0, xmm0
lea eax, [ebp - 0x34]
push eax
lea edx, [ebp - 0x1c]
lea ecx, [ebp - 0x24]
movlpd qword [ebp - 0x1c], xmm0
movlpd qword [ebp - 0x34], xmm0
call fcn.00414030
add esp, 4
test al, al
je 0x4143a5
mov ecx, dword [ebp - 0x40]
mov eax, dword [ebp - 0x1c]
mov dword [ecx], eax
mov eax, dword [ebp - 0x18]
mov dword [ecx + 4], eax
mov ecx, dword [ebp - 0x38]
mov eax, dword [ebp - 0x34]
mov dword [ecx], eax
mov eax, dword [ebp - 0x30]
mov dword [ecx + 4], eax
jmp 0x4145fa
mov ebx, dword [sym.imp.KERNEL32.dll_GetLastError]
call ebx
mov dword [ebp - 0x14], eax
call fcn.004a4516
xor ecx, ecx
mov edx, eax
test edx, edx
setne cl
test ecx, ecx
jne 0x4143cc
push 0x80004005
call fcn.00402040
mov eax, dword [edx]
mov ecx, edx
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x20], eax
mov byte [ebp - 4], 6
push dword [ebp - 0x14]
lea eax, [ebp - 0x20]
push esi
push str.ERROR:_::GetDiskFreeSpaceEx_failed_for_directory__s.__Error_Code:__d
push eax
call fcn.00404520
add esp, 0xc
mov ecx, esp
push 0x63bfdc
call fcn.004021e0
push 0
lea eax, [ebp - 0x20]
push eax
push 0x3c7
push str.C:_amintegration_tools_setupishield_sldim_baseUtilities.cpp
push 1
push 1
xor ecx, ecx
call fcn.004051a0
mov ecx, eax
call fcn.004022e0
lea eax, [ebp - 0x30]
push eax
lea eax, [ebp - 0x3c]
push eax
lea eax, [ebp - 0x28]
push eax
lea eax, [ebp - 0x2c]
push eax
push esi
mov dword [ebp - 0x2c], 0
mov dword [ebp - 0x28], 0
mov dword [ebp - 0x3c], 0
mov dword [ebp - 0x30], 0
call dword [sym.imp.KERNEL32.dll_GetDiskFreeSpaceW]
test eax, eax
jne 0x414514
call ebx
mov ebx, eax
call fcn.004a4516
xor ecx, ecx
mov edx, eax
test edx, edx
setne cl
test ecx, ecx
jne 0x41447b
push 0x80004005
call fcn.00402040
mov eax, dword [edx]
mov ecx, edx
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x14], eax
push ebx
push esi
lea eax, [ebp - 0x14]
push str.ERROR:_::GetDiskFreeSpace_ALSO_failed_for_directory__s.__Error_Code:__d
push eax
mov byte [ebp - 4], 7
call fcn.00404520
add esp, 0xc
mov ecx, esp
push 0x63bfdc
call fcn.004021e0
push 0
lea eax, [ebp - 0x14]
push eax
push 0x3d3
push str.C:_amintegration_tools_setupishield_sldim_baseUtilities.cpp
push 1
push 1
xor ecx, ecx
call fcn.004051a0
mov ecx, eax
call fcn.004022e0
mov byte [ebp - 4], 6
mov edx, dword [ebp - 0x14]
add edx, 0xfffffff0
mov ecx, edi
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x4144ed
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0
mov edx, dword [ebp - 0x20]
add edx, 0xfffffff0
mov ecx, edi
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x41450d
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
xor bl, bl
jmp 0x4145fc
mov eax, dword [ebp - 0x28]
fnstcw word [ebp - 0x12]
movd xmm1, eax
shr eax, 0x1f
cvtdq2pd xmm1, xmm1
mov ecx, dword [ebp - 0x40]
addsd xmm1, qword [eax*8 + 0x654710]
mov eax, dword [ebp - 0x2c]
movd xmm0, eax
cvtdq2pd xmm0, xmm0
shr eax, 0x1f
mov dword [ecx + 4], 0
addsd xmm0, qword [eax*8 + 0x654710]
mov eax, dword [ebp - 0x3c]
mulsd xmm1, xmm0
movd xmm0, eax
cvtdq2pd xmm0, xmm0
shr eax, 0x1f
addsd xmm0, qword [eax*8 + 0x654710]
movzx eax, word [ebp - 0x12]
or eax, 0xc00
mulsd xmm0, xmm1
movsd qword [ebp - 0x1c], xmm0
fld qword [ebp - 0x1c]
mov dword [ebp - 0x18], eax
fldcw word [ebp - 0x18]
fistp qword [ebp - 0x1c]
mov eax, dword [ebp - 0x1c]
mov dword [ecx], eax
mov eax, dword [ebp - 0x30]
movd xmm0, eax
fldcw word [ebp - 0x12]
cvtdq2pd xmm0, xmm0
shr eax, 0x1f
mov ecx, dword [ebp - 0x38]
addsd xmm0, qword [eax*8 + 0x654710]
fnstcw word [ebp - 0x12]
movzx eax, word [ebp - 0x12]
or eax, 0xc00
mulsd xmm0, xmm1
mov dword [ecx + 4], 0
movsd qword [ebp - 0x1c], xmm0
fld qword [ebp - 0x1c]
mov dword [ebp - 0x18], eax
fldcw word [ebp - 0x18]
fistp qword [ebp - 0x1c]
mov eax, dword [ebp - 0x1c]
mov dword [ecx], eax
mov ecx, edi
fldcw word [ebp - 0x12]
mov byte [ebp - 4], 0
mov edx, dword [ebp - 0x20]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x4145fa
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov bl, 1
add esi, 0xfffffff0
mov dword [ebp - 4], 0xffffffff
lea eax, [esi + 0xc]
lock xadd dword [eax], edi
dec edi
test edi, edi
jg 0x41461a
mov ecx, dword [esi]
push esi
mov edx, dword [ecx]
call dword [edx + 4]
mov al, bl
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret