Function at 0x404b20
Capabilities:
Check if file exists
Check mutex and terminate process on windows
Check mutex on windows
Set current directory
Terminate process

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x421b8d
mov eax, dword fs:[0]
push eax
sub esp, 0x4c0
push ebx
push esi
push edi
mov eax, dword [0x4300b8]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
xor ebx, ebx
mov dword [ebp - 0x1c], ebx
mov dword [ebp - 0x1c], ebp
mov eax, dword [ebp - 0x1c]
push 1
push eax
push 0x425170
call fcn.00417080
mov edi, eax
add esp, 0xc
cmp edi, ebx
jne 0x404b71
mov edi, str.int___stdcall_wWinMain_struct_HINSTANCE____struct_HINSTANCE____wchar_t__int_
push ebx
push edi
mov edx, str.int___stdcall_wWinMain_struct_HINSTANCE____struct_HINSTANCE____wchar_t__int_
mov ecx, 0x425260
lea esi, [ebp - 0x40]
call fcn.0040c280
mov dword [ebp - 4], ebx
cmp edi, ebx
jne 0x404b8e
push ebp
pop ebp
mov ecx, str.wWinMain
call fcn.0040bd20
test eax, eax
jne 0x404be0
xor edx, edx
mov ecx, str.wWinMain
call fcn.00411ce0
mov edx, 0x425288
mov ecx, eax
call fcn.0040ba10
mov esi, eax
mov dword [0x430e60], ebx
mov ecx, dword [esi + 0x240]
push 1
push ecx
push 1
xor ecx, ecx
mov edx, esi
mov dword [esi + 0x248], ebx
call fcn.00416620
add esi, 0xc
push esi
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
push ebx
call dword [sym.imp.ole32.dll_CoInitialize]
mov ecx, str.wWinMain
call fcn.0040bd20
test eax, eax
jne 0x404c39
xor edx, edx
mov ecx, str.wWinMain
call fcn.00411ce0
mov edx, 0x425298
mov ecx, eax
call fcn.0040ba10
mov esi, eax
mov dword [0x430e60], ebx
mov edx, dword [esi + 0x240]
push 1
push edx
push 1
xor ecx, ecx
mov edx, esi
mov dword [esi + 0x248], ebx
call fcn.00416620
add esi, 0xc
push esi
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
push ebx
call dword [sym.imp.ole32.dll_OleInitialize]
mov ecx, str.wWinMain
call fcn.0040bd20
mov edi, dword [ebp + 0x10]
test eax, eax
jne 0x404ca0
push edi
push ecx
xor edx, edx
mov ecx, str.wWinMain
call fcn.00411ce0
mov edx, str._commandline_:
mov ecx, eax
call fcn.0040ba10
add esp, 4
push eax
call fcn.0040b8d0
mov esi, eax
mov dword [0x430e60], ebx
mov eax, dword [esi + 0x240]
push 1
push eax
push 1
xor ecx, ecx
mov edx, esi
mov dword [esi + 0x248], ebx
call fcn.00416620
add esi, 0xc
push esi
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
push str.ChangeWindowMessageFilter
push str.USER32
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
cmp eax, ebx
je 0x404cc1
push 1
push 0x4a
call eax
mov ecx, dword [ebp + 0x14]
push ecx
push edi
mov byte [ebp - 0x20], bl
call fcn.004038a0
lea ecx, [ebp - 0x20]
mov edx, eax
call fcn.00403910
mov esi, eax
mov ecx, str.wWinMain
mov dword [ebp + 0x10], esi
call fcn.0040bd20
test eax, eax
jne 0x404d41
mov edx, dword [ebp - 0x20]
push edx
push ecx
xor edx, edx
mov ecx, str.wWinMain
call fcn.00411ce0
mov edx, str._bHandle_:
mov ecx, eax
call fcn.0040ba10
add esp, 4
mov esi, eax
call fcn.0040b570
mov esi, eax
mov dword [0x430e60], ebx
mov eax, dword [esi + 0x240]
push 1
push eax
push 1
xor ecx, ecx
mov edx, esi
mov dword [esi + 0x248], ebx
call fcn.00416620
add esi, 0xc
push esi
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov esi, dword [ebp + 0x10]
cmp byte [ebp - 0x20], bl
je 0x404d79
push esi
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
push eax
call dword [sym.imp.KERNEL32.dll_TerminateProcess]
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x40]
call fcn.0040bfc0
mov eax, esi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
push edi
lea ecx, [ebp - 0x7c]
push ecx
call fcn.00401c60
mov byte [ebp - 4], 1
push str.iopenstyle
lea edx, [ebp - 0x14]
push edx
lea ebx, [ebp - 0x7c]
call fcn.00402a70
mov byte [ebp - 4], 2
mov eax, dword [ebp - 0x14]
mov ecx, 0x4252dc
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x404dcd
test dx, dx
je 0x404dc6
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x404dcd
add eax, 4
add ecx, 4
test dx, dx
jne 0x404da4
xor eax, eax
or edi, 0xffffffff
jmp 0x404dd6
sbb eax, eax
mov edi, 0xffffffff
sbb eax, edi
test eax, eax
je 0x404e13
push 0x4252e0
push 1
push 0
call dword [sym.imp.KERNEL32.dll_CreateMutexW]
mov ebx, dword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
call ebx
cmp eax, 0xb7
je 0x404e60
call ebx
cmp eax, 5
je 0x404e60
test esi, esi
je 0x404e13
push esi
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
push str.sshowerrormsg
lea edx, [ebp - 0x18]
push edx
lea ebx, [ebp - 0x7c]
call fcn.00402a70
mov byte [ebp - 4], 3
mov eax, dword [ebp - 0x18]
mov ecx, 0x422e3c
mov dx, word [eax]
xor ebx, ebx
cmp dx, word [ecx]
jne 0x404eda
cmp dx, bx
je 0x404e5c
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x404eda
add eax, 4
add ecx, 4
cmp dx, bx
jne 0x404e30
xor eax, eax
jmp 0x404ede
mov ecx, str.wWinMain
call fcn.0040bd20
test eax, eax
jne 0x404e90
xor edx, edx
mov ecx, str.wWinMain
call fcn.00411ce0
mov edx, str.Update_Process_is_Updateing_
mov ecx, eax
call fcn.0040ba10
mov ecx, 1
call fcn.0040bcf0
push esi
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov byte [ebp - 4], 1
mov eax, dword [ebp - 0x14]
push eax
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
mov byte [ebp - 4], 0
lea ecx, [ebp - 0x7c]
push ecx
call fcn.00401da0
mov dword [ebp - 4], edi
lea ecx, [ebp - 0x40]
call fcn.0040bfc0
xor eax, eax
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
sbb eax, eax
sbb eax, edi
cmp eax, ebx
jne 0x404ee8
mov byte [0x4303d8], bl
call fcn.00404960
push ebx
push ebx
push ebx
push ebx
call dword [sym.imp.USER32.dll_DefWindowProcW]
mov ecx, str.wWinMain
call fcn.0040bd20
test eax, eax
jne 0x404f49
xor edx, edx
mov ecx, str.wWinMain
call fcn.00411ce0
mov edx, str.DefWindowProc
mov ecx, eax
call fcn.0040ba10
mov esi, eax
mov dword [0x430e60], ebx
mov eax, dword [esi + 0x240]
push 1
push eax
push 1
xor ecx, ecx
mov edx, esi
mov dword [esi + 0x248], ebx
call fcn.00416620
add esi, 0xc
push esi
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
lea ecx, [ebp - 0x28]
push ecx
mov dword [ebp - 0x28], 8
mov dword [ebp - 0x24], 4
call dword [sym.imp.COMCTL32.dll_InitCommonControlsEx]
mov ecx, str.wWinMain
call fcn.0040bd20
test eax, eax
jne 0x404fb3
xor edx, edx
mov ecx, str.wWinMain
call fcn.00411ce0
mov edx, str.AtlInitCommonControls
mov ecx, eax
call fcn.0040ba10
mov esi, eax
mov dword [0x430e60], ebx
mov edx, dword [esi + 0x240]
push 1
push edx
push 1
xor ecx, ecx
mov edx, esi
mov dword [esi + 0x248], ebx
call fcn.00416620
add esi, 0xc
push esi
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
call fcn.00408320
mov ecx, str.wWinMain
call fcn.0040bd20
test eax, eax
jne 0x40500a
xor edx, edx
mov ecx, str.wWinMain
call fcn.00411ce0
mov edx, str._Module.Init
mov ecx, eax
call fcn.0040ba10
mov esi, eax
mov dword [0x430e60], ebx
mov eax, dword [esi + 0x240]
push 1
push eax
push 1
xor ecx, ecx
mov edx, esi
mov dword [esi + 0x248], ebx
call fcn.00416620
add esi, 0xc
push esi
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
lea ecx, [ebp - 0xb4]
push ecx
call fcn.004047b0
mov byte [ebp - 4], 4
lea edx, [ebp - 0xb4]
push edx
call fcn.00408230
push str.sextradllpath
lea eax, [ebp - 0x10]
push eax
lea ebx, [ebp - 0x7c]
call fcn.00402a70
mov byte [ebp - 4], 5
mov ecx, dword [ebp - 0x10]
push ecx
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x405086
mov edx, dword [ebp - 0x10]
push edx
call dword [sym.imp.SHLWAPI.dll_PathIsDirectoryW]
test eax, eax
jne 0x405086
mov eax, dword [ebp - 0x10]
push 1
push eax
lea ebx, [ebp - 0x2c0]
call fcn.00417e30
mov byte [ebp - 4], 6
mov esi, dword [eax]
mov byte [ebp - 4], 5
xor ecx, ecx
cmp cx, word [ebp - 0x2bc]
je 0x4050ba
lea edx, [ebp - 0x2bc]
push edx
jmp 0x4050b4
push 0
push str.KKVideo.dll
lea ebx, [ebp - 0x4cc]
call fcn.00417e30
mov byte [ebp - 4], 7
mov esi, dword [eax]
mov byte [ebp - 4], 5
xor eax, eax
cmp ax, word [ebp - 0x4c8]
je 0x4050ba
lea ecx, [ebp - 0x4c8]
push ecx
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryW]
push str.CreateInterface
push esi
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov esi, eax
xor ebx, ebx
cmp esi, ebx
jne 0x40516c
mov eax, dword [0x430e50]
cmp dword [eax + 0x30], 5
jg 0x4050f9
cmp dword [eax + 0x28], ebx
jne 0x4050e7
cmp dword [eax + 0x2c], ebx
je 0x4050f9
push ebx
push 0x425b78
push 0x4253e0
push ebx
call dword [sym.imp.USER32.dll_MessageBoxW]
push 0xfffffffffffffff6
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
push eax
call dword [sym.imp.KERNEL32.dll_TerminateProcess]
mov byte [ebp - 4], 4
mov edx, dword [ebp - 0x10]
mov esi, dword [sym.imp.OLEAUT32.dll_SysStringLen]
push edx
call esi
mov byte [ebp - 4], 3
lea eax, [ebp - 0xb4]
push eax
call fcn.00404810
mov byte [ebp - 4], 2
mov ecx, dword [ebp - 0x18]
push ecx
call esi
mov byte [ebp - 4], 1
mov edx, dword [ebp - 0x14]
push edx
call esi
mov byte [ebp - 4], bl
lea eax, [ebp - 0x7c]
push eax
call fcn.00401da0
mov dword [ebp - 4], edi
lea ecx, [ebp - 0x40]
call fcn.0040bfc0
mov eax, 0xfffffff6
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
push ebx
call esi
cmp eax, ebx
jne 0x4051e9
mov eax, dword [0x430e50]
cmp dword [eax + 0x30], 5
jg 0x40519a
cmp dword [eax + 0x28], ebx
jne 0x405188
cmp dword [eax + 0x2c], ebx
je 0x40519a
push ebx
push 0x425b78
push 0x425428
push ebx
call dword [sym.imp.USER32.dll_MessageBoxW]
push 0xfffffffffffffff6
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
push eax
call dword [sym.imp.KERNEL32.dll_TerminateProcess]
mov byte [ebp - 4], 4
mov ecx, dword [ebp - 0x10]
mov esi, dword [sym.imp.OLEAUT32.dll_SysStringLen]
push ecx
call esi
mov byte [ebp - 4], 3
lea edx, [ebp - 0xb4]
push edx
call fcn.00404810
mov byte [ebp - 4], 2
mov eax, dword [ebp - 0x18]
push eax
call esi
mov byte [ebp - 4], 1
mov ecx, dword [ebp - 0x14]
push ecx
call esi
mov byte [ebp - 4], bl
lea edx, [ebp - 0x7c]
push edx
jmp 0x405143
mov ecx, dword [ebp - 0x14]
push ecx
call eax
cmp eax, ebx
jl 0x405257
mov byte [ebp - 4], 4
mov edx, dword [ebp - 0x10]
mov esi, dword [sym.imp.OLEAUT32.dll_SysStringLen]
push edx
call esi
mov byte [ebp - 4], 3
lea eax, [ebp - 0xb4]
push eax
call fcn.00404810
mov byte [ebp - 4], 2
mov ecx, dword [ebp - 0x18]
push ecx
call esi
mov byte [ebp - 4], 1
mov edx, dword [ebp - 0x14]
push edx
call esi
mov byte [ebp - 4], bl
lea eax, [ebp - 0x7c]
push eax
call fcn.00401da0
mov dword [ebp - 4], edi
lea ecx, [ebp - 0x40]
call fcn.0040bfc0
mov eax, 2
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
push 1
call esi
cmp eax, ebx
jne 0x40527c
call fcn.00408180
test eax, eax
je 0x40519a
push ebx
push 0x425b78
push 0x425470
jmp 0x405193
push ebx
call eax
lea edi, [ebp - 0xb4]
call fcn.0040b230
push 2
mov edi, eax
call esi
cmp eax, ebx
je 0x405296
call eax
push 0xfffffffffffffff5
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
push eax
call dword [sym.imp.KERNEL32.dll_TerminateProcess]
call fcn.004080c0
call fcn.00407fa0
call dword [sym.imp.ole32.dll_OleUninitialize]
call dword [sym.imp.ole32.dll_CoUninitialize]
mov byte [ebp - 4], 4
mov eax, dword [ebp - 0x10]
mov esi, dword [sym.imp.OLEAUT32.dll_SysStringLen]
push eax
call esi
mov byte [ebp - 4], 3
lea ecx, [ebp - 0xb4]
push ecx
call fcn.00404810
mov byte [ebp - 4], 2
mov edx, dword [ebp - 0x18]
push edx
call esi
mov byte [ebp - 4], 1
mov eax, dword [ebp - 0x14]
push eax
call esi
mov byte [ebp - 4], bl
lea ecx, [ebp - 0x7c]
push ecx
call fcn.00401da0
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x40]
call fcn.0040bfc0
mov eax, edi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10