Function at 0x43c210
Capabilities:
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4c9442
mov eax, dword fs:[0]
push eax
mov eax, 0xc7b4
call fcn.004a7530
mov eax, dword [0x51eee0]
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 eax, dword [ebp + 8]
mov dword [ebp - 0xc7ac], eax
mov dword [ebp - 0xc7c0], 0
mov dword [ebp - 0xc7bc], 0
mov dword [ebp - 0xc7b8], 0
mov dword [ebp - 0xc7b4], 0
mov eax, dword [0x520340]
imul eax, eax
cdq
mov ecx, 0xd
idiv ecx
mov dword [ebp - 4], 0
cmp edx, 5
jne 0x43c297
push 0
call dword [sym.imp.KERNEL32.dll_GetFileType]
push 1
push str.SoftwareMozillaMozilla_Firefox
push SysReAllocStringLen
lea ecx, [ebp - 0xc7bc]
call fcn.0040bf10
or ebx, 0xffffffff
test eax, eax
je 0x43c4ee
mov eax, dword [0x520340]
lea ecx, [eax + 1]
imul eax, ecx
cdq
mov ecx, 0x14
idiv ecx
cmp edx, 0xe
jne 0x43c2dc
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [0x520340], eax
push 1
push str.SoftwareMozillaMozilla_Firefox
push reloc.OLEAUT32.dll_SysReAllocString
lea ecx, [ebp - 0xc7bc]
call fcn.0040bf10
mov esi, dword [0x520340]
mov dword [ebp - 0xc7a8], eax
lea ecx, [esi + 2]
lea eax, [esi + 1]
imul eax, ecx
imul eax, esi
cdq
mov ecx, 0x16
idiv ecx
cmp edx, 3
jne 0x43c38e
xor eax, eax
push 0xbe1e
push eax
mov word [ebp - 0xc630], ax
lea eax, [ebp - 0xc62e]
push eax
call fcn.004a7560
add esp, 0xc
xor edi, edi
xor esi, esi
lea ebx, [ebx]
xor eax, eax
test edi, edi
je 0x43c36a
test eax, eax
je 0x43c36a
lea ecx, [esi + eax]
lea edx, [ebp - 0xc630]
lea edx, [edx + ecx*2]
lea ecx, [esi + eax]
mov cx, word [ebp + ecx*2 - 0xc768]
inc cx
add cx, word [edx - 2]
mov word [edx], cx
inc eax
cmp eax, 0x9c
jl 0x43c342
add esi, 0x9c
inc edi
cmp esi, 0x5f10
jl 0x43c340
movsx esi, word [ebp - 0x812]
mov dword [0x520340], esi
cmp dword [ebp - 0xc7a8], 0
je 0x43c4f4
mov eax, dword [0x51eab0]
mov ecx, 0x51eab0
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0xc7a4], eax
mov eax, str.MozillaMozilla_Firefox
mov byte [ebp - 4], 1
test eax, 0xffff0000
jne 0x43c3e2
movzx esi, ax
push 0
push esi
call fcn.00403b80
add esp, 8
test eax, eax
je 0x43c3f2
push esi
push eax
lea ecx, [ebp - 0xc7a4]
call fcn.00407650
jmp 0x43c3f2
push str.MozillaMozilla_Firefox
lea ecx, [ebp - 0xc7a4]
call fcn.0040b410
push str.SoftwareWow6432Node_
lea ecx, [ebp - 0xc7b0]
mov byte [ebp - 4], 2
call fcn.00401ff0
lea ecx, [ebp - 0xc7a4]
push ecx
push eax
lea eax, [ebp - 0xc7a8]
push eax
mov byte [ebp - 4], 3
call fcn.0040b660
add esp, 0xc
lea ecx, [ebp - 0xc7bc]
push 1
push dword [eax]
push reloc.OLEAUT32.dll_SysReAllocString
call fcn.0040bf10
mov edx, dword [ebp - 0xc7a8]
add edx, 0xfffffff0
mov edi, eax
lea eax, [edx + 0xc]
mov ecx, ebx
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x43c456
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0xc7b0]
add edx, 0xfffffff0
mov byte [ebp - 4], 2
lea eax, [edx + 0xc]
mov ecx, ebx
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x43c479
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0xc7a4]
add edx, 0xfffffff0
mov byte [ebp - 4], 0
lea eax, [edx + 0xc]
mov ecx, ebx
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x43c49c
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
call fcn.0043db90
test al, al
jne 0x43c4bd
call fcn.004a6f99
mov esi, dword [0x520340]
cmp esi, eax
jne 0x43c4c3
dec esi
mov dword [0x520340], esi
jmp 0x43c4c3
mov esi, dword [0x520340]
test edi, edi
je 0x43c4f4
mov ebx, dword [ebp - 0xc7ac]
push ebx
call fcn.0043bc20
mov ecx, dword [ebp - 0xc7bc]
add esp, 4
test ecx, ecx
je 0x43c4e7
push ecx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, ebx
jmp 0x43c7c4
mov esi, dword [0x520340]
xor eax, eax
push 0x7fe
push eax
mov word [ebp - 0x810], ax
lea eax, [ebp - 0x80e]
push eax
call fcn.004a7560
add esp, 0xc
call fcn.0043de30
test al, al
jne 0x43c552
xor edx, edx
lea ecx, [ecx]
mov eax, dword [ebp + edx*4 - 0xc794]
add eax, dword [ebp + edx*4 - 0xc798]
add edx, 4
add eax, dword [ebp + edx*4 - 0xc7ac]
add eax, dword [ebp + edx*4 - 0xc7b0]
imul eax, eax, 0x72
add esi, eax
cmp edx, 0x170
jb 0x43c520
mov dword [0x520340], esi
mov eax, dword [0x51eab0]
mov ecx, 0x51eab0
call dword [eax + 0xc]
lea esi, [eax + 0x10]
mov dword [ebp - 0xc7a4], esi
mov eax, 0x4ddf74
mov byte [ebp - 4], 4
test eax, 0xffff0000
jne 0x43c599
movzx edi, ax
push 0
push edi
call fcn.00403b80
add esp, 8
test eax, eax
je 0x43c5b1
push edi
push eax
lea ecx, [ebp - 0xc7a4]
call fcn.00407650
jmp 0x43c5ab
push 3
push 0x4ddf74
lea ecx, [ebp - 0xc7a4]
call fcn.00409950
mov esi, dword [ebp - 0xc7a4]
mov edi, dword [0x520340]
mov eax, edi
imul eax, edi
imul eax, edi
cdq
mov ecx, 0xe
idiv ecx
mov byte [ebp - 4], 5
cmp edx, 9
jne 0x43c5e9
lea ecx, [edx - 8]
cmp edi, ecx
jle 0x43c5e3
mov eax, edi
cdq
idiv ecx
inc ecx
add ecx, edx
cmp ecx, edi
jl 0x43c5d7
mov dword [0x520340], ecx
mov ebx, dword [ebp - 0xc7bc]
lea eax, [ebp - 0xc7a8]
push eax
lea eax, [ebp - 0x810]
push eax
lea eax, [ebp - 0xc7b0]
push eax
push 0
push str.CurrentVersion
push ebx
mov dword [ebp - 0xc7a8], 0x800
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
jne 0x43c688
mov eax, dword [ebp - 0xc7b0]
cmp eax, 1
je 0x43c630
cmp eax, 2
jne 0x43c688
mov eax, dword [ebp - 0xc7a8]
test eax, eax
je 0x43c64d
test al, 1
jne 0x43c688
shr eax, 1
cmp word [ebp + eax*2 - 0x812], 0
je 0x43c656
jmp 0x43c688
xor eax, eax
mov word [ebp - 0x810], ax
lea ecx, [ebp - 0x810]
lea edx, [ecx + 2]
nop
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x43c660
sub ecx, edx
sar ecx, 1
push ecx
lea eax, [ebp - 0x810]
push eax
lea ecx, [ebp - 0xc7a4]
call fcn.00409950
mov esi, dword [ebp - 0xc7a4]
mov edi, dword [sym.imp.ADVAPI32.dll_RegCloseKey]
test ebx, ebx
je 0x43c69d
push ebx
call edi
xor ebx, ebx
mov dword [ebp - 0xc7bc], ebx
cmp dword [esi - 0xc], 0
mov dword [ebp - 0xc7b8], 0
je 0x43c72c
mov ecx, 0x4ddf74
mov eax, esi
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x43c6da
test dx, dx
je 0x43c6d6
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x43c6da
add eax, 4
add ecx, 4
test dx, dx
jne 0x43c6b4
xor eax, eax
jmp 0x43c6df
sbb eax, eax
or eax, 1
test eax, eax
sete al
test al, al
jne 0x43c72c
add esi, 0xfffffff0
push esi
call fcn.00404840
mov ecx, dword [ebp - 0xc7ac]
add eax, 0x10
mov dword [ecx], eax
add esp, 4
mov byte [ebp - 4], 0
lea eax, [esi + 0xc]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x43c71a
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
test ebx, ebx
je 0x43c721
push ebx
call edi
mov eax, dword [ebp - 0xc7ac]
jmp 0x43c7c4
mov edi, dword [0x520340]
lea ecx, [edi + 1]
lea eax, [edi + 2]
imul eax, ecx
imul eax, edi
cdq
mov ecx, 0xa
idiv ecx
cmp edx, 8
jne 0x43c78a
mov eax, edi
xor ecx, ecx
and eax, 0x80000001
jns 0x43c75b
dec eax
or eax, 0xfffffffe
inc eax
cmp eax, 0x63
je 0x43c784
mov eax, edi
or eax, 0xffffffbf
add edi, eax
mov eax, edi
imul eax, edi
inc ecx
cmp ecx, eax
jg 0x43c784
mov eax, edi
and eax, 0x80000001
jns 0x43c77f
dec eax
or eax, 0xfffffffe
inc eax
cmp eax, 0x63
jne 0x43c760
mov dword [0x520340], ecx
mov edi, dword [ebp - 0xc7ac]
push edi
call fcn.0043bc20
add esi, 0xfffffff0
add esp, 4
mov byte [ebp - 4], 0
lea eax, [esi + 0xc]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x43c7b7
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
test ebx, ebx
je 0x43c7c2
push ebx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, edi
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.004a63c4
mov esp, ebp
pop ebp
ret