Function at 0x80f040
Capabilities:
Copy file
Delete file
Get common file path
Get file attributes
Manipulate console buffer
Move file
Query environment variable
Read .ini file
Terminate process

Disassembly:
push ebp
mov ebp, esp
and esp, 0xffffffc0
push 0xffffffffffffffff
push 0x81022c
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x34
mov eax, 0x22f0
call fcn.004132d0
push ebx
mov ebx, dword [esp + 0x20]
push ebp
mov ebp, dword [esp + 0xec]
push esi
push edi
mov edi, dword [sym.imp.KERNEL32.dll_GetLastError]
xor esi, esi
cmp esi, 0x2cdb4
jge 0x80f091
push 0
call dword [sym.imp.KERNEL32.dll_SetLastError]
call edi
cmp dword [0xb9a114], 0x6fb
jne 0x80f0a9
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_AddConsoleAliasW]
cmp esi, 0x1e9afa00
jle 0x80f0c1
cmp ebx, 0xc10c66
je 0x80f0c1
cmp ebp, 0x952d5ac
jne 0x80f0ca
inc esi
cmp esi, 0x80c48
jl 0x80f07f
cmp dword [0xb9a114], 0xcf8
jne 0x80f26b
push 0
call fcn.00407949
add esp, 4
xor ebp, ebp
push ebp
push ebp
call fcn.0040780d
add esp, 8
lea eax, [esp + 0x48]
push eax
call fcn.00405810
fldz
sub esp, 0x10
fst qword [esp + 8]
fstp qword [esp]
call fcn.00407a10
fstp st(0)
push ebp
push ebp
call fcn.00407909
push ebp
push ebp
call fcn.00407909
push ebp
call fcn.00407a48
add esp, 0x24
push ebp
call fcn.00407b2e
add esp, 4
push ebp
push ebp
push ebp
push ebp
push ebp
call fcn.00407508
mov edx, dword [esp + 0x5c]
mov eax, dword [edx + 4]
lea ecx, [esp + 0xb4]
add esp, 0x14
mov dword [esp + 0x30], ecx
mov dword [esp + eax + 0x48], 0x4043d4
mov dword [esp + 0x233c], ebp
test byte [esp + 0x98], 1
lea ecx, [esp + 0x58]
mov dword [esp + 0x38], ecx
mov dword [esp + 0x58], 0x404394
je 0x80f184
mov edx, dword [esp + 0x68]
mov eax, dword [edx]
push eax
call fcn.00407a3d
add esp, 4
mov eax, dword [esp + 0x68]
mov dword [eax], ebp
mov ecx, dword [esp + 0x78]
mov dword [ecx], ebp
mov edx, dword [esp + 0x88]
mov dword [edx], ebp
mov eax, dword [esp + 0x6c]
mov dword [eax], ebp
mov ecx, dword [esp + 0x7c]
mov dword [ecx], ebp
mov edx, dword [esp + 0x8c]
mov dword [edx], ebp
and dword [esp + 0x98], 0xfffffffe
mov dword [esp + 0x94], ebp
mov dword [esp + 0x58], 0x40434c
mov byte [esp + 0x233c], 1
mov eax, dword [esp + 0x90]
mov ebx, eax
cmp eax, ebp
je 0x80f225
mov edi, dword [eax]
cmp edi, ebp
je 0x80f21c
push ebp
lea ecx, [esp + 0x30]
call fcn.00406ca2
mov eax, dword [edi + 4]
cmp eax, ebp
jbe 0x80f1fa
cmp eax, 0xffffffff
jae 0x80f1fa
dec eax
mov dword [edi + 4], eax
mov esi, dword [edi + 4]
neg esi
sbb esi, esi
not esi
lea ecx, [esp + 0x2c]
and esi, edi
call fcn.00406cca
cmp esi, ebp
je 0x80f21c
mov eax, dword [esi]
mov edx, dword [eax]
push 1
mov ecx, esi
call edx
push ebx
call fcn.00407a3d
add esp, 4
lea ecx, [esp + 0x5c]
mov byte [esp + 0x233c], 0
call fcn.00406cfb
mov dword [esp + 0x233c], 0xffffffff
mov eax, dword [esp + 0x48]
mov ecx, dword [eax + 4]
lea edx, [esp + 0xa0]
mov dword [esp + ecx + 0x48], 0x40438c
push edx
mov dword [esp + 0xa4], 0x40433c
call fcn.004068ae
add esp, 4
mov edi, dword [sym.imp.KERNEL32.dll_FindNextVolumeMountPointA]
xor esi, esi
cmp esi, 0x408
jne 0x80f286
mov eax, 0x5d1
add dword [0xb9a114], eax
cmp dword [0xb9a114], 3
jne 0x80f29d
push 0
push 0
lea eax, [esp + 0x308]
push eax
call edi
inc esi
cmp esi, 0x1518d4
jl 0x80f273
mov ecx, dword [0xb9a114]
push ecx
push 0
call dword [sym.imp.KERNEL32.dll_LocalAlloc]
mov dword [0x81b164], eax
mov eax, dword [0xb9a114]
xor esi, esi
test eax, eax
je 0x80f30d
mov ebx, dword [sym.imp.KERNEL32.dll_GetWindowsDirectoryW]
mov edi, dword [sym.imp.KERNEL32.dll_GetConsoleAliasA]
cmp eax, 0xfe
jne 0x80f2e4
push 0
lea edx, [esp + 0x304]
push edx
call ebx
call fcn.0080ebb0
mov eax, dword [0xb9a114]
cmp eax, 0x29
jne 0x80f308
push 0
push 0
lea eax, [esp + 0x308]
push eax
push 0
call edi
mov eax, dword [0xb9a114]
inc esi
cmp esi, eax
jb 0x80f2d1
cmp eax, 0x70
jne 0x80f3ea
push 0
push 0
call dword [sym.imp.KERNEL32.dll_EnumSystemLocalesA]
push 0
push 0x404150
push 0
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_CompareStringA]
lea ecx, [esp + 0x1b00]
push ecx
push 0
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryW]
push 0
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_GetStringTypeW]
push 0
lea edx, [esp + 0xb04]
push edx
call dword [sym.imp.KERNEL32.dll_GetConsoleAliasExesW]
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_SetCommConfig]
call dword [sym.imp.KERNEL32.dll_GetUserDefaultLCID]
push 0
lea eax, [esp + 0x304]
push eax
push 0
call dword [sym.imp.KERNEL32.dll__hread]
push 0
push 0
call dword [sym.imp.KERNEL32.dll_MoveFileA]
call dword [sym.imp.KERNEL32.dll_GetEnvironmentStrings]
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_SetLocaleInfoA]
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_CopyFileW]
push 0
push 0
call dword [sym.imp.KERNEL32.dll_SetConsoleCtrlHandler]
push 0
push 0
call dword [sym.imp.KERNEL32.dll_AddVectoredExceptionHandler]
push 0
push 0
lea ecx, [esp + 0x1308]
push ecx
call dword [sym.imp.KERNEL32.dll_GetConsoleAliasesW]
call dword [sym.imp.KERNEL32.dll_SetFileApisToANSI]
push 0
push 0
call dword [sym.imp.KERNEL32.dll_EnumSystemLocalesW]
mov eax, dword [0xb9a114]
mov edi, dword [sym.imp.KERNEL32.dll_OpenSemaphoreA]
mov ebp, dword [sym.imp.KERNEL32.dll_ReadConsoleOutputCharacterW]
mov esi, dword [sym.imp.KERNEL32.dll_WriteConsoleInputA]
mov ebx, dword [sym.imp.KERNEL32.dll_GetCurrentConsoleFont]
mov dword [esp + 0x2c], 0x9682ab
lea ebx, [ebx]
cmp eax, 3
jne 0x80f43e
push 0x404164
push 0
lea edx, [esp + 0x308]
push edx
push 0x404170
push 0x404180
push 0x4041ac
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
mov eax, dword [0xb9a114]
cmp eax, 0xdf
jne 0x80f53e
push 0
push 0
push 0
call edi
xor eax, eax
lea edx, [esp + 0x38]
push edx
push eax
push eax
lea ecx, [esp + 0x130c]
push ecx
push eax
mov dword [esp + 0x44], eax
call ebp
lea edx, [esp + 0x3c]
push edx
push 0
push 0
push 0
call esi
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_AddConsoleAliasW]
push 0
push 0
push 0
call ebx
push 0
call dword [sym.imp.KERNEL32.dll_DeleteFileW]
lea eax, [esp + 0x34]
push eax
push 0
push 0
push 0
call esi
push 0
push 0
call dword [sym.imp.KERNEL32.dll_ResetWriteWatch]
push 0
push 0x4041c8
call dword [sym.imp.KERNEL32.dll_WaitNamedPipeW]
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
push 0
push 0
push 0
push 0x40422c
push 0x404248
call dword [sym.imp.KERNEL32.dll_MoveFileWithProgressA]
push 0
push 0
call dword [sym.imp.KERNEL32.dll_EnumSystemCodePagesA]
lea ecx, [esp + 0x40]
push ecx
call dword [sym.imp.KERNEL32.dll_QueryPerformanceFrequency]
push 0
push 0
call dword [sym.imp.KERNEL32.dll_SetCommState]
push 0
call dword [sym.imp.KERNEL32.dll_GlobalFree]
push 0
lea edx, [esp + 0xb04]
push edx
push 0
call dword [sym.imp.KERNEL32.dll_FindNextVolumeMountPointW]
push 0
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
push 0
push 0
call dword [sym.imp.KERNEL32.dll_EnumSystemLocalesW]
push 0
push 0
call dword [sym.imp.KERNEL32.dll_IsWow64Process]
lea eax, [esp + 0x1b00]
push eax
push 0
call dword [sym.imp.KERNEL32.dll_GetTempPathW]
mov eax, dword [0xb9a114]
dec dword [esp + 0x2c]
jne 0x80f410
mov edi, dword [sym.imp.USER32.dll_CharUpperA]
mov esi, 0x1ff896f4
push 0
call edi
push 0
call dword [sym.imp.KERNEL32.dll_SetLastError]
dec esi
jne 0x80f553
mov byte [0x8163d0], 0
call fcn.0080eac0
call fcn.0080ee50
mov eax, 0
add dword [0x81b164], eax
push 0x8163d0
mov dword [0x8163d2], 0x33676d69
mov word [0x8163d0], 0x736d
mov dword [0x8163d8], 0x6c6c64
mov word [0x8163d6], 0x2e32
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
cmp dword [0xb9a114], 0xc30
jne 0x80f66d
push esi
call dword [sym.imp.KERNEL32.dll_SetConsoleCP]
push esi
push esi
call dword [sym.imp.KERNEL32.dll_TerminateProcess]
lea ecx, [esp + 0x1c0]
push ecx
push esi
call dword [sym.imp.KERNEL32.dll_FindFirstFileA]
push esi
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
push esi
call dword [sym.imp.KERNEL32.dll_CreateActCtxW]
push esi
lea edx, [esp + 0x38]
push edx
push esi
lea eax, [esp + 0x30c]
push eax
push esi
call dword [sym.imp.KERNEL32.dll_ReadConsoleA]
push esi
call dword [sym.imp.KERNEL32.dll_GlobalFindAtomA]
push 0x4042a0
call dword [sym.imp.KERNEL32.dll_lstrlenA]
push esi
push esi
push esi
push esi
call dword [sym.imp.KERNEL32.dll_CreateEventA]
push esi
lea ecx, [esp + 0x1304]
push ecx
push 0x4042b8
call dword [sym.imp.KERNEL32.dll_ExpandEnvironmentStringsW]
lea edx, [esp + 0x40]
push edx
push esi
call dword [sym.imp.KERNEL32.dll_GetNumaNodeProcessorMask]
push esi
lea eax, [esp + 0xb04]
push eax
push 0x404308
call dword [sym.imp.KERNEL32.dll_GetShortPathNameW]
lea ecx, [esp + 0x110]
push ecx
call dword [sym.imp.KERNEL32.dll_GetTimeZoneInformation]
mov edx, dword [esp + 0x34]
push esi
push esi
push esi
push edx
call dword [sym.imp.KERNEL32.dll_GetTapeParameters]
mov ecx, dword [esp + 0x2334]
pop edi
xor eax, eax
mov dword fs:[0], ecx
pop esi
pop ebp
pop ebx
mov esp, ebp
pop ebp
ret