Function at 0x401545
Capabilities:
Delete file
Get common file path
Hide graphical window
Read file on windows
Write file on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x220
push ebx
push esi
push edi
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
push section..Shared
mov dword [ebp + 8], eax
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
test eax, eax
je 0x401592
push 0
mov eax, dword [section..rdata]
push eax
call dword [sym.imp.USER32.dll_FindWindowA]
mov esi, eax
push 6
push esi
call dword [sym.imp.USER32.dll_ShowWindow]
push 3
push esi
call dword [sym.imp.USER32.dll_ShowWindow]
jmp 0x4018c8
push 0x7f02
xor esi, esi
push esi
mov edi, 0x3000
call dword [sym.imp.USER32.dll_LoadCursorA]
push eax
call dword [sym.imp.USER32.dll_SetCursor]
push 4
push edi
push 0x1ff00
push esi
call dword [sym.imp.KERNEL32.dll_VirtualAlloc]
push 4
mov dword [0x4035cc], eax
push edi
push 0x10f00
push esi
call dword [sym.imp.KERNEL32.dll_VirtualAlloc]
push 0x100
mov esi, 0x403fb0
push esi
mov dword [0x4030c8], eax
push dword [ebp + 8]
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
push esi
push 0x4040b0
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
push esi
call dword [sym.imp.KERNEL32.dll_lstrlenA]
mov ecx, eax
dec eax
cmp byte [ecx + 0x403fb0], 0x5c
jne 0x4015fb
add eax, 2
mov esi, 0x4041b0
push eax
push 0x403fb0
push esi
call dword [sym.imp.KERNEL32.dll_lstrcpynA]
push esi
mov edi, 0xff
push 0x4046b0
mov esi, 0x4042b0
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
push esi
push edi
call dword [sym.imp.KERNEL32.dll_GetTempPathA]
lea eax, [ebp - 0x220]
push eax
push edi
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryA]
push 0xffffffffffffffff
lea eax, [ebp - 0x220]
push esi
push 0xffffffffffffffff
push eax
push 1
push 0x400
call dword [sym.imp.KERNEL32.dll_CompareStringA]
cmp eax, 2
jne 0x401672
push 0x4030b8
push esi
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
mov esi, 0xff
push esi
push 0x4044b0
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryA]
push esi
push 0x4043b0
call dword [sym.imp.KERNEL32.dll_GetWindowsDirectoryA]
push 0
mov edi, 0x403fb0
push pe_nt_image_headers32
push 3
push 0
push 3
push 0x80000000
push edi
call dword [sym.imp.KERNEL32.dll_CreateFileA]
cmp eax, 0xffffffff
mov esi, eax
jne 0x4016c6
push edi
lea eax, [ebp - 0x220]
push str.Dont_read__s
push eax
jmp 0x40183f
xor edi, edi
push edi
push edi
push 0x2000
push esi
call dword [sym.imp.KERNEL32.dll_SetFilePointer]
push edi
lea eax, [ebp - 4]
push eax
push 0x8214
push dword [0x4035cc]
push esi
call dword [sym.imp.KERNEL32.dll_ReadFile]
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov esi, 1
mov ebx, esi
mov eax, dword [str.instcrin.dll]
shl ebx, 8
push eax
lea edi, [ebx + 0x4041b0]
push edi
call dword [sym.imp.KERNEL32.dll_lstrlenA]
cmp byte [ebx + eax + 0x4041af], 0x5c
mov eax, 0x403064
je 0x401725
mov eax, 0x4030a4
push eax
push edi
push str._s_s_s
lea eax, [ebp - 0x120]
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0x14
xor eax, eax
lea ecx, [ebp - 0x120]
push eax
push pe_nt_image_headers32
push 2
push eax
push eax
push 0xc0000000
push ecx
call dword [sym.imp.KERNEL32.dll_CreateFileA]
cmp eax, 0xffffffff
mov ebx, eax
jne 0x401791
cmp esi, 2
je 0x401780
mov esi, 2
push 0x4043b0
push 0x4042b0
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
jmp 0x4016f9
lea eax, [ebp - 0x120]
push eax
push str.Dont_create__s
jmp 0x401838
xor esi, esi
lea edi, [ebp - 0x20]
xor eax, eax
mov dword [0x4047c0], esi
mov dword [0x4047b4], 0x401000
mov dword [0x4047b8], 0x40101f
mov dword [0x4047bc], 0x40103f
mov ecx, 7
rep stosd dword es:[edi], eax
lea eax, [ebp - 0x20]
push eax
call fcn.00401303
push esi
lea eax, [ebp - 4]
push eax
push dword [0x4030d4]
push dword [0x4030c8]
push ebx
call dword [sym.imp.KERNEL32.dll_WriteFile]
push ebx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
lea eax, [ebp - 0x120]
push eax
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov edi, eax
mov ecx, dword [0x4030c8]
mov eax, dword [0x4035cc]
push str._MainFunc_8
push edi
mov dword [0x4047c4], eax
mov dword [0x4047b0], 0x401303
mov dword [0x4047c8], ecx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov ebx, eax
test ebx, ebx
jne 0x401875
lea eax, [ebp - 0x120]
push eax
push str.Dont_load__s
lea ecx, [ebp - 0x220]
push ecx
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0xc
push 0x7f00
push 0
call dword [sym.imp.USER32.dll_LoadCursorA]
push eax
call dword [sym.imp.USER32.dll_SetCursor]
push 0x10
lea eax, [ebp - 0x220]
push str.Error
push eax
push dword [ebp + 8]
call dword [sym.imp.USER32.dll_MessageBoxA]
jmp 0x4018a5
push 0x7f00
push 0
call dword [sym.imp.USER32.dll_LoadCursorA]
push eax
call dword [sym.imp.USER32.dll_SetCursor]
push edi
push 0x403fb0
call ebx
push edi
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
lea eax, [ebp - 0x120]
push eax
call dword [sym.imp.KERNEL32.dll_DeleteFileA]
mov esi, 0x8000
mov eax, dword [0x4035cc]
push esi
push 0
push eax
call dword [sym.imp.KERNEL32.dll_VirtualFree]
push esi
mov eax, dword [0x4030c8]
push 0
push eax
call dword [sym.imp.KERNEL32.dll_VirtualFree]
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10