Function at 0x401510
Capabilities:
Access peb ldr_data
Get process heap flags
Get process heap force flags

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
lea eax, [ebp - 0x218]
push ebx
sub esp, 0x27c
mov dword [ebp - 0x244], eax
mov edi, dword [sym.imp.user32.dll_LoadStringW]
mov dword [esp + 8], eax
mov eax, dword [0x40e33c]
mov dword [ebp - 0x254], 0x45
mov dword [ebp - 0x240], 0x100
mov dword [ebp - 0x234], 1
mov dword [ebp - 0x258], 0xffff0001
mov dword [ebp - 0x25c], 0xffff0000
mov dword [esp + 0xc], 0x100
mov dword [esp + 4], 0xe6
mov dword [esp], eax
call edi
sub esp, 0x10
mov dword [esp + 8], 0x60c
mov dword [esp + 4], 8
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
mov eax, dword [sym.imp.kernel32.dll_HeapAlloc]
mov dword [ebp - 0x26c], eax
call eax
mov edx, 0x49
mov byte [eax], 1
mov ecx, eax
sub esp, 0xc
mov eax, 2
jmp 0x4015d2
movzx edx, word [eax + str.Interface_]
add eax, 2
mov word [ecx + eax], dx
test dx, dx
jne 0x4015c8
mov eax, dword [0x40e330]
lea esi, [ebp - 0x25c]
mov dword [ebp - 0x230], ecx
mov dword [esp + 0xc], esi
mov ebx, dword [sym.imp.user32.dll_SendMessageW]
mov dword [esp + 8], 0
mov dword [esp + 4], 0x1132
mov dword [esp], eax
call ebx
mov dword [0x40e61c], eax
mov eax, dword [ebp - 0x244]
sub esp, 0x10
mov dword [esp + 0xc], 0x100
mov dword [esp + 8], eax
mov eax, dword [0x40e33c]
mov dword [esp + 4], 0xdc
mov dword [esp], eax
call edi
sub esp, 0x10
mov dword [esp + 8], 0x60c
mov dword [esp + 4], 8
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
mov eax, dword [ebp - 0x26c]
call eax
mov edx, 0x54
mov byte [eax], 1
mov ecx, eax
sub esp, 0xc
mov eax, 2
jmp 0x401682
movzx edx, word [eax + str.TypeLib_]
add eax, 2
mov word [ecx + eax], dx
test dx, dx
jne 0x401678
mov eax, dword [0x40e330]
mov dword [ebp - 0x230], ecx
mov dword [esp + 0xc], esi
mov dword [esp + 8], 0
mov dword [esp + 4], 0x1132
mov dword [esp], eax
call ebx
mov dword [0x40e618], eax
mov eax, dword [ebp - 0x244]
sub esp, 0x10
mov dword [esp + 0xc], 0x100
mov dword [esp + 8], eax
mov eax, dword [0x40e33c]
mov dword [esp + 4], 0xd2
mov dword [esp], eax
call edi
sub esp, 0x10
mov dword [esp + 8], 0x60c
mov dword [esp + 4], 8
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
mov eax, dword [ebp - 0x26c]
call eax
mov edx, 0x41
mov byte [eax], 3
mov ecx, eax
sub esp, 0xc
mov eax, 2
jmp 0x40172a
movzx edx, word [eax + str.AppID_]
add eax, 2
mov word [ecx + eax], dx
test dx, dx
jne 0x401720
mov eax, dword [0x40e330]
mov dword [ebp - 0x230], ecx
mov dword [esp + 0xc], esi
mov dword [esp + 8], 0
mov dword [esp + 4], 0x1132
mov dword [esp], eax
call ebx
mov dword [0x40e614], eax
mov eax, dword [ebp - 0x244]
sub esp, 0x10
mov dword [esp + 0xc], 0x100
mov dword [esp + 8], eax
mov eax, dword [0x40e33c]
mov dword [esp + 4], 0xc8
mov dword [esp], eax
call edi
mov eax, dword [0x40e330]
mov dword [ebp - 0x230], 0
sub esp, 0x10
mov dword [esp + 0xc], esi
mov dword [esp + 8], 0
mov dword [esp + 4], 0x1132
mov dword [esp], eax
call ebx
mov dword [0x40e600], eax
sub esp, 0x10
mov dword [ebp - 0x25c], eax
mov eax, dword [ebp - 0x244]
mov dword [esp + 0xc], 0x100
mov dword [esp + 8], eax
mov eax, dword [0x40e33c]
mov dword [esp + 4], 0xcc
mov dword [esp], eax
call edi
sub esp, 0x10
mov dword [esp + 8], 0x60c
mov dword [esp + 4], 8
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
mov eax, dword [ebp - 0x26c]
call eax
mov edx, 0x43
mov byte [eax], 1
mov ecx, eax
sub esp, 0xc
mov eax, 2
jmp 0x40182a
movzx edx, word [eax + str.CLSID_]
add eax, 2
mov word [ecx + eax], dx
test dx, dx
jne 0x401820
mov eax, dword [0x40e330]
mov dword [ebp - 0x230], ecx
mov dword [esp + 0xc], esi
mov dword [esp + 8], 0
mov dword [esp + 4], 0x1132
mov dword [esp], eax
call ebx
mov dword [0x40e610], eax
mov eax, dword [ebp - 0x244]
sub esp, 0x10
mov dword [esp + 0xc], 0x100
mov dword [esp + 8], eax
mov eax, dword [0x40e33c]
mov dword [esp + 4], 0xcb
mov dword [esp], eax
call edi
mov eax, dword [0x40e330]
sub esp, 0x10
mov dword [esp + 0xc], esi
mov dword [esp + 8], 0
mov dword [esp + 4], 0x1132
mov dword [esp], eax
call ebx
mov dword [0x40e60c], eax
mov eax, dword [ebp - 0x244]
sub esp, 0x10
mov dword [esp + 0xc], 0x100
mov dword [esp + 8], eax
mov eax, dword [0x40e33c]
mov dword [esp + 4], 0xca
mov dword [esp], eax
call edi
mov eax, dword [0x40e330]
mov dword [ebp - 0x230], 0
sub esp, 0x10
mov dword [esp + 0xc], esi
mov dword [esp + 8], 0
mov dword [esp + 4], 0x1132
mov dword [esp], eax
call ebx
mov dword [0x40e608], eax
mov eax, dword [ebp - 0x244]
sub esp, 0x10
mov dword [esp + 0xc], 0x100
mov dword [esp + 8], eax
mov eax, dword [0x40e33c]
mov dword [esp + 4], 0xc9
mov dword [esp], eax
call edi
sub esp, 0x10
mov dword [esp + 8], 0x60c
mov dword [esp + 4], 8
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
mov eax, dword [ebp - 0x26c]
call eax
mov edx, 0x43
mov byte [eax], 3
mov ecx, eax
sub esp, 0xc
mov eax, 2
jmp 0x401972
movzx edx, word [eax + str.Component_Categories_]
add eax, 2
mov word [ecx + eax], dx
test dx, dx
jne 0x401968
mov eax, dword [0x40e330]
mov dword [ebp - 0x230], ecx
mov dword [esp + 0xc], esi
mov dword [esp + 8], 0
mov dword [esp + 4], 0x1132
mov dword [esp], eax
call ebx
mov dword [0x40e604], eax
mov eax, dword [0x40e600]
sub esp, 0x10
mov dword [esp + 8], 2
mov dword [esp + 0xc], eax
mov eax, dword [0x40e330]
mov dword [esp + 4], 0x1102
mov dword [esp], eax
call ebx
sub esp, 0x10
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret