Function at 0x401100
Capabilities:
Get common file path
Get disk information
Set console window title

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x78
movzx eax, word [esp + 0x5a]
mov cx, ax
and eax, 0x3ac9
mov dx, ax
mov word [esp + 0x5a], dx
mov dword [esp + 0x6c], 0
mov dword [esp + 0x68], 0x2a8f
mov byte [esp + 0x58], 0xfe
mov dword [esp + 0x54], 0x71bb
mov eax, 0x71bb
mov dword [esp + 0x40], 0x11be
mov esi, dword [esp + 0x60]
mov edi, dword [esp + 0x64]
mov ebx, 0x1d86
mov dword [esp + 0x14], eax
mov eax, esi
mul ebx
imul esi, edi, 0x1d86
add edx, esi
mov dword [esp + 0x60], eax
mov dword [esp + 0x64], edx
mov al, byte [esp + 0x58]
mov ah, 0xaa
sub ah, al
mov byte [esp + 0x1a], ah
mov edx, dword [esp + 0x68]
mov esi, dword [esp + 0x6c]
xor edi, edi
mov ebx, 0x4ac6
sub ebx, edx
sbb edi, esi
mov dword [esp + 0x30], ebx
mov dword [esp + 0x34], edi
mov byte [esp + 0x2e], 0xe1
mov edx, dword [esp + 0x54]
xor edx, 0x604
mov dword [esp + 0x4c], edx
mov word [esp + 0x12], cx
mov byte [esp + 0x11], al
jmp 0x401444
mov eax, 0x71bb
mov cl, byte [esp + 0x11]
add cl, 0x7a
mov byte [esp + 0x59], cl
sub eax, dword [esp + 0x54]
cmp dword [esp + 0x50], eax
jne 0x401435
jmp 0x4012ff
mov al, 0xed
mov cl, byte [esp + 0x2e]
sub al, byte [esp + 0x58]
cmp al, cl
jne 0x40122d
jmp 0x40136f
mov eax, dword [sym.imp.KERNEL32.dll_GetSystemTimeAsFileTime]
call eax
pop es
mov dword [esp + 0x1c], eax
jmp 0x40129a
mov eax, 0x71bb
mov ecx, dword [esp + 0x54]
mov dx, word [esp + 0x12]
mov word [esp + 0x5a], dx
sub eax, ecx
mov ecx, dword [sym.imp.KERNEL32.dll_GetWindowsDirectoryW]
call ecx
pop es
mov dword [esp + 0x1c], eax
cmp dword [esp + 0x1c], eax
jne 0x40138b
jmp 0x40124c
mov eax, dword [sym.imp.KERNEL32.dll_SetThreadExecutionState]
call eax
pop es
mov dword [esp + 0x1c], eax
jmp 0x4014a7
mov eax, dword [sym.imp.KERNEL32.dll_DebugActiveProcess]
call eax
pop es
mov dword [esp + 0x1c], eax
jmp 0x4012bc
mov ax, 0x6fd6
mov ecx, dword [esp + 0x1c]
mov word [esp + 0x3e], 0x67e4
mov edx, dword [esp + 0x54]
mov esi, dword [esp + 0x14]
xor esi, 0xffffffff
mov dword [esp + 0x5c], esi
mov di, word [esp + 0x3e]
add edx, 0xffff8e46
and ecx, edx
mov dword [esp + 0x44], ecx
cmp ax, di
jae 0x40137e
jmp 0x4013d5
mov eax, dword [sym.imp.KERNEL32.dll_FlushFileBuffers]
call eax
pop es
mov dword [esp + 0x1c], eax
jmp 0x4013fe
mov eax, 0x401e98
call eax
pop es
mov dword [esp + 0x1c], eax
jmp 0x4011db
mov eax, dword [sym.imp.KERNEL32.dll_GetVolumeNameForVolumeMountPointA]
call eax
pop es
mov dword [esp + 0x1c], eax
jmp 0x4011ff
mov eax, 0x401e8c
call eax
pop es
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x54]
add eax, 0x55e
cmp eax, dword [esp + 0x4c]
jne 0x40136f
jmp 0x401435
mov eax, dword [sym.imp.KERNEL32.dll_GlobalCompact]
call eax
pop es
mov dword [esp + 0x1c], eax
jmp 0x401289
mov eax, 0x401e9e
call eax
pop es
mov dword [esp + 0x1c], eax
jmp 0x40146c
mov al, byte [esp + 0x11]
add al, al
mov byte [esp + 0x59], al
jmp 0x4011ee
jmp 0x4013a9
mov eax, dword [esp + 0x68]
mov ecx, dword [esp + 0x6c]
xor eax, 0x1e8
mov edx, dword [sym.imp.KERNEL32.dll_VirtualUnlock]
call edx
pop es
mov dword [esp + 0x1c], eax
mov edx, dword [esp + 0x68]
mov esi, dword [esp + 0x6c]
xor edx, 0x24f1
mov edi, dword [esp + 0x14]
or edi, edi
mov ebx, dword [esp + 0x1c]
mov dword [esp + 0x5c], edi
mov dword [esp + 0x24], ecx
mov dword [esp + 0x20], eax
and ebx, 1
mov dword [esp + 0x50], ebx
sub edx, eax
sbb esi, ecx
mov dword [esp + 0xc], esi
mov dword [esp + 8], edx
jae 0x4013ed
jmp 0x4011b8
mov eax, 0x31311257
sub eax, dword [esp + 0x54]
mov dword [esp + 0x48], eax
jmp 0x4013c9
cmp dword [esp + 0x44], 0
jne 0x401426
jmp 0x401313
jmp 0x401444
mov eax, 0x71be
sub eax, dword [esp + 0x54]
mov dword [esp + 0x48], eax
mov cx, word [esp + 0x12]
mov word [esp + 0x5a], cx
jmp 0x4013c9
mov al, 0x19
sub al, byte [esp + 0x58]
mov cl, byte [esp + 0x58]
add cl, 0x63
mov byte [esp + 0x1b], al
cmp byte [esp + 0x1b], cl
je 0x4012bc
jmp 0x40123e
mov eax, dword [esp + 0x48]
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
cmp dword [esp + 0x40], 0x49c2
jne 0x401390
jmp 0x40138b
mov eax, 0x401e92
call eax
pop es
mov dword [esp + 0x1c], eax
mov eax, dword [sym.imp.KERNEL32.dll_SetConsoleTitleA]
call eax
pop es
mov dword [esp + 0x1c], eax
jmp 0x4012e0
mov eax, dword [sym.imp.KERNEL32.dll_ReleaseSemaphore]
call eax
pop es
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x14]
imul eax, eax
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0x5c], eax
and ecx, 1
cmp ecx, 0
jne 0x4013d5
jmp 0x40130e
mov eax, 0x71c1
sub eax, dword [esp + 0x54]
mov dword [esp + 0x48], eax
jmp 0x4013c9
mov eax, 0x71c1
sub eax, dword [esp + 0x54]
mov dword [esp + 0x48], eax
jmp 0x4013c9
cmp byte [esp + 0x1a], 0x64
je 0x4013e1
jmp 0x4012ab
mov al, 0x3a
sub al, byte [esp + 0x58]
mov word [esp + 0x5a], 0x7bc4
cmp byte [esp + 0x2f], al
jb 0x40138b
jmp 0x4013e1
mov al, byte [esp + 0x58]
mov cl, 0xfd
sub cl, al
mov edx, dword [esp + 0x68]
mov esi, dword [esp + 0x6c]
add edx, 0x1a77
adc esi, 0
mov byte [esp + 0x19], cl
mov edi, dword [esp + 0x30]
mov ebx, dword [esp + 0x34]
mov byte [esp + 0x2f], cl
sub edx, edi
sbb esi, ebx
mov dword [esp + 4], esi
mov dword [esp], edx
jae 0x401450
jmp 0x40137e
mov eax, dword [sym.imp.KERNEL32.dll_WriteConsoleW]
call eax
pop es
mov dword [esp + 0x1c], eax
jmp 0x4012ee