Function at 0x43a7a9
Capabilities:
Query or enumerate registry value

Disassembly:
push 0x164
mov eax, 0x4a21eb
call fcn.0045201c
mov edi, ecx
mov esi, dword [ebp + 8]
xor ebx, ebx
mov dword [ebp - 4], ebx
mov dword [ebp - 0xd0], ebx
mov eax, dword [edi]
mov dword [ebp - 0xbc], esi
mov dword [ebp - 0xd4], esi
mov esi, dword [ebp + 0xc]
test eax, eax
jne 0x43a7e9
mov ecx, 0x278
call fcn.0040c063
mov eax, dword [edi]
cmp dword [esi + 0x14], 8
mov ecx, esi
mov dword [ebp - 0xc8], ebx
mov dword [ebp - 0xcc], ebx
jb 0x43a7ff
mov ecx, dword [esi]
lea edx, [ebp - 0xcc]
push edx
push ebx
lea edx, [ebp - 0xc8]
push edx
push ebx
push ecx
push eax
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
mov ebx, eax
mov dword [ebp - 0xc4], ebx
test ebx, ebx
jne 0x43ad84
push ecx
push dword [ebp - 0xcc]
lea ecx, [ebp - 0xb8]
call fcn.0040a2ce
push 8
pop ebx
mov dword [ebp - 4], ebx
mov eax, dword [ebp - 0xcc]
test eax, eax
je 0x43a8e3
lea ecx, [ebp - 0xb8]
call fcn.00401ffa
mov eax, dword [eax]
cmp dword [esi + 0x14], ebx
jb 0x43a861
mov esi, dword [esi]
lea ecx, [ebp - 0xcc]
push ecx
push eax
lea eax, [ebp - 0xc8]
push eax
xor eax, eax
push eax
push esi
push dword [edi]
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
mov esi, eax
mov dword [ebp - 0xc4], esi
test esi, esi
je 0x43a8dd
lea ecx, [ebp - 0x170]
call fcn.00402a5a
push str.RegQueryValueExW_failed_with
mov ecx, eax
mov byte [ebp - 4], 9
call fcn.00403b01
lea ecx, [ebp - 0xc4]
push ecx
mov ecx, eax
call fcn.00403b56
lea ecx, [ebp - 0x28]
push ecx
mov ecx, eax
call fcn.00402a43
movzx eax, si
push ecx
or eax, 0x80070000
mov byte [ebp - 4], 0xa
test esi, esi
push 0x29f
push str.c:dvsp4_build_sw_relgfclient_rel_03_16_backendcommonupdtlib_srcwindows_registry.cpp
cmovle eax, esi
jmp 0x43add7
mov eax, dword [ebp - 0xcc]
lea ecx, [ebp - 0xb8]
push ecx
push eax
call fcn.00426041
mov ecx, dword [ebp - 0xbc]
xor edx, edx
mov eax, dword [ebp - 0xc8]
lea esi, [ecx + 4]
mov dword [ecx], eax
mov dword [esi], edx
lea edi, [ecx + 0x10]
mov dword [ecx + 8], edx
mov dword [ecx + 0xc], edx
mov byte [ebp - 4], 0x10
xor eax, eax
mov dword [edi + 0x10], edx
mov dword [edi + 0x14], 7
mov word [edi], ax
mov byte [ebp - 4], bl
lea ebx, [ecx + 0x28]
mov dword [ebx], edx
mov dword [ebx + 4], edx
mov dword [ebx + 8], edx
lea edx, [ecx + 0x34]
mov dword [edx], eax
mov dword [edx + 4], eax
mov dword [edx + 8], eax
mov eax, dword [ebp - 0xc8]
mov dword [ebp - 0xd0], 1
cmp eax, 0xb
ja case.default.0x43a95a
movzx eax, byte [eax + 0x43ae6d]
jmp dword [eax*4 + 0x43ae55]
lea ecx, [ebp - 0xb8]
call fcn.00401ffa
lea esi, [eax + 4]
mov dword [ebp - 0xc4], esi
call fcn.00401ffa
mov edx, eax
mov eax, dword [esi]
mov ecx, eax
mov dword [ebp - 0xc0], edx
sub ecx, dword [edx]
mov edx, ecx
and edx, 1
je 0x43a9a2
lea eax, [ebp - 0xb8]
sub ecx, edx
push eax
push ecx
mov ecx, eax
call fcn.00426041
mov eax, dword [esi]
mov esi, dword [ebp - 0xb8]
cmp esi, eax
je case.0x43a95a.0
mov edx, dword [ebp - 0xc0]
mov ecx, eax
mov edx, dword [edx]
sub ecx, edx
lea ebx, [ecx - 1]
cmp ecx, ebx
jbe 0x43adf8
cmp byte [esi + ebx], 0
jne 0x43aa04
lea ebx, [ecx - 2]
cmp ecx, ebx
jbe 0x43adf8
cmp byte [esi + ebx], 0
jne 0x43aa04
mov eax, dword [ebp - 0xb4]
dec eax
mov dword [ebp - 0xb4], eax
dec eax
mov esi, dword [ebp - 0xc4]
mov ecx, dword [ebp - 0xc0]
mov dword [ebp - 0xb4], eax
mov eax, dword [esi]
mov edx, dword [ecx]
jmp 0x43aa0a
mov esi, dword [ebp - 0xc4]
xor ecx, ecx
sub eax, edx
push ecx
shr eax, 1
mov ecx, edi
push eax
call fcn.00401f44
mov eax, dword [ebp - 0xc0]
lea ecx, [ebp - 0xb8]
mov edx, dword [esi]
sub edx, dword [eax]
call fcn.00401ffa
cmp dword [edi + 0x14], 8
mov esi, dword [ebp - 0xbc]
mov eax, dword [eax]
mov ecx, dword [esi + 0x20]
jb 0x43aa41
mov edi, dword [edi]
test edx, edx
je 0x43ac02
push edx
lea edx, [ecx + ecx]
mov ecx, edi
push eax
call fcn.0043b130
pop ecx
pop ecx
jmp 0x43ac02
lea ecx, [ebp - 0xb8]
call fcn.00401ffa
lea edi, [eax + 4]
call fcn.00401ffa
mov ecx, dword [edi]
mov edx, eax
mov eax, ecx
mov dword [ebp - 0xc0], edx
sub eax, dword [edx]
mov edx, eax
and edx, 1
je 0x43aa95
lea ecx, [ebp - 0xb8]
sub eax, edx
push ecx
push eax
call fcn.00426041
mov ecx, dword [edi]
cmp dword [ebp - 0xb8], ecx
je case.0x43a95a.0
xor edx, edx
mov byte [ebp - 0xa9], dl
cmp dword [ebp - 0xb0], ecx
je 0x43aac8
mov eax, dword [ebp - 0xb4]
mov byte [eax], dl
mov ecx, dword [ebp - 0xb4]
inc ecx
mov dword [ebp - 0xb4], ecx
jmp 0x43aae8
lea eax, [ebp - 0xa9]
push eax
push dword [ebp - 0xb4]
lea ecx, [ebp - 0xb8]
call fcn.0043ae84
mov ecx, dword [ebp - 0xb4]
xor edx, edx
mov eax, dword [ebp - 0xb0]
mov byte [ebp - 0xa9], dl
cmp eax, dword [edi]
je 0x43ab09
mov byte [ecx], dl
mov ecx, dword [ebp - 0xb4]
inc ecx
mov dword [ebp - 0xb4], ecx
jmp 0x43ab24
lea eax, [ebp - 0xa9]
push eax
push ecx
lea ecx, [ebp - 0xb8]
call fcn.0043ae84
mov ecx, dword [ebp - 0xb4]
xor edx, edx
mov eax, dword [ebp - 0xb0]
mov byte [ebp - 0xa9], dl
cmp eax, dword [edi]
je 0x43ab45
mov byte [ecx], dl
mov ecx, dword [ebp - 0xb4]
inc ecx
mov dword [ebp - 0xb4], ecx
jmp 0x43ab60
lea eax, [ebp - 0xa9]
push eax
push ecx
lea ecx, [ebp - 0xb8]
call fcn.0043ae84
mov ecx, dword [ebp - 0xb4]
xor edx, edx
mov eax, dword [ebp - 0xb0]
mov byte [ebp - 0xa9], dl
cmp eax, dword [edi]
je 0x43ab7c
xor eax, eax
mov byte [ecx], al
inc dword [ebp - 0xb4]
jmp 0x43ab8f
lea eax, [ebp - 0xa9]
push eax
push ecx
lea ecx, [ebp - 0xb8]
call fcn.0043ae84
lea ecx, [ebp - 0xb8]
call fcn.00401ffa
mov esi, dword [eax]
jmp 0x43abf5
push esi
lea ecx, [ebp - 0x28]
call fcn.00401688
mov byte [ebp - 4], 0x11
lea ecx, [ebp - 0x28]
mov eax, dword [ebx + 4]
push ecx
cmp dword [ebx + 8], eax
je 0x43abc4
mov ecx, eax
call fcn.00401bd9
add dword [ebx + 4], 0x18
jmp 0x43abcc
push eax
mov ecx, ebx
call fcn.0040ba0b
lea ecx, [ebp - 0x28]
mov byte [ebp - 4], 0x12
call fcn.0040204a
mov byte [ebp - 4], 8
mov ecx, dword [ebp - 0xc0]
mov eax, dword [edi]
sub eax, dword [ecx]
push eax
push esi
call fcn.0046edcb
pop ecx
pop ecx
lea esi, [esi + eax*2]
add esi, 2
xor eax, eax
cmp word [esi], ax
jne 0x43ab9e
mov esi, dword [ebp - 0xbc]
xor ebx, ebx
lea ecx, [ebp - 0xb8]
mov byte [ebp - 4], bl
call fcn.00408189
mov eax, esi
call fcn.00451fc5
ret 8
mov esi, dword [ebp - 0xbc]
lea eax, [ebp - 0xb8]
cmp edx, eax
je 0x43ac02
mov ecx, dword [edx]
mov eax, dword [ebp - 0xb8]
mov dword [edx], eax
mov eax, dword [ebp - 0xb4]
mov dword [ebp - 0xb8], ecx
mov ecx, dword [edx + 4]
mov dword [edx + 4], eax
mov eax, dword [ebp - 0xb0]
mov dword [ebp - 0xb4], ecx
mov ecx, dword [edx + 8]
mov dword [edx + 8], eax
mov dword [ebp - 0xb0], ecx
jmp 0x43ac02
lea ecx, [ebp - 0xb8]
call fcn.00401ffa
lea edx, [eax + 4]
call fcn.00401ffa
mov ecx, dword [edx]
push 4
pop edx
sub ecx, dword [eax]
cmp ecx, edx
lea ecx, [ebp - 0xb8]
jne 0x43adfd
call fcn.00401ffa
push edx
mov ecx, esi
mov eax, dword [eax]
push eax
call fcn.0043b130
cmp dword [ebp - 0xc8], 5
pop ecx
pop ecx
jne case.0x43a95a.0
push dword [esi]
call dword [sym.imp.WS2_32.dll_ntohl]
mov dword [esi], eax
jmp case.0x43a95a.0
lea ecx, [ebp - 0xb8]
call fcn.00401ffa
lea edx, [eax + 4]
call fcn.00401ffa
mov ecx, dword [edx]
sub ecx, dword [eax]
cmp ecx, 8
lea ecx, [ebp - 0xb8]
je 0x43ad27
call fcn.00425f46
lea ecx, [ebp - 0x170]
mov dword [ebp - 0xc0], eax
call fcn.00402a5a
push str.Invalid_QWORD_size:
mov ecx, eax
mov byte [ebp - 4], 0x1d
call fcn.00403b01
lea ecx, [ebp - 0xc0]
push ecx
mov ecx, eax
call fcn.00403b19
lea ecx, [ebp - 0x28]
push ecx
mov ecx, eax
call fcn.00402a43
mov byte [ebp - 4], 0x1e
push 0x311
jmp 0x43ae45
call fcn.00401ffa
mov esi, dword [ebp - 0xbc]
push 8
mov eax, dword [eax]
push eax
push 8
pop edx
lea ecx, [esi + 8]
jmp 0x43aa50
lea ecx, [ebp - 0x170]
call fcn.00402a5a
push str.Invalid_registry_value_type
mov ecx, eax
mov byte [ebp - 4], 0x24
call fcn.00403b01
lea ecx, [ebp - 0xc8]
push ecx
mov ecx, eax
call fcn.00403b19
lea ecx, [ebp - 0x28]
push ecx
mov ecx, eax
call fcn.00402a43
mov byte [ebp - 4], 0x25
push 0x316
jmp 0x43ae45
lea ecx, [ebp - 0x170]
call fcn.00402a5a
push str.RegQueryValueExW_failed_with
mov ecx, eax
mov dword [ebp - 4], 1
call fcn.00403b01
lea ecx, [ebp - 0xc4]
push ecx
mov ecx, eax
call fcn.00403b56
lea ecx, [ebp - 0x28]
push ecx
mov ecx, eax
call fcn.00402a43
movzx eax, bx
push ecx
or eax, 0x80070000
mov byte [ebp - 4], 2
test ebx, ebx
push 0x28b
push str.c:dvsp4_build_sw_relgfclient_rel_03_16_backendcommonupdtlib_srcwindows_registry.cpp
cmovle eax, ebx
push eax
lea eax, [ebp - 0x28]
push eax
lea ecx, [ebp - 0xa8]
call fcn.0040bc87
push 0x4d95fc
lea eax, [ebp - 0xa8]
push eax
call fcn.0046a3fc
call 0x43ae79
call fcn.00425f46
lea ecx, [ebp - 0x170]
mov dword [ebp - 0xc0], eax
call fcn.00402a5a
push str.Invalid_DWORD_size:
mov ecx, eax
mov byte [ebp - 4], 0x16
call fcn.00403b01
lea ecx, [ebp - 0xc0]
push ecx
mov ecx, eax
call fcn.00403b19
lea ecx, [ebp - 0x28]
push ecx
mov ecx, eax
call fcn.00402a43
mov byte [ebp - 4], 0x17
push 0x305
mov edx, str.c:dvsp4_build_sw_relgfclient_rel_03_16_backendcommonupdtlib_srcwindows_registry.cpp
lea ecx, [ebp - 0x28]
call fcn.0040c3d8
nop dword [eax]
cld
stosd dword es:[edi], eax
inc ebx
add byte [ecx - 0x57], ah
inc ebx
add byte [esp + ebp*4], bl
inc ebx
add byte [edx - 0x54], ah
inc ebx
add byte [edx + ebp*4 + 0x43], bl
add byte [eax + 0x43ac], bh
add dword [ecx], eax
add al, byte [ebx]
add eax, dword [eax]
add al, 0
add byte [eax], al
add eax, 1284889704
add al, ch
invalid