Function at 0x40d9b0
Capabilities:
Print debug messages
Set registry value

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x500ead
mov eax, dword fs:[0]
push eax
sub esp, 0x334
mov eax, dword [0x5470bc]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov esi, ecx
mov dword [ebp - 0x328], esi
push str.CInstallCtrl::SaveRegistry____r_n
mov dword [ebp - 0x324], 0
call dword [sym.imp.KERNEL32.dll_OutputDebugStringA]
push 0xb0
lea eax, [ebp - 0x320]
push 0
push eax
call fcn.004d8530
add esp, 0xc
mov dword [ebp - 0x320], 0x532d6c
mov dword [ebp - 0x310], 0x532d7c
mov dword [ebp - 4], 0
lea eax, [ebp - 0x308]
push 0
xorps xmm0, xmm0
mov dword [ebp - 0x324], 1
push eax
lea ecx, [ebp - 0x2b8]
mov dword [ebp - method.std::basic_istream_wchar_t__struct_std::char_traits_wchar_t__.virtual_0], vtable.std::basic_istream_wchar_t__struct_std::char_traits_wchar_t__.0
mov dword [ebp - 0x2bc], 0x50
movlpd qword [ebp - 0x318], xmm0
call fcn.004084e0
lea eax, [ebp - 0x310]
mov dword [ebp - 0x24c], eax
mov eax, dword [ebp - 0x310]
mov eax, dword [eax + 4]
mov dword [ebp + eax - method.std::basic_ostream_wchar_t__struct_std::char_traits_wchar_t__.virtual_0], vtable.std::basic_ostream_wchar_t__struct_std::char_traits_wchar_t__.0
mov eax, dword [ebp - 0x310]
mov ecx, dword [eax + 4]
lea eax, [ecx - 8]
mov dword [ebp + ecx - 0x314], eax
mov eax, dword [ebp - 0x320]
mov eax, dword [eax + 4]
mov dword [ebp + eax - method.std::basic_iostream_wchar_t__struct_std::char_traits_wchar_t__.virtual_0], vtable.std::basic_iostream_wchar_t__struct_std::char_traits_wchar_t__.0
mov eax, dword [ebp - 0x320]
mov ecx, dword [eax + 4]
lea eax, [ecx - 0x20]
mov dword [ebp + ecx - 0x324], eax
mov dword [ebp - 4], 5
mov eax, dword [ebp - 0x320]
mov eax, dword [eax + 4]
mov dword [ebp + eax - method.std::basic_stringstream_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__.virtual_0], vtable.std::basic_stringstream_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__.0
mov eax, dword [ebp - 0x320]
mov ecx, dword [eax + 4]
lea eax, [ecx - 0x68]
mov dword [ebp + ecx - 0x324], eax
lea eax, [ebp - 0x308]
mov ecx, eax
mov dword [ebp - 0x24c], eax
call fcn.00408420
mov dword [ebp - method.std::basic_stringbuf_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__.virtual_0], vtable.std::basic_stringbuf_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__.0
mov dword [ebp - 0x2d0], 0
mov dword [ebp - 0x2cc], 0
push 0x532e58
push ecx
push str.ZZDS_PC
push ecx
lea eax, [ebp - 0x310]
mov dword [ebp - 4], 7
push 0x533354
push eax
call fcn.00408840
add esp, 0xc
push eax
call fcn.00408840
add esp, 0xc
push eax
call fcn.00408840
add esp, 8
lea eax, [ebp - 0x264]
lea ecx, [ebp - 0x320]
push eax
call fcn.00406a30
mov byte [ebp - 4], 8
push eax
call fcn.004055a0
mov ecx, eax
call fcn.004056d0
mov eax, dword [ebp - 0x250]
cmp eax, 8
jb 0x40db9c
inc eax
lea ecx, [ebp - 0x264]
push eax
push dword [ebp - 0x264]
call fcn.004024e0
xorps xmm0, xmm0
mov dword [ebp - 0x268], 0
movq qword [ebp - 0x270], xmm0
mov edi, reloc.WS2_32.dll_bind
mov dword [ebp - method.Registry.virtual_0], vtable.Registry.0
mov dword [ebp - 0x26c], reloc.WS2_32.dll_bind
mov dword [ebp - 0x268], edi
push str.ZZDS_PC
lea eax, [ebp - 0x218]
mov byte [ebp - 4], 9
push str.Software_s
push eax
call fcn.00408e20
add esp, 0xc
lea eax, [ebp - 0x24c]
push eax
lea eax, [ebp - 0x324]
push eax
push 0
push 0xf003f
push 0
push 0
push 0
lea eax, [ebp - 0x218]
push eax
push edi
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyExW]
mov ebx, dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
test eax, eax
jne 0x40dd9f
mov edi, dword [ebp - 0x324]
lea eax, [esi + 4]
xor ecx, ecx
mov dword [ebp - 0x268], edi
push 0xffffffffffffffff
push ecx
mov word [ebp - 0x230], cx
lea ecx, [ebp - 0x230]
push eax
mov dword [ebp - 0x21c], 7
mov dword [ebp - 0x220], 0
call fcn.00402540
mov byte [ebp - 4], 0xa
lea eax, [ebp - 0x230]
mov ecx, dword [ebp - 0x21c]
cmp ecx, 8
mov esi, dword [ebp - 0x230]
mov edx, dword [ebp - 0x220]
cmovae eax, esi
cmp word [eax + edx*2 - 2], 0x5c
jne 0x40dcc0
mov eax, edx
lea edx, [eax - 1]
cmp eax, edx
jae 0x40dc9c
push str.invalid_string_position
call fcn.0041b364
cmp ecx, 8
mov dword [ebp - 0x220], edx
lea eax, [ebp - 0x230]
cmovae eax, esi
xor ecx, ecx
mov word [eax + edx*2], cx
mov ecx, dword [ebp - 0x21c]
mov esi, dword [ebp - 0x230]
cmp ecx, 8
lea edx, [ebp - 0x230]
cmovae edx, esi
mov ecx, edx
lea esi, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x40dcd1
sub ecx, esi
sar ecx, 1
lea eax, [ecx + ecx]
push eax
push edx
push 1
push 0
push str.InstPath
push edi
call ebx
mov esi, dword [ebp - 0x328]
cmp dword [esi + 0xac], 8
lea edx, [esi + 0x98]
jb 0x40dd08
mov edx, dword [edx]
mov ecx, edx
lea eax, [ecx + 2]
mov dword [ebp - 0x324], eax
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x40dd13
sub ecx, dword [ebp - 0x324]
sar ecx, 1
lea eax, [ecx + ecx]
push eax
push edx
push 1
push 0
push str.PackageName
push edi
call ebx
cmp dword [esi + 0x4c], 8
lea edx, [esi + 0x38]
jb 0x40dd42
mov edx, dword [edx]
mov ecx, edx
lea eax, [ecx + 2]
mov dword [ebp - 0x324], eax
nop dword [eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x40dd50
sub ecx, dword [ebp - 0x324]
sar ecx, 1
lea eax, [ecx + ecx]
push eax
push edx
push 1
push 0
push 0x5333a0
push edi
call ebx
mov eax, dword [ebp - 0x21c]
cmp eax, 8
jb 0x40dd92
inc eax
lea ecx, [ebp - 0x230]
push eax
push dword [ebp - 0x230]
call fcn.004024e0
test edi, edi
je 0x40debf
jmp 0x40deb0
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
lea eax, [ebp - 0x264]
push eax
call fcn.004045b0
add esp, 8
mov esi, eax
mov byte [ebp - 4], 0xb
lea ecx, [ebp - 0x230]
push 0x10
xor eax, eax
mov dword [ebp - 0x21c], 7
push 0x5333b0
mov dword [ebp - 0x220], 0
mov word [ebp - 0x230], ax
call fcn.004020c0
push esi
lea eax, [ebp - 0x230]
mov byte [ebp - 4], 0xc
push eax
lea eax, [ebp - 0x248]
push eax
call fcn.004087a0
add esp, 0xc
push eax
mov byte [ebp - 4], 0xd
call fcn.004055a0
mov ecx, eax
call fcn.004056d0
mov eax, dword [ebp - 0x234]
cmp eax, 8
jb 0x40de34
inc eax
lea ecx, [ebp - 0x248]
push eax
push dword [ebp - 0x248]
call fcn.004024e0
xor eax, eax
mov dword [ebp - 0x234], 7
mov word [ebp - 0x248], ax
mov eax, dword [ebp - 0x21c]
mov dword [ebp - 0x238], 0
cmp eax, 8
jb 0x40de6f
inc eax
lea ecx, [ebp - 0x230]
push eax
push dword [ebp - 0x230]
call fcn.004024e0
xor eax, eax
mov dword [ebp - 0x21c], 7
mov word [ebp - 0x230], ax
mov eax, dword [ebp - 0x250]
mov dword [ebp - 0x220], 0
cmp eax, 8
jb 0x40deaa
inc eax
lea ecx, [ebp - 0x264]
push eax
push dword [ebp - 0x264]
call fcn.004024e0
mov esi, dword [ebp - 0x328]
push edi
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
xor edi, edi
mov dword [ebp - 0x268], edi
xorps xmm0, xmm0
mov dword [ebp - 0x21c], 0
movq qword [ebp - 0x224], xmm0
mov ebx, reloc.WS2_32.dll_bind
mov dword [ebp - method.Registry.virtual_0], vtable.Registry.0
mov dword [ebp - 0x220], reloc.WS2_32.dll_bind
mov dword [ebp - 0x21c], ebx
push str.ZZDS_PC
lea eax, [ebp - 0x218]
mov byte [ebp - 4], 0xe
push str.SoftwareMicrosoftWindowsCurrentVersionUninstall_s
push eax
call fcn.00408e20
add esp, 0xc
lea eax, [ebp - 0x24c]
push eax
lea eax, [ebp - 0x324]
push eax
push 0
push 0xf003f
push 0
push 0
push 0
lea eax, [ebp - 0x218]
push eax
push ebx
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyExW]
test eax, eax
jne 0x40e159
mov ebx, dword [ebp - 0x324]
lea eax, [ebp - 0x264]
push str.ZhuanZhuan.exe
add esi, 4
mov dword [ebp - 0x21c], ebx
push esi
push eax
call fcn.004086b0
add esp, 0xc
push str.uninst.exe
lea eax, [ebp - 0x248]
mov byte [ebp - 4], 0xf
push esi
push eax
call fcn.004086b0
mov esi, dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
add esp, 0xc
push 0x14
push 0x5332d4
push 1
push 0
push str.DisplayName
push ebx
call esi
cmp dword [ebp - 0x234], 8
lea edx, [ebp - 0x248]
cmovae edx, dword [ebp - 0x248]
mov ecx, edx
lea eax, [ecx + 2]
mov dword [ebp - 0x324], eax
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x40dfb6
sub ecx, dword [ebp - 0x324]
sar ecx, 1
lea eax, [ecx + ecx]
push eax
push edx
push 1
push 0
push str.UninstallString
push ebx
call esi
cmp dword [ebp - 0x250], 8
lea edx, [ebp - 0x264]
cmovae edx, dword [ebp - 0x264]
mov ecx, edx
lea eax, [ecx + 2]
mov dword [ebp - 0x324], eax
nop dword [eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x40e000
sub ecx, dword [ebp - 0x324]
sar ecx, 1
lea eax, [ecx + ecx]
push eax
push edx
push 1
push 0
push str.DisplayIcon
push ebx
call esi
mov edx, dword [ebp - 0x328]
add edx, 0x50
cmp dword [edx + 0x14], 8
jb 0x40e035
mov edx, dword [edx]
mov ecx, edx
lea eax, [ecx + 2]
mov dword [ebp - 0x324], eax
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x40e040
sub ecx, dword [ebp - 0x324]
sar ecx, 1
lea eax, [ecx + ecx]
push eax
push edx
push 1
push 0
push str.Publisher
push ebx
call esi
mov edx, dword [ebp - 0x328]
add edx, 0x38
cmp dword [edx + 0x14], 8
jb 0x40e075
mov edx, dword [edx]
mov ecx, edx
lea eax, [ecx + 2]
mov dword [ebp - 0x324], eax
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x40e080
sub ecx, dword [ebp - 0x324]
sar ecx, 1
lea eax, [ecx + ecx]
push eax
push edx
push 1
push 0
push str.DisplayVersion
push ebx
call esi
mov eax, dword [ebp - 0x234]
cmp eax, 8
jb 0x40e0c2
inc eax
lea ecx, [ebp - 0x248]
push eax
push dword [ebp - 0x248]
call fcn.004024e0
xor eax, eax
mov dword [ebp - 0x234], 7
mov word [ebp - 0x248], ax
mov eax, dword [ebp - 0x250]
mov dword [ebp - 0x238], 0
cmp eax, 8
jb 0x40e0fd
inc eax
lea ecx, [ebp - 0x264]
push eax
push dword [ebp - 0x264]
call fcn.004024e0
test ebx, ebx
jne 0x40e264
mov ebx, dword [sym.imp.ADVAPI32.dll_RegCloseKey]
test edi, edi
je 0x40e112
push edi
call ebx
lea ecx, [ebp - 0x2b8]
call fcn.00406a50
lea eax, [ebp - 0x2b8]
mov dword [ebp - 4], 0x13
push eax
mov dword [ebp - method.std::ios_base.virtual_0], vtable.std::ios_base.0
call fcn.0041ba11
add esp, 4
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.004264c2
mov esp, ebp
pop ebp
ret
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
lea eax, [ebp - 0x340]
push eax
call fcn.004045b0
add esp, 8
mov esi, eax
mov byte [ebp - 4], 0x10
lea ecx, [ebp - 0x248]
push 0x10
xor eax, eax
mov dword [ebp - 0x234], 7
push 0x5334cc
mov dword [ebp - 0x238], 0
mov word [ebp - 0x248], ax
call fcn.004020c0
push esi
lea eax, [ebp - 0x248]
mov byte [ebp - 4], 0x11
push eax
lea eax, [ebp - 0x264]
push eax
call fcn.004087a0
add esp, 0xc
push eax
mov byte [ebp - 4], 0x12
call fcn.004055a0
mov ecx, eax
call fcn.004056d0
mov eax, dword [ebp - 0x250]
cmp eax, 8
jb 0x40e1ee
inc eax
lea ecx, [ebp - 0x264]
push eax
push dword [ebp - 0x264]
call fcn.004024e0
xor eax, eax
mov dword [ebp - 0x250], 7
mov word [ebp - 0x264], ax
mov eax, dword [ebp - 0x234]
mov dword [ebp - 0x254], 0
cmp eax, 8
jb 0x40e229
inc eax
lea ecx, [ebp - 0x248]
push eax
push dword [ebp - 0x248]
call fcn.004024e0
xor eax, eax
mov dword [ebp - 0x234], 7
mov word [ebp - 0x248], ax
mov eax, dword [ebp - 0x32c]
mov dword [ebp - 0x238], 0
cmp eax, 8
jb 0x40e264
inc eax
lea ecx, [ebp - 0x340]
push eax
push dword [ebp - 0x340]
call fcn.004024e0
push ebx
mov ebx, dword [sym.imp.ADVAPI32.dll_RegCloseKey]
call ebx
jmp 0x40e10b