Function at 0x403b82
Capabilities:
Get disk information
Get disk size
Move file
Query environment variable
Read .ini file
Set console window title
Terminate thread

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x98c
push ebx
push esi
xor ebx, ebx
xor esi, esi
cmp esi, 0x1c874
jge 0x403ba6
push ebx
call dword [sym.imp.KERNEL32.dll_SetLastError]
call dword [sym.imp.KERNEL32.dll_GetTickCount]
cmp esi, 0x1e9d5e48
jle 0x403bc0
cmp dword [ebp - 4], 0xad5cf8
je 0x403bc0
cmp dword [ebp - 0x64], 0xad64abc
jne 0x403bc9
inc esi
cmp esi, 0x8e2a8a27
jb 0x403b91
push edi
mov edi, dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
xor esi, esi
cmp esi, 0x420
jne 0x403be5
mov eax, 0x38d6
add dword [0x59f260], eax
cmp dword [0x59f260], 0x3fe
jne 0x403bf4
push ebx
call edi
inc esi
cmp esi, 0x40dece
jl 0x403bd2
call fcn.00403b6e
xor esi, esi
cmp dword [0x59f260], ebx
jbe 0x403c34
push esi
call fcn.004038e3
cmp dword [0x59f260], 0x1f
jne 0x403c2b
call dword [sym.imp.KERNEL32.dll_GetEnvironmentStringsW]
lea eax, [ebp - 4]
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
inc esi
cmp esi, dword [0x59f260]
jb 0x403c0c
mov esi, dword [sym.imp.KERNEL32.dll_EnumCalendarInfoW]
mov dword [ebp - 4], 0x5aedb1f
cmp dword [0x59f260], 0x2d5
jne 0x403ca4
call dword [sym.imp.KERNEL32.dll_GetConsoleAliasExesLengthA]
push ebx
push ebx
push ebx
push ebx
call esi
push ebx
push ebx
lea eax, [ebp - 0xc]
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedCompareExchange]
push ebx
push ebx
lea eax, [ebp - 0x58c]
push eax
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStructW]
push 0x4014bc
call dword [sym.imp.KERNEL32.dll_SetConsoleTitleA]
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_InterlockedExchange]
push ebx
push ebx
push ebx
push ebx
call esi
lea eax, [ebp - 0x14]
push eax
push ebx
call dword [sym.imp.KERNEL32.dll_GetDevicePowerState]
lea eax, [ebp - 0x48]
push eax
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
dec dword [ebp - 4]
jne 0x403c41
mov dword [ebp - 4], ebx
mov esi, 0x447da8
cmp dword [0x59f260], 0x92
jne 0x403cc4
push 0x4014d0
call edi
cmp dword [ebp - 4], 0xa9a9
jne 0x403cd5
push esi
call edi
mov dword [0x59d6dc], eax
inc dword [ebp - 4]
cmp dword [ebp - 4], 0x25563
jl 0x403cb1
push esi
push dword [0x59d6dc]
mov byte [0x447da8], bl
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x447da4], eax
xor esi, esi
cmp esi, 0x1c
jne 0x403d05
call fcn.00403a70
inc esi
cmp esi, 0x3debc7
jl 0x403cfb
push 0x416010
push dword [0x59f260]
push dword [0x599bdc]
call fcn.00403854
xor esi, esi
cmp dword [0x59f260], 0x10
jne 0x403d36
push ebx
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
cmp esi, 0x1e674
jne 0x403d43
call fcn.00403a62
inc esi
cmp esi, 0x3e4e2
jl 0x403d26
call fcn.0040364c
cmp dword [0x59f260], 0x1144
jne 0x403de5
push ebx
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_FindNextVolumeW]
lea eax, [ebp - 0x48]
push eax
call dword [sym.imp.KERNEL32.dll_InitializeCriticalSection]
push 0x4014e0
call edi
lea eax, [ebp - 0x68]
push eax
call dword [sym.imp.KERNEL32.dll_ZombifyActCtx]
mov esi, dword [sym.imp.KERNEL32.dll_SearchPathA]
push ebx
push ebx
push ebx
push ebx
push ebx
push ebx
call esi
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_CancelTimerQueueTimer]
push ebx
push ebx
push ebx
lea eax, [ebp - 0x18c]
push eax
call dword [sym.imp.KERNEL32.dll_VerifyVersionInfoW]
push ebx
lea eax, [ebp - 0x14]
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedExchangeAdd]
push ebx
call dword [sym.imp.KERNEL32.dll_InterlockedIncrement]
lea eax, [ebp - 0xc]
push eax
lea eax, [ebp - 0x58c]
push eax
push ebx
push 0x4014f4
push 0x401500
push 0x401520
call esi
push ebx
push ebx
push ebx
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_MoveFileWithProgressW]
cmp dword [0x59f260], 0x1d
pop edi
jne 0x403ea5
push ebx
call dword [sym.imp.KERNEL32.dll_GlobalFindAtomW]
push ebx
call dword [sym.imp.KERNEL32.dll_LoadLibraryW]
push ebx
push ebx
push ebx
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_MoveFileWithProgressA]
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_SetProcessAffinityMask]
call dword [sym.imp.KERNEL32.dll_GetOEMCP]
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_SetVolumeMountPointA]
lea eax, [ebp - 0x18]
push eax
lea eax, [ebp - 0x10]
push eax
lea eax, [ebp - 8]
push eax
push ebx
call dword [sym.imp.KERNEL32.dll_GetDiskFreeSpaceExA]
push ebx
call dword [sym.imp.KERNEL32.dll_SetThreadUILanguage]
push ebx
push ebx
push ebx
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_GetMailslotInfo]
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_ResetWriteWatch]
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_MoveFileA]
push ebx
lea eax, [ebp - 0x98c]
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemWindowsDirectoryW]
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_TerminateThread]
push ebx
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
push 0x401530
push ebx
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_SetCalendarInfoA]
push ebx
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_GetVolumeNameForVolumeMountPointA]
push ebx
call dword [sym.imp.KERNEL32.dll_GetConsoleAliasesLengthW]
lea eax, [ebp - 0x28]
push eax
lea eax, [ebp - 0x20]
push eax
lea eax, [ebp - 0x30]
push eax
push ebx
call dword [sym.imp.KERNEL32.dll_SetFileTime]
call fcn.00403a5c
pop esi
xor eax, eax
pop ebx
leave
ret