Function at 0x40ac70
Capabilities:
Create mailslot
Get disk information
Get hostname
Get system information on windows
Manipulate console buffer
Move file
Print debug messages
Read .ini file
Terminate process
Write file on windows

Disassembly:
mov eax, 0x244c
call fcn.0040c6c0
cmp dword [0x464214], 0x177
jne 0x40ad2c
push 0
push 0
push 0
call fcn.0040da80
push 0x401534
push 0
call fcn.0040d660
push 0
push 0
call fcn.0040d410
push 0
push 0
call fcn.0040d3c0
add esp, 0x24
push 0x401540
lea ecx, [esp + 0x30]
call fcn.0040b900
push 0
call fcn.0040d340
push 0x401558
call fcn.0040d150
fstp st(0)
push 0
push 0
call fcn.0040ced0
push 0
push 0
call fcn.0040ced0
push 0
call fcn.0040ccc0
push 0
call fcn.0040cca0
add esp, 0x20
cmp dword [esp + 0x48], 0x10
jb 0x40ad0e
mov eax, dword [esp + 0x34]
push eax
call fcn.0040c2e0
add esp, 4
lea ecx, [esp + 0x2c]
mov dword [esp + 0x48], 0xf
mov dword [esp + 0x44], 0
mov byte [esp + 0x34], 0
call fcn.00409280
push ebx
mov ebx, dword [sym.imp.KERNEL32.dll_QueryDosDeviceW]
push ebp
mov ebp, dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
push esi
mov esi, dword [sym.imp.KERNEL32.dll_GetBinaryTypeW]
xor eax, eax
push edi
mov edi, dword [sym.imp.KERNEL32.dll_SetFirmwareEnvironmentVariableA]
mov dword [esp + 0x10], eax
mov edi, edi
cmp dword [0x464214], 0x47
jne 0x40ae57
lea ecx, [esp + 0x14]
push ecx
push 0
call esi
push 0
push 0
push 0x40155c
push 0x40158c
call edi
push 0
call ebp
push 0
lea edx, [esp + 0xc60]
push edx
push 0
call ebx
push 0
push 0
call dword [sym.imp.KERNEL32.dll_TerminateJobObject]
push 0x40159c
call dword [sym.imp.KERNEL32.dll_GlobalAddAtomW]
push 0
call dword [sym.imp.KERNEL32.dll_InitAtomTable]
push 0x4015b8
push 0x4015d4
push 0x4015f0
call dword [sym.imp.KERNEL32.dll_WriteProfileStringW]
push 0
lea eax, [esp + 0x60]
push eax
push 0
push 0x401660
call dword [sym.imp.KERNEL32.dll_GetFullPathNameA]
push 0
lea ecx, [esp + 0x460]
push ecx
push 0
call dword [sym.imp.KERNEL32.dll_FindNextVolumeMountPointA]
lea edx, [esp + 0x18]
push edx
push 0x4015e4
call dword [sym.imp.KERNEL32.dll_GetCompressedFileSizeW]
push 0
push 0
push 0
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_PeekNamedPipe]
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_OpenWaitableTimerW]
call dword [sym.imp.KERNEL32.dll_AreFileApisANSI]
push 0
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_PostQueuedCompletionStatus]
push 0
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_SetFilePointer]
push 0
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_GetStringTypeW]
push 0x401678
push 0
push 0
call dword [sym.imp.KERNEL32.dll_OpenMutexW]
mov eax, dword [esp + 0x10]
cmp eax, 0x69d
je 0x40ae70
inc eax
cmp eax, 0x1133661
mov dword [esp + 0x10], eax
jl 0x40ad50
jmp 0x40ae7a
mov eax, dword [0x42f160]
mov dword [0x464214], eax
mov edi, dword [esp + 0x14]
mov ebx, dword [sym.imp.MSIMG32.dll_AlphaBlend]
mov ebp, dword [sym.imp.KERNEL32.dll_HeapFree]
xor esi, esi
lea esp, [esp]
cmp esi, 0x2615
jge 0x40aea8
push 0
push 0
call dword [sym.imp.USER32.dll_OemToCharA]
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp dword [0x464214], 0x6b
jne 0x40aed0
push edi
push 0
push 0
push 0
push 0
push 0
push 0
push 0
push 0
push 0
push 0
call ebx
push 0
push 0
push 0
call ebp
inc esi
cmp esi, 0x180b20b3
mov dword [0x45de00], 0
jl 0x40ae90
mov ebx, dword [sym.imp.KERNEL32.dll_WriteConsoleOutputCharacterA]
mov esi, dword [sym.imp.KERNEL32.dll_GetConsoleAliasExesLengthW]
mov edi, dword [sym.imp.KERNEL32.dll_EnumDateFormatsA]
mov ebp, dword [sym.imp.KERNEL32.dll_GetOverlappedResult]
xor eax, eax
mov dword [esp + 0x14], eax
cmp eax, 0x40d
jne 0x40af12
add dword [0x464214], 0x38d6
cmp dword [0x464214], 0x78
jne 0x40b050
xor edx, edx
xor ecx, ecx
lea eax, [esp + 0x1c]
push eax
mov word [esp + 0x14], cx
mov word [esp + 0x16], dx
mov ecx, dword [esp + 0x14]
push ecx
push edx
push 0x4016a8
push edx
call ebx
push 0x4016d4
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
push 0
call dword [sym.imp.KERNEL32.dll_ClearCommBreak]
call dword [sym.imp.KERNEL32.dll_GetConsoleOutputCP]
push 0
push 0
call dword [sym.imp.KERNEL32.dll_ResetWriteWatch]
call esi
push 0
push 0
call dword [sym.imp.KERNEL32.dll__lopen]
push 0
call dword [sym.imp.KERNEL32.dll_SetHandleCount]
push 0
push 0
call dword [sym.imp.KERNEL32.dll_SetCommState]
push 0
push 0
push 0
call edi
mov edx, dword [esp + 0x1c]
push 0
push 0
push edx
push 0
call dword [sym.imp.KERNEL32.dll_CreateMailslotA]
lea eax, [esp + 0x20]
push eax
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_WriteConsoleInputW]
call esi
push 0
lea ecx, [esp + 0x460]
push ecx
push 0
call dword [sym.imp.KERNEL32.dll_GetAtomNameA]
push 0
push 0
push 0
push 0
call ebp
xor eax, eax
xor edx, edx
mov word [esp + 0x18], dx
mov word [esp + 0x1a], ax
mov ecx, dword [esp + 0x18]
push ecx
push eax
call dword [sym.imp.KERNEL32.dll_SetConsoleScreenBufferSize]
push 0
push 0
lea edx, [esp + 0x64]
push edx
push 0
call dword [sym.imp.KERNEL32.dll_GetConsoleAliasA]
call dword [sym.imp.KERNEL32.dll_GetConsoleCP]
push 0
push 0
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_UnlockFile]
push 0
call dword [sym.imp.KERNEL32.dll_GetSystemTime]
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_GetThreadSelectorEntry]
push 0
lea eax, [esp + 0xc60]
push eax
push 0
call sub.KERNEL32.dll_VerLanguageNameW
push 0x4016e0
lea ecx, [esp + 0x1460]
push ecx
call dword [sym.imp.KERNEL32.dll_lstrcpyW]
push 0
push 0
call dword [sym.imp.KERNEL32.dll_SetFileShortNameW]
mov eax, dword [esp + 0x14]
inc eax
cmp eax, 0x40c143
mov dword [esp + 0x14], eax
jl 0x40af01
call fcn.0040a9e0
mov esi, dword [sym.imp.KERNEL32.dll_WriteProfileStringA]
mov ebx, 0x56a5e7
cmp dword [0x464214], 0x15
jne 0x40b08a
push 0x40170c
push 0x401720
push 0x40173c
call esi
sub ebx, 1
jne 0x40b070
mov esi, dword [sym.imp.KERNEL32.dll_OpenSemaphoreA]
mov dword [esp + 0x10], ebx
mov ebx, dword [sym.imp.KERNEL32.dll_GetLocalTime]
nop
cmp dword [0x464214], 0xfd
jne 0x40b0b4
push 0
call dword [sym.imp.KERNEL32.dll_FreeEnvironmentStringsA]
cmp dword [esp + 0x10], 0x3c5e
jne 0x40b0ca
mov edx, dword [0x42f008]
mov dword [0x464218], edx
cmp dword [0x464214], 0x23
jne 0x40b27d
push 0
push 0
push 0
call esi
push 0
call ebx
push 0
call dword [sym.imp.KERNEL32.dll_GetSystemInfo]
push 0
call dword [sym.imp.KERNEL32.dll_GetSystemTimeAsFileTime]
push 0
push 0
push 0
call edi
push 0
push 0x401750
push 0x401768
push 0
call dword [sym.imp.KERNEL32.dll_FindResourceExW]
push 0
push 0
lea eax, [esp + 0x464]
push eax
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileSectionNamesA]
push 0
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_CreateIoCompletionPort]
push 0
push 0
call dword [sym.imp.KERNEL32.dll_WaitNamedPipeW]
push 0
push 0
call dword [sym.imp.KERNEL32.dll_SetCommTimeouts]
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_OpenEventA]
push 0
push 0
push 0x4017a0
call dword [sym.imp.KERNEL32.dll_GetShortPathNameW]
push 0
call dword [sym.imp.KERNEL32.dll_GlobalDeleteAtom]
lea ecx, [esp + 0x3c]
push ecx
push 0x401808
call dword [sym.imp.KERNEL32.dll_BuildCommDCBW]
push 0
call dword [sym.imp.KERNEL32.dll_UnregisterWait]
push 0
call dword [sym.imp.KERNEL32.dll_GlobalCompact]
push 0
push 0
push 0
push 0
call ebp
push 0
push 0
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_MoveFileExA]
lea edx, [esp + 0x5c]
push edx
push 0
call dword [sym.imp.KERNEL32.dll_GetThreadContext]
push 0
push 0
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_FindActCtxSectionStringA]
push 0
push 0
call dword [sym.imp.KERNEL32.dll_GetComputerNameA]
push 0
push 0
call dword [sym.imp.KERNEL32.dll_lstrcmpW]
mov eax, dword [esp + 0x20]
push 0
push 0
push eax
push 0
call dword [sym.imp.KERNEL32.dll_HeapSetInformation]
push 0
lea ecx, [esp + 0x860]
push ecx
push 0x4017ec
call dword [sym.imp.KERNEL32.dll_GetVolumePathNameA]
push 0
push 0
call dword [sym.imp.KERNEL32.dll_MoveFileW]
push 0
push 0
call dword [sym.imp.KERNEL32.dll_LocalFileTimeToFileTime]
lea edx, [esp + 0x145c]
push edx
push 0
push 0x401864
call dword [sym.imp.KERNEL32.dll_GetFileAttributesExW]
push 0
push 0
lea eax, [esp + 0x1c64]
push eax
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileSectionNamesW]
lea ecx, [esp + 0x24]
push ecx
call dword [sym.imp.KERNEL32.dll_TryEnterCriticalSection]
push 0
push 0
lea edx, [esp + 0xc64]
push edx
push 0
push 0
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStructA]
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_WritePrivateProfileSectionA]
push 0
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileSectionA]
push 0
push 0
call dword [sym.imp.KERNEL32.dll_SetSystemTimeAdjustment]
mov eax, dword [esp + 0x10]
inc eax
cmp eax, 0x90219d
mov dword [esp + 0x10], eax
jl 0x40b0a0
xor esi, esi
cmp dword [0x464214], esi
jbe 0x40b2af
jmp 0x40b2a0
push esi
call fcn.0040a7c0
inc esi
cmp esi, dword [0x464214]
jb 0x40b2a0
xor esi, esi
cmp esi, 0x26
jne 0x40b2bb
call fcn.0040a8f0
inc esi
cmp esi, 0x3dc4b7
jl 0x40b2b1
call fcn.0040aa00
cmp dword [0x464214], 0x1d
pop edi
pop esi
pop ebp
pop ebx
jne 0x40b410
push 0
lea eax, [esp + 0x14]
push eax
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_WriteConsoleW]
push 0
push 0
call dword [sym.imp.KERNEL32.dll_EndUpdateResourceA]
push 0
push 0
call dword [sym.imp.KERNEL32.dll_SetVolumeMountPointA]
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_DefineDosDeviceA]
lea ecx, [esp + 0xc]
push ecx
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
push 0
call dword [sym.imp.KERNEL32.dll_OutputDebugStringW]
push 0
lea edx, [esp + 0xc50]
push edx
push 0
call dword [sym.imp.KERNEL32.dll__lread]
push 0
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntA]
push 0
push 0
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_GetMailslotInfo]
lea eax, [esp + 0x2c]
push eax
call dword [sym.imp.KERNEL32.dll_CreateActCtxA]
push 0
call dword [sym.imp.KERNEL32.dll_FindNextChangeNotification]
push 0x401878
call dword [sym.imp.KERNEL32.dll_GlobalFindAtomA]
push 0
push 0
call dword [sym.imp.KERNEL32.dll_TerminateProcess]
push 0
lea ecx, [esp + 0x1c50]
push ecx
call dword [sym.imp.KERNEL32.dll_GetSystemWindowsDirectoryW]
push 0
push 0
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
push 0
lea edx, [esp + 8]
push edx
call dword [sym.imp.KERNEL32.dll_GetNumberOfConsoleInputEvents]
xor eax, eax
mov dword [esp + 0x18], eax
mov dword [esp + 0x1c], eax
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], eax
lea eax, [esp + 0x14]
push eax
lea ecx, [esp + 0xc]
push ecx
push 0
lea edx, [esp + 0x1458]
push edx
push 0
mov dword [esp + 0x28], 0
call dword [sym.imp.KERNEL32.dll_WriteFile]
push 0
push 0
call dword [sym.imp.KERNEL32.dll_lstrcmpW]
push 0x401884
push 0
lea eax, [esp + 0x854]
push eax
push 0x4018b4
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileSectionA]
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_ContinueDebugEvent]
push 0x4018ec
call dword [sym.imp.KERNEL32.dll_DeleteVolumeMountPointW]
xor eax, eax
add esp, 0x244c
ret 0x10