Function at 0x45f0f0
Capabilities:
Check if file exists
Get file attributes

Disassembly:
push ebp
lea ebp, [esp - 0x19c]
sub esp, 0x21c
mov eax, dword [0x526b24]
xor eax, ebp
mov dword [ebp + 0x198], eax
mov eax, dword [ebp + 0x1b0]
mov edx, ecx
mov ecx, dword [ebp + 0x1ac]
mov dword [ebp - 0x74], eax
push ebx
push esi
mov esi, dword [ebp + 0x1a4]
mov byte [ecx], 0
mov byte [eax], 0
mov eax, dword [0x62271c]
push edi
mov dword [ebp - 0x7c], edx
mov dword [ebp - 0x68], esi
lea edi, [eax*4]
mov dword [ebp - 0x78], ecx
mov eax, dword fs:[0x2c]
mov dword [ebp - 0x70], edi
mov eax, dword [edi + eax]
cmp dword [eax + 0x1630], 0
lea eax, [eax + 0x1630]
jne 0x45f163
push eax
mov ecx, edx
call fcn.0045fdb0
lea eax, [esi + 4]
push 0x3a
push eax
call sub.VCRUNTIME140.dll_wcschr
mov ebx, eax
add esp, 8
test ebx, ebx
je 0x45f45f
lea eax, [ebx + 2]
mov dword [ebp - 0x68], eax
mov eax, dword fs:[0x2c]
mov ecx, dword [edi + eax]
cmp byte [ecx + 0x2198], 0
jne 0x45f19e
call fcn.004ebad3
mov eax, dword fs:[0x2c]
mov eax, dword [edi + eax]
lea ecx, [ebx + 2]
push ecx
lea ecx, [ebp - 0x80]
push ecx
mov ecx, dword [eax + 0x298]
call fcn.004561d0
test eax, eax
jne 0x45f1fe
mov eax, dword [ebp - 0x78]
mov byte [eax], 1
mov eax, dword [ebp - 0x74]
mov byte [eax], 0
mov ecx, dword fs:[0x2c]
mov eax, dword [edi + ecx]
cmp byte [eax + 0x2198], 0
jne 0x45f1e3
call fcn.004ebad3
mov ecx, dword fs:[0x2c]
mov ecx, dword [edi + ecx]
push dword [ebp - 0x68]
push str.Reference_not_allowed_here__use__where_possible._Only__A_AhkPath___A_AhkDir___A_DllPath___A_DllDir___A_ScriptDir___A_AppData_Common____A_ThreadID___A_PtrSize__can_be_used_here.
mov ecx, dword [ecx + 0x298]
call fcn.0046cf30
jmp 0x45f69a
mov ecx, esi
xor eax, eax
mov word [ebx], ax
lea edx, [ecx + 2]
nop dword [eax + eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x45f210
sub ecx, edx
sar ecx, 1
lea eax, [ecx*2 + 2]
call fcn.004ec520
mov ebx, esp
mov ecx, esi
mov edx, ebx
sub edx, esi
movzx eax, word [ecx]
lea ecx, [ecx + 2]
mov word [edx + ecx - 2], ax
test ax, ax
jne 0x45f233
push 0x2e
push ebx
call sub.VCRUNTIME140.dll_wcsrchr
add esp, 8
test eax, eax
je 0x45f262
push 0x2e
push ebx
call sub.VCRUNTIME140.dll_wcsrchr
add esp, 8
xor ecx, ecx
mov word [eax], cx
push 0x5c
push ebx
call sub.VCRUNTIME140.dll_wcsrchr
add esp, 8
test eax, eax
je 0x45f27f
push 0x5c
push ebx
call sub.VCRUNTIME140.dll_wcsrchr
add esp, 8
lea ebx, [eax + 2]
cmp word [ebx], 0x2a
lea eax, [ebx + 2]
cmovne eax, ebx
mov dword [ebp - 0x68], eax
mov eax, dword [ebp + 0x1a8]
lea eax, [eax*2 + 0x7d0]
call fcn.004ec520
mov dword [ebp - 0x6c], esp
push 0
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_CreateEventW]
cmp byte [ebp + 0x1b8], 0
mov ebx, dword [ebp - 0x80]
push esi
push eax
push ebx
push dword [ebp - 0x68]
mov dword [ebp - 0x70], eax
jne 0x45f2cb
push str.WindowClassMain____AutoHotkeyDynamicLibrary____nPersistent_n__NewScript__:_s__s__nSetEvent_0x_p__nReturn_ninclude__s
jmp 0x45f2d0
push str.WindowClassMain____AutoHotkeyDynamicLibrary____nPersistent_n__NewScript__:_s__s__nSetEvent_0x_p__nReturn_ninclude___s_
push dword [ebp - 0x6c]
call fcn.004701e0
add esp, 0x18
push ebx
call dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
push str.AutoHotkey
push 0x4f5b70
push dword [ebp - 0x6c]
call sym.AutoHotkey.exe_NewThread
add esp, 0x10
mov dword [ebp - 0x68], eax
xor ebx, ebx
push 0x1388
push dword [ebp - 0x70]
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
cmp eax, 0x102
je 0x45f324
push dword [ebp - 0x68]
push ebx
push str.__NewScript__
call sym.AutoHotkey.exe_ahkgetvar
add esp, 0xc
mov ebx, eax
mov edx, dword fs:[0x2c]
mov ecx, dword [edi + edx]
cmp byte [ecx + 0x2198], 0
jne 0x45f343
call fcn.004ebad3
mov edx, dword fs:[0x2c]
mov ecx, dword [edi + edx]
cmp byte [ecx + 0x2198], 0
mov eax, dword [ecx + 0x29c]
mov eax, dword [eax + 0x18]
mov dword [ebp - 0x70], eax
jne 0x45f367
call fcn.004ebad3
mov edx, dword fs:[0x2c]
mov eax, dword [edi + edx]
mov eax, dword [eax + 0x29c]
mov dword [eax + 0x18], 0
test ebx, ebx
jne 0x45f387
mov eax, dword [ebp - 0x78]
mov byte [eax], bl
mov eax, dword [ebp - 0x74]
mov byte [eax], bl
jmp 0x45f3c8
mov ecx, dword [ebp - 0x7c]
push ebx
push ebx
call fcn.004651d0
test eax, eax
mov eax, dword [ebp - 0x78]
jne 0x45f3a3
mov byte [eax], 1
mov eax, dword [ebp - 0x74]
mov byte [eax], 0
jmp 0x45f3c8
mov byte [eax], 0
mov eax, dword [ebp - 0x74]
mov byte [eax], 1
mov eax, dword [ebp - 0x7c]
mov eax, dword [eax + 0x6e0]
test eax, eax
je 0x45f3c8
push ebx
push 0x500f00
push eax
call fcn.0045d680
add esp, 0xc
mov ecx, dword fs:[0x2c]
mov eax, dword [edi + ecx]
cmp byte [eax + 0x2198], 0
jne 0x45f3e7
call fcn.004ebad3
mov ecx, dword fs:[0x2c]
mov eax, dword [edi + ecx]
mov ebx, dword [ebp - 0x68]
mov ecx, dword [ebp - 0x70]
push ebx
mov eax, dword [eax + 0x29c]
push 1
push 0x1fffff
mov dword [eax + 0x18], ecx
call dword [sym.imp.KERNEL32.dll_OpenThread]
mov edi, eax
test edi, edi
je 0x45f43d
push 0
push edi
push 0x418730
call dword [sym.imp.KERNEL32.dll_QueueUserAPC]
push edi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
push 0
push 0
push 0
push ebx
call dword [sym.imp.USER32.dll_PostThreadMessageW]
push 0
push 0x46e350
push ebx
call dword [sym.imp.USER32.dll_EnumThreadWindows]
mov ecx, esi
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x45f442
sub ecx, edx
mov eax, 0x3a
sar ecx, 1
mov word [esi + ecx*2], ax
jmp 0x45f69a
mov ebx, dword [ebp + 0x1a8]
test ebx, ebx
jne 0x45f47f
mov ebx, esi
lea ecx, [ebx + 2]
nop
mov ax, word [ebx]
add ebx, 2
test ax, ax
jne 0x45f470
sub ebx, ecx
sar ebx, 1
cmp ebx, 0xfd
ja 0x45f69a
mov edx, esi
mov dword [ebp - 0x80], 0
mov dword [ebp - 0x6c], edx
nop word [eax + eax]
xor esi, esi
nop dword [eax]
nop word [eax + eax]
mov eax, dword fs:[0x2c]
mov eax, dword [edi + eax]
mov ecx, dword [eax + esi*8 + 0x1630]
cmp word [ecx], 0
je 0x45f51d
mov eax, dword [eax + esi*8 + 0x1634]
lea edi, [ebx + ebx]
push edi
push edx
lea eax, [ecx + eax*2]
push eax
call sub.VCRUNTIME140.dll_memcpy
movq xmm0, qword [str..ahk]
add esp, 0xc
movq qword [edi + eax], xmm0
lea ecx, [edi + eax]
mov ax, word [0x4fee64]
mov edi, dword [ebp - 0x70]
mov word [ecx + 8], ax
mov eax, dword fs:[0x2c]
mov eax, dword [edi + eax]
push dword [eax + esi*8 + 0x1630]
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x45f51a
test al, 0x10
je 0x45f582
mov edx, dword [ebp - 0x6c]
inc esi
cmp esi, 4
jl 0x45f4b0
push 0x5f
push dword [ebp - 0x68]
call sub.VCRUNTIME140.dll_wcschr
mov ebx, eax
add esp, 8
test ebx, ebx
je 0x45f69a
mov eax, dword [ebp - 0x68]
sub ebx, eax
sar ebx, 1
cmp ebx, 0xfe
jae 0x45f69a
lea esi, [ebx + ebx]
lea ecx, [ebp - 0x64]
push esi
push eax
mov eax, ecx
mov dword [ebp - 0x6c], ecx
push eax
call sub.VCRUNTIME140.dll_memcpy
xor eax, eax
add esp, 0xc
mov word [ebp + esi - 0x64], ax
mov eax, dword [ebp - 0x80]
inc eax
mov dword [ebp - 0x80], eax
cmp eax, 2
jge 0x45f69a
mov edx, dword [ebp - 0x6c]
jmp 0x45f4a0
mov eax, dword [ebp - 0x74]
mov byte [eax], 1
mov edx, dword fs:[0x2c]
mov eax, dword [edi + edx]
cmp byte [eax + 0x2198], 0
jne 0x45f5a7
call fcn.004ebad3
mov edx, dword fs:[0x2c]
mov ecx, dword [edi + edx]
cmp byte [ecx + 0x2198], 0
mov eax, dword [ecx + 0x29c]
mov eax, dword [eax + 0x18]
mov dword [ebp - 0x70], eax
jne 0x45f5cb
call fcn.004ebad3
mov edx, dword fs:[0x2c]
mov eax, dword [edi + edx]
mov ebx, dword [ebp + 0x1b4]
mov ecx, dword [ebp - 0x7c]
push ebx
mov eax, dword [eax + 0x29c]
push 0
mov dword [eax + 0x18], 0
mov eax, dword fs:[0x2c]
mov eax, dword [edi + eax]
push dword [eax + esi*8 + 0x1630]
call fcn.00465140
test eax, eax
jne 0x45f606
mov eax, dword [ebp - 0x78]
mov byte [eax], 1
mov edx, dword [ebp - 0x7c]
cmp dword [edx + 0x6e0], 0
je 0x45f66e
mov eax, dword fs:[0x2c]
mov eax, dword [edi + eax]
cmp byte [eax + 0x2198], 0
jne 0x45f62c
call fcn.004ebad3
mov edx, dword [ebp - 0x7c]
mov eax, dword fs:[0x2c]
mov ecx, dword [edi + eax]
cmp byte [ecx + 0x14a], 0
je 0x45f66e
test bl, bl
je 0x45f66e
cmp byte [ebp + 0x1b8], 0
je 0x45f66e
mov eax, dword [ecx + esi*8 + 0x1630]
push eax
push eax
push dword [ecx + esi*8 + 0x1634]
push str.Include___0.s_nIncludeAgain__s_n
push dword [edx + 0x6e0]
call fcn.0045d680
add esp, 0x14
mov eax, dword fs:[0x2c]
mov eax, dword [edi + eax]
cmp byte [eax + 0x2198], 0
jne 0x45f685
call fcn.004ebad3
mov eax, dword fs:[0x2c]
mov ecx, dword [ebp - 0x70]
mov eax, dword [edi + eax]
mov eax, dword [eax + 0x29c]
mov dword [eax + 0x18], ecx
lea esp, [ebp - 0x8c]
pop edi
pop esi
pop ebx
mov ecx, dword [ebp + 0x198]
xor ecx, ebp
call fcn.004ebadf
lea esp, [ebp + 0x19c]
pop ebp
ret 0x18