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

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0x4bc
mov dword [ebp - 0x45c], ecx
movzx ecx, word [edx + 0x2c]
mov dword [ebp - 0x490], eax
mov dword [ebp - 0x4a8], edx
mov dword [ebp - 0x478], 0x680072
mov dword [ebp - 0x474], 0x73
mov dword [ebp - 0x454], 5
mov dword [ebp - 0x458], 0xffff0002
mov dword [ebp - 0x4a0], ecx
mov dword [ebp - 0x494], 0
test byte [edx + 0x36], 0x40
je 0x405f63
mov dword [ebp - 0x494], 7
add ecx, 7
mov dword [ebp - 0x4a0], ecx
mov ecx, dword [ebp - 0x494]
cmp dword [ebp - 0x4a0], ecx
jle 0x4061b3
lea esi, [esi]
mov ebx, dword [ebp - 0x490]
mov edi, dword [ebp - 0x494]
lea esi, [ebp - 0x484]
mov eax, dword [ebx]
mov dword [esp + 8], esi
mov dword [esp + 4], edi
mov dword [esp], ebx
call dword [eax + 0x14]
sub esp, 0xc
test eax, eax
js 0x40619b
lea edx, [ebp - 0x47c]
mov eax, dword [ebx]
mov dword [esp + 0x14], 0
mov dword [esp + 0xc], edx
lea edx, [ebp - 0x480]
mov dword [esp + 8], edx
mov edx, dword [ebp - 0x484]
mov dword [esp + 0x10], 0
mov edx, dword [edx]
mov dword [esp], ebx
mov dword [esp + 4], edx
call dword [eax + 0x30]
sub esp, 0x18
test eax, eax
js 0x40619b
xor eax, eax
mov ecx, pe_nt_image_headers32
lea edi, [ebp - 0x418]
rep stosd dword es:[edi], eax
mov ecx, pe_nt_image_headers32
lea edi, [ebp - 0x218]
rep stosd dword es:[edi], eax
call sym._InitializeTLData
mov ebx, dword [sym.imp.oleaut32.dll_SysStringLen]
mov esi, eax
mov eax, dword [ebp - 0x480]
mov dword [esp], eax
call ebx
mov dword [ebp - 0x430], esi
mov dword [ebp - 0x440], eax
mov eax, dword [ebp - 0x480]
sub esp, 4
mov dword [ebp - 0x444], eax
mov eax, dword [ebp - 0x484]
cmp dword [eax], 0x5fffffff
jle 0x406240
mov ecx, dword [ebp - 0x4a8]
test byte [ecx + 0x36], 0x40
jne 0x406240
mov edi, dword [ebp - 0x490]
mov ecx, dword [eax + 0x20]
lea edx, [ebp - 0x218]
mov dword [esp + 4], edi
movzx eax, word [eax + 0x24]
mov word [esp], ax
lea eax, [ebp - 0x418]
call sym._CreateTypeInfo.isra.0
mov eax, dword [ebp - 0x484]
mov eax, dword [eax + 0x10]
cmp eax, 4
je 0x4068dc
cmp eax, 8
je 0x4068cb
cmp eax, 2
je 0x4068f0
mov eax, dword [ebp - 0x47c]
mov dword [esp], eax
call ebx
sub esp, 4
test eax, eax
jne 0x4061bb
mov eax, dword [ebp - 0x4a8]
test byte [eax + 0x37], 1
je 0x406214
mov edx, str.HRESULT
mov eax, esi
call sym._AddToTLDataStrW
lea eax, [ebp - 0x418]
mov dword [esp + 4], str.void
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_lstrcmpW]
sub esp, 8
test eax, eax
je 0x40622e
mov edx, dword [ebp - 0x484]
movzx eax, word [edx + 0x18]
inc eax
mov word [edx + 0x18], ax
cwde
mov dword [esp + 4], 0
lea eax, [eax*4 + 4]
mov dword [esp + 8], eax
mov ebx, dword fs:[0x18]
mov eax, dword [ebx + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_HeapAlloc]
mov edx, dword [ebp - 0x484]
mov dword [ebp - 0x498], eax
mov edi, eax
mov eax, dword [ebp - 0x490]
sub esp, 0xc
mov ecx, dword [eax]
lea eax, [ebp - 0x488]
mov dword [esp + 0x10], eax
movsx eax, word [edx + 0x18]
mov dword [esp + 8], edi
inc eax
mov dword [esp + 0xc], eax
mov eax, dword [edx]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x490]
mov dword [esp], eax
call dword [ecx + 0x1c]
sub esp, 0x14
test eax, eax
jns 0x406330
mov dword [esp + 8], edi
mov dword [esp + 4], 0
mov eax, dword [ebx + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_HeapFree]
sub esp, 0xc
inc dword [ebp - 0x494]
mov eax, dword [ebp - 0x494]
cmp eax, dword [ebp - 0x4a0]
jne 0x405f78
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret
mov edx, 0x40f190
mov eax, esi
call sym._AddToTLDataStrW
mov edx, str.helpstring
mov eax, esi
call sym._AddToTLDataStrW
mov edx, 0x40f1b8
mov eax, esi
call sym._AddToTLDataStrW
mov edx, dword [ebp - 0x47c]
mov eax, esi
call sym._AddToTLDataStrW
mov edx, 0x40f1be
mov eax, esi
call sym._AddToTLDataStrW
mov eax, esi
mov edx, 0x40f1a2
call sym._AddToTLDataStrW
mov eax, dword [ebp - 0x4a8]
test byte [eax + 0x37], 1
jne 0x4060c9
lea edx, [ebp - 0x418]
mov eax, esi
call sym._AddToTLDataStrW
lea edx, [ebp - 0x218]
mov eax, esi
call sym._AddToTLDataStrW
mov eax, dword [ebp - 0x484]
movzx eax, word [eax + 0x18]
jmp 0x406106
mov edx, 0x40f190
mov eax, esi
lea edi, [ebp - 0x418]
call sym._AddToTLDataStrW
mov edx, 0x417d78
mov eax, esi
call sym._AddToTLDataStrW
mov edx, 0x40f194
mov eax, esi
call sym._AddToTLDataStrW
mov eax, dword [ebp - 0x484]
mov eax, dword [eax]
mov dword [esp + 4], str.0x_.8lx
mov dword [esp + 8], eax
lea eax, [ebp - 0x418]
mov dword [esp], eax
call dword [sym.imp.user32.dll_wsprintfW]
lea edx, [ebp - 0x418]
mov eax, esi
call sym._AddToTLDataStrW
mov edx, 0x40f198
mov eax, esi
call sym._AddToTLDataStrW
xor eax, eax
mov ecx, pe_nt_image_headers32
lea edx, [ebp - 0x218]
rep stosd dword es:[edi], eax
mov eax, dword [ebp - 0x484]
mov edi, dword [ebp - 0x490]
mov ecx, dword [eax + 0x20]
mov dword [esp + 4], edi
movzx eax, word [eax + 0x24]
mov word [esp], ax
lea eax, [ebp - 0x418]
call sym._CreateTypeInfo.isra.0
mov eax, dword [ebp - 0x484]
mov eax, dword [eax + 0x10]
cmp eax, 4
je 0x406868
cmp eax, 8
je 0x406848
cmp eax, 2
je 0x4068b8
mov eax, dword [ebp - 0x47c]
mov dword [esp], eax
call ebx
sub esp, 4
test eax, eax
je 0x4061f8
mov edx, 0x40f19c
mov eax, esi
call sym._AddToTLDataStrW
jmp 0x4061c7
mov eax, dword [ebp - 0x498]
mov eax, dword [eax]
mov dword [esp], eax
mov eax, dword [sym.imp.oleaut32.dll_SysFreeString]
mov dword [ebp - 0x4a4], eax
call eax
mov eax, esi
mov edx, 0x40f1ae
sub esp, 4
call sym._AddToTLDataStrW
mov eax, dword [ebp - 0x484]
cmp dword [eax], 0x5fffffff
jg 0x406880
mov edx, dword [ebp - 0x480]
test edx, edx
je 0x40637a
mov eax, esi
call sym._AddToTLDataStrW
mov edx, 0x40f194
mov eax, esi
call sym._AddToTLDataStrW
mov eax, dword [ebp - 0x484]
mov dword [ebp - 0x48c], 0
movzx edx, word [eax + 0x18]
test dx, dx
jg 0x406598
jmp 0x406760
mov edx, 0x40f190
mov eax, esi
call sym._AddToTLDataStrW
mov edx, 0x417e8c
mov eax, esi
call sym._AddToTLDataStrW
mov eax, dword [ebp - 0x484]
mov edx, dword [eax + 8]
add edx, ebx
movzx eax, word [edx + 0xc]
test al, 4
jne 0x4066d8
test al, 8
jne 0x40667b
test al, 0x10
je 0x4066aa
mov edx, 0x40f19c
mov eax, esi
call sym._AddToTLDataStrW
mov edx, str.optional
mov eax, esi
call sym._AddToTLDataStrW
mov eax, dword [ebp - 0x484]
mov edx, dword [eax + 8]
add edx, ebx
movzx eax, word [edx + 0xc]
test al, 0x40
jne 0x40660b
test al, 0x20
je 0x4064b3
mov edi, dword [edx + 8]
lea eax, [edi + 8]
mov dword [ebp - 0x49c], eax
lea eax, [ebp - 0x470]
mov dword [esp], eax
call dword [sym.imp.oleaut32.dll_VariantInit]
mov edx, 0x40f19c
mov eax, esi
sub esp, 4
call sym._AddToTLDataStrW
mov edx, str.defaultvalue
mov eax, esi
call sym._AddToTLDataStrW
mov edx, 0x40f194
mov eax, esi
call sym._AddToTLDataStrW
cmp word [edi + 8], 8
je 0x406808
mov eax, dword [ebp - 0x49c]
mov dword [esp + 0xc], 8
mov dword [esp + 8], 0
mov dword [esp + 4], eax
lea eax, [ebp - 0x470]
mov dword [esp], eax
call dword [sym.imp.oleaut32.dll_VariantChangeType]
sub esp, 0x10
test eax, eax
je 0x406830
mov edx, 0x40f198
mov eax, esi
call sym._AddToTLDataStrW
mov edx, 0x40f2aa
mov eax, esi
call sym._AddToTLDataStrW
xor eax, eax
mov ecx, pe_nt_image_headers32
lea edi, [ebp - 0x418]
rep stosd dword es:[edi], eax
mov ecx, pe_nt_image_headers32
lea edi, [ebp - 0x218]
lea edx, [ebp - 0x218]
rep stosd dword es:[edi], eax
mov eax, dword [ebp - 0x484]
add ebx, dword [eax + 8]
mov eax, dword [ebp - 0x490]
mov dword [esp + 4], eax
movzx eax, word [ebx + 4]
mov word [esp], ax
mov ecx, dword [ebx]
lea eax, [ebp - 0x418]
call sym._CreateTypeInfo.isra.0
lea edx, [ebp - 0x418]
mov eax, esi
call sym._AddToTLDataStrW
lea edx, [ebp - 0x218]
mov eax, esi
call sym._AddToTLDataStrW
mov edx, 0x40f1ae
mov eax, esi
call sym._AddToTLDataStrW
inc dword [ebp - 0x48c]
mov edi, dword [ebp - 0x48c]
cmp dword [ebp - 0x488], edi
jbe 0x4066c0
mov ebx, dword [ebp - 0x498]
mov edx, dword [ebx + edi*4]
test edx, edx
je 0x40656c
mov eax, esi
call sym._AddToTLDataStrW
mov eax, dword [ebx + edi*4]
mov dword [esp], eax
mov eax, dword [ebp - 0x4a4]
call eax
sub esp, 4
mov eax, dword [ebp - 0x484]
movsx eax, word [eax + 0x18]
cmp dword [ebp - 0x48c], eax
jge 0x406760
mov edx, 0x40f29e
mov eax, esi
call sym._AddToTLDataStrW
mov eax, dword [ebp - 0x484]
movzx edx, word [eax + 0x18]
cmp dx, 1
jne 0x4066f0
mov ebx, dword [ebp - 0x48c]
mov edx, dword [eax + 8]
shl ebx, 4
add edx, ebx
movzx eax, word [edx + 0xc]
test al, 1
jne 0x406640
test al, 2
jne 0x4063b0
test al, 4
je 0x406740
mov edx, 0x40f190
mov eax, esi
call sym._AddToTLDataStrW
mov edx, 0x417e70
mov eax, esi
call sym._AddToTLDataStrW
mov eax, dword [ebp - 0x484]
mov edx, dword [eax + 8]
add edx, ebx
movzx eax, word [edx + 0xc]
test al, 8
jne 0x40667b
test al, 0x10
jne 0x4063ef
test al, 0x40
je 0x4066b2
mov edx, 0x40f19c
mov eax, esi
call sym._AddToTLDataStrW
mov eax, esi
mov edx, str.hascustdata
call sym._AddToTLDataStrW
mov eax, dword [ebp - 0x484]
mov ecx, dword [eax + 8]
add ecx, ebx
test byte [ecx + 0xc], 0x20
je 0x4064b3
mov edi, dword [ecx + 8]
jmp 0x406429
mov edx, 0x40f190
mov eax, esi
call sym._AddToTLDataStrW
mov edx, 0x417e68
mov eax, esi
call sym._AddToTLDataStrW
mov eax, dword [ebp - 0x484]
mov edx, dword [eax + 8]
add edx, ebx
movzx eax, word [edx + 0xc]
test al, 2
jne 0x406728
test al, 4
jne 0x4066d8
test al, 8
je 0x40689d
mov edx, 0x40f19c
mov eax, esi
call sym._AddToTLDataStrW
mov edx, str.retval
mov eax, esi
call sym._AddToTLDataStrW
mov eax, dword [ebp - 0x484]
mov edx, dword [eax + 8]
add edx, ebx
movzx eax, word [edx + 0xc]
test al, 0x10
jne 0x4063ef
test al, 0x40
jne 0x40660b
test al, 0x20
je 0x4064b3
jmp 0x406426
lea edx, [ebp - 0x478]
mov eax, esi
call sym._AddToTLDataStrW
jmp 0x40656c
mov edx, 0x40f19c
mov eax, esi
call sym._AddToTLDataStrW
jmp 0x4065d8
mov edx, 0x40f2a2
mov eax, esi
mov ebx, 4
call sym._AddToTLDataStrW
lea esi, [esi]
mov edx, 0x40f1ae
mov eax, esi
call sym._AddToTLDataStrW
dec ebx
jne 0x406708
mov eax, dword [ebp - 0x484]
jmp 0x4065a2
mov edx, 0x40f19c
mov eax, esi
call sym._AddToTLDataStrW
jmp 0x4063bc
test al, 8
je 0x406900
mov edx, 0x40f190
mov eax, esi
call sym._AddToTLDataStrW
jmp 0x406687
mov edx, 0x40f296
mov eax, esi
call sym._AddToTLDataStrW
lea eax, [ebp - 0x45c]
mov dword [esp + 8], 0
mov dword [esp + 0xc], eax
mov eax, dword [0x40e624]
mov dword [esp + 4], 0x1132
mov dword [esp], eax
call dword [sym.imp.user32.dll_SendMessageW]
mov ecx, dword [ebp - 0x498]
sub esp, 0x10
mov dword [esp + 8], ecx
mov dword [esp + 4], 0
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_HeapFree]
mov eax, dword [ebp - 0x480]
mov esi, dword [ebp - 0x4a4]
sub esp, 0xc
mov dword [esp], eax
call esi
mov eax, dword [ebp - 0x47c]
sub esp, 4
mov dword [esp], eax
call esi
mov ecx, dword [ebp - 0x490]
mov edx, dword [ebp - 0x484]
sub esp, 4
mov eax, dword [ecx]
mov dword [esp + 4], edx
mov dword [esp], ecx
call dword [eax + 0x50]
sub esp, 8
jmp 0x40619b
mov eax, esi
mov edx, 0x40f2a6
call sym._AddToTLDataStrW
mov edx, dword [edi + 0x10]
mov eax, esi
call sym._AddToTLDataStrW
mov edx, 0x40f2a6
mov eax, esi
call sym._AddToTLDataStrW
jmp 0x4064a7
mov edx, dword [ebp - 0x468]
mov eax, esi
call sym._AddToTLDataStrW
jmp 0x4064a7
mov edx, 0x40f19c
mov eax, esi
call sym._AddToTLDataStrW
mov edx, str.propputref
mov eax, esi
call sym._AddToTLDataStrW
jmp 0x4062ff
mov edx, 0x40f19c
mov eax, esi
call sym._AddToTLDataStrW
mov edx, str.propput
jmp 0x406859
mov eax, esi
mov edx, str._stdcall
call sym._AddToTLDataStrW
mov edx, 0x40f1ae
mov eax, esi
call sym._AddToTLDataStrW
jmp 0x406369
test al, 0x10
jne 0x4063ef
test al, 0x40
jne 0x40660b
jmp 0x40641e
mov edx, 0x40f19c
mov eax, esi
call sym._AddToTLDataStrW
mov edx, str.propget
jmp 0x406859
mov edx, 0x40f190
mov eax, esi
call sym._AddToTLDataStrW
jmp 0x406854
mov edx, 0x40f190
mov eax, esi
call sym._AddToTLDataStrW
jmp 0x406874
mov edx, 0x40f190
mov eax, esi
call sym._AddToTLDataStrW
jmp 0x4068c4
test al, 0x10
je 0x406915
mov edx, 0x40f190
mov eax, esi
call sym._AddToTLDataStrW
jmp 0x4063fb
test al, 0x40
je 0x40692a
mov edx, 0x40f190
mov eax, esi
call sym._AddToTLDataStrW
jmp 0x406617
test al, 0x20
je 0x4064bf
mov edi, dword [edx + 8]
lea eax, [edi + 8]
mov dword [ebp - 0x49c], eax
lea eax, [ebp - 0x470]
mov dword [esp], eax
call dword [sym.imp.oleaut32.dll_VariantInit]
mov edx, 0x40f190
mov eax, esi
sub esp, 4
call sym._AddToTLDataStrW
jmp 0x406450