Function at 0x402040
Capabilities:
Copy file
Get disk information
Get file attributes
Get memory capacity

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x518050
mov eax, dword fs:[0]
push eax
sub esp, 0xd0
mov eax, dword [0x55f350]
xor eax, ebp
mov dword [ebp - 0x10], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
add dword [ebx], 0xffffff9b
push 0
push 0x4f
push 0x24
push 0
mov edi, ecx
call dword [sym.imp.KERNEL32.dll_CreateSemaphoreA]
push 0
call dword [sym.imp.KERNEL32.dll_SetEvent]
mov dword [ebp - 4], 0xffffffff
mov eax, dword [ebx]
push eax
call fcn.00403cf7
mov esi, dword [sym.imp.KERNEL32.dll_GetConsoleWindow]
add esp, 4
push 0
push 0x12bb
push 0x48
mov dword [ebp - 0xd8], eax
call esi
push eax
call dword [sym.imp.USER32.dll_SetTimer]
lea ecx, [ebp - 0x84]
push ecx
call dword [sym.imp.KERNEL32.dll_GlobalMemoryStatus]
lea edx, [ebp - 0xb4]
push edx
call dword [sym.imp.KERNEL32.dll_GlobalMemoryStatus]
lea eax, [ebp - 0xdc]
push eax
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
push eax
call dword [sym.imp.KERNEL32.dll_IsWow64Process]
lea ecx, [ebp - 0xd4]
push ecx
call dword [sym.imp.KERNEL32.dll_GlobalMemoryStatus]
mov edx, dword [ebx]
mov eax, dword [edi]
mov ecx, dword [ebp - 0xd8]
push edx
add eax, 0x65
push eax
push ecx
call fcn.004f9c50
add esp, 0xc
lea edx, [ebp - 0xdc]
push edx
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
push eax
call dword [sym.imp.KERNEL32.dll_IsWow64Process]
lea eax, [ebp - 0xa4]
push eax
call dword [sym.imp.KERNEL32.dll_GetLocalTime]
call dword [sym.imp.KERNEL32.dll_GetLogicalDrives]
push 0x541578
push 0
call dword [sym.imp.USER32.dll_LoadCursorA]
lea ecx, [ebp - 0x74]
push ecx
call dword [sym.imp.KERNEL32.dll_GetLocalTime]
push 0
push 0
push 0
push 0
push SysReAllocStringLen
push SysReAllocStringLen
push SysReAllocStringLen
push SysReAllocStringLen
push 0xcf0000
push 0x541580
push 0x541588
push 0
call dword [sym.imp.USER32.dll_CreateWindowExA]
push 0xffffffffffffffeb
call esi
push eax
call dword [sym.imp.USER32.dll_GetWindowLongA]
mov eax, dword [edi]
push eax
call fcn.00403cec
add esp, 4
push 0
push 0x541594
push 0x5415a0
call dword [sym.imp.KERNEL32.dll_CopyFileA]
push 0
call dword [sym.imp.USER32.dll_GetDC]
push eax
call dword [sym.imp.GDI32.dll_CreateCompatibleDC]
call dword [sym.imp.KERNEL32.dll_GetTickCount]
push 0
push str.._F
call dword [sym.imp.KERNEL32.dll_FindFirstFileA]
push 1
push 0x228
push 0x319
push 0x319
push 0x343
call esi
push eax
call dword [sym.imp.USER32.dll_MoveWindow]
lea edx, [ebp - 0x74]
push edx
call esi
push eax
call dword [sym.imp.USER32.dll_GetWindowRect]
mov eax, dword [ebp - 0xd8]
push 0
push 0
push 0
push 0
push SysReAllocStringLen
push SysReAllocStringLen
push SysReAllocStringLen
push SysReAllocStringLen
push 0xcf0000
push 0x5415c0
push 0x5415c8
push 0
mov dword [edi], eax
call dword [sym.imp.USER32.dll_CreateWindowExA]
push 0x5415d4
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
push 0
call dword [sym.imp.KERNEL32.dll_FlushFileBuffers]
call dword [sym.imp.KERNEL32.dll_GetLogicalDrives]
mov dword [ebp - 4], 0xffffffff
mov eax, dword [edi]
push 0
push 0x10
lea ecx, [ebp - 0x48]
add eax, 0x12d
push ecx
mov dword [ebp - 0xd8], eax
mov dword [ebp - 0x34], 0xf
mov dword [ebp - 0x38], 0
mov byte [ebp - 0x48], 0
call fcn.00401de0
cmp dword [ebp - 0x34], 0x10
mov eax, dword [ebp - 0x48]
jae 0x402285
lea eax, [ebp - 0x48]
mov ecx, dword [ebp - 0xd8]
mov edx, dword [ecx]
mov dword [eax], edx
mov edx, dword [ecx + 4]
mov dword [eax + 4], edx
mov edx, dword [ecx + 8]
mov dword [eax + 8], edx
mov ecx, dword [ecx + 0xc]
mov dword [eax + 0xc], ecx
mov eax, 0x10
cmp dword [ebp - 0x34], eax
mov dword [ebp - 0x38], eax
mov eax, dword [ebp - 0x48]
jae 0x4022b4
lea eax, [ebp - 0x48]
mov byte [eax + 0x10], 0
lea edx, [ebp - 0xd4]
push edx
call dword [sym.imp.KERNEL32.dll_GlobalMemoryStatus]
push 0xffffffffffffffeb
call esi
push eax
call dword [sym.imp.USER32.dll_GetWindowLongA]
push 4
call esi
push eax
call dword [sym.imp.USER32.dll_GetWindow]
push 0x5415e0
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
lea eax, [ebp - 0xdc]
push eax
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
push eax
call dword [sym.imp.KERNEL32.dll_IsWow64Process]
mov dword [ebp - 4], 0xa
mov eax, dword [edi]
push 0
push 0x18
lea ecx, [ebp - 0x2c]
add eax, 0x2007
push ecx
mov dword [ebp - 0xd8], eax
mov dword [ebp - 0x18], 0xf
mov dword [ebp - 0x1c], 0
mov byte [ebp - 0x2c], 0
call fcn.00401de0
cmp dword [ebp - 0x18], 0x10
mov eax, dword [ebp - 0x2c]
jae 0x402339
lea eax, [ebp - 0x2c]
mov ecx, dword [ebp - 0xd8]
mov edx, dword [ecx]
mov dword [eax], edx
mov edx, dword [ecx + 4]
mov dword [eax + 4], edx
mov edx, dword [ecx + 8]
mov dword [eax + 8], edx
mov edx, dword [ecx + 0xc]
mov dword [eax + 0xc], edx
mov edx, dword [ecx + 0x10]
mov dword [eax + 0x10], edx
mov ecx, dword [ecx + 0x14]
mov dword [eax + 0x14], ecx
cmp dword [ebp - 0x18], 0x10
mov eax, dword [ebp - 0x2c]
mov dword [ebp - 0x1c], 0x18
jae 0x402374
lea eax, [ebp - 0x2c]
mov byte [eax + 0x18], 0
push 0x5415e8
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
push 0x5415f4
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
call dword [sym.imp.KERNEL32.dll_GetLastError]
push 0
push 0x218b
push 0x3f
call esi
push eax
call dword [sym.imp.USER32.dll_SetTimer]
push 0
call esi
push eax
call dword [sym.imp.USER32.dll_EnableWindow]
push 0x5415fc
call esi
push eax
call dword [sym.imp.USER32.dll_SetWindowTextA]
push 4
call esi
push eax
call dword [sym.imp.USER32.dll_GetWindow]
lea edx, [ebp - 0x2c]
push edx
lea eax, [ebp - 0x48]
push eax
lea ecx, [ebp - 0x64]
push ecx
mov dword [ebp - 4], 0xd
call fcn.004029a0
add esp, 0xc
push 0
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
push 0x541604
push 0
call dword [sym.imp.USER32.dll_LoadIconA]
push 0x541610
call esi
push eax
call dword [sym.imp.USER32.dll_SetWindowTextA]
lea edx, [ebp - 0x94]
push edx
call esi
push eax
call dword [sym.imp.USER32.dll_GetClientRect]
xor ecx, ecx
cmp dword [ebx], ecx
jbe 0x402474
mov edi, edi
cmp ecx, 0x12d
jb 0x402430
cmp ecx, 0x13d
jb 0x40246f
cmp ecx, 0x2007
jb 0x402440
cmp ecx, 0x201f
jb 0x40246f
cmp dword [ebp - 0x50], 0x10
jb 0x402451
mov eax, dword [ebp - 0x64]
mov dword [ebp - 0xd8], eax
jmp 0x40245a
lea edx, [ebp - 0x64]
mov dword [ebp - 0xd8], edx
xor edx, edx
mov eax, ecx
div dword [ebp - 0x54]
mov eax, dword [ebp - 0xd8]
mov esi, dword [edi]
mov dl, byte [edx + eax]
xor byte [esi + ecx], dl
inc ecx
cmp ecx, dword [ebx]
jb 0x402420
mov esi, 0x10
cmp dword [ebp - 0x50], esi
jb 0x40248a
mov eax, dword [ebp - 0x64]
push eax
call fcn.00403cec
add esp, 4
mov edi, 0xf
mov dword [ebp - 0x50], edi
mov dword [ebp - 0x54], 0
mov byte [ebp - 0x64], 0
cmp dword [ebp - 0x18], esi
jb 0x4024ae
mov ecx, dword [ebp - 0x2c]
push ecx
call fcn.00403cec
add esp, 4
mov dword [ebp - 0x18], edi
mov dword [ebp - 0x1c], 0
mov byte [ebp - 0x2c], 0
cmp dword [ebp - 0x34], esi
jb 0x4024cd
mov edx, dword [ebp - 0x48]
push edx
call fcn.00403cec
add esp, 4
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.004f6105
mov esp, ebp
pop ebp
ret