Function at 0x403e70
Capabilities:
Get common file path

Disassembly:
push ebp
mov ebp, esp
and esp, 0xffffffc0
mov eax, dword [ebp + 8]
sub esp, 0x174
push ebx
push esi
push edi
push 0x4ac1e0
mov dword [0x4ad2e4], eax
call dword [sym.imp.KERNEL32.DLL_InitializeCriticalSection]
push 1
call dword [sym.imp.KERNEL32.DLL_SetErrorMode]
lea ecx, [esp + 0x78]
push ecx
push 0x104
call dword [sym.imp.KERNEL32.DLL_GetCurrentDirectoryA]
test eax, eax
je 0x403eb7
lea eax, [esp + 0x78]
call fcn.0044ffa0
mov eax, dword [0x4aaaac]
test eax, eax
je 0x403f14
mov ebx, dword [eax]
test ebx, ebx
je 0x403f14
cmp byte [ebx], 0
je 0x403f14
mov eax, ebx
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x403ed0
sub eax, edx
mov edi, eax
lea eax, [edi + 1]
call fcn.004719a0
mov esi, eax
test esi, esi
jne 0x403efd
push ebx
push str.Out_of_memory.
mov ecx, 0x4ae2a8
call fcn.0042fa80
xor eax, eax
jmp 0x403f19
test edi, edi
je 0x403f0c
push edi
push ebx
push esi
call fcn.0048fde0
add esp, 0xc
mov byte [esi + edi], 0
mov eax, esi
jmp 0x403f19
mov eax, 0x49b871
mov dword [0x4adafc], eax
mov eax, dword [0x4ab1a4]
mov ebx, 1
mov byte [esp + 0x47], 0
mov byte [esp + 0x45], 0
mov dword [esp + 0x48], 1
mov dword [esp + 0x54], eax
cmp eax, ebx
jle 0x404090
jmp 0x403f50
cmp byte [esp + 0x45], 0
mov edx, dword [0x4ab1a8]
mov esi, dword [edx + ebx*4]
je 0x403fe6
mov eax, dword [esp + 0x48]
push eax
lea ecx, [esp + 0x5c]
push 0x49b8dc
push ecx
call fcn.00487ee6
add esp, 0xc
cmp byte [esp + 0x58], 0
mov edi, eax
je 0x404447
lea edx, [esp + 0x46]
push edx
push 3
lea eax, [esp + 0x54]
push eax
push edi
lea ecx, [esp + 0x68]
push ecx
mov ecx, 0x4ae2a8
call fcn.00422bd0
test eax, eax
jne 0x403fd0
mov eax, dword [esp + 0x4c]
xor edx, edx
cmp byte [esp + 0x46], dl
mov ecx, edi
setne dl
inc edx
push edx
push eax
push 0x4ae2a8
lea edx, [esp + 0x64]
call fcn.00422e70
test eax, eax
je 0x404447
push 1
push 0
push 0xffffffffffffffff
push esi
push eax
call fcn.00477500
inc dword [esp + 0x48]
jmp 0x404083
push 0x49b8e0
push esi
call fcn.00487791
add esp, 8
test eax, eax
je 0x40407e
push str._restart
push esi
call fcn.00487791
add esp, 8
test eax, eax
je 0x40407e
push 0x49b8f0
push esi
call fcn.00487791
add esp, 8
test eax, eax
je 0x404075
push str._force
push esi
call fcn.00487791
add esp, 8
test eax, eax
je 0x404075
push 0xc
push str._ErrorStdOut
push esi
call fcn.00487b4d
add esp, 0xc
test eax, eax
jne 0x404066
cmp byte [esi + 0xc], 0x3d
jne 0x404051
lea eax, [esi + 0xd]
jmp 0x404053
xor eax, eax
mov byte [0x4ae8c3], 1
call fcn.00416060
mov dword [0x4ae8c4], eax
jmp 0x404083
dec ebx
lea ecx, [ebx + 1]
mov byte [esp + 0x45], 1
mov dword [esp + 0x54], ecx
jmp 0x404083
mov byte [0x4ad30f], 1
jmp 0x404083
mov byte [esp + 0x47], 1
inc ebx
cmp ebx, dword [0x4ab1a4]
jl 0x403f50
lea edx, [esp + 0x46]
push edx
push 3
lea eax, [esp + 0x54]
push eax
push 0
push 0x49b8d8
mov ecx, 0x4ae2a8
call fcn.00422bd0
test eax, eax
jne 0x4040da
mov edx, dword [esp + 0x4c]
xor ecx, ecx
cmp byte [esp + 0x46], cl
setne cl
inc ecx
push ecx
push edx
push 0x4ae2a8
xor ecx, ecx
mov edx, 0x49b8d8
call fcn.00422e70
test eax, eax
je 0x404447
cmp byte [eax + 0x17], 0
jne 0x4040e5
mov esi, dword [eax + 0xc]
jmp 0x4040e7
mov esi, eax
mov al, byte [esi + 0x15]
test al, 2
je 0x4040fd
and al, 0x3d
mov byte [esi + 0x15], al
mov eax, dword [esi]
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
mov eax, dword [esp + 0x48]
dec eax
cdq
mov dword [esi], eax
mov al, byte [esi + 0x15]
and al, 0x9b
or al, 0x18
mov dword [esi + 4], edx
mov byte [esi + 0x15], al
jns 0x404121
mov eax, esi
call fcn.00401150
and byte [esi + 0x15], 0x8f
jmp 0x404146
cmp dword [0x4ad450], 0
je 0x40412e
test al, 0x10
jne 0x40413b
cmp dword [0x4ad454], 0
je 0x404146
test al, 0x20
je 0x404146
test al, 8
je 0x404146
mov eax, esi
call fcn.00401150
lea eax, [esp + 0x45]
push eax
push 0xc1
lea ecx, [esp + 0x50]
push ecx
push 6
push str.A_Args
mov ecx, 0x4ae2a8
call fcn.00422bd0
test eax, eax
jne 0x404194
mov eax, dword [esp + 0x48]
xor edx, edx
cmp byte [esp + 0x45], dl
mov ecx, 6
setne dl
inc edx
or edx, 0xc0
push edx
push eax
push 0x4ae2a8
mov edx, str.A_Args
call fcn.00422e70
mov esi, eax
test esi, esi
je 0x404447
mov eax, dword [esp + 0x54]
mov ecx, dword [0x4ab1a8]
mov ebx, dword [0x4ab1a4]
lea edx, [ecx + eax*4]
sub ebx, eax
push edx
call fcn.0046dca0
add esp, 4
test eax, eax
je 0x404447
mov edi, eax
mov ecx, esi
call fcn.00477830
call fcn.00403d00
mov bl, byte [esp + 0x47]
push 0x4ae2a8
mov al, bl
call fcn.004169d0
cmp eax, 1
jne 0x404447
mov esi, dword [0x4a9978]
mov ecx, 0x3a
mov edi, 0x4abfb0
rep movsd dword es:[edi], dword [esi]
mov edi, 0x4ae2a8
call fcn.00417850
cmp eax, 0xffffffff
je 0x404447
test eax, eax
jne 0x40421f
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
mov eax, dword [0x4ad444]
test eax, eax
jne 0x404267
mov eax, dword [0x4aaab4]
cmp word [eax], 0
jne 0x40425b
cmp dword [0x4adb64], 0
jne 0x40425b
cmp dword [0x4ad41c], 0
jne 0x40425b
cmp dword [0x4ad420], 0
jne 0x40425b
cmp byte [0x4ad42a], 0
je 0x4042db
mov dword [0x4ad444], 1
jmp 0x40426c
cmp eax, 4
je 0x4042db
test bl, bl
jne 0x4042e3
cmp byte [0x4ad30f], bl
jne 0x404361
mov ecx, dword [0x4ae8bc]
push ecx
push str.AutoHotkey
call dword [sym.imp.USER32.dll_FindWindowA]
mov edi, eax
test edi, edi
je 0x404361
mov eax, dword [0x4ad444]
cmp eax, 3
je 0x404214
cmp eax, 2
je 0x4042d4
fldz
mov edx, dword [0x4ae8b0]
sub esp, 8
fstp qword [esp]
push 0
push edx
push 4
push str.An_older_instance_of_this_script_is_already_running.__Replace_it_with_this_instance__nNote:_To_avoid_this_message__see_SingleInstance_in_the_help_file.
call fcn.00479130
add esp, 0x18
cmp eax, 7
je 0x404214
mov eax, 0x407
jmp 0x4042ff
test bl, bl
je 0x404361
mov eax, dword [0x4ae8bc]
push eax
push str.AutoHotkey
call dword [sym.imp.USER32.dll_FindWindowA]
mov edi, eax
test edi, edi
je 0x404361
mov eax, 0x406
push 0
push eax
push 0x44
push edi
call dword [sym.imp.USER32.dll_PostMessageA]
mov ebx, dword [sym.imp.KERNEL32.DLL_Sleep]
push 0x14
xor esi, esi
call ebx
push edi
call dword [sym.imp.USER32.dll_IsWindow]
test eax, eax
je 0x40435d
cmp esi, 0x64
jne 0x40434d
fldz
sub esp, 8
fstp qword [esp]
push 0
push 0
push 4
push str.Could_not_close_the_previous_instance_of_this_script.__Keep_waiting_
call fcn.00479130
add esp, 0x18
cmp eax, 7
je 0x404447
xor esi, esi
push 0x14
inc esi
call ebx
push edi
call dword [sym.imp.USER32.dll_IsWindow]
test eax, eax
jne 0x404322
push 0x64
call ebx
mov esi, dword [sym.imp.USER32.dll_SystemParametersInfoA]
push 0
push 0x4abec4
push 0
push 0x2000
call esi
test eax, eax
je 0x404391
cmp dword [0x4abec4], 0
je 0x404391
push 2
push 0
push 0
push 0x2001
call esi
push 0x4ae2a8
call fcn.00416cd0
cmp eax, 1
jne 0x404447
push 0
push 4
push 0
call fcn.00488075
add eax, 0x20
push eax
call fcn.00487f7f
mov esi, dword [0x4a98f0]
add esp, 0x10
test esi, esi
je 0x4043e6
imul esi, esi, 0x70
push esi
call fcn.00487b67
add esp, 4
mov dword [0x4adb04], eax
test eax, eax
je 0x4043e6
push esi
push 0
push eax
call fcn.004909b0
add esp, 0xc
cmp byte [0x4aea62], 0
jne 0x40440a
lea ecx, [esp + 0x4c]
push ecx
mov dword [esp + 0x50], 8
mov dword [esp + 0x54], 0x1ff
call dword [sym.imp.COMCTL32.dll_InitCommonControlsEx]
call fcn.00409da0
push 3
push 0
push str.Clipboard
mov ecx, 0x4ae2a8
mov byte [0x4ae8c0], 1
mov byte [0x4adaf3], 0
call fcn.00422b70
test eax, eax
je 0x404439
call fcn.00403e40
call fcn.00404460
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
pop edi
pop esi
mov eax, 2
pop ebx
mov esp, ebp
pop ebp
ret 0x10