Function at 0x403c60
Capabilities:
Create thread

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x4c
push ebx
push esi
push edi
xor edi, edi
mov dword [0x4c16a8], 1
mov dword [0x4c16a0], edi
mov dword [0x4c16a4], edi
mov dword [0x4c1698], edi
mov dword [0x4c169c], edi
mov dword [0x42eeb8], edi
mov dword [0x42eebc], edi
mov eax, 0x42eec0
xor ecx, ecx
mov word [eax], cx
add eax, 0x186a0
cmp eax, 0x4c1680
jl 0x403ca1
push edi
push edi
push edi
mov dword [0x4c16bc], edi
call dword [sym.imp.KERNEL32.dll_CreateMutexA]
push 0x104
push 0x4c18c8
push edi
mov dword [0x4c1680], eax
mov dword [0x4c1694], edi
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
push 0x104
push 0x4c1ad0
push 0x4c18c8
call dword [sym.imp.KERNEL32.dll_GetShortPathNameW]
push 0x104
push 0x4c18c8
push 0x4c1ad0
call dword [sym.imp.KERNEL32.dll_GetLongPathNameW]
push 0x4c18c8
push 0x428f60
push 0x104
push 0x4c16c0
call fcn.00411311
push str..exe
push 0x4c16c0
call sym.JkDefrag.exe_stristrW
add esp, 0x18
cmp eax, edi
jne 0x403d4c
push str..scr
push 0x4c16c0
call sym.JkDefrag.exe_stristrW
add esp, 8
cmp eax, edi
je 0x403d77
push str..log
xor edx, edx
push 0x104
push 0x4c16c0
mov word [eax], dx
call fcn.00411d40
add esp, 0xc
push 0x4c16c0
call fcn.00411d35
add esp, 4
jmp 0x403d7f
xor eax, eax
mov word [0x4c16c0], ax
call fcn.00403a60
cmp eax, 1
je 0x403e20
mov esi, dword [ebp + 8]
cmp dword [ebp + 0xc], edi
jne 0x403e2b
push 4
mov dword [esp + 0x38], edi
mov dword [esp + 0x3c], edi
call dword [sym.imp.GDI32.dll_GetStockObject]
push 0x7f00
push edi
mov dword [esp + 0x50], eax
call dword [sym.imp.USER32.dll_LoadCursorA]
mov ebx, dword [sym.imp.USER32.dll_LoadIconA]
push 1
push edi
mov dword [esp + 0x4c], eax
call ebx
push 1
push esi
mov dword [esp + 0x48], eax
mov dword [esp + 0x44], esi
mov dword [esp + 0x38], 0x403810
mov dword [esp + 0x58], 0x42ad48
mov dword [esp + 0x54], edi
mov dword [esp + 0x34], 3
mov dword [esp + 0x30], 0x30
call ebx
lea ecx, [esp + 0x28]
push ecx
mov dword [esp + 0x58], eax
call dword [sym.imp.USER32.dll_RegisterClassExA]
test ax, ax
jne 0x403e2b
push 0x30
push str.JkDefrag_v3.36
push str.Cannot_register_class
push edi
call dword [sym.imp.USER32.dll_MessageBoxW]
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
push edi
push esi
push edi
push edi
push 0x190
push 0x258
push edi
push 0x80000000
push 0xcf0000
push str.JkDefrag_v3.36
push str.MyClass
push edi
call dword [sym.imp.USER32.dll_CreateWindowExW]
mov esi, eax
cmp esi, edi
jne 0x403e79
push 0x30
push str.JkDefrag_v3.36
push str.Cannot_create_window
push edi
call dword [sym.imp.USER32.dll_MessageBoxW]
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
mov edx, dword [ebp + 0x14]
push edx
push esi
call dword [sym.imp.USER32.dll_ShowWindow]
push edi
push edi
push edi
push 0x402860
push edi
push edi
call dword [sym.imp.KERNEL32.dll_CreateThread]
test eax, eax
je 0x403e20
push edi
push 0x12c
push 1
push esi
call dword [sym.imp.USER32.dll_SetTimer]
mov esi, dword [sym.imp.USER32.dll_GetMessageA]
push edi
push edi
push edi
lea eax, [esp + 0x18]
push eax
call esi
cmp eax, edi
je 0x403eed
mov ebx, dword [sym.imp.USER32.dll_TranslateMessage]
cmp eax, 0xffffffff
je 0x403eed
cmp dword [esp + 0x10], 0x12
je 0x403eed
lea ecx, [esp + 0xc]
push ecx
call ebx
lea edx, [esp + 0xc]
push edx
call dword [sym.imp.USER32.dll_DispatchMessageA]
push edi
push edi
push edi
lea eax, [esp + 0x18]
push eax
call esi
cmp eax, edi
jne 0x403ec1
push edi
push 0x42e400
mov dword [0x4c1694], 2
call sym.JkDefrag.exe_StopJkDefrag
mov eax, dword [esp + 0x1c]
add esp, 8
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10