Function at 0x10009c20
Capabilities:
Enumerate processes
Query environment variable
Query or enumerate registry value

Disassembly:
sub esp, 0x2b8
push ebx
push ebp
push esi
push edi
push 0x3f6
mov ebx, ecx
push 0
push ebx
mov dword [esp + 0x28], ebx
call fcn.100010d0
mov ecx, dword [0x100163d4]
lea esi, [ebx + 0x15e]
add esp, 0xc
mov byte [ebx], 4
mov eax, 0x903
mov dword [section..data], 2
mov word [ebx + 0x366], ax
mov eax, dword [0x100163b8]
test eax, eax
push 0x104
cmovne ecx, eax
push esi
push ecx
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
push esi
push 0x10017490
call dword [sym.imp.KERNEL32.dll_lstrcpyW]
cmp word [0x10017490], 0
mov esi, dword [sym.imp.KERNEL32.dll_lstrlenW]
je 0x10009cc8
push 0x10017490
call esi
test eax, eax
je 0x10009cb3
cmp word [eax*2 + 0x10017490], 0x5c
je 0x10009cbe
sub eax, 1
jne 0x10009ca3
cmp word [eax*2 + 0x10017490], 0x5c
jne 0x10009cc8
xor ecx, ecx
mov word [eax*2 + 0x10017492], cx
push 0x104
push 0x10017280
push dword [0x10016774]
call dword [sym.imp.KERNEL32.dll_ExpandEnvironmentStringsW]
cmp eax, 3
jbe 0x10009d36
cmp word [0x10017280], 0
je 0x10009d25
push 0x10017280
call esi
test eax, eax
je 0x10009d10
nop dword [eax + eax]
cmp word [eax*2 + 0x10017280], 0x5c
je 0x10009d1b
sub eax, 1
jne 0x10009d00
cmp word [eax*2 + 0x10017280], 0x5c
jne 0x10009d25
xor ecx, ecx
mov word [eax*2 + 0x10017282], cx
push dword [0x10016778]
push 0x10017280
call dword [sym.imp.KERNEL32.dll_lstrcatW]
push 0x104
push 0x10017078
push dword [0x100168f8]
call dword [sym.imp.KERNEL32.dll_GetEnvironmentVariableW]
push dword [0x10016a3c]
push dword [0x10016a24]
call dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
push eax
mov eax, dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [esp + 0x2c], eax
call eax
mov esi, dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
mov edi, eax
test edi, edi
je 0x10009d80
lea eax, [esp + 0x34]
push eax
call esi
push eax
call edi
cmp dword [esp + 0x34], 0
je 0x10009d8b
mov byte [ebx + 0xd], 1
lea eax, [esp + 0x20]
or ebp, 0xffffffff
push eax
push 8
call esi
push eax
call dword [sym.imp.ADVAPI32.dll_OpenProcessToken]
test eax, eax
je 0x10009e0e
mov edi, dword [sym.imp.ADVAPI32.dll_GetTokenInformation]
lea eax, [esp + 0x18]
push eax
push 0
push 0
push 0x19
push dword [esp + 0x30]
call edi
test eax, eax
jne 0x10009e0e
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0x7a
jne 0x10009e0e
push dword [esp + 0x18]
push 0
call dword [sym.imp.KERNEL32.dll_LocalAlloc]
mov esi, eax
test esi, esi
je 0x10009e0e
lea eax, [esp + 0x18]
push eax
push dword [esp + 0x1c]
push esi
push 0x19
push dword [esp + 0x30]
call edi
test eax, eax
je 0x10009e07
push dword [esi]
call dword [sym.imp.ADVAPI32.dll_GetSidSubAuthorityCount]
movzx eax, byte [eax]
dec eax
push eax
push dword [esi]
call dword [sym.imp.ADVAPI32.dll_GetSidSubAuthority]
mov ebp, dword [eax]
push esi
call dword [sym.imp.KERNEL32.dll_LocalFree]
mov edi, dword [sym.imp.KERNEL32.dll_GetCurrentProcessId]
mov dword [ebx + 9], ebp
call edi
lea ecx, [ebx + 5]
mov dword [ebx + 1], eax
push ecx
push eax
call dword [sym.imp.KERNEL32.dll_ProcessIdToSessionId]
call dword [sym.imp.KERNEL32.dll_GetTickCount]
push dword [0x10016b94]
mov dword [ebx + 0xe], eax
push dword [0x10016b90]
call dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
push eax
call dword [esp + 0x2c]
test eax, eax
je 0x10009ea2
lea ecx, [esp + 0x9c]
mov dword [esp + 0x9c], 0x114
push ecx
call eax
test eax, eax
jne 0x10009ea2
mov ecx, dword [esp + 0xa0]
mov edx, dword [esp + 0xa4]
mov eax, dword [esp + 0xa8]
mov dword [ebx + 0x12], ecx
mov dword [ebx + 0x1a], eax
movzx ecx, cx
movzx eax, dx
shl ecx, 0x10
or ecx, eax
mov dword [ebx + 0x16], edx
mov eax, dword [section..data]
xor edx, edx
cmp ecx, 0x60003
cmovb eax, edx
mov dword [section..data], eax
lea eax, [esp + 0x28]
push eax
push 0x20119
push 0
push dword [0x100168f0]
push 0x80000002
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
jne 0x10009efd
lea eax, [esp + 0x20]
mov dword [esp + 0x18], 1
push eax
lea eax, [ebx + 0x1e]
mov dword [esp + 0x24], 0x28
push eax
lea eax, [esp + 0x20]
push eax
push 0
push dword [0x100168f4]
push dword [esp + 0x3c]
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
push dword [esp + 0x28]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
call dword [sym.imp.USER32.dll_GetProcessWindowStation]
mov esi, dword [sym.imp.USER32.dll_GetUserObjectInformationW]
test eax, eax
je 0x10009f3d
lea ecx, [esp + 0x14]
mov dword [esp + 0x14], 0x28
push ecx
push 0x28
lea ecx, [esp + 0x54]
push ecx
push 2
push eax
call esi
test eax, eax
je 0x10009f3d
push 0x50
lea eax, [esp + 0x50]
push eax
lea eax, [ebx + 0x46]
push eax
call section..text
add esp, 0xc
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
push eax
call dword [sym.imp.USER32.dll_GetThreadDesktop]
test eax, eax
je 0x10009f81
lea ecx, [esp + 0x14]
mov dword [esp + 0x14], 0x28
push ecx
push 0x28
lea ecx, [esp + 0x54]
push ecx
push 2
push eax
call esi
test eax, eax
je 0x10009f81
push 0x50
lea eax, [esp + 0x50]
push eax
lea eax, [ebx + 0x96]
push eax
call section..text
add esp, 0xc
lea eax, [esp + 0x14]
mov dword [esp + 0x14], 0x14
push eax
lea eax, [ebx + 0x10e]
push eax
call dword [0x100165d4]
lea eax, [esp + 0x14]
mov dword [esp + 0x14], 0x14
push eax
lea eax, [ebx + 0xe6]
push eax
call dword [0x100165b8]
call edi
push 0
push 2
mov ebp, eax
call dword [sym.imp.KERNEL32.dll_CreateToolhelp32Snapshot]
mov esi, eax
cmp esi, 0xffffffff
je 0x1000a068
lea eax, [esp + 0x9c]
mov dword [esp + 0x9c], 0x22c
push eax
push esi
call dword [sym.imp.KERNEL32.dll_Process32FirstW]
test eax, eax
je 0x1000a061
mov edi, dword [sym.imp.KERNEL32.dll_Process32NextW]
cmp dword [esp + 0xa4], ebp
je 0x1000a00c
lea eax, [esp + 0x9c]
push eax
push esi
call edi
test eax, eax
jne 0x10009ff2
jmp 0x1000a061
mov ebp, dword [esp + 0xb4]
test ebp, ebp
je 0x1000a061
lea eax, [esp + 0x9c]
push eax
push esi
call dword [sym.imp.KERNEL32.dll_Process32FirstW]
test eax, eax
je 0x1000a061
nop word [eax + eax]
cmp dword [esp + 0xa4], ebp
je 0x1000a04a
lea eax, [esp + 0x9c]
push eax
push esi
call edi
test eax, eax
jne 0x1000a030
jmp 0x1000a061
push 0x14
lea eax, [esp + 0xc4]
push eax
lea eax, [ebx + 0x136]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpynW]
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
call dword [sym.imp.KERNEL32.dll_WTSGetActiveConsoleSessionId]
push 0
push 0
push 0x1d
push 0xffffffffffffffff
push 0
mov word [ebx + 0x36c], ax
call dword [0x100165bc]
test al, al
je 0x1000a090
mov byte [ebx + 0x369], 1
lea eax, [esp + 0x30]
mov dword [esp + 0x2c], 0
push eax
lea eax, [esp + 0x30]
mov dword [esp + 0x34], 0
push eax
push 0x10
push 0xffffffffffffffff
push 0
call dword [0x100165bc]
test al, al
je 0x1000a0cd
mov eax, dword [esp + 0x2c]
test eax, eax
je 0x1000a0cd
cmp dword [esp + 0x30], 0
je 0x1000a0cd
mov al, byte [eax]
jmp 0x1000a0cf
or al, 0xff
mov byte [ebx + 0x368], al
xor bh, bh
xor eax, eax
push 0x28
push eax
push 0x100176a0
mov dword [0x10017488], eax
call fcn.100010d0
add esp, 0xc
lea eax, [esp + 0x38]
push dword [0x10016bd4]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
mov ebp, dword [sym.imp.GDI32.dll_CreateDCA]
mov bl, 0x31
push 0
push 0
push 0
lea eax, [esp + 0x44]
mov byte [esp + 0x4f], bl
push eax
call ebp
mov edi, eax
test edi, edi
je 0x1000a184
push 8
push edi
movzx esi, bh
call dword [sym.imp.GDI32.dll_GetDeviceCaps]
push 0xa
push edi
mov word [esi*4 + 0x100176a0], ax
call dword [sym.imp.GDI32.dll_GetDeviceCaps]
movzx edx, word [esi*4 + 0x100176a0]
cmp word [0x10017488], dx
movzx edi, ax
mov eax, edx
movzx edx, word [0x1001748a]
mov word [esi*4 + 0x100176a2], di
movzx esi, word [0x10017488]
cmovbe esi, eax
cmp word [0x1001748a], di
mov eax, edi
mov word [0x10017488], si
cmovbe edx, eax
inc bh
mov word [0x1001748a], dx
inc bl
cmp bl, 0x39
jle 0x1000a107
mov edi, dword [sym.imp.USER32.dll_GetDesktopWindow]
mov byte [esp + 0x13], bh
mov ebx, dword [esp + 0x1c]
mov al, byte [esp + 0x13]
push 2
mov byte [ebx + 0x36a], al
movzx eax, word [0x10017488]
mov word [ebx + 0x36e], ax
movzx eax, word [0x1001748a]
mov word [ebx + 0x370], ax
call edi
mov esi, dword [sym.imp.USER32.dll_MonitorFromWindow]
push eax
call esi
push 1
mov ebp, eax
call edi
push eax
call esi
mov esi, eax
test ebp, ebp
je 0x1000a1f0
test esi, esi
je 0x1000a1f0
cmp esi, ebp
jne 0x1000a1fb
mov byte [ebx + 0x36b], 1
jmp 0x1000a1fb
mov byte [ebx + 0x36b], 0xff
test esi, esi
je 0x1000a262
push dword [0x10016a68]
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov edi, eax
test edi, edi
je 0x1000a262
push dword [0x10016a6c]
mov ebp, dword [esp + 0x28]
push edi
call ebp
test eax, eax
je 0x1000a23d
lea ecx, [esp + 0x24]
push ecx
lea ecx, [esp + 0x20]
push ecx
push 0
push esi
call eax
test eax, eax
jne 0x1000a23d
mov ax, word [esp + 0x1c]
mov word [ebx + 0x372], ax
push dword [0x10016a70]
push edi
call ebp
test eax, eax
je 0x1000a262
lea ecx, [esp + 0x1c]
push ecx
push esi
call eax
test eax, eax
jne 0x1000a262
mov ax, word [esp + 0x1c]
mov word [ebx + 0x374], ax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x2b8
ret