Function at 0x555810
Capabilities:
Check os version
Create directory
Create process on windows
Get common file path
Read .ini file

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x570faa
mov eax, dword fs:[0]
push eax
sub esp, 0xe40
mov eax, dword [0x5cf004]
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 - 0xe3c], ebx
lea eax, [ebp - 0xe44]
mov dword [ebp - 0xe44], 8
push eax
mov dword [ebp - 0xe40], 0xff
call dword [sym.imp.COMCTL32.dll_InitCommonControlsEx]
mov ecx, ebx
call fcn.00411a37
mov edi, dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
lea eax, [ebp - 0x420]
push 0x104
push eax
push 0
call edi
lea eax, [ebp - 0x420]
push 0x2e
push eax
call fcn.00534597
add esp, 8
test eax, eax
je 0x55590c
xor ecx, ecx
push str..ini
mov word [eax], cx
lea eax, [ebp - 0x420]
push 0x104
push eax
call fcn.005399e6
push 0
push 0
push 0x104
lea eax, [ebp - 0x628]
push eax
push 0
push 0
push 0
lea eax, [ebp - 0x420]
push 0
push eax
call fcn.0053b2e3
lea edx, [ebp - 0x420]
add esp, 0x30
lea ecx, [ebx + 0xf0]
lea esi, [edx + 2]
nop word [eax + eax]
mov ax, word [edx]
add edx, 2
test ax, ax
jne 0x5558f0
sub edx, esi
lea eax, [ebp - 0x420]
sar edx, 1
push edx
push eax
call fcn.004025d0
push 0x11c
lea eax, [ebp - 0x94c]
push 0
push eax
call fcn.00536380
mov esi, dword [sym.imp.KERNEL32.dll_GetVersionExW]
lea eax, [ebp - 0x94c]
add esp, 0xc
mov dword [ebp - 0x94c], 0x11c
push eax
call esi
test eax, eax
jne 0x555952
lea eax, [ebp - 0x94c]
mov dword [ebp - 0x94c], 0x114
push eax
call esi
cmp dword [ebp - 0x948], 6
jb 0x555ab0
push dword [ebx + 0xf0]
lea edi, [ebx + 0xf0]
push 0x5a7188
push 0x5a718c
push 0x5a71a4
call dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringW]
test eax, eax
jne 0x555aaa
call fcn.00407579
xor ecx, ecx
mov edx, eax
test edx, edx
setne cl
test ecx, ecx
jne 0x5559a4
push 0x80004005
call fcn.004027b0
mov eax, dword [edx]
mov esi, dword [eax + 0xc]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x5559b9
lock inc dword [edx + 0x14]
lea eax, [edx + 8]
jmp 0x5559bd
mov ecx, edx
call esi
add eax, 0x10
mov dword [ebp - 0xe30], eax
push 1
push 0x1c
lea eax, [ebp - 0x420]
mov dword [ebp - 4], 0
push eax
push 0
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathW]
push str.CrystalDiskMark5
lea eax, [ebp - 0x420]
push eax
lea eax, [ebp - 0xe30]
push 0x5a71dc
push eax
call fcn.00402f90
mov esi, dword [ebp - 0xe30]
add esp, 0x10
push 0
push esi
call dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
push 0x5a71e8
lea eax, [ebp - 0x628]
push eax
push esi
push 0x5a71f0
push edi
call fcn.00402f90
add esp, 0x14
push dword [edi]
push 0x5a7204
push 0x5a7208
push 0x5a7220
call dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringW]
test eax, eax
jne 0x555a66
push 0x5a7234
lea eax, [ebp - 0x628]
push eax
lea eax, [ebp - 0x420]
push eax
push str._s_s._s
push edi
call fcn.00402f90
add esp, 0x14
mov dword [ebp - 4], 0xffffffff
add esi, 0xfffffff0
or eax, 0xffffffff
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x555aaa
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
mov edx, dword [eax + 4]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x555aa8
mov ecx, dword [ecx + 4]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
cmp eax, vtable.ATL::CWin32Heap.0
jne 0x555aa8
push 0
push dword [ecx + 4]
call dword [sym.imp.KERNEL32.dll_HeapFree]
jmp 0x555aaa
call edx
mov edi, dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
call fcn.00407579
xor ecx, ecx
mov edx, eax
test edx, edx
setne cl
test ecx, ecx
jne 0x555acc
push 0x80004005
call fcn.004027b0
mov eax, dword [edx]
mov esi, dword [eax + 0xc]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x555ae1
lock inc dword [edx + 0x14]
lea eax, [edx + 8]
jmp 0x555ae5
mov ecx, edx
call esi
add eax, 0x10
mov dword [ebp - 0xe38], eax
mov dword [ebp - 4], 1
call fcn.00407579
xor ecx, ecx
mov edx, eax
test edx, edx
setne cl
test ecx, ecx
jne 0x555b11
push 0x80004005
call fcn.004027b0
mov eax, dword [edx]
mov esi, dword [eax + 0xc]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x555b26
lock inc dword [edx + 0x14]
lea eax, [edx + 8]
jmp 0x555b2a
mov ecx, edx
call esi
add eax, 0x10
mov dword [ebp - 0xe34], eax
push 0x104
lea eax, [ebp - 0x218]
mov byte [ebp - 4], 2
push eax
push 0
call edi
lea eax, [ebp - 0x218]
push 0x5c
push eax
call fcn.00534597
add esp, 8
test eax, eax
je 0x555b61
xor ecx, ecx
mov word [eax], cx
lea eax, [ebp - 0x218]
push eax
lea eax, [ebx + 0xec]
push 0x5a7250
push eax
call fcn.00402f90
push str.CdmResource_theme_
lea eax, [ebp - 0x218]
push eax
lea eax, [ebx + 0xdc]
push 0x5a7280
push eax
call fcn.00402f90
push str.CdmResourcelanguage_
lea eax, [ebp - 0x218]
push eax
lea eax, [ebx + 0xe0]
push 0x5a72b8
push eax
call fcn.00402f90
lea eax, [ebp - 0x218]
mov dword [ebx + 0xe4], 2
push eax
lea esi, [ebx + 0xcc]
mov dword [ebx + 0xe8], 4
push str._sCdmResourcedialogMain.html
push esi
call fcn.00402f90
lea ecx, [ebp - 0x218]
push ecx
lea eax, [ebx + 0xd0]
push str._sCdmResourcedialogMain8.html
push eax
call fcn.00402f90
add esp, 0x44
lea eax, [ebp - 0x218]
push eax
lea eax, [ebx + 0xd4]
push str._sCdmResourcedialogAbout.html
push eax
call fcn.00402f90
lea eax, [ebp - 0x218]
push eax
lea eax, [ebx + 0xd8]
push str._sCdmResourcedialogSettings.html
push eax
call fcn.00402f90
push 0x5a7400
lea eax, [ebp - 0x218]
push eax
lea eax, [ebp - 0xe38]
push 0x5a72c4
push eax
call fcn.00402f90
push 0x5a7448
lea eax, [ebp - 0x218]
push eax
lea eax, [ebp - 0xe34]
push 0x5a7354
push eax
call fcn.00402f90
push 0x5abba0
push dword [esi]
lea eax, [ebp - 0xe30]
push eax
call fcn.00539b1c
mov esi, dword [ebp - 0xe34]
add esp, 0x44
mov edi, dword [ebp - 0xe38]
test eax, eax
jne 0x555d64
mov eax, dword [ebp - 0xe30]
test eax, eax
je 0x555d64
push eax
call fcn.00539dc0
add esp, 4
push 0x5abba0
push dword [ebx + 0xd0]
lea eax, [ebp - 0xe30]
push eax
call fcn.00539b1c
add esp, 0xc
test eax, eax
jne 0x555d87
mov eax, dword [ebp - 0xe30]
test eax, eax
je 0x555d87
push eax
call fcn.00539dc0
add esp, 4
push 0x5abba0
lea eax, [ebp - 0xe30]
push edi
push eax
call fcn.00539b1c
add esp, 0xc
test eax, eax
jne 0x555daa
mov eax, dword [ebp - 0xe30]
test eax, eax
je 0x555daa
push eax
call fcn.00539dc0
add esp, 4
push 0x5abba0
lea eax, [ebp - 0xe30]
push esi
push eax
call fcn.00539b1c
add esp, 0xc
test eax, eax
jne 0x555dcd
mov eax, dword [ebp - 0xe30]
test eax, eax
je 0x555dcd
push eax
call fcn.00539dc0
add esp, 4
call fcn.004122de
test eax, eax
jne 0x555df0
push eax
push eax
push str.Unsupported_OLE_version.
call fcn.00410f79
jmp 0x555f45
mov ecx, str.Main.html
call fcn.00555720
test eax, eax
jne 0x555ca5
push eax
push eax
push str.Not_Found_Main_Dialog.
call fcn.00410f79
jmp 0x555f45
mov ecx, str.Main8.html
call fcn.00555720
test eax, eax
jne 0x555cde
push eax
push eax
push str.Not_Found_Main_Dialog_for_IE8_Mode.
call fcn.00410f79
jmp 0x555f45
mov ecx, str.CdmResource_themedefaultMain.css
call fcn.00555720
test eax, eax
jne 0x555d12
push eax
push eax
push str.Not_Found_Default_Theme.
call fcn.00410f79
jmp 0x555f45
mov ecx, str.CdmResourcelanguageEnglish.lang
call fcn.00555720
test eax, eax
jne 0x555d46
push eax
push eax
push str.Not_Found_Default_Language.
call fcn.00410f79
jmp 0x555f45
call fcn.0041260a
mov eax, dword [eax + 0x40]
mov dword [eax + 0x3c], 0xea60
call fcn.0041260a
mov eax, dword [eax + 0x40]
mov dword [eax + 0x2c], 0
call fcn.0041260a
lea ecx, [ebp - 0xe30]
mov eax, dword [eax + 0x40]
mov dword [eax + 0x28], 0
call fcn.00402870
mov byte [ebp - 4], 3
push dword [ebx + 0xf0]
push 0
push 0x5a7648
push 0x5a765c
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntW]
xor ecx, ecx
cmp eax, 2
push eax
cmovbe ecx, eax
lea eax, [ebp - 0xe30]
push 0x5a7670
push eax
mov dword [0x5da268], ecx
call fcn.00402f90
add esp, 0xc
push dword [ebx + 0xf0]
push dword [ebp - 0xe30]
push str.DebugMode
push 0x5a768c
call dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringW]
push 8
lea eax, [ebp - 0xe4c]
push eax
call dword [sym.imp.WINMM.dll_timeGetDevCaps]
push dword [ebp - 0xe4c]
call dword [sym.imp.WINMM.dll_timeBeginPeriod]
xor edx, edx
mov ecx, 0x5a76a0
xor ebx, ebx
call fcn.00561130
cmp eax, 0x1d7
jl 0x555ef1
push ecx
lea ecx, [ebp - 0xe2c]
call fcn.0055cbb0
mov eax, dword [ebp - 0xe3c]
lea ecx, [ebp - 0xe2c]
mov byte [ebp - 4], 4
mov dword [eax + 0x20], ecx
call fcn.00410194
cmp eax, 0x174b
mov ecx, 1
cmove ebx, ecx
lea ecx, [ebp - 0xe2c]
call fcn.00403540
jmp 0x555eff
push 0
push 0
push str.CrystalDiskMark_is_required_IE6_or_later.
call fcn.00410f79
push dword [ebp - 0xe4c]
call dword [sym.imp.WINMM.dll_timeEndPeriod]
test ebx, ebx
je 0x555f3a
push 0x104
lea eax, [ebp - 0x830]
push eax
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
push 1
push 0
push 0
lea eax, [ebp - 0x830]
push eax
push 0
push 0
call dword [sym.imp.SHELL32.dll_ShellExecuteW]
lea ecx, [ebp - 0xe30]
call fcn.00402760
or ebx, 0xffffffff
mov byte [ebp - 4], 1
add esi, 0xfffffff0
mov eax, ebx
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x555f8a
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
mov edx, dword [eax + 4]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x555f88
mov ecx, dword [ecx + 4]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
cmp eax, vtable.ATL::CWin32Heap.0
jne 0x555f88
mov esi, dword [sym.imp.KERNEL32.dll_HeapFree]
push 0
push dword [ecx + 4]
call esi
jmp 0x555f90
call edx
mov esi, dword [sym.imp.KERNEL32.dll_HeapFree]
mov dword [ebp - 4], 0xffffffff
add edi, 0xfffffff0
lock xadd dword [edi + 0xc], ebx
dec ebx
test ebx, ebx
jg 0x555fcd
mov ecx, dword [edi]
push edi
mov eax, dword [ecx]
mov edx, dword [eax + 4]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x555fcb
mov ecx, dword [ecx + 4]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
cmp eax, vtable.ATL::CWin32Heap.0
jne 0x555fcb
push 0
push dword [ecx + 4]
call esi
jmp 0x555fcd
call edx
xor eax, eax
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.00531d62
mov esp, ebp
pop ebp
ret