Function at 0x41c3f0
Capabilities:
Get common file path
Get disk information
Get hostname
Get thread local storage value
Read .ini file
Set current directory
Terminate process
Write file on windows

Disassembly:
mov eax, 0x18f4
call fcn.00421660
push esi
xor esi, esi
cmp dword [0x45ca9c], 0x177
push edi
jne 0x41c461
push esi
push esi
push esi
push 0xa04
push 0x45c098
call fcn.00420af0
push esi
push esi
call fcn.00422c90
push esi
push esi
call fcn.00422c40
add esp, 0x24
push 1
push 3
lea ecx, [esp + 0x7c]
call fcn.0041e707
push esi
call fcn.00422bc0
push esi
call fcn.004229c0
push esi
push esi
call fcn.00422990
push esi
push esi
push esi
call fcn.00422300
add esp, 0x1c
lea ecx, [esp + 0x74]
call fcn.0041e09a
push ebx
mov ebx, dword [sym.imp.KERNEL32.dll_OpenMutexW]
push ebp
xor ebp, ebp
cmp dword [0x45ca9c], 0x47
jne 0x41c5a3
lea eax, [esp + 0x1c]
push eax
push 0x4015e0
call dword [sym.imp.KERNEL32.dll_GetBinaryTypeA]
push esi
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryW]
push esi
push esi
call sub.KERNEL32.dll_Process32NextW
lea eax, [esp + 0x24]
push eax
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
push esi
lea eax, [esp + 0x1108]
push eax
push esi
call dword [sym.imp.KERNEL32.dll_QueryDosDeviceA]
push dword [esp + 0x1c]
push esi
call dword [sym.imp.KERNEL32.dll_TerminateJobObject]
push 0x40160c
call dword [sym.imp.KERNEL32.dll_GlobalAddAtomA]
call dword [sym.imp.KERNEL32.dll_GetLogicalDrives]
push 0x401620
push 0x401630
push 0x401638
call dword [sym.imp.KERNEL32.dll_WriteProfileStringA]
push esi
lea eax, [esp + 0x908]
push eax
push esi
push esi
call dword [sym.imp.KERNEL32.dll_GetFullPathNameW]
push esi
lea eax, [esp + 0x508]
push eax
push esi
call dword [sym.imp.KERNEL32.dll_FindNextVolumeMountPointA]
lea eax, [esp + 0x18]
push eax
push 0x401670
call dword [sym.imp.KERNEL32.dll_GetCompressedFileSizeA]
xor eax, eax
mov word [esp + 0x14], ax
lea edi, [esp + 0x16]
stosw word es:[edi], ax
lea eax, [esp + 0x10]
push eax
push dword [esp + 0x18]
push esi
push esi
push esi
call dword [sym.imp.KERNEL32.dll_FillConsoleOutputCharacterA]
push esi
push esi
push esi
push esi
push esi
call dword [sym.imp.KERNEL32.dll_GetNamedPipeInfo]
push esi
push esi
lea eax, [esp + 0x10c]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpynA]
push esi
push esi
call dword [sym.imp.KERNEL32.dll_FatalAppExitW]
push esi
call dword [sym.imp.KERNEL32.dll_GetConsoleAliasesLengthA]
push esi
push esi
push esi
push esi
push esi
call dword [sym.imp.KERNEL32.dll_GetProcessTimes]
push esi
push esi
push esi
push esi
push esi
push esi
call dword [sym.imp.KERNEL32.dll_SetWaitableTimer]
call dword [sym.imp.KERNEL32.dll_AreFileApisANSI]
push esi
call dword [sym.imp.KERNEL32.dll_FindClose]
push esi
call dword [sym.imp.KERNEL32.dll_CancelDeviceWakeupRequest]
push esi
push esi
push esi
push esi
call dword [sym.imp.KERNEL32.dll_SignalObjectAndWait]
push esi
push esi
push esi
call dword [sym.imp.KERNEL32.dll_GlobalReAlloc]
push 0x401674
push esi
push esi
call ebx
cmp ebp, 0x69d
je 0x41c5ba
inc ebp
cmp ebp, 0x1133661
jl 0x41c46b
jmp 0x41c5c4
mov eax, dword [0x44c690]
mov dword [0x45ca9c], eax
xor edi, edi
cmp edi, 0x5e3
jge 0x41c5d5
push esi
call dword [sym.imp.KERNEL32.dll_SetLastError]
cmp dword [0x45ca9c], 0x6b
jne 0x41c5e7
push esi
push esi
push esi
call dword [sym.imp.KERNEL32.dll_HeapFree]
cmp edi, 0x26f25
mov dword [0x45c088], esi
jle 0x41c631
cmp dword [esp + 0x10], 0xdfe68a
je 0x41c631
cmp dword [esp + 0x60], 0xdf59ea
je 0x41c631
cmp dword [0x45ca9c], 0xfc5
jne 0x41c631
lea eax, [esp + 0x10]
push eax
lea eax, [esp + 0x908]
push eax
call dword [sym.imp.KERNEL32.dll_GetComputerNameW]
push 0x4016ac
push esi
push esi
call ebx
inc edi
cmp edi, 0x17635b17
jl 0x41c5c6
pop ebp
xor edi, edi
pop ebx
cmp edi, 0x3fa
jne 0x41c650
add dword [0x45ca9c], 0x12336
cmp dword [0x45ca9c], 0x65
jne 0x41c6ed
push esi
call dword [sym.imp.KERNEL32.dll_TlsGetValue]
push 0x4016c0
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
push esi
push esi
call dword [sym.imp.KERNEL32.dll_GetNumberOfConsoleInputEvents]
push esi
call dword [sym.imp.KERNEL32.dll_FreeEnvironmentStringsA]
push esi
push esi
push esi
push esi
push esi
push esi
call dword [sym.imp.KERNEL32.dll_GetWriteWatch]
push esi
push esi
call dword [sym.imp.KERNEL32.dll_GetDevicePowerState]
push esi
push esi
push esi
call dword [sym.imp.KERNEL32.dll_EnumDateFormatsA]
call dword [sym.imp.KERNEL32.dll_GetConsoleAliasExesLengthW]
push esi
push esi
lea eax, [esp + 0x904]
push eax
push esi
call dword [sym.imp.KERNEL32.dll_GetConsoleAliasW]
call dword [sym.imp.KERNEL32.dll_GetConsoleCP]
push esi
push esi
push esi
push esi
push esi
call dword [sym.imp.KERNEL32.dll_LockFile]
push esi
lea eax, [esp + 0x100]
push eax
push esi
call sub.KERNEL32.dll_VerLanguageNameA
push 0x4016c8
lea eax, [esp + 0x500]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
push esi
push esi
call dword [sym.imp.KERNEL32.dll_SetFileShortNameW]
inc edi
cmp edi, 0x485ceb
jl 0x41c63e
call fcn.0041c191
mov edi, 0x56a5e7
cmp dword [0x45ca9c], 0x105
jne 0x41c717
push esi
call dword [sym.imp.KERNEL32.dll_SetThreadLocale]
dec edi
jne 0x41c704
cmp dword [0x45ca9c], 0xfd
jne 0x41c72d
push esi
call dword [sym.imp.KERNEL32.dll_FreeEnvironmentStringsW]
cmp edi, 0x3c58
jne 0x41c73f
mov eax, dword [0x445008]
mov dword [0x45caa0], eax
cmp dword [0x45ca9c], 0x23
jne 0x41c7e9
push 0x4016ec
push esi
push esi
push esi
call dword [sym.imp.KERNEL32.dll_CreateSemaphoreA]
push esi
call dword [sym.imp.KERNEL32.dll_GetLocalTime]
push esi
push 0x401710
push 0x401750
push esi
call dword [sym.imp.KERNEL32.dll_FindResourceExW]
push esi
push esi
lea eax, [esp + 0x10]
push eax
push esi
call dword [sym.imp.KERNEL32.dll_CreateIoCompletionPort]
push esi
push esi
push esi
push esi
call dword [sym.imp.KERNEL32.dll_CreateSemaphoreW]
push esi
push esi
push esi
push esi
call dword [sym.imp.KERNEL32.dll_GetTapeParameters]
lea eax, [esp + 0x10]
push eax
push esi
lea eax, [esp + 0x24]
push eax
push esi
call dword [sym.imp.KERNEL32.dll_PeekConsoleInputA]
push esi
push esi
push esi
push esi
call dword [sym.imp.KERNEL32.dll_GetOverlappedResult]
push esi
push esi
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
push esi
call dword [sym.imp.KERNEL32.dll_HeapLock]
lea eax, [esp + 0x4c]
push eax
call dword [sym.imp.KERNEL32.dll_TryEnterCriticalSection]
push 0x40179c
push esi
lea eax, [esp + 0x104]
push eax
push 0x4017b0
push 0x4017bc
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStructA]
inc edi
cmp edi, 0xe6a95
jl 0x41c71a
xor edi, edi
cmp dword [0x45ca9c], esi
jbe 0x41c80f
push edi
call fcn.0041a401
inc edi
cmp edi, dword [0x45ca9c]
jb 0x41c800
xor edi, edi
cmp edi, 0x26
jne 0x41c81b
call fcn.0041a556
inc edi
cmp edi, 0x3dc4b7
jl 0x41c811
call fcn.0041c1a5
cmp dword [0x45ca9c], 0x1d
jne 0x41c931
push esi
lea eax, [esp + 0xc]
push eax
push esi
push esi
push esi
call dword [sym.imp.KERNEL32.dll_WriteConsoleA]
push esi
push esi
call dword [sym.imp.KERNEL32.dll_EndUpdateResourceA]
push esi
push esi
push esi
call dword [sym.imp.KERNEL32.dll_DefineDosDeviceW]
lea eax, [esp + 0x44]
push eax
lea eax, [esp + 0x40]
push eax
call dword [sym.imp.KERNEL32.dll_LocalFileTimeToFileTime]
push esi
lea eax, [esp + 0x14]
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedExchange]
push esi
push esi
push esi
push esi
push esi
call dword [sym.imp.KERNEL32.dll_GetMailslotInfo]
lea eax, [esp + 0x4c]
push eax
call dword [sym.imp.KERNEL32.dll_CreateActCtxW]
push esi
lea eax, [esp + 0x900]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcatW]
lea eax, [esp + 0x34]
push eax
push esi
push esi
call dword [sym.imp.KERNEL32.dll_GetThreadSelectorEntry]
push esi
push esi
call dword [sym.imp.KERNEL32.dll_TerminateProcess]
push esi
lea eax, [esp + 0x1100]
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemWow64DirectoryW]
push esi
lea eax, [esp + 0x18]
push eax
call dword [sym.imp.KERNEL32.dll_GetConsoleMode]
xor eax, eax
mov dword [esp + 0x1c], esi
lea edi, [esp + 0x20]
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
lea eax, [esp + 0x1c]
push eax
lea eax, [esp + 0x1c]
push eax
push esi
lea eax, [esp + 0x108]
push eax
push esi
call dword [sym.imp.KERNEL32.dll_WriteFile]
push 0x4017d0
push 0x401824
call dword [sym.imp.KERNEL32.dll_lstrcmpW]
push 0x40184c
push esi
lea eax, [esp + 0x504]
push eax
push 0x401864
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileSectionA]
call dword [sym.imp.KERNEL32.dll_DebugBreak]
lea eax, [esp + 0xc]
push eax
push esi
push 0x401888
push esi
push esi
call dword [sym.imp.KERNEL32.dll_GetStringTypeExW]
pop edi
xor eax, eax
pop esi
add esp, 0x18f4
ret 0x10