Function at 0x40dc20
Capabilities:
Accept command line arguments
Get common file path
Get disk information
Get hostname
Identify system language via api
Manipulate console buffer
Move file
Read .ini file
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x412486
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
push ecx
mov eax, 0x29b8
call fcn.0040d010
push ebx
mov ebx, dword [sym.imp.USER32.dll_CharUpperBuffW]
push ebp
mov ebp, dword [sym.imp.KERNEL32.dll_GetLastError]
push esi
push edi
mov edi, dword [sym.imp.USER32.dll_CharUpperW]
xor esi, esi
cmp esi, 0x21739
jge 0x40dc72
push 0
call edi
push 0
push 0
call ebx
call ebp
cmp esi, 0x1e989172
jle 0x40dc8e
cmp dword [esp + 0x14], 0xae4220
je 0x40dc8e
cmp dword [esp + 0x4c], 0x873c0b0
jne 0x40dc97
inc esi
cmp esi, 0x95c23e20
jb 0x40dc5e
cmp dword [0x2f296fc], 0x520
jne 0x40de48
push 0
push 0
push 0
push 0
call dword [sym.imp.WINHTTP.dll_WinHttpGetProxyForUrl]
xor ebp, ebp
cmp dword [0x2f296fc], 0x3a
jne 0x40dcc8
push ebp
push ebp
call dword [sym.imp.KERNEL32.dll_VirtualUnlock]
push ebp
call fcn.0040d7d8
add esp, 4
lea eax, [esp + 0x40]
push eax
call fcn.00404520
mov esi, 0x403514
push ebp
mov dword [esp + 0x44], esi
mov dword [esp + 0x80], ebp
mov dword [esp + 0x84], ebp
call fcn.0040546b
add esp, 4
push ebp
call fcn.00404f34
add esp, 4
push 0x4032e8
push 0x4032ec
push 0x821970
call fcn.00404aec
add esp, 0xc
push ebp
push ebp
call fcn.00404ef4
push ebp
call fcn.00404eba
add esp, 0xc
push ebp
push ebp
call fcn.0040555b
push ebp
call fcn.00405533
add esp, 0xc
push ebp
push ebp
push ebp
push ebp
call fcn.00404d4c
push ebp
push ebp
push ebp
call fcn.004051f3
add esp, 0x1c
push ebp
push ebp
push ebp
push ebp
call fcn.0040521e
push ebp
push ebp
push ebp
call fcn.0040523b
add esp, 0x1c
push ebp
push ebp
call fcn.0040548d
push ebp
call fcn.00404ea4
add esp, 0xc
push ebp
push ebp
push ebp
push ebp
call fcn.00405321
add esp, 0x10
test byte [esp + 0x80], 1
mov dword [esp + 0x40], esi
je 0x40dd9c
mov ecx, dword [esp + 0x50]
mov eax, dword [ecx]
push eax
call fcn.00405482
add esp, 4
mov edx, dword [esp + 0x50]
mov dword [edx], ebp
mov eax, dword [esp + 0x60]
mov dword [eax], ebp
mov ecx, dword [esp + 0x70]
mov dword [ecx], ebp
mov edx, dword [esp + 0x54]
mov dword [edx], ebp
mov eax, dword [esp + 0x64]
mov dword [eax], ebp
mov ecx, dword [esp + 0x74]
mov dword [ecx], ebp
and dword [esp + 0x80], 0xfffffffe
mov dword [esp + 0x7c], ebp
mov dword [esp + 0x40], 0x4034d4
mov dword [esp + 0x29d4], 1
mov eax, dword [esp + 0x78]
mov ebx, eax
cmp eax, ebp
je 0x40de34
mov edi, dword [eax]
cmp edi, ebp
je 0x40de2b
push ebp
lea ecx, [esp + 0x18]
call fcn.004046c3
mov eax, dword [edi + 4]
cmp eax, ebp
jbe 0x40de09
cmp eax, 0xffffffff
jae 0x40de09
dec eax
mov dword [edi + 4], eax
mov esi, dword [edi + 4]
neg esi
sbb esi, esi
not esi
lea ecx, [esp + 0x14]
and esi, edi
call fcn.004046eb
cmp esi, ebp
je 0x40de2b
mov edx, dword [esi]
mov eax, dword [edx]
push 1
mov ecx, esi
call eax
push ebx
call fcn.00405482
add esp, 4
lea ecx, [esp + 0x44]
mov dword [esp + 0x29d4], 0xffffffff
call fcn.0040471c
mov eax, 0x39ee
add dword [0x2f296fc], eax
mov ecx, dword [0x2f296fc]
push ecx
push 0
call dword [sym.imp.KERNEL32.dll_GlobalAlloc]
mov esi, dword [sym.imp.KERNEL32.dll_MoveFileW]
mov edi, dword [sym.imp.KERNEL32.dll_ReadConsoleOutputCharacterW]
mov ebp, dword [sym.imp.KERNEL32.dll_BuildCommDCBAndTimeoutsA]
mov ebx, dword [sym.imp.KERNEL32.dll_GetFileType]
mov dword [0x2f1f6a4], eax
mov eax, dword [0x2f296fc]
mov dword [esp + 0x14], 0x96828d
lea esp, [esp]
cmp eax, 3
jne 0x40dea0
push 0
push 0
call esi
mov eax, dword [0x2f296fc]
cmp eax, 0xdf
jne 0x40dfec
xor edx, edx
lea ecx, [esp + 0x24]
push ecx
push edx
push edx
lea eax, [esp + 0x9d4]
push eax
push edx
mov dword [esp + 0x2c], edx
call edi
xor eax, eax
lea ecx, [esp + 0x2c]
push ecx
lea edx, [esp + 0x44]
push edx
push eax
mov dword [esp + 0x38], eax
mov dword [esp + 0x3c], eax
mov dword [esp + 0x40], eax
mov dword [esp + 0x44], eax
mov dword [esp + 0x48], eax
call ebp
push 0
call ebx
push 0
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_CreateIoCompletionPort]
call dword [sym.imp.KERNEL32.dll_AllocConsole]
lea eax, [esp + 0x20]
push eax
push 0
call dword [sym.imp.KERNEL32.dll_GetCompressedFileSizeW]
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_EnumDateFormatsW]
push 0
push 0x4032f4
call dword [sym.imp.KERNEL32.dll_WaitNamedPipeA]
lea ecx, [esp + 0x28]
push ecx
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
push 0
lea edx, [esp + 0x19cc]
push edx
call dword [sym.imp.KERNEL32.dll_FindFirstVolumeW]
push 0
call dword [sym.imp.KERNEL32.dll_DeleteVolumeMountPointA]
push 0
push 0
call dword [sym.imp.KERNEL32.dll_LocalAlloc]
push 0
lea eax, [esp + 0x1cc]
push eax
push 0
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_GetNumberFormatA]
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_HeapFree]
push 0x403300
push 0
call dword [sym.imp.KERNEL32.dll_SetFileShortNameW]
push 0x403310
push 0x403340
call esi
push 0
push 0
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryW]
push 0
lea ecx, [esp + 0x5cc]
push ecx
push 0
call dword [sym.imp.KERNEL32.dll_GetShortPathNameA]
push 0
call dword [sym.imp.KERNEL32.dll_GetConsoleAliasesLengthA]
push 0
push 0
call dword [sym.imp.KERNEL32.dll_EnumSystemLocalesA]
lea edx, [esp + 0x1c]
push edx
lea eax, [esp + 0x11cc]
push eax
call dword [sym.imp.KERNEL32.dll_GetComputerNameW]
push 0
call dword [sym.imp.KERNEL32.dll_SetLastError]
push 0
lea ecx, [esp + 0x21cc]
push ecx
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryW]
mov eax, dword [0x2f296fc]
dec dword [esp + 0x14]
jne 0x40de90
xor esi, esi
test eax, eax
je 0x40e04c
mov edi, dword [sym.imp.KERNEL32.dll__llseek]
mov ebx, dword [sym.imp.KERNEL32.dll__lclose]
mov ebp, dword [sym.imp.KERNEL32.dll_FoldStringW]
cmp eax, 0xfe
jne 0x40e03d
push 0
push 0
push 0
call edi
push 0
call ebx
push 0
lea edx, [esp + 0x21cc]
push edx
push 0
push 0
push 0
call ebp
push 0
push 0
call dword [sym.imp.KERNEL32.dll_FatalAppExitW]
call fcn.0040d8d0
mov eax, dword [0x2f296fc]
inc esi
cmp esi, eax
jb 0x40e00e
cmp eax, 0x584
jne 0x40e178
push 0
lea eax, [esp + 0x20]
push eax
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_ReadConsoleA]
mov edi, dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
lea ecx, [esp + 0x28]
push ecx
call edi
push 0
call dword [sym.imp.KERNEL32.dll_AddAtomW]
mov esi, dword [sym.imp.KERNEL32.dll_GetUserDefaultLangID]
call esi
lea edx, [esp + 0x5c8]
push edx
push 0
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryA]
lea eax, [esp + 0x18]
push eax
push 0
push 0x4033b0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_GetStringTypeExW]
push 0
call dword [sym.imp.KERNEL32.dll_lstrlenW]
push 0
lea ecx, [esp + 0x1cc]
push ecx
call dword [sym.imp.KERNEL32.dll_GetConsoleAliasExesA]
push 0
push 0
call dword [sym.imp.KERNEL32.dll_TerminateJobObject]
call esi
push 0
push 0
call dword [sym.imp.KERNEL32.dll_EnumSystemLocalesW]
mov esi, dword [sym.imp.KERNEL32.dll_FreeEnvironmentStringsW]
push 0
call esi
lea edx, [esp + 0x20]
push edx
call edi
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_MoveFileExA]
push 0
call esi
lea eax, [esp + 0x24]
push eax
push 0
lea ecx, [esp + 0x34]
push ecx
push 0
call dword [sym.imp.KERNEL32.dll_ReadConsoleInputW]
push 0
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntA]
push 0x4033f4
lea edx, [esp + 0x11cc]
push edx
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
push 0
push 0
lea eax, [esp + 0x19d0]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpynA]
push 0
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_SetCalendarInfoW]
push 0
lea ecx, [esp + 0x9cc]
push ecx
push 0x40342c
call dword [sym.imp.KERNEL32.dll_GetVolumeNameForVolumeMountPointA]
push 0
push 0
call dword [sym.imp.KERNEL32.dll_GetFileInformationByHandle]
push 0
call dword [sym.imp.KERNEL32.dll_GetConsoleAliasesLengthA]
mov esi, 0x8dc
push 0
call dword [sym.imp.KERNEL32.dll_SetLastError]
dec esi
jne 0x40e17d
mov byte [0x821970], 0
call fcn.0040d7f0
call fcn.0040dbf0
mov edi, dword [sym.imp.GDI32.dll_GetCharWidthFloatA]
nop
cmp dword [0x2f296fc], 0xba
jne 0x40e1b6
push 0
push 0
push 0
push 0
call edi
cmp esi, 0x2f64
jne 0x40e1c8
add dword [0x2f1f6a4], 0
inc esi
cmp esi, 0x46d9a
jl 0x40e1a0
call fcn.0040da10
cmp dword [0x2f296fc], 0xc30
jne 0x40e23b
lea edx, [esp + 0x88]
push edx
push 0
call dword [sym.imp.KERNEL32.dll_FindNextFileA]
push 0x403438
call dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
push 0x403440
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
call dword [sym.imp.KERNEL32.dll_GetCommandLineW]
lea eax, [esp + 0x1c]
push eax
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_ReadConsoleInputA]
push 0
lea ecx, [esp + 0x9cc]
push ecx
push 0x403470
push 0x4034b0
push 0
call dword [sym.imp.KERNEL32.dll_GetProfileStringA]
mov ecx, dword [esp + 0x29cc]
pop edi
xor eax, eax
mov dword fs:[0], ecx
pop esi
pop ebp
pop ebx
mov esp, ebp
pop ebp
ret