Function at 0x543320
Capabilities:
Check mutex and terminate process on windows
Check mutex on windows
Create process on windows
Create process suspended
Get common file path
Hide graphical window
Read file via mapping
Terminate process

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x672e48
push 0x62903c
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0xb18
push ebx
push esi
push edi
mov dword [ebp - 0x18], esp
mov eax, dword [ebp + 8]
mov esi, dword [eax]
mov dword [ebp - 0x68], 0x27f
wait
fninit
fldcw word [ebp - 0x68]
mov eax, dword [0x721e30]
xor ebx, ebx
cmp eax, ebx
je 0x543381
push 0x721e34
mov ecx, dword [0x721e34]
push ecx
push 1
push eax
call dword [sym.imp.KERNEL32.dll_VirtualProtect]
mov dword [0x721e30], ebx
cmp dword [0x722af8], ebx
je 0x543398
push 1
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
push eax
call dword [sym.imp.KERNEL32.dll_TerminateProcess]
mov dword [0x722af8], 1
cmp dword [esi], 0xc00000fd
jne 0x5433c5
mov esi, esp
lea edi, [esi + 0x10000]
mov ecx, 0x4000
rep movsd dword es:[edi], dword [esi]
add ebp, 0x10000
add esp, 0x10000
push str.faultrep.dll
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
cmp eax, ebx
je 0x5433e5
push str.ReportFault
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x721e38], eax
wait
mov dword [ebp - 4], ebx
mov byte [0x721db5], 1
call fcn.00522830
call fcn.00518280
call fcn.0054b190
push 1
call dword [sym.imp.USER32.dll_ShowCursor]
mov eax, dword [0x721dcc]
cmp eax, ebx
je 0x54346f
mov edx, dword [str.KeystoneEditbox]
push edx
push eax
call dword [0x721de0]
add esp, 8
mov dword [ebp - 0x6c], eax
cmp eax, ebx
je 0x543432
push eax
call dword [0x721df0]
add esp, 4
mov eax, dword [str.KeystoneChatLog]
push eax
mov ecx, dword [0x721dcc]
push ecx
call dword [0x721de0]
add esp, 8
mov dword [ebp - 0x6c], eax
cmp eax, ebx
je 0x543459
push eax
call dword [0x721df0]
add esp, 4
mov edx, dword [0x721dcc]
push edx
call dword [0x721dd4]
add esp, 4
mov dword [0x721dcc], ebx
mov eax, dword [0x7460e4]
cmp eax, ebx
je 0x543481
push 6
push eax
call dword [sym.imp.USER32.dll_ShowWindow]
wait
jmp 0x54348d
mov dword [ebp - 4], 0xffffffff
wait
mov dword [ebp - 4], 1
push 0x400
push 0x40
call dword [sym.imp.KERNEL32.dll_GlobalAlloc]
mov edi, eax
mov dword [ebp - 0x58], edi
push edi
call dword [sym.imp.KERNEL32.dll_GlobalLock]
mov dword [ebp - 0x7c], eax
mov dword [eax], 0x80c800c0
mov word [eax + 8], 1
xor ecx, ecx
mov word [eax + 0xa], cx
mov word [eax + 0xc], cx
mov word [eax + 0xe], 0xa3
mov word [eax + 0x10], 0x37
lea esi, [eax + 0x12]
mov dword [ebp - 0x1c], esi
mov word [esi], cx
add esi, 2
mov dword [ebp - 0x1c], esi
mov word [esi], cx
add esi, 2
mov dword [ebp - 0x1c], esi
mov dword [ebp - 0x60], esi
push 0x32
push esi
push 0xffffffffffffffff
push 0x6f0698
push ecx
push ecx
mov ebx, dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
call ebx
mov dword [ebp - 0x5c], eax
lea esi, [esi + eax*2]
mov dword [ebp - 0x1c], esi
mov word [esi], 8
add esi, 2
mov dword [ebp - 0x1c], esi
mov dword [ebp - 0x60], esi
push 0x32
push esi
push 0xffffffffffffffff
push str.MS_Sans_Serif
push 0
push 0
call ebx
mov dword [ebp - 0x5c], eax
lea eax, [esi + eax*2]
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0x50], eax
add eax, 3
mov dword [ebp - 0x50], eax
shr eax, 2
mov dword [ebp - 0x50], eax
shl eax, 2
mov dword [ebp - 0x50], eax
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0x80], eax
mov dword [eax], 0x50020000
mov word [eax + 0x10], 0xffff
mov word [eax + 8], 0x1c
mov word [eax + 0xa], 0x17
mov word [eax + 0xc], 0x6c
mov word [eax + 0xe], 8
lea esi, [eax + 0x12]
mov dword [ebp - 0x1c], esi
mov word [esi], 0xffff
add esi, 2
mov dword [ebp - 0x1c], esi
mov word [esi], 0x82
add esi, 2
mov dword [ebp - 0x1c], esi
mov dword [ebp - 0x60], esi
push 0x32
push esi
push 0xffffffffffffffff
push 0x6f0598
push 0
push 0
call ebx
inc eax
mov dword [ebp - 0x5c], eax
lea eax, [esi + eax*2]
mov dword [ebp - 0x1c], eax
push edi
call dword [sym.imp.KERNEL32.dll_GlobalUnlock]
push 0
push 0x543280
push 0
push edi
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
push eax
call dword [sym.imp.USER32.dll_CreateDialogIndirectParamA]
mov esi, eax
mov dword [ebp - 0x2c], esi
push 5
push esi
call dword [sym.imp.USER32.dll_ShowWindow]
push 3
push 0
push 0
push 0
push 0
push 0xffffffffffffffff
push esi
call dword [sym.imp.USER32.dll_SetWindowPos]
mov edi, dword [sym.imp.USER32.dll_PeekMessageA]
mov ebx, dword [sym.imp.USER32.dll_DispatchMessageA]
mov edi, edi
push 1
push 0
push 0
push esi
lea ecx, [ebp - 0x100]
push ecx
call edi
test eax, eax
je 0x54361f
lea edx, [ebp - 0x100]
push edx
call ebx
jmp 0x543600
wait
mov dword [ebp - 4], 0xffffffff
xor eax, eax
mov dword [ebp - 0x48], eax
mov dword [ebp - 0x44], eax
mov dword [ebp - 0x40], eax
mov dword [ebp - 0x48], 0xc
mov dword [ebp - 0x40], 1
push eax
push 0x1c50
push eax
push 4
lea ecx, [ebp - 0x48]
push ecx
push 0xffffffffffffffff
call dword [sym.imp.KERNEL32.dll_CreateFileMappingA]
mov dword [ebp - 0x4c], eax
test eax, eax
jne 0x543675
mov eax, dword [0x721e38]
test eax, eax
je 0x54366d
push 0
mov edx, dword [ebp + 8]
push edx
call eax
push 1
call dword [sym.imp.KERNEL32.dll_ExitProcess]
push 0
push 0
push 0
push 6
mov eax, dword [ebp - 0x4c]
push eax
call dword [sym.imp.KERNEL32.dll_MapViewOfFile]
mov ebx, eax
mov dword [ebp - 0x54], ebx
test ebx, ebx
jne 0x5436a8
mov eax, dword [0x721e38]
test eax, eax
je 0x5436a0
push ebx
mov ecx, dword [ebp + 8]
push ecx
call eax
push 1
call dword [sym.imp.KERNEL32.dll_ExitProcess]
mov ecx, 0x714
xor eax, eax
mov edi, ebx
rep stosd dword es:[edi], eax
push eax
push eax
push eax
lea edx, [ebp - 0x48]
push edx
mov esi, dword [sym.imp.KERNEL32.dll_CreateEventA]
call esi
mov edi, eax
mov dword [ebp - 0x64], edi
push 0
push 0
push 0
lea eax, [ebp - 0x48]
push eax
call esi
mov dword [ebp - 0x28], eax
push 0
push 0
lea ecx, [ebp - 0x48]
push ecx
call dword [sym.imp.KERNEL32.dll_CreateMutexA]
mov dword [ebp - 0x24], eax
push 0
push 1
push 0x1f0fff
lea edx, [ebx + 0x24]
push edx
mov esi, dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
call esi
push eax
call esi
push eax
call esi
push eax
call dword [sym.imp.KERNEL32.dll_DuplicateHandle]
test eax, eax
jne 0x543726
mov eax, dword [0x721e38]
test eax, eax
je 0x54371e
push 0
mov ecx, dword [ebp + 8]
push ecx
call eax
push 1
call dword [sym.imp.KERNEL32.dll_ExitProcess]
mov eax, dword [ebp - 0x28]
test eax, eax
je 0x543d70
test edi, edi
je 0x543d70
mov esi, dword [ebp - 0x24]
test esi, esi
je 0x543d70
call dword [sym.imp.KERNEL32.dll_GetCurrentProcessId]
mov dword [ebx + 4], eax
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov dword [ebx + 8], eax
mov edx, dword [ebp - 0x28]
mov dword [ebx + 0x1c], edx
mov dword [ebx + 0x14], edi
mov dword [ebx + 0x20], esi
mov dword [ebx], 0x1c50
mov eax, dword [ebp + 8]
mov dword [ebx + 0x10], eax
mov eax, dword [eax]
mov ecx, dword [eax + 0xc]
mov dword [ebx + 0xc], ecx
mov dword [ebx + 0x34], 1
mov dword [ebx + 0x28], 0x100
push 0x66db84
lea edx, [ebx + 0x48]
push edx
call fcn.00625e0a
add esp, 8
push 0x104
lea eax, [ebp - 0x204]
push eax
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
lea eax, [ebp - 0x204]
lea esi, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x5437b2
sub eax, esi
push eax
lea ecx, [ebp - 0x204]
push ecx
lea edx, [ebx + 0xb8]
push edx
call fcn.00626d94
add esp, 0xc
lea edi, [ebx + 0x1148]
mov ecx, 9
mov esi, str.MicrosoftPCHealthErrorReportingDW
rep movsd dword es:[edi], dword [esi]
movsb byte es:[edi], byte [esi]
mov dword [ebx + 0x3c], 0x11
lea eax, [ebx + 0xe38]
mov ecx, dword [str.watson.microsoft.com]
mov dword [eax], ecx
mov edx, dword [0x671300]
mov dword [eax + 4], edx
mov ecx, dword [0x671304]
mov dword [eax + 8], ecx
mov edx, dword [0x671308]
mov dword [eax + 0xc], edx
mov ecx, dword [0x67130c]
mov dword [eax + 0x10], ecx
mov dl, byte [0x671310]
mov byte [eax + 0x14], dl
mov byte [ebp - 0x81c], 0
wait
mov dword [ebp - 4], 2
mov ecx, 0x11
xor eax, eax
lea edi, [ebp - 0xc8]
rep stosd dword es:[edi], eax
mov dword [ebp - 0xc8], 0x44
mov dword [ebp - 0x3c], eax
mov dword [ebp - 0x38], eax
mov dword [ebp - 0x34], eax
mov dword [ebp - 0x30], eax
lea ecx, [ebp - 0x920]
push ecx
push 0x104
call dword [sym.imp.KERNEL32.dll_GetTempPathA]
lea edi, [ebp - 0x920]
dec edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x543874
mov edx, dword [str.dxdiag.txt]
mov dword [edi], edx
mov eax, dword [0x6712f4]
mov dword [edi + 4], eax
mov cx, word [0x6712f8]
mov word [edi + 8], cx
mov dl, byte [0x6712fa]
mov byte [edi + 0xa], dl
lea eax, [ebp - 0x920]
push eax
push str.dxdiag.exe__whql:off__t__s
lea ecx, [ebp - 0xb28]
push ecx
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0xc
lea edx, [ebp - 0x3c]
push edx
lea eax, [ebp - 0xc8]
push eax
push 0
push 0
push 0x4000020
push 0
push 0
push 0
lea ecx, [ebp - 0xb28]
push ecx
push 0
call dword [sym.imp.KERNEL32.dll_CreateProcessA]
test eax, eax
je 0x5439de
mov esi, dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
call esi
push eax
call dword [sym.imp.KERNEL32.dll_GetPriorityClass]
mov dword [ebp - 0x70], eax
push 0x40
call esi
push eax
call dword [sym.imp.KERNEL32.dll_SetPriorityClass]
mov edi, dword [ebp - 0x2c]
lea ecx, [ecx]
push 0xff
push 0xea60
push 0
lea edx, [ebp - 0x3c]
push edx
push 1
call dword [sym.imp.USER32.dll_MsgWaitForMultipleObjects]
mov esi, eax
mov dword [ebp - 0x74], esi
test esi, esi
jne 0x543970
mov al, byte [ebp - 0x81c]
test al, al
je 0x543956
lea edi, [ebp - 0x81c]
dec edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x543942
mov ax, word [0x6712d0]
mov word [edi], ax
mov edi, dword [ebp - 0x2c]
lea ecx, [ebp - 0x920]
lea edx, [ebp - 0x81c]
mov al, byte [ecx]
mov byte [edx], al
inc ecx
inc edx
test al, al
jne 0x543962
lea esp, [esp]
push 1
push 0
push 0
push edi
lea ecx, [ebp - 0xe4]
push ecx
call dword [sym.imp.USER32.dll_PeekMessageA]
test eax, eax
je 0x5439ab
cmp dword [ebp - 0xe0], 0x111
jne 0x54399c
mov esi, 0x102
mov dword [ebp - 0x74], esi
lea edx, [ebp - 0xe4]
push edx
call dword [sym.imp.USER32.dll_DispatchMessageA]
jmp 0x543970
test esi, esi
je 0x5439bb
cmp esi, 0x102
jne 0x543910
mov eax, dword [ebp - 0x70]
push eax
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
push eax
call dword [sym.imp.KERNEL32.dll_SetPriorityClass]
mov ecx, dword [ebp - 0x3c]
push ecx
mov esi, dword [sym.imp.KERNEL32.dll_CloseHandle]
call esi
mov edx, dword [ebp - 0x38]
push edx
call esi
wait
mov dword [ebp - 4], 0xffffffff
jmp 0x5439fb
mov al, byte [ebp - 0x81c]
test al, al
je 0x543a21
lea edi, [ebp - 0x81c]
dec edi
lea esp, [esp]
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x543a10
mov ax, word [0x6712d0]
mov word [edi], ax
lea ecx, [ebp - 0x308]
push ecx
push 0x104
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryA]
lea eax, [ebp - 0x308]
mov edx, eax
jmp 0x543a40
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x543a40
sub eax, edx
lea edi, [ebp - 0x81c]
dec edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x543a50
mov ecx, eax
mov esi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea edi, [ebp - 0x81c]
dec edi
nop
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x543a70
mov edx, dword [str.debug.txt]
mov dword [edi], edx
mov eax, dword [0x6712c8]
mov dword [edi + 4], eax
mov cx, word [0x6712cc]
mov word [edi + 8], cx
mov dl, byte [0x6712ce]
mov byte [edi + 0xa], dl
mov al, byte [ebp - 0x81c]
test al, al
je 0x543ac1
lea edi, [ebp - 0x81c]
dec edi
lea ecx, [ecx]
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x543ab0
mov ax, word [0x6712d0]
mov word [edi], ax
lea eax, [ebp - 0x308]
mov edx, eax
lea esp, [esp]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x543ad0
sub eax, edx
lea edi, [ebp - 0x81c]
dec edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x543ae0
mov ecx, eax
mov esi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea edi, [ebp - 0x81c]
dec edi
nop
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x543b00
mov ecx, dword [str._network.log]
mov dword [edi], ecx
mov edx, dword [0x6712b8]
mov dword [edi + 4], edx
mov eax, dword [0x6712bc]
mov dword [edi + 8], eax
mov cl, byte [0x6712c0]
mov byte [edi + 0xc], cl
mov al, byte [ebp - 0x81c]
test al, al
je 0x543b62
lea edx, [ebp - 0x81c]
push edx
call fcn.006278b9
add esp, 4
push 0x400
lea eax, [ebx + 0x1418]
push eax
push 0xffffffffffffffff
lea ecx, [ebp - 0x81c]
push ecx
push 0
push 0
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
wait
mov dword [ebp - 4], 3
mov eax, dword [ebp - 0x2c]
test eax, eax
je 0x543b7a
mov edx, eax
push edx
call dword [sym.imp.USER32.dll_DestroyWindow]
mov eax, dword [ebp - 0x58]
test eax, eax
je 0x543b88
push eax
call dword [sym.imp.KERNEL32.dll_GlobalFree]
wait
mov dword [ebp - 4], 0xffffffff
jmp 0x543ba5
mov dword [ebp - 0x20], 1
mov ecx, 0x11
xor eax, eax
lea edi, [ebp - 0xc8]
rep stosd dword es:[edi], eax
mov dword [ebp - 0xc8], 0x44
xor ecx, ecx
mov dword [ebp - 0x3c], ecx
mov dword [ebp - 0x38], ecx
mov dword [ebp - 0x34], ecx
mov dword [ebp - 0x30], ecx
mov edx, dword [ebp - 0x4c]
push edx
push str..Watsondw15.exe__x__s__u
lea eax, [ebp - 0x40c]
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0xc
wait
mov dword [ebp - 4], 4
lea ecx, [ebp - 0x3c]
push ecx
lea edx, [ebp - 0xc8]
push edx
push 0
push 0
push 0x4000020
push 1
push 0
push 0
lea eax, [ebp - 0x40c]
push eax
push 0
call dword [sym.imp.KERNEL32.dll_CreateProcessA]
test eax, eax
je 0x543d35
mov esi, dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
mov edi, dword [ebp - 0x64]
mov edi, edi
mov eax, dword [ebp - 0x20]
test eax, eax
je 0x543cc4
push 0x927c0
mov ecx, dword [ebp - 0x28]
push ecx
call esi
test eax, eax
jne 0x543c58
push 1
push edi
call esi
test eax, eax
jne 0x543c30
mov dword [ebp - 0x20], eax
jmp 0x543c30
push 0x4e20
mov edx, dword [ebp - 0x24]
push edx
call esi
mov dword [ebp - 0x78], eax
cmp eax, 0x102
jne 0x543c76
mov dword [ebp - 0x20], 0
jmp 0x543c30
cmp eax, 0x80
jne 0x543c90
mov dword [ebp - 0x20], 0
mov eax, dword [ebp - 0x24]
push eax
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
jmp 0x543c30
push 1
mov ecx, dword [ebp - 0x28]
push ecx
call esi
test eax, eax
je 0x543ca5
push edi
call dword [sym.imp.KERNEL32.dll_SetEvent]
jmp 0x543cae
push 1
push edi
call esi
test eax, eax
jne 0x543cb5
mov dword [ebp - 0x20], 0
mov edx, dword [ebp - 0x24]
push edx
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
jmp 0x543c30
mov eax, dword [ebp - 0x3c]
push eax
mov esi, dword [sym.imp.KERNEL32.dll_CloseHandle]
call esi
mov ecx, dword [ebp - 0x38]
push ecx
call esi
mov edx, dword [ebp - 0x28]
push edx
call esi
push edi
call esi
mov eax, dword [ebp - 0x24]
push eax
call esi
test byte [ebx + 0x2c], 1
mov eax, 0
setne al
inc eax
mov dword [ebp - 0x84], eax
wait
mov dword [ebp - 4], 0xffffffff
cmp eax, 1
jne 0x543d2d
mov ecx, dword [ebx + 0x24]
push ecx
call esi
push ebx
call dword [sym.imp.KERNEL32.dll_UnmapViewOfFile]
mov edx, dword [ebp - 0x4c]
push edx
call esi
xor eax, eax
mov ecx, dword [ebp - 0x10]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
push 0
call dword [sym.imp.KERNEL32.dll_ExitProcess]
mov eax, dword [0x721e38]
test eax, eax
je 0x543d46
push 0
mov ecx, dword [ebp + 8]
push ecx
call eax
push 1
call dword [sym.imp.KERNEL32.dll_ExitProcess]
mov eax, dword [0x721e38]
test eax, eax
je 0x543d81
push 0
mov ecx, dword [ebp + 8]
push ecx
call eax
push 1
call dword [sym.imp.KERNEL32.dll_ExitProcess]