Function at 0x10003bd3
Capabilities:
Query or enumerate registry value

Disassembly:
push ebp
sub esp, 0x1bc
lea ebp, [esp - 4]
mov eax, dword [0x10024b00]
xor eax, ebp
mov dword [ebp + 0x1bc], eax
push 0x70
mov eax, 0x1001c4d1
call fcn.1000c98d
mov eax, dword [ebp + 0x1d8]
mov esi, dword [ebp + 0x1c8]
mov edi, dword [ebp + 0x1cc]
mov dword [ebp - 0x20], eax
mov eax, dword [ebp + 0x1dc]
mov dword [ebp - 0x18], eax
push 0x104
xor ebx, ebx
lea eax, [ebp + 0x78]
push eax
push ebx
mov dword [ebp - 0x1c], ecx
mov dword [ebp - 4], ebx
mov dword [ebp - 0x40], ebx
mov dword [ebp - 0x14], ebx
call dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
push eax
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
test eax, eax
je 0x10003c68
lea eax, [ebp + 0x78]
push 0x5c
push eax
call fcn.1000bf60
pop ecx
pop ecx
cmp eax, ebx
je 0x10003c68
inc eax
push str.IDMGrHlp.exe
push eax
call fcn.1000d483
pop ecx
pop ecx
test eax, eax
jne 0x10003c68
xor eax, eax
jmp 0x10003d6e
cmp dword [0x10025b68], ebx
jne 0x10003c81
call fcn.100010ac
cmp dword [0x10025b68], ebx
je 0x10003d69
lea eax, [ebp - 0x30]
push eax
push 1
push ebx
push str.SoftwareDownloadManagerIDMBIIEXPLORE
push SysReAllocString
mov dword [ebp - 0x30], ebx
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
test eax, eax
je 0x10003ca2
mov dword [ebp - 0x30], ebx
cmp dword [ebp - 0x30], ebx
je 0x10003d69
lea eax, [ebp - 0x5c]
push eax
lea eax, [ebp - 0x58]
push eax
push ebx
push ebx
push 0x1001dbe0
push dword [ebp - 0x30]
mov dword [ebp - 0x5c], 4
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
test eax, eax
jne 0x10003d69
cmp dword [ebp - 0x58], ebx
je 0x10003d69
call fcn.10001bb6
test eax, eax
jne 0x10003d69
push ebx
call dword [sym.imp.ole32.dll_CoInitialize]
mov eax, dword [ebp - 0x1c]
lea ecx, [ebp - 0x24]
push ecx
push ebx
push edi
mov dword [eax + 0x10], ebx
mov dword [eax + 0x14], ebx
mov eax, dword [esi]
push esi
mov dword [ebp - 0x28], ebx
mov dword [ebp - 0x4c], 0x80004005
call dword [eax + 0x50]
cmp eax, ebx
jl 0x10003d6e
lea ecx, [ebp - 0x54]
call fcn.1000b340
mov edi, dword [ebp - 0x24]
mov byte [ebp - 4], 1
cmp edi, ebx
je 0x10003d34
push edi
call dword [sym.imp.KERNEL32.dll_lstrlenW]
inc eax
cmp eax, 0x3fffffff
jle 0x10003d38
xor eax, eax
jmp 0x10003d51
lea esi, [eax + eax]
mov eax, esi
call fcn.1000f620
mov dword [ebp - 0x10], esp
mov eax, esp
push 3
push esi
push edi
push eax
call section..text
push eax
lea ecx, [ebp - 0x54]
call fcn.1000b4d1
cmp eax, ebx
je 0x10003d99
lea ecx, [ebp - 0x54]
mov byte [ebp - 4], bl
call fcn.1000b3ca
mov eax, 0x80004005
lea esp, [ebp - 0x8c]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp + 0x1bc]
xor ecx, ebp
call fcn.1000c94b
add ebp, 0x1c0
leave
ret 0x20
mov edi, dword [ebp - 0x20]
cmp edi, ebx
je 0x10003e52
mov eax, dword [edi + 0x18]
dec eax
jne 0x10003e52
mov eax, dword [edi + 8]
cmp eax, 4
jne 0x10003e06
mov esi, dword [edi + 0xc]
push 1
lea ecx, [ebp]
push ecx
mov dword [ebp - 0x44], ebx
mov eax, dword [esi]
push esi
call dword [eax + 0x30]
mov edi, dword [ebp + 8]
inc edi
push edi
call fcn.1000cbf8
pop ecx
mov dword [ebp - 0x14], eax
cmp eax, ebx
je 0x10003df8
mov eax, dword [esi]
lea ecx, [ebp - 0x44]
push ecx
lea ecx, [edi - 1]
push ecx
push dword [ebp - 0x14]
push esi
call dword [eax + 0xc]
mov eax, dword [ebp - 0x44]
mov ecx, dword [ebp - 0x14]
dec edi
mov byte [eax + ecx], bl
mov dword [ebp - 0x38], edi
mov ecx, dword [esi]
push ebx
push ebx
push ebx
xor eax, eax
push eax
push esi
call dword [ecx + 0x14]
jmp 0x10003e52
cmp eax, 1
jne 0x10003e52
mov esi, dword [edi + 0x20]
cmp esi, ebx
jbe 0x10003e52
push dword [edi + 0xc]
call dword [sym.imp.KERNEL32.dll_GlobalLock]
mov dword [ebp - 0x20], eax
cmp eax, ebx
je 0x10003e52
lea eax, [esi + 1]
push eax
call fcn.1000cbf8
pop ecx
mov dword [ebp - 0x14], eax
cmp eax, ebx
je 0x10003e49
push esi
push dword [ebp - 0x20]
push eax
call fcn.1000cca0
mov eax, dword [ebp - 0x14]
add esp, 0xc
mov byte [esi + eax], bl
mov dword [ebp - 0x38], esi
push dword [edi + 0xc]
call dword [sym.imp.KERNEL32.dll_GlobalUnlock]
cmp dword [ebp - 0x18], ebx
je 0x10003ef6
lea ecx, [ebp + 0x48]
call fcn.10002581
push dword [ebp - 0x18]
mov byte [ebp - 4], 2
call dword [sym.imp.KERNEL32.dll_lstrlenW]
inc eax
cmp eax, 0x3fffffff
jle 0x10003e7c
xor eax, eax
jmp 0x10003e97
lea esi, [eax + eax]
mov eax, esi
call fcn.1000f620
mov dword [ebp - 0x10], esp
mov eax, esp
push 3
push esi
push dword [ebp - 0x18]
push eax
call section..text
push eax
lea ecx, [ebp + 0x48]
call fcn.10003b54
cmp dword [ebp + 0x50], ebx
je 0x10003eea
mov eax, dword [ebp + 0x48]
cmp eax, ebx
jne 0x10003eaf
lea eax, [ebp + 0x4c]
push ebx
push ebx
push 0xffffffffffffffff
push eax
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
mov esi, eax
cmp esi, ebx
je 0x10003eea
push esi
push ebx
call dword [sym.imp.OLEAUT32.dll_SysReAllocStringLen]
mov dword [ebp - 0x28], eax
cmp eax, ebx
je 0x10003eea
mov eax, dword [ebp + 0x48]
cmp eax, ebx
jne 0x10003edb
lea eax, [ebp + 0x4c]
push esi
push dword [ebp - 0x28]
push 0xffffffffffffffff
push eax
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
lea ecx, [ebp + 0x48]
mov byte [ebp - 4], 1
call fcn.100025a5
mov esi, dword [sym.imp.ole32.dll_CoCreateInstance]
lea eax, [ebp - 0x3c]
push eax
push 0x1001d2d8
push 1
push ebx
push 0x1001d308
call esi
cmp eax, ebx
je 0x10003f16
mov dword [ebp - 0x3c], ebx
lea eax, [ebp - 0x48]
push eax
push 0x1001d298
push 4
push ebx
push 0x1001d2b8
call esi
cmp eax, ebx
jne 0x100040a6
mov edi, dword [ebp - 0x24]
mov dword [ebp - 0x34], ebx
cmp edi, ebx
je 0x10003f4a
push edi
call dword [sym.imp.KERNEL32.dll_lstrlenW]
inc eax
cmp eax, 0x3fffffff
jle 0x10003f4e
xor eax, eax
jmp 0x10003f67
lea esi, [eax + eax]
mov eax, esi
call fcn.1000f620
mov dword [ebp - 0x10], esp
mov eax, esp
push 3
push esi
push edi
push eax
call section..text
mov edi, dword [ebp - 0x1c]
lea ecx, [ebp - 0x34]
push ecx
push eax
mov ecx, edi
call fcn.100021b1
mov esi, dword [sym.imp.OLEAUT32.dll_VariantClear]
lea eax, [ebp - 0x6c]
push eax
call esi
lea eax, [ebp - 0x7c]
push eax
call esi
mov eax, dword [edi + 0x10]
cmp eax, ebx
je 0x10003f9b
push 8
pop ecx
mov word [ebp - 0x6c], cx
mov dword [ebp - 0x64], eax
jmp 0x10003fa1
xor eax, eax
mov word [ebp - 0x6c], ax
mov eax, dword [ebp + 0x1e4]
cmp eax, ebx
je 0x10003fb7
push 0x13
pop ecx
mov word [ebp - 0x7c], cx
mov dword [ebp - 0x74], eax
jmp 0x10003fbd
xor eax, eax
mov word [ebp - 0x7c], ax
mov eax, dword [ebp - 0x3c]
mov dword [ebp - 0x2c], ebx
mov dword [ebp - 0x18], ebx
cmp eax, ebx
je 0x10003fdb
mov ecx, dword [eax]
lea edx, [ebp - 0x18]
push edx
lea edx, [ebp - 0x2c]
push edx
push dword [ebp - 0x24]
push eax
call dword [ecx + 0x20]
push dword [ebp - 0x24]
lea ecx, [ebp - 0x20]
call fcn.10001eb9
mov byte [ebp - 4], 3
mov dword [ebp - 0x1c], ebx
cmp dword [ebp - 0x14], ebx
je 0x1000402a
cmp dword [ebp - 0x38], ebx
je 0x1000402a
mov esi, dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
push ebx
push ebx
push 0xffffffffffffffff
push dword [ebp - 0x14]
push ebx
push ebx
call esi
cmp eax, ebx
je 0x1000402a
push dword [ebp - 0x38]
push ebx
call dword [sym.imp.OLEAUT32.dll_SysReAllocStringLen]
mov dword [ebp - 0x1c], eax
cmp eax, ebx
je 0x1000402a
push dword [ebp - 0x38]
push eax
push 0xffffffffffffffff
push dword [ebp - 0x14]
push ebx
push ebx
call esi
sub esp, 0x10
mov edi, esp
lea esi, [ebp - 0x7c]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
sub esp, 0x10
mov eax, dword [ebp - 0x48]
mov ecx, dword [eax]
movsd dword es:[edi], dword [esi]
mov edi, esp
push 0x20
push ebx
push ebx
push dword [ebp - 0x18]
lea esi, [ebp - 0x6c]
push dword [ebp - 0x2c]
movsd dword es:[edi], dword [esi]
push dword [ebp - 0x1c]
movsd dword es:[edi], dword [esi]
push dword [ebp - 0x34]
movsd dword es:[edi], dword [esi]
push dword [ebp - 0x28]
movsd dword es:[edi], dword [esi]
push dword [ebp - 0x20]
push eax
call dword [ecx + 0x10]
mov esi, dword [sym.imp.OLEAUT32.dll_SysStringLen]
mov dword [ebp - 0x4c], eax
cmp dword [ebp - 0x1c], ebx
je 0x10004074
push dword [ebp - 0x1c]
call esi
cmp dword [ebp - 0x34], ebx
je 0x1000407e
push dword [ebp - 0x34]
call esi
cmp dword [ebp - 0x2c], ebx
je 0x10004088
push dword [ebp - 0x2c]
call esi
cmp dword [ebp - 0x18], ebx
je 0x10004092
push dword [ebp - 0x18]
call esi
mov eax, dword [ebp - 0x48]
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
push dword [ebp - 0x20]
mov byte [ebp - 4], 1
call esi
jmp 0x100040d9
push eax
lea eax, [ebp + 0x17c]
push str.Error_0x_x
push eax
call fcn.1000f35d
add esp, 0xc
push 0x10000
push str.Cannot_transfer_the_download_to_IDM
lea eax, [ebp + 0x17c]
push eax
push ebx
call dword [sym.imp.USER32.dll_MessageBoxA]
mov esi, dword [sym.imp.OLEAUT32.dll_SysStringLen]
mov eax, dword [ebp - 0x3c]
cmp eax, ebx
je 0x100040e6
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
lea eax, [ebp - 0x40]
xor edi, edi
push eax
inc edi
push edi
call dword [sym.imp.ole32.dll_CoGetMalloc]
push dword [ebp - 0x24]
test eax, eax
jl 0x1000410f
mov eax, dword [ebp - 0x40]
mov ecx, dword [eax]
push eax
call dword [ecx + 0x14]
mov eax, dword [ebp - 0x40]
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
jmp 0x10004118
call dword [sym.imp.ole32.dll_CoTaskMemFree]
mov dword [ebp - 4], edi
cmp dword [ebp - 0x14], ebx
je 0x10004126
push dword [ebp - 0x14]
call fcn.1000c55a
pop ecx
cmp dword [ebp - 0x28], ebx
je 0x10004130
push dword [ebp - 0x28]
call esi
call dword [sym.imp.ole32.dll_CoUninitialize]
lea ecx, [ebp - 0x54]
mov byte [ebp - 4], bl
call fcn.1000b3ca
cmp dword [ebp - 0x4c], ebx
jne 0x10003d69
jmp 0x10003c61