Function at 0x402b5e
Capabilities:
Accept command line arguments
Check mutex on windows
Create directory
Create process on windows
Read .ini file

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4b46f5
mov eax, dword fs:[0]
push eax
mov eax, 0x8f08
call fcn.0048f7d0
mov eax, dword [0x50254c]
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 edi, ecx
or dword [ebp - 0x8f04], 0xffffffff
lea eax, [ebp - 0x8f14]
xor ebx, ebx
mov dword [ebp - 0x8f14], 8
push eax
mov dword [ebp - 0x8ef4], ebx
mov dword [ebp - 0x8f08], ebx
mov dword [edi + 0xf4], ebx
mov dword [ebp - 0x8f10], 0xff
call dword [sym.imp.COMCTL32.dll_InitCommonControlsEx]
mov ecx, edi
call fcn.0046c595
push ebx
push section..data
lea eax, [edi + 0xcc]
push eax
call sub.gdiplus.dll_GdiplusStartup
push 1
call dword [sym.imp.KERNEL32.dll_SetErrorMode]
push 0x104
lea eax, [ebp - 0x420]
push eax
push ebx
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
lea eax, [ebp - 0x420]
push 0x5c
push eax
call fcn.004911e0
lea esi, [edi + 0xe8]
lea ebx, [edi + 0xec]
pop ecx
pop ecx
test eax, eax
je 0x402c5f
xor ecx, ecx
mov word [eax], cx
lea eax, [ebp - 0x420]
push eax
call fcn.00494153
pop ecx
push eax
lea eax, [ebp - 0x420]
mov ecx, esi
push eax
call fcn.00402053
lea eax, [ebp - 0x420]
push eax
call fcn.00494153
pop ecx
push eax
lea eax, [ebp - 0x420]
mov ecx, ebx
push eax
call fcn.00402053
push 0x4c689c
call fcn.00494153
pop ecx
push eax
push 0x4c689c
mov ecx, esi
call fcn.004029a9
mov esi, str.DiskInfo.txt
push esi
call fcn.00494153
pop ecx
push eax
push esi
mov ecx, ebx
call fcn.004029a9
lea ecx, [ebp - 0x8f00]
call fcn.004026b1
and dword [ebp - 4], 0
push dword [edi + 0xe8]
push 0
push str.DebugMode
push str.Setting
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntW]
mov esi, eax
push esi
call fcn.0043f1ee
push esi
lea eax, [ebp - 0x8f00]
push 0x4c6748
push eax
call fcn.00402a35
push dword [edi + 0xe8]
push dword [ebp - 0x8f00]
push str.DebugMode
push str.Setting
call fcn.0043f205
and dword [ebp - 0x8ef8], 0
lea eax, [ebp - 0x8ef8]
add esp, 0x20
push eax
call dword [sym.imp.KERNEL32.dll_GetCommandLineW]
push eax
call dword [sym.imp.SHELL32.dll_CommandLineToArgvW]
cmp dword [ebp - 0x8ef8], 1
mov esi, eax
mov dword [ebp - 0x8eec], esi
jle 0x402e92
lea ecx, [ebp - 0x8ef0]
call fcn.004026b1
mov byte [ebp - 4], 1
mov esi, dword [esi + 4]
test esi, esi
jne 0x402d35
xor eax, eax
jmp 0x402d3c
push esi
call fcn.00494153
pop ecx
push eax
push esi
lea ecx, [ebp - 0x8ef0]
call fcn.00402053
push str._Earthlight
push dword [ebp - 0x8ef0]
call fcn.00494619
pop ecx
pop ecx
test eax, eax
jne 0x402d87
cmp dword [ebp - 0x8ef8], 2
mov dword [ebp - 0x8ef4], 1
jle 0x402d87
mov eax, dword [ebp - 0x8eec]
push dword [eax + 8]
call fcn.00498536
pop ecx
mov dword [ebp - 0x8f04], eax
push str._Startup
push dword [ebp - 0x8ef0]
call fcn.00494619
pop ecx
pop ecx
test eax, eax
jne 0x402e11
push dword [edi + 0xe8]
push 0x1e
push str.StartupWaitTime
push str.Setting
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntW]
test eax, eax
js 0x402dc6
imul eax, eax, 0x3e8
push eax
call dword [sym.imp.KERNEL32.dll_Sleep]
push 0x208
xor ebx, ebx
lea eax, [ebp - 0x830]
push ebx
push eax
call fcn.00490cd0
add esp, 0xc
lea eax, [ebp - 0x830]
push 0x104
push eax
push ebx
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
push 1
push ebx
push ebx
lea eax, [ebp - 0x830]
push eax
push ebx
push ebx
call dword [sym.imp.SHELL32.dll_ShellExecuteW]
mov byte [ebp - 4], bl
mov ecx, dword [ebp - 0x8ef0]
jmp 0x403494
push str._Exit
push dword [ebp - 0x8ef0]
call fcn.00494619
pop ecx
pop ecx
test eax, eax
jne 0x402e31
mov dword [ebp - 0x8f08], 1
push str._Copy
push dword [ebp - 0x8ef0]
call fcn.00494619
lea esi, [edi + 0xf0]
pop ecx
pop ecx
test eax, eax
jne 0x402e55
push ebx
mov ecx, esi
call fcn.00401717
push str._CopyExit
push dword [ebp - 0x8ef0]
call fcn.00494619
pop ecx
pop ecx
test eax, eax
jne 0x402e7d
push ebx
mov ecx, esi
call fcn.00401717
mov dword [edi + 0xf4], 1
xor ebx, ebx
mov byte [ebp - 4], bl
mov ecx, dword [ebp - 0x8ef0]
add ecx, 0xfffffff0
call fcn.00401fe9
jmp 0x402e94
xor ebx, ebx
push ecx
mov ecx, esp
mov dword [ebp - 0x8eec], esp
push str.9.2.2
call fcn.004012a3
mov byte [ebp - 4], 5
mov byte [ebp - 4], bl
call fcn.0043ed25
mov ecx, esp
mov dword [ebp - 0x8ef0], esp
push str.2024_01_13
call fcn.004012a3
mov byte [ebp - 4], 6
mov byte [ebp - 4], bl
call fcn.0043ed25
cmp dword [ebp - 0x8ef4], 0
mov esi, dword [sym.imp.KERNEL32.dll_GetLastError]
pop ecx
jne 0x402f4b
cmp dword [edi + 0xf4], ebx
jne 0x402f4b
push ecx
mov ecx, esp
mov dword [ebp - 0x8eec], esp
push str.CreateMutex
call fcn.004012a3
mov byte [ebp - 4], 7
mov byte [ebp - 4], bl
call fcn.0043ed25
mov dword [esp], 0x4c69ac
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_CreateMutexW]
mov dword [edi + 0x108], eax
call esi
cmp eax, 0xb7
jne 0x402f4b
push ecx
mov ecx, esp
mov dword [ebp - 0x8eec], esp
push str.ERROR_ALREADY_EXISTS
call fcn.004012a3
mov byte [ebp - 4], 8
mov byte [ebp - 4], bl
call fcn.0043ed25
pop ecx
jmp 0x40349c
lea ecx, [ebp - 0x8f0c]
call fcn.004026b1
mov byte [ebp - 4], 0xa
lea ecx, [ebp - 0x8efc]
call fcn.004026b1
mov byte [ebp - 4], 0xb
lea eax, [ebp - 0x218]
push 0x208
push ebx
push eax
call fcn.00490cd0
add esp, 0xc
lea eax, [ebp - 0x218]
push 0x104
push eax
push ebx
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
lea eax, [ebp - 0x218]
push 0x5c
push eax
call fcn.004911e0
pop ecx
pop ecx
test eax, eax
je 0x402faa
xor ecx, ecx
mov word [eax], cx
lea eax, [ebp - 0x218]
push eax
lea eax, [edi + 0xdc]
push 0x4c69f8
push eax
call fcn.00402a35
push str.CdiResource_themes_
lea eax, [ebp - 0x218]
push eax
lea ebx, [edi + 0xf8]
push str._s_s
push ebx
call fcn.00402a35
push str.CdiResourcelanguage_
lea ecx, [ebp - 0x218]
push ecx
lea eax, [edi + 0xfc]
push str._s_s
push eax
call fcn.00402a35
push 0x208
lea eax, [ebp - 0x628]
push 0
push eax
call fcn.00490cd0
push dword [edi + 0xe8]
lea eax, [ebp - 0x628]
push 0x104
push eax
push 0x4c5940
push str.SmartDir
push str.Setting
call fcn.0043f0d0
add esp, 0x50
lea eax, [ebp - 0x628]
push 0x4c5940
push eax
call fcn.004944db
pop ecx
pop ecx
test eax, eax
jne 0x40308c
push eax
lea eax, [ebp - 0x628]
push eax
call dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
test eax, eax
jne 0x40308c
call esi
cmp eax, 0xb7
je 0x40308c
push str.Smart_
lea eax, [ebp - 0x218]
push eax
lea eax, [edi + 0xd8]
push str._s_s
push eax
call fcn.00402a35
add esp, 0x10
jmp 0x4030fc
lea eax, [ebp - 0x628]
push eax
lea ebx, [edi + 0xd8]
push 0x4c6a74
push ebx
call fcn.00402a35
add esp, 0xc
lea eax, [ebp - 0x8eec]
mov ecx, ebx
push 1
push eax
call fcn.0040353f
mov byte [ebp - 4], 0xc
push 0x4c6744
push dword [eax]
call fcn.004944db
pop ecx
pop ecx
mov esi, eax
mov byte [ebp - 4], 0xb
mov ecx, dword [ebp - 0x8eec]
add ecx, 0xfffffff0
call fcn.00401fe9
test esi, esi
je 0x4030f6
lea eax, [ebp - 0x628]
push eax
push 0x4c69f8
push ebx
call fcn.00402a35
add esp, 0xc
lea ebx, [edi + 0xf8]
lea esi, [edi + 0xe0]
call fcn.0043c734
test eax, eax
je 0x403112
push str.CdiResourceAlertMail48.exe
jmp 0x403130
call fcn.0043c7fe
test eax, eax
je 0x403122
push str.CdiResourceAlertMail4.exe
jmp 0x403130
call fcn.0043c693
test eax, eax
je 0x403147
push str.CdiResourceAlertMail.exe
lea eax, [ebp - 0x218]
push eax
push str._s_s
push esi
call fcn.00402a35
add esp, 0x10
jmp 0x40315f
push 0x4c5940
call fcn.00494153
pop ecx
push eax
push 0x4c5940
mov ecx, esi
call fcn.00402053
push str.CdiResourceopusopusdec.exe
lea eax, [ebp - 0x218]
mov esi, str._s_s
push eax
lea eax, [edi + 0xe4]
push esi
push eax
call fcn.00402a35
push 0x4c6b6c
push dword [ebx]
lea eax, [ebp - 0x8f0c]
mov dword [edi + 0x100], 3
push esi
push eax
mov dword [edi + 0x104], 6
call fcn.00402a35
mov ebx, str.English
lea eax, [ebp - 0x8efc]
push ebx
push dword [edi + 0xfc]
push str._s_s.lang
push eax
call fcn.00402a35
add esp, 0x30
lea esi, [edi + 0xd0]
push dword [edi + 0xe8]
push 0
push str.IE8MODE
push 0x4c6bb4
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntW]
test eax, eax
lea eax, [ebp - 0x218]
push eax
je 0x403200
push str._sCdiResourcedialogGraph8.html
push esi
call fcn.00402a35
push str.Graph8.html
jmp 0x403210
push str._sCdiResourcedialogGraph.html
push esi
call fcn.00402a35
push str.Graph.html
push dword [esi]
call fcn.004034ca
add esp, 0x14
test eax, eax
je 0x403478
lea eax, [ebp - 0x218]
push eax
lea eax, [edi + 0xd4]
push str._sCdiResourcedialogOption.html
push eax
call fcn.00402a35
push ebx
push dword [ebp - 0x8efc]
call fcn.004034ca
add esp, 0x14
test eax, eax
je 0x403478
call dword [sym.imp.SHELL32.dll_IsUserAnAdmin]
test eax, eax
jne 0x403281
push eax
push eax
push 6
call fcn.0043cb2e
add esp, 0xc
test eax, eax
jne 0x403277
push eax
push eax
push str.CrystalDiskInfo_is_required_Administrator_Privileges.
call fcn.0046dcdc
call fcn.0040359b
jmp 0x403478
xor ebx, ebx
cmp dword [ebp - 0x8ef4], ebx
je 0x4032c5
push dword [ebp - 0x8f04]
lea ecx, [ebp - 0x1670]
push ebx
call fcn.00425384
mov byte [ebp - 4], 0x1a
lea eax, [ebp - 0x1670]
mov ecx, eax
mov dword [edi + 0x20], eax
call fcn.0046acab
mov byte [ebp - 4], 0xb
lea ecx, [ebp - 0x1670]
call fcn.004255c4
jmp 0x403451
push ecx
mov ecx, esp
mov dword [ebp - 0x8eec], esp
push str.AfxOleInit__
call fcn.004012a3
mov byte [ebp - 4], 0x1b
mov byte [ebp - 4], 0xb
call fcn.0043ed25
pop ecx
call fcn.0046e0d0
push ecx
mov dword [ebp - 0x8eec], esp
mov ecx, esp
test eax, eax
je 0x403382
xor ebx, ebx
push str.AfxOleGetMessageFilter____SetMessagePendingDelay
inc ebx
call fcn.004012a3
mov byte [ebp - 4], 0x1c
mov byte [ebp - 4], 0xb
call fcn.0043ed25
pop ecx
call fcn.0046b548
push ecx
mov ecx, esp
mov dword [ebp - 0x8f04], esp
push str.AfxOleGetMessageFilter____EnableNotRespondingDialog_FALSE_
mov eax, dword [eax + 0x40]
mov dword [eax + 0x3c], 0xea60
call fcn.004012a3
mov byte [ebp - 4], 0x1d
mov byte [ebp - 4], 0xb
call fcn.0043ed25
pop ecx
call fcn.0046b548
push ecx
mov ecx, esp
mov dword [ebp - 0x8ef4], esp
push str.AfxOleGetMessageFilter____EnableBusyDialog_FALSE_
mov eax, dword [eax + 0x40]
and dword [eax + 0x2c], 0
call fcn.004012a3
mov byte [ebp - 4], 0x1e
mov byte [ebp - 4], 0xb
call fcn.0043ed25
pop ecx
call fcn.0046b548
mov eax, dword [eax + 0x40]
and dword [eax + 0x28], 0
jmp 0x4033a4
push str.CoInitializeEx_NULL__COINIT_APARTMENTTHREADED__
call fcn.004012a3
mov byte [ebp - 4], 0x1f
mov byte [ebp - 4], 0xb
call fcn.0043ed25
pop ecx
push 2
push 0
call dword [sym.imp.ole32.dll_CoInitializeEx]
push dword [ebp - 0x8f08]
lea ecx, [ebp - 0x8ee8]
push 0
call fcn.00403743
mov byte [ebp - 4], 0x20
lea eax, [ebp - 0x8ee8]
push ecx
mov ecx, esp
mov dword [ebp - 0x8eec], esp
push str.dlg.DoModal__
mov dword [edi + 0x20], eax
xor esi, esi
call fcn.004012a3
mov byte [ebp - 4], 0x21
mov byte [ebp - 4], 0x20
call fcn.0043ed25
pop ecx
lea ecx, [ebp - 0x8ee8]
call fcn.0046acab
cmp eax, 0x174b
jne 0x4033fa
inc esi
mov eax, dword [edi + 0x108]
test eax, eax
je 0x403412
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
and dword [edi + 0x108], 0
test esi, esi
je 0x40343e
push 0x104
lea eax, [ebp - 0x830]
xor esi, esi
push eax
push esi
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
push 1
push esi
push esi
lea eax, [ebp - 0x830]
push eax
push esi
push esi
call dword [sym.imp.SHELL32.dll_ShellExecuteW]
mov byte [ebp - 4], 0xb
lea ecx, [ebp - 0x8ee8]
call fcn.0040442a
test ebx, ebx
jne 0x403478
push ecx
mov ecx, esp
mov dword [ebp - 0x8eec], esp
push str.CoUninitialize___
call fcn.004012a3
mov byte [ebp - 4], 0x22
mov byte [ebp - 4], 0xb
call fcn.0043ed25
pop ecx
call dword [sym.imp.ole32.dll_CoUninitialize]
mov byte [ebp - 4], 0xa
mov ecx, dword [ebp - 0x8efc]
lea ecx, [ecx - 0x10]
call fcn.00401fe9
mov byte [ebp - 4], 0
mov ecx, dword [ebp - 0x8f0c]
lea ecx, [ecx - 0x10]
call fcn.00401fe9
or dword [ebp - 4], 0xffffffff
mov ecx, dword [ebp - 0x8f00]
lea ecx, [ecx - 0x10]
call fcn.00401fe9
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.0048f693
leave
ret