Function at 0x43a874
Capabilities:
Query or enumerate registry key
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x3bc
push ebx
push esi
xor ebx, ebx
push edi
mov eax, dword [ebp + 8]
push ebx
mov eax, dword [eax]
push ebx
mov edi, ecx
lea ecx, [ebp - 0x30]
push ecx
lea ecx, [ebp - 0x40]
push ecx
lea ecx, [ebp - 0x2c]
push ecx
push ebx
lea ecx, [ebp - 0x34]
push ecx
lea ecx, [ebp - 0x24]
push ecx
push ebx
push ebx
push ebx
push eax
mov dword [ebp - 0x14], ebx
mov dword [ebp - 0x20], ebx
mov dword [ebp - 0x1c], ebx
mov dword [ebp - 0x28], ebx
mov dword [ebp - 0x24], ebx
mov dword [ebp - 0x34], ebx
mov dword [ebp - 0x2c], ebx
mov dword [ebp - 0x40], ebx
mov dword [ebp - 0x30], ebx
call dword [sym.imp.ADVAPI32.dll_RegQueryInfoKeyW]
mov esi, eax
cmp esi, ebx
je 0x43a91c
call fcn.0040ab90
inc ebx
cmp eax, 2
jg 0x43a908
push 2
push 0x88
push str.installer_tdsetuputil_registry_key_backup.cc
lea ecx, [ebp - 0x1ac]
mov dword [ebp - 0x14], ebx
call fcn.0040add0
push esi
add eax, 8
push str.Failed_getting_info_of_key_to_backup__result:
push eax
call fcn.00403540
pop ecx
pop ecx
mov ecx, eax
call fcn.0043a273
test byte [ebp - 0x14], bl
je 0x43b038
lea ecx, [ebp - 0x1ac]
jmp 0x43b033
cmp dword [ebp - 0x34], 0xfffffffe
jae 0x43aff2
mov eax, dword [ebp - 0x40]
cmp eax, 0xfffffffe
jae 0x43aff2
cmp dword [ebp - 0x34], eax
lea eax, [ebp - 0x40]
jb 0x43a93d
lea eax, [ebp - 0x34]
mov esi, dword [eax]
inc esi
xor ecx, ecx
push 2
pop edx
mov eax, esi
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.0046e263
mov dword [ebp - 8], eax
mov eax, dword [ebp - 0x2c]
pop ecx
cmp eax, ebx
je 0x43aaef
mov dword [ebp - 4], eax
xor ecx, ecx
push 0x30
pop edx
mul edx
seto cl
neg ecx
or ecx, eax
xor eax, eax
add ecx, 4
setb al
neg eax
or eax, ecx
push eax
call fcn.0046e263
pop ecx
cmp eax, ebx
je 0x43a9bb
mov ecx, dword [ebp - 4]
mov dword [eax], ecx
add eax, 4
mov dword [ebp - 0xc], eax
mov dword [ebp - 0x18], eax
lea eax, [ecx - 1]
mov dword [ebp - 4], eax
cmp eax, ebx
jl 0x43a9b6
mov ecx, dword [ebp - 0x18]
call fcn.0043a1e1
add dword [ebp - 0x18], 0x30
dec dword [ebp - 4]
jns 0x43a9a5
mov eax, dword [ebp - 0xc]
jmp 0x43a9bd
xor eax, eax
push eax
lea ecx, [ebp - 0x20]
call fcn.0043a311
push dword [ebp - 0x30]
call fcn.0046e263
pop ecx
mov dword [ebp - 0x10], eax
mov dword [ebp - 0x3c], ebx
mov dword [ebp - 0x4c], ebx
mov dword [ebp - 0x38], ebx
mov dword [ebp - 0xc], ebx
cmp dword [ebp - 0x2c], ebx
jbe 0x43aae6
mov eax, dword [ebp - 0x20]
mov dword [ebp - 4], eax
mov eax, dword [ebp - 0x30]
lea ecx, [ebp - 0x38]
push ecx
push dword [ebp - 0x10]
lea ecx, [ebp - 0x4c]
push ecx
push ebx
lea ecx, [ebp - 0x3c]
push ecx
push dword [ebp - 8]
mov dword [ebp - 0x38], eax
mov eax, dword [ebp + 8]
push dword [ebp - 0xc]
mov eax, dword [eax]
push eax
mov dword [ebp - 0x3c], esi
call dword [sym.imp.ADVAPI32.dll_RegEnumValueW]
mov dword [ebp - 0x18], eax
sub eax, ebx
je 0x43aabc
sub eax, 0xea
jne 0x43ab5a
mov eax, dword [ebp - 0x38]
cmp eax, dword [ebp - 0x30]
jbe 0x43aa6c
mov dword [ebp - 0x30], eax
cmp dword [ebp - 0x10], ebx
je 0x43aa4a
push dword [ebp - 0x10]
call fcn.0046dff2
pop ecx
mov dword [ebp - 0x10], ebx
push dword [ebp - 0x30]
call fcn.0046e263
pop ecx
mov dword [ebp - 0x18], eax
cmp eax, dword [ebp - 0x10]
je 0x43aada
push dword [ebp - 0x10]
call fcn.0046dff2
mov eax, dword [ebp - 0x18]
pop ecx
mov dword [ebp - 0x10], eax
jmp 0x43aada
mov eax, dword [ebp - 0x3c]
cmp eax, 0xfffffffe
jae 0x43abfd
lea esi, [eax + 1]
cmp dword [ebp - 8], ebx
je 0x43aa8c
push dword [ebp - 8]
call fcn.0046dff2
pop ecx
mov dword [ebp - 8], ebx
xor ecx, ecx
push 2
pop edx
mov eax, esi
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.0046e263
pop ecx
mov dword [ebp - 0x18], eax
cmp eax, dword [ebp - 8]
je 0x43aada
push dword [ebp - 8]
call fcn.0046dff2
mov eax, dword [ebp - 0x18]
pop ecx
mov dword [ebp - 8], eax
jmp 0x43aada
push dword [ebp - 0x38]
mov ecx, dword [ebp - 4]
push dword [ebp - 0x10]
push dword [ebp - 0x4c]
push dword [ebp - 0x3c]
push dword [ebp - 8]
call fcn.0043a843
inc dword [ebp - 0xc]
add dword [ebp - 4], 0x30
mov eax, dword [ebp - 0xc]
cmp eax, dword [ebp - 0x2c]
jb 0x43a9ed
push dword [ebp - 0x10]
call fcn.0046dff2
pop ecx
mov eax, dword [ebp - 0x24]
cmp eax, ebx
je 0x43aebe
mov dword [ebp - 4], eax
xor ecx, ecx
push 0x1c
pop edx
mul edx
seto cl
neg ecx
or ecx, eax
xor eax, eax
add ecx, 4
setb al
neg eax
or eax, ecx
push eax
call fcn.0046e263
pop ecx
cmp eax, ebx
je 0x43ac43
mov ecx, dword [ebp - 4]
mov dword [eax], ecx
add eax, 4
dec ecx
mov dword [ebp - 4], eax
cmp ecx, ebx
jl 0x43ac45
add eax, 0x10
xor edx, edx
mov dword [eax + 4], 7
mov dword [eax], ebx
mov word [eax - 0x10], dx
add eax, 0x1c
dec ecx
jns 0x43ab3d
mov eax, dword [ebp - 4]
jmp 0x43ac45
sub eax, 0x19
jne 0x43ab6a
mov eax, dword [ebp - 0xc]
mov dword [ebp - 0x2c], eax
jmp 0x43aae6
call fcn.0040ab90
cmp eax, 2
jg 0x43abc3
push 2
push 0xbb
push str.installer_tdsetuputil_registry_key_backup.cc
lea ecx, [ebp - 0x1ac]
mov dword [ebp - 0x14], 8
call fcn.0040add0
push dword [ebp - 0x18]
add eax, 8
push str.__result:
push dword [ebp - 0xc]
push str.Failed_backing_up_value
push eax
call fcn.00403540
pop ecx
pop ecx
mov ecx, eax
call fcn.00406800
push eax
call fcn.00403540
pop ecx
pop ecx
mov ecx, eax
call fcn.0043a273
test byte [ebp - 0x14], 8
je 0x43abd4
lea ecx, [ebp - 0x1ac]
call fcn.0040ae20
push dword [ebp - 0x10]
call fcn.0046dff2
push dword [ebp - 8]
call fcn.0046dff2
pop ecx
pop ecx
mov ecx, dword [ebp - 0x20]
cmp ecx, ebx
je 0x43b038
push 3
call fcn.0043a219
jmp 0x43b038
call fcn.0040ab90
cmp eax, 2
jg 0x43ac35
push 2
push 0xb2
push str.installer_tdsetuputil_registry_key_backup.cc
lea ecx, [ebp - 0x25c]
mov dword [ebp - 0x14], 4
call fcn.0040add0
add eax, 8
push str.Failed_backing_up_key__value_name_out_of_range.
push eax
call fcn.00403540
pop ecx
pop ecx
test byte [ebp - 0x14], 4
je 0x43abd4
lea ecx, [ebp - 0x25c]
jmp 0x43abcf
xor eax, eax
push eax
lea ecx, [ebp - 0x1c]
call fcn.0043a111
mov eax, dword [ebp - 0x24]
mov dword [ebp - 4], eax
xor ecx, ecx
push 0x14
pop edx
mul edx
seto cl
neg ecx
or ecx, eax
xor eax, eax
add ecx, 4
setb al
neg eax
or eax, ecx
push eax
call fcn.0046e263
pop ecx
cmp eax, ebx
je 0x43ac9f
mov ecx, dword [ebp - 4]
mov dword [eax], ecx
dec ecx
lea edx, [eax + 4]
cmp ecx, ebx
jl 0x43aca1
lea eax, [edx + 8]
mov dword [eax - 8], ebx
mov dword [eax - 4], ebx
mov dword [eax], ebx
mov dword [eax + 4], ebx
mov dword [eax + 8], ebx
add eax, 0x14
dec ecx
jns 0x43ac89
jmp 0x43aca1
xor edx, edx
push edx
lea ecx, [ebp - 0x28]
call fcn.0043a08a
mov dword [ebp - 0x10], ebx
mov dword [ebp - 0xc], ebx
cmp dword [ebp - 0x24], ebx
jbe 0x43ad4c
mov eax, dword [ebp - 0x1c]
mov dword [ebp - 4], eax
mov eax, dword [ebp + 8]
mov eax, dword [eax]
push ebx
push ebx
push ebx
push ebx
lea ecx, [ebp - 0x10]
push ecx
push dword [ebp - 8]
mov dword [ebp - 0x10], esi
push dword [ebp - 0xc]
push eax
call dword [sym.imp.ADVAPI32.dll_RegEnumKeyExW]
mov dword [ebp - 0x18], eax
sub eax, ebx
je 0x43ad2b
sub eax, 0xea
jne 0x43ad7c
mov esi, dword [ebp - 0x10]
cmp esi, 0xfffffffe
jae 0x43ae21
inc esi
xor ecx, ecx
push 2
pop edx
mov eax, esi
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.0046e263
pop ecx
mov dword [ebp - 0x18], eax
cmp eax, dword [ebp - 8]
je 0x43ad40
push dword [ebp - 8]
call fcn.0046dff2
mov eax, dword [ebp - 0x18]
pop ecx
mov dword [ebp - 8], eax
jmp 0x43ad40
push dword [ebp - 0x10]
mov ecx, dword [ebp - 4]
push dword [ebp - 8]
call fcn.00402ed0
inc dword [ebp - 0xc]
add dword [ebp - 4], 0x1c
mov eax, dword [ebp - 0xc]
cmp eax, dword [ebp - 0x24]
jb 0x43acbf
lea ecx, [ebp - 0x48]
call fcn.0043c9d9
xor esi, esi
cmp dword [ebp - 0x24], ebx
jbe 0x43aeb3
mov eax, dword [ebp - 0x28]
mov dword [ebp - 4], eax
mov eax, dword [ebp - 0x1c]
mov dword [ebp - 0xc], eax
cmp dword [eax + 0x14], 8
jb 0x43ae67
mov ecx, dword [eax]
jmp 0x43ae69
sub eax, 0x19
jne 0x43ad89
mov eax, dword [ebp - 0xc]
mov dword [ebp - 0x24], eax
jmp 0x43ad4c
call fcn.0040ab90
cmp eax, 2
jg 0x43ade2
push 2
push 0xe2
push str.installer_tdsetuputil_registry_key_backup.cc
lea ecx, [ebp - 0x3bc]
mov dword [ebp - 0x14], 0x40
call fcn.0040add0
push dword [ebp - 0x18]
add eax, 8
push str._for_backup__result:
push dword [ebp - 0xc]
push str.Failed_getting_name_of_subkey
push eax
call fcn.00403540
pop ecx
pop ecx
mov ecx, eax
call fcn.00406800
push eax
call fcn.00403540
pop ecx
pop ecx
mov ecx, eax
call fcn.0043a273
test byte [ebp - 0x14], 0x40
je 0x43adf3
lea ecx, [ebp - 0x3bc]
call fcn.0040ae20
push dword [ebp - 8]
call fcn.0046dff2
pop ecx
mov ecx, dword [ebp - 0x28]
cmp ecx, ebx
je 0x43ae0a
push 3
call fcn.0043a030
mov ecx, dword [ebp - 0x1c]
cmp ecx, ebx
je 0x43abe6
push 3
call fcn.0043a0ad
jmp 0x43abe6
call fcn.0040ab90
cmp eax, 2
jg 0x43ae59
push 2
push 0xdb
push str.installer_tdsetuputil_registry_key_backup.cc
lea ecx, [ebp - 0x30c]
mov dword [ebp - 0x14], 0x20
call fcn.0040add0
add eax, 8
push str.Failed_backing_up_key__subkey_name_out_of_range.
push eax
call fcn.00403540
pop ecx
pop ecx
test byte [ebp - 0x14], 0x20
je 0x43adf3
lea ecx, [ebp - 0x30c]
jmp 0x43adee
mov ecx, eax
mov eax, dword [ebp + 8]
mov eax, dword [eax]
push 0x20009
push ecx
push eax
lea ecx, [ebp - 0x48]
call fcn.0043ca6a
mov dword [ebp - 0x18], eax
cmp eax, ebx
jne 0x43af1f
mov ecx, dword [ebp - 4]
lea eax, [ebp - 0x48]
push eax
call fcn.0043a874
test al, al
je 0x43af9b
mov eax, dword [ebp - 0xc]
add dword [ebp - 4], 0x14
inc esi
add eax, 0x1c
mov dword [ebp - 0xc], eax
cmp esi, dword [ebp - 0x24]
jb 0x43ad6b
lea ecx, [ebp - 0x48]
call fcn.0043ca36
mov eax, dword [ebp - 0x24]
mov ecx, dword [edi]
push dword [ebp - 8]
mov dword [ebp - 4], ecx
mov ecx, dword [ebp - 0x20]
mov dword [edi], ecx
mov ecx, dword [edi + 4]
mov dword [ebp + 8], ecx
mov ecx, dword [ebp - 0x1c]
mov dword [edi + 4], ecx
mov esi, dword [edi + 8]
mov ecx, dword [ebp - 0x28]
mov dword [edi + 8], ecx
mov ecx, dword [ebp - 0x2c]
mov dword [edi + 0xc], ecx
mov dword [edi + 0x10], eax
call fcn.0046dff2
pop ecx
cmp esi, ebx
je 0x43aefc
push 3
mov ecx, esi
call fcn.0043a030
mov ecx, dword [ebp + 8]
cmp ecx, ebx
je 0x43af0a
push 3
call fcn.0043a0ad
mov ecx, dword [ebp - 4]
cmp ecx, ebx
je 0x43af18
push 3
call fcn.0043a219
mov al, 1
jmp 0x43b03a
call fcn.0040ab90
mov edi, pe_nt_image_headers32
cmp eax, 2
jg 0x43af7e
push 2
push 0xf2
push str.installer_tdsetuputil_registry_key_backup.cc
lea ecx, [ebp - 0xfc]
mov dword [ebp - 0x14], edi
call fcn.0040add0
imul esi, esi, 0x1c
push dword [ebp - 0x18]
add esi, dword [ebp - 0x1c]
push str.__for_backup__result:
push esi
add eax, 8
push str.Failed_opening_subkey__
push eax
call fcn.00403540
pop ecx
pop ecx
push eax
call fcn.00404340
pop ecx
pop ecx
push eax
call fcn.00403540
pop ecx
pop ecx
mov ecx, eax
call fcn.0043a273
test dword [ebp - 0x14], edi
je 0x43af8e
lea ecx, [ebp - 0xfc]
call fcn.0040ae20
lea ecx, [ebp - 0x48]
call fcn.0043ca36
jmp 0x43adf3
call fcn.0040ab90
mov edi, 0x200
cmp eax, 2
jg 0x43af7e
push 2
push 0xf7
push str.installer_tdsetuputil_registry_key_backup.cc
lea ecx, [ebp - 0xfc]
mov dword [ebp - 0x14], edi
call fcn.0040add0
imul esi, esi, 0x1c
add esi, dword [ebp - 0x1c]
push 0x49c4cc
push esi
add eax, 8
push str.Failed_backing_up_subkey__
push eax
call fcn.00403540
pop ecx
pop ecx
push eax
call fcn.00404340
pop ecx
pop ecx
push eax
call fcn.00403540
pop ecx
pop ecx
jmp 0x43af7e
call fcn.0040ab90
push 2
pop ecx
cmp eax, ecx
jg 0x43b027
push ecx
push 0x8d
mov dword [ebp - 0x14], ecx
push str.installer_tdsetuputil_registry_key_backup.cc
lea ecx, [ebp - 0xfc]
call fcn.0040add0
add eax, 8
push str.Failed_backing_up_key__subkeys_and_or_names_are_out_of_range.
push eax
call fcn.00403540
pop ecx
pop ecx
test byte [ebp - 0x14], 2
je 0x43b038
lea ecx, [ebp - 0xfc]
call fcn.0040ae20
xor al, al
pop edi
pop esi
pop ebx
leave
ret 4