Function at 0x403e50
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 0x4ab1e0
mov dword [0x4ac2e4], 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 0x403e97
lea eax, [esp + 0x78]
call fcn.0044fc20
mov eax, dword [0x4a9aac]
test eax, eax
je 0x403ef4
mov ebx, dword [eax]
test ebx, ebx
je 0x403ef4
cmp byte [ebx], 0
je 0x403ef4
mov eax, ebx
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x403eb0
sub eax, edx
mov edi, eax
lea eax, [edi + 1]
call fcn.004715d0
mov esi, eax
test esi, esi
jne 0x403edd
push ebx
push str.Out_of_memory.
mov ecx, 0x4ad2a8
call fcn.0042f790
xor eax, eax
jmp 0x403ef9
test edi, edi
je 0x403eec
push edi
push ebx
push esi
call fcn.0048f9d0
add esp, 0xc
mov byte [esi + edi], 0
mov eax, esi
jmp 0x403ef9
mov eax, 0x49a8bd
mov dword [0x4acafc], eax
mov eax, dword [0x4aa1a4]
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 0x404070
jmp 0x403f30
cmp byte [esp + 0x45], 0
mov edx, dword [0x4aa1a8]
mov esi, dword [edx + ebx*4]
je 0x403fc6
mov eax, dword [esp + 0x48]
push eax
lea ecx, [esp + 0x5c]
push 0x49a8dc
push ecx
call fcn.00487b16
add esp, 0xc
cmp byte [esp + 0x58], 0
mov edi, eax
je 0x404427
lea edx, [esp + 0x46]
push edx
push 3
lea eax, [esp + 0x54]
push eax
push edi
lea ecx, [esp + 0x68]
push ecx
mov ecx, 0x4ad2a8
call fcn.004228e0
test eax, eax
jne 0x403fb0
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 0x4ad2a8
lea edx, [esp + 0x64]
call fcn.00422b80
test eax, eax
je 0x404427
push 1
push 0
push 0xffffffffffffffff
push esi
push eax
call fcn.00477130
inc dword [esp + 0x48]
jmp 0x404063
push 0x49a8e0
push esi
call fcn.004873c1
add esp, 8
test eax, eax
je 0x40405e
push str._restart
push esi
call fcn.004873c1
add esp, 8
test eax, eax
je 0x40405e
push 0x49a8f0
push esi
call fcn.004873c1
add esp, 8
test eax, eax
je 0x404055
push str._force
push esi
call fcn.004873c1
add esp, 8
test eax, eax
je 0x404055
push 0xc
push str._ErrorStdOut
push esi
call fcn.0048777d
add esp, 0xc
test eax, eax
jne 0x404046
cmp byte [esi + 0xc], 0x3d
jne 0x404031
lea eax, [esi + 0xd]
jmp 0x404033
xor eax, eax
mov byte [0x4ad8c3], 1
call fcn.00415d70
mov dword [0x4ad8c4], eax
jmp 0x404063
dec ebx
lea ecx, [ebx + 1]
mov byte [esp + 0x45], 1
mov dword [esp + 0x54], ecx
jmp 0x404063
mov byte [0x4ac30f], 1
jmp 0x404063
mov byte [esp + 0x47], 1
inc ebx
cmp ebx, dword [0x4aa1a4]
jl 0x403f30
lea edx, [esp + 0x46]
push edx
push 3
lea eax, [esp + 0x54]
push eax
push 0
push 0x49a8d8
mov ecx, 0x4ad2a8
call fcn.004228e0
test eax, eax
jne 0x4040ba
mov edx, dword [esp + 0x4c]
xor ecx, ecx
cmp byte [esp + 0x46], cl
setne cl
inc ecx
push ecx
push edx
push 0x4ad2a8
xor ecx, ecx
mov edx, 0x49a8d8
call fcn.00422b80
test eax, eax
je 0x404427
cmp byte [eax + 0x17], 0
jne 0x4040c5
mov esi, dword [eax + 0xc]
jmp 0x4040c7
mov esi, eax
mov al, byte [esi + 0x15]
test al, 2
je 0x4040dd
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 0x404101
mov eax, esi
call fcn.00401150
and byte [esi + 0x15], 0x8f
jmp 0x404126
cmp dword [0x4ac450], 0
je 0x40410e
test al, 0x10
jne 0x40411b
cmp dword [0x4ac454], 0
je 0x404126
test al, 0x20
je 0x404126
test al, 8
je 0x404126
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, 0x4ad2a8
call fcn.004228e0
test eax, eax
jne 0x404174
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 0x4ad2a8
mov edx, str.A_Args
call fcn.00422b80
mov esi, eax
test esi, esi
je 0x404427
mov eax, dword [esp + 0x54]
mov ecx, dword [0x4aa1a8]
mov ebx, dword [0x4aa1a4]
lea edx, [ecx + eax*4]
sub ebx, eax
push edx
call fcn.0046d8b0
add esp, 4
test eax, eax
je 0x404427
mov edi, eax
mov ecx, esi
call fcn.00477460
call fcn.00403ce0
mov bl, byte [esp + 0x47]
push 0x4ad2a8
mov al, bl
call fcn.004166e0
cmp eax, 1
jne 0x404427
mov esi, dword [0x4a8978]
mov ecx, 0x3a
mov edi, 0x4aafb0
rep movsd dword es:[edi], dword [esi]
mov edi, 0x4ad2a8
call fcn.00417560
cmp eax, 0xffffffff
je 0x404427
test eax, eax
jne 0x4041ff
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
mov eax, dword [0x4ac444]
test eax, eax
jne 0x404247
mov eax, dword [0x4a9ab4]
cmp word [eax], 0
jne 0x40423b
cmp dword [0x4acb64], 0
jne 0x40423b
cmp dword [0x4ac41c], 0
jne 0x40423b
cmp dword [0x4ac420], 0
jne 0x40423b
cmp byte [0x4ac42a], 0
je 0x4042bb
mov dword [0x4ac444], 1
jmp 0x40424c
cmp eax, 4
je 0x4042bb
test bl, bl
jne 0x4042c3
cmp byte [0x4ac30f], bl
jne 0x404341
mov ecx, dword [0x4ad8bc]
push ecx
push str.AutoHotkey
call dword [sym.imp.USER32.dll_FindWindowA]
mov edi, eax
test edi, edi
je 0x404341
mov eax, dword [0x4ac444]
cmp eax, 3
je 0x4041f4
cmp eax, 2
je 0x4042b4
fldz
mov edx, dword [0x4ad8b0]
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.00478d60
add esp, 0x18
cmp eax, 7
je 0x4041f4
mov eax, 0x407
jmp 0x4042df
test bl, bl
je 0x404341
mov eax, dword [0x4ad8bc]
push eax
push str.AutoHotkey
call dword [sym.imp.USER32.dll_FindWindowA]
mov edi, eax
test edi, edi
je 0x404341
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 0x40433d
cmp esi, 0x64
jne 0x40432d
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.00478d60
add esp, 0x18
cmp eax, 7
je 0x404427
xor esi, esi
push 0x14
inc esi
call ebx
push edi
call dword [sym.imp.USER32.dll_IsWindow]
test eax, eax
jne 0x404302
push 0x64
call ebx
mov esi, dword [sym.imp.USER32.dll_SystemParametersInfoA]
push 0
push 0x4aaec4
push 0
push 0x2000
call esi
test eax, eax
je 0x404371
cmp dword [0x4aaec4], 0
je 0x404371
push 2
push 0
push 0
push 0x2001
call esi
push 0x4ad2a8
call fcn.004169e0
cmp eax, 1
jne 0x404427
push 0
push 4
push 0
call fcn.00487ca5
add eax, 0x20
push eax
call fcn.00487baf
mov esi, dword [0x4a88f0]
add esp, 0x10
test esi, esi
je 0x4043c6
imul esi, esi, 0x70
push esi
call fcn.00487797
add esp, 4
mov dword [0x4acb04], eax
test eax, eax
je 0x4043c6
push esi
push 0
push eax
call fcn.004905a0
add esp, 0xc
cmp byte [0x4ada62], 0
jne 0x4043ea
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.00409ba0
push 3
push 0
push str.Clipboard
mov ecx, 0x4ad2a8
mov byte [0x4ad8c0], 1
mov byte [0x4acaf3], 0
call fcn.00422880
test eax, eax
je 0x404419
call fcn.00403e20
call fcn.00404440
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