Function at 0x40d890
Capabilities:
Query or enumerate registry key

Disassembly:
push ebp
lea ebp, [esp - 0x1a04]
mov eax, 0x1a04
call fcn.004fe1a0
push 0xffffffffffffffff
push 0x524deb
mov eax, dword fs:[0]
push eax
sub esp, 0x34
mov eax, dword [0x5a4aa8]
xor eax, ebp
mov dword [ebp + 0x1a00], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x10], esp
mov ebx, ecx
mov dword [ebp - 0x34], ebx
xor edi, edi
mov dword [ebp - 0x1c], edi
mov dword [ebp - 0x20], edi
mov dword [ebp - 0x18], edi
mov dword [ebp - 0x28], edi
push 0x535a4c
lea ecx, [ebp - 0x14]
call fcn.00405c00
mov dword [ebp - 4], edi
mov byte [ebp - 4], 1
push 0x200
push edi
lea eax, [ebp + 0x1200]
push eax
call fcn.004fd670
call fcn.004290f0
push 1
push 0x200
lea ecx, [ebp + 0x1200]
push ecx
push str.Install_Mode
mov edx, dword [eax]
push edx
mov edx, str.InstallingSetup
call fcn.004920e0
add esp, 0x20
test eax, eax
je 0x40d94e
push str.Default_Install_Mode
push pe_nt_image_headers32
lea eax, [ebp + 0x1200]
push eax
call fcn.004fa94e
add esp, 0xc
call fcn.0040df70
call fcn.004290f0
lea ecx, [ebp - 0x20]
push ecx
mov edx, dword [ebx + 0x320c]
push edx
mov edx, str.InstallingComponents
call fcn.00491fb0
add esp, 8
test eax, eax
je 0x40d9a1
push str.InstallingComponents
push str.Fail___There_is_no_registry_sub_key___s__in__CCmdOperator::FNT_WRITE_ITEM_INFO____
mov ecx, 0x649e50
call fcn.004918f0
add esp, 8
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x14]
call fcn.00406150
xor eax, eax
jmp 0x40dd39
mov dword [ebp - 0x18], edi
push edi
push edi
push edi
push edi
push edi
push edi
push edi
lea eax, [ebp - 0x18]
push eax
push edi
push edi
push edi
mov ecx, dword [ebp - 0x20]
push ecx
call dword [sym.imp.ADVAPI32.dll_RegQueryInfoKeyW]
test eax, eax
je 0x40d9c3
mov dword [ebp - 0x18], edi
xor esi, esi
mov dword [ebp - 0x24], esi
cmp esi, dword [ebp - 0x18]
jae 0x40dd0b
push 0x200
push edi
lea edx, [ebp + 0x1800]
push edx
call fcn.004fd670
push 0x200
push edi
lea eax, [ebp + 0x1400]
push eax
call fcn.004fd670
add esp, 0x18
mov dword [ebp - 0x28], pe_nt_image_headers32
lea ecx, [ebp - 0x40]
push ecx
push edi
push edi
push edi
lea edx, [ebp - 0x28]
push edx
lea eax, [ebp + 0x1400]
push eax
push esi
mov ecx, dword [ebp - 0x20]
push ecx
call dword [sym.imp.ADVAPI32.dll_RegEnumKeyExW]
test eax, eax
jne 0x40db62
push str.InstallOrder
lea edx, [ebp + 0x1400]
push edx
call fcn.004f9f1e
add esp, 8
test eax, eax
je 0x40db62
lea eax, [ebp + 0x1400]
push eax
push str.InstallingComponents
push 0x535a74
lea ecx, [ebp - 0x14]
push ecx
call fcn.004081a0
add esp, 0x10
lea edx, [ebx + 0x200]
mov eax, edx
lea esi, [eax + 2]
jmp 0x40da70
mov cx, word [eax]
add eax, 2
cmp cx, di
jne 0x40da70
sub eax, esi
sar eax, 1
je 0x40da93
push str.CUSTOM
push edx
call fcn.004f9f1e
add esp, 8
test eax, eax
je 0x40daa1
lea edx, [ebp + 0x1200]
mov ecx, dword [ebp - 0x14]
call fcn.0040dd80
mov dword [ebp - 0x1c], edi
mov esi, dword [ebp - 0x14]
call fcn.004290f0
push 4
push 4
lea edx, [ebp - 0x1c]
push edx
push str.InstallNow
mov eax, dword [eax]
push eax
mov edx, esi
call fcn.004920e0
add esp, 0x14
test eax, eax
jne 0x40dad3
cmp dword [ebp - 0x1c], edi
je 0x40dad3
mov bl, 1
jmp 0x40dad5
xor bl, bl
push str.Copy_File
mov ecx, dword [ebp - 0x14]
push ecx
call fcn.004290f0
push eax
mov eax, pe_nt_image_headers32
lea edx, [ebp + 0x1800]
call fcn.004051f0
test eax, eax
je 0x40db16
push 0xff
push 0x53e230
push pe_nt_image_headers32
lea edx, [ebp + 0x1800]
push edx
call fcn.004fa71b
add esp, 0x10
push str.FALSE
lea eax, [ebp + 0x1800]
push eax
call fcn.004f9f1e
add esp, 8
test eax, eax
je 0x40db62
push str.ALWAYS_ADDITIONAL_ONLY
lea ecx, [ebp + 0x1800]
push ecx
call fcn.004f9f1e
add esp, 8
test eax, eax
je 0x40db97
push str.SELECT_ADDITIONAL_ONLY
lea edx, [ebp + 0x1800]
push edx
call fcn.004f9f1e
add esp, 8
test eax, eax
jne 0x40db70
test bl, bl
jne 0x40db97
mov esi, dword [ebp - 0x24]
add esi, 1
mov ebx, dword [ebp - 0x34]
jmp 0x40d9c5
push 0x53e230
lea eax, [ebp + 0x1800]
push eax
call fcn.004f9f1e
add esp, 8
test eax, eax
jne 0x40db8c
test bl, bl
je 0x40db62
lea ecx, [ebp + 0x1400]
call fcn.0040e150
push 0x800
push edi
lea ecx, [ebp]
push ecx
call fcn.004fd670
add esp, 0xc
push str.Additional_CopyFile
mov edx, dword [ebp - 0x14]
push edx
call fcn.004290f0
push eax
mov eax, 0x400
lea edx, [ebp]
call fcn.004051f0
test eax, eax
jne 0x40db62
mov dword [ebp - 0x2c], 0x2c
mov dword [ebp - 0x30], edi
lea eax, [ebp - 0x30]
push eax
lea ecx, [ebp - 0x2c]
push ecx
lea edx, [ebp]
push edx
call fcn.004fa864
mov esi, eax
add esp, 0xc
cmp esi, edi
je 0x40db62
push 0x200
push edi
lea eax, [ebp + 0x1600]
push eax
call fcn.004fd670
push 0x800
push edi
lea ecx, [ebp + 0x800]
push ecx
call fcn.004fd670
push 0xff
push esi
push pe_nt_image_headers32
lea edx, [ebp + 0x1600]
push edx
call fcn.004fa71b
mov ecx, 0x539d98
lea edx, [ebp + 0x1600]
call fcn.00494ad0
mov ecx, 0x539d98
lea edx, [ebp + 0x1600]
call fcn.00494c80
lea eax, [ebp + 0x1600]
push eax
push str.FILE_INFO
push 0x5352d4
push 0x400
lea ecx, [ebp + 0x800]
push ecx
call fcn.004fa51d
push 0x141c
call fcn.004da969
add esp, 0x40
mov esi, eax
mov dword [ebp - 0x38], esi
mov byte [ebp - 4], 2
cmp esi, edi
je 0x40dc8f
call fcn.00419c90
jmp 0x40dc91
xor esi, esi
mov byte [ebp - 4], 1
cmp esi, edi
je 0x40dcfd
mov edx, dword [ebp - 0x14]
push edx
mov edx, esi
lea ecx, [ebp + 0x800]
call fcn.0040b020
test al, al
je 0x40dcf4
push 0x200
push edi
lea eax, [ebp + 0x1000]
push eax
call fcn.004fd670
lea ecx, [ebp + 0x1600]
push ecx
lea edx, [ebp + 0x1400]
push edx
push 0x539da0
push pe_nt_image_headers32
lea eax, [ebp + 0x1000]
push eax
call fcn.004fa51d
add esp, 0x20
mov ecx, esi
lea edx, [ebp + 0x1000]
call fcn.0040e7a0
push esi
call fcn.004da999
add esp, 4
lea ecx, [ebp - 0x30]
push ecx
lea edx, [ebp - 0x2c]
push edx
push edi
jmp 0x40dbdf
mov dword [ebp - 4], edi
mov dword [ebp - 4], 0xffffffff
mov eax, dword [ebp - 0x14]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40dd34
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, 1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp + 0x1a00]
xor ecx, ebp
call fcn.004fa103
add ebp, 0x1a04
mov esp, ebp
pop ebp
ret