Function at 0x10055160
Capabilities:
Check os version
Get system information on windows
Link many functions at runtime

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xbc
mov eax, dword [0x1008c224]
xor eax, ebp
mov dword [ebp - 4], eax
push 0x94
lea eax, [ebp - 0x98]
push 0
push eax
call sub.MSVCR90.dll_memset
add esp, 0xc
lea ecx, [ebp - 0x98]
push ecx
mov dword [ebp - 0x98], 0x94
call dword [sym.imp.KERNEL32.dll_GetVersionExA]
test eax, eax
jne 0x100551c1
push str.SyncDriver_Init:_Failed_to_get_OS_version_n
call sym.vmtools.dll_Debug
add esp, 4
xor al, al
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.1004e3f2
mov esp, ebp
pop ebp
ret
mov eax, dword [ebp - 0x94]
cmp eax, 4
ja 0x100551ea
push eax
push str.SyncDriver_Init:_Sync_Driver_not_supported_on_this_OS_version__d._n
call sym.vmtools.dll_Debug
add esp, 8
xor al, al
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.1004e3f2
mov esp, ebp
pop ebp
ret
lea edx, [ebp - 0xbc]
push edx
call dword [sym.imp.KERNEL32.dll_GetSystemInfo]
mov ax, word [ebp - 0xbc]
cmp ax, 9
je 0x1005548f
cmp ax, 0xa
je 0x1005548f
cmp ax, 6
je 0x1005548f
movzx eax, ax
push eax
push str.SyncDriver_Init:_Processor_Architecture_type__d._n
call sym.vmtools.dll_Debug
add esp, 8
call fcn.100550a0
test al, al
jne 0x10055253
push str.SyncDriver_Init:_Sync_Driver_not_loaded._n
call sym.vmtools.dll_Debug
add esp, 4
xor al, al
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.1004e3f2
mov esp, ebp
pop ebp
ret
mov eax, 0x1008f8e8
mov dword [0x1008f8ec], eax
mov dword [0x1008f8e8], eax
mov eax, 0x1008f8e0
push esi
mov dword [0x1008f8e4], eax
mov dword [0x1008f8e0], eax
mov eax, 0x1008f8f0
push str.kernel32.dll
mov dword [0x1008f8f4], eax
mov dword [0x1008f8f0], eax
mov byte [0x1008f8f8], 0
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov esi, eax
test esi, esi
jne 0x100552be
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.SyncDriver_Init:_Failed_to_load_kernel32_library__d__continuing._n
call sym.vmtools.dll_Debug
add esp, 8
xor al, al
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.1004e3f2
mov esp, ebp
pop ebp
ret
push edi
mov edi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
push str.FindFirstVolumeA
push esi
call edi
mov dword [0x1008f8fc], eax
test eax, eax
jne 0x10055301
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.FindFirstVolume
push str.SyncDriver_Init:_Failed_to_load__s:__d_n
call sym.vmtools.dll_Debug
add esp, 0xc
pop edi
xor al, al
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.1004e3f2
mov esp, ebp
pop ebp
ret
push str.FindFirstVolume
push str.SyncDriver_Init:_Successully_loaded__s_n
call sym.vmtools.dll_Debug
add esp, 8
push str.FindNextVolumeA
push esi
call edi
mov dword [0x1008f900], eax
test eax, eax
jne 0x10055332
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.FindNextVolume
jmp 0x100552e2
push str.FindNextVolume
push str.SyncDriver_Init:_Successully_loaded__s_n
call sym.vmtools.dll_Debug
add esp, 8
push str.FindVolumeClose
push esi
call edi
mov dword [0x1008f904], eax
test eax, eax
jne 0x10055366
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.FindVolumeClose
jmp 0x100552e2
push str.FindVolumeClose
push str.SyncDriver_Init:_Successully_loaded__s_n
call sym.vmtools.dll_Debug
add esp, 8
push str.FindFirstVolumeMountPointA
push esi
call edi
mov dword [0x1008f908], eax
test eax, eax
jne 0x1005539a
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.FindFirstVolumeMountPoint
jmp 0x100552e2
push str.FindFirstVolumeMountPoint
push str.SyncDriver_Init:_Successully_loaded__s_n
call sym.vmtools.dll_Debug
add esp, 8
push str.FindNextVolumeMountPointA
push esi
call edi
mov dword [0x1008f90c], eax
test eax, eax
jne 0x100553ce
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.FindNextVolumeMountPoint
jmp 0x100552e2
push str.FindNextVolumeMountPoint
push str.SyncDriver_Init:_Successully_loaded__s_n
call sym.vmtools.dll_Debug
add esp, 8
push str.FindVolumeMountPointClose
push esi
call edi
mov dword [0x1008f910], eax
test eax, eax
jne 0x10055402
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.FindVolumeMountPointClose
jmp 0x100552e2
push str.FindVolumeMountPointClose
push str.SyncDriver_Init:_Successully_loaded__s_n
call sym.vmtools.dll_Debug
add esp, 8
push str.GetVolumeNameForVolumeMountPointA
push esi
call edi
mov dword [0x1008f914], eax
test eax, eax
jne 0x10055436
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.GetVolumeNameForVolumeMountPoint
jmp 0x100552e2
push str.GetVolumeNameForVolumeMountPoint
push str.SyncDriver_Init:_Successully_loaded__s_n
call sym.vmtools.dll_Debug
add esp, 8
call fcn.10054f60
test al, al
jne 0x10055470
push str.SyncDriver_Init:_Failed_to_get_removable_volumes._n
call sym.vmtools.dll_Debug
add esp, 4
pop edi
xor al, al
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.1004e3f2
mov esp, ebp
pop ebp
ret
push str.SyncDriver_Init:_Completed_successfully_n
call sym.vmtools.dll_Debug
add esp, 4
pop edi
mov al, 1
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.1004e3f2
mov esp, ebp
pop ebp
ret
movzx ecx, ax
push ecx
push str.SyncDriver_Init:_Sync_Driver_not_supported_on_this_CPU__d._n
call sym.vmtools.dll_Debug
mov ecx, dword [ebp - 4]
xor ecx, ebp
add esp, 8
xor al, al
call fcn.1004e3f2
mov esp, ebp
pop ebp
ret