Function at 0x45cd10
Capabilities:
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4dfda7
mov eax, dword fs:[0]
push eax
mov eax, 0x143cc
call fcn.004bcbc0
mov eax, dword [0x532d60]
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 ebx, ecx
mov dword [ebp - 0x143c8], ebx
mov dword [ebp - 0x143bc], ebx
mov dword [ebp - 0x143d8], 0
mov dword [ebp - 0x143d4], 0
mov dword [ebp - 0x143d0], 0
mov dword [ebp - 0x143cc], 0
mov dword [ebp - 4], 0
mov eax, dword [0x537408]
lea ecx, [eax + 1]
imul eax, ecx
cdq
mov ecx, 0xf
idiv ecx
cmp edx, 0xe
jne 0x45ce0e
xor eax, eax
push 0xab1e
push eax
mov word [ebp - 0xb338], ax
lea eax, [ebp - 0xb336]
push eax
call fcn.004bcc70
add esp, 0xc
xor edi, edi
xor esi, esi
lea esp, [esp]
xor edx, edx
test edi, edi
je 0x45cdea
test edx, edx
je 0x45cdea
lea eax, [esi + edx]
lea ecx, [esi + edx]
mov ax, word [ebp + eax*2 - 0xb460]
inc ax
add ax, word [ebp + ecx*2 - 0xb33a]
mov word [ebp + ecx*2 - 0xb338], ax
inc edx
cmp edx, 0x94
jl 0x45cdc2
add esi, 0x94
inc edi
cmp esi, 0x5590
jl 0x45cdc0
movsx eax, word [ebp - 0x81a]
mov dword [0x537408], eax
push 1
push str.SOFTWAREMicrosoftWindowsCurrentVersionApp_Paths_firefox.exe
push reloc.OLEAUT32.dll_SysReAllocString
lea ecx, [ebp - 0x143d4]
call fcn.00428690
test eax, eax
je 0x45d073
lea ecx, [ebp - 0x143c4]
mov dword [ebp - 0x143c4], 0
call fcn.00436e70
mov byte [ebp - 4], 1
mov eax, dword [0x537408]
lea ecx, [eax + 1]
imul ecx, ecx
imul ecx, eax
imul ecx, eax
and ecx, 0x80000003
jns 0x45ce64
dec ecx
or ecx, 0xfffffffc
inc ecx
je 0x45cedc
xor eax, eax
push 0x13ba0
push eax
mov word [ebp - 0x143b8], ax
lea eax, [ebp - 0x143b6]
push eax
call fcn.004bcc70
add esp, 0xc
xor edi, edi
xor esi, esi
xor edx, edx
lea ebx, [ebx]
test edi, edi
je 0x45ceb8
test edx, edx
je 0x45ceb8
lea eax, [esi + edx]
lea ecx, [esi + edx]
mov ax, word [ebp + eax*2 - 0x1454a]
inc ax
add ax, word [ebp + ecx*2 - 0x143ba]
mov word [ebp + ecx*2 - 0x143b8], ax
inc edx
cmp edx, 0xc9
jl 0x45ce90
add esi, 0xc9
inc edi
cmp esi, 0x9dd1
jl 0x45ce88
movsx eax, word [ebp - 0x818]
mov dword [0x537408], eax
mov esi, dword [ebp - 0x143c4]
or edi, 0xffffffff
mov eax, dword [esi - 0xc]
test eax, eax
je 0x45cfe3
lea ecx, [eax - 1]
test ecx, ecx
js 0x45d024
cmp ecx, eax
jg 0x45d024
cmp word [esi + ecx*2], 0x5c
je 0x45cf22
push 1
push 0x51c044
lea ecx, [ebp - 0x143c4]
call fcn.00427f00
mov esi, dword [ebp - 0x143c4]
push str.Mozilla_Firefox_firefox.exe
lea edx, [ebp - 0x143c4]
lea ecx, [ebp - 0x143c0]
mov dword [ebp - 0x143c0], 0
call fcn.00427ab0
add esp, 4
lea ecx, [ebp - 0x143c0]
mov byte [ebp - 4], 2
call fcn.00437e20
test al, al
je 0x45cfc0
mov ecx, dword [ebp - 0x143c0]
lea ecx, [ecx - 0x10]
call fcn.00404b50
mov byte [ebp - 4], 1
mov edx, dword [ebp - 0x143c0]
add eax, 0x10
add edx, 0xfffffff0
or edi, 0xffffffff
mov dword [ebx], eax
lea ecx, [edx + 0xc]
mov eax, edi
lock xadd dword [ecx], eax
dec eax
test eax, eax
jg 0x45cf91
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
add esi, 0xfffffff0
mov byte [ebp - 4], 0
lea eax, [esi + 0xc]
lock xadd dword [eax], edi
dec edi
test edi, edi
jg 0x45cfac
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov ecx, dword [ebp - 0x143d4]
test ecx, ecx
je 0x45d26a
push ecx
jmp 0x45d264
mov byte [ebp - 4], 1
mov edx, dword [ebp - 0x143c0]
add edx, 0xfffffff0
mov ecx, edi
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x45cfe3
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [0x5326d0]
mov ecx, 0x5326d0
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebx], eax
mov eax, 0x51a060
mov byte [ebp - 4], 3
test eax, 0xffff0000
jne 0x45d02e
movzx ebx, ax
mov ecx, ebx
call fcn.00405910
test eax, eax
je 0x45d03e
push ebx
mov ebx, dword [ebp - 0x143c8]
push eax
mov ecx, ebx
call fcn.00404e50
jmp 0x45d044
push 0x80070057
call fcn.0040cad0
push 0
push 0x51a060
mov ecx, ebx
call fcn.00404a90
jmp 0x45d044
mov ebx, dword [ebp - 0x143c8]
add esi, 0xfffffff0
mov byte [ebp - 4], 0
lea eax, [esi + 0xc]
lock xadd dword [eax], edi
dec edi
test edi, edi
jg 0x45d05f
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebp - 0x143d4]
test eax, eax
je 0x45d26a
push eax
jmp 0x45d264
xor eax, eax
push 0x7fe
push eax
mov word [ebp - 0x810], ax
lea eax, [ebp - 0x80e]
push eax
call fcn.004bcc70
mov ecx, dword [0x537408]
mov esi, 0x16
lea eax, [ecx + 1]
imul eax, ecx
cdq
idiv esi
add esp, 0xc
cmp edx, 0x13
jne 0x45d100
movsd xmm3, qword [0x521658]
movsd xmm6, qword [0x521680]
movsd xmm5, qword [0x521650]
movd xmm4, ecx
xorps xmm2, xmm2
cvtdq2pd xmm4, xmm4
lea ecx, [ecx]
addsd xmm2, xmm3
movapd xmm0, xmm2
mulsd xmm0, xmm2
comisd xmm0, xmm4
jbe 0x45d0ea
subsd xmm2, xmm3
divsd xmm3, xmm6
movapd xmm1, xmm2
mulsd xmm1, xmm2
movapd xmm0, xmm4
subsd xmm0, xmm1
comisd xmm0, xmm5
ja 0x45d0d0
mov eax, dword [0x5326d0]
mov ecx, 0x5326d0
call dword [eax + 0xc]
lea esi, [eax + 0x10]
mov dword [ebp - 0x143c4], esi
lea eax, [ebp - 0x143c0]
push eax
lea eax, [ebp - 0x810]
push eax
lea eax, [ebp - 0x143bc]
push eax
push 0
mov byte [ebp - 4], 4
mov edi, dword [ebp - 0x143d4]
push 0x51a060
push edi
mov dword [ebp - 0x143c0], 0x800
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
jne 0x45d1b8
mov eax, dword [ebp - 0x143bc]
cmp eax, 1
je 0x45d161
cmp eax, 2
jne 0x45d1b8
mov eax, dword [ebp - 0x143c0]
test eax, eax
je 0x45d17e
test al, 1
jne 0x45d1b8
shr eax, 1
cmp word [ebp + eax*2 - 0x812], 0
je 0x45d187
jmp 0x45d1b8
xor eax, eax
mov word [ebp - 0x810], ax
lea ecx, [ebp - 0x810]
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x45d190
sub ecx, edx
sar ecx, 1
push ecx
lea eax, [ebp - 0x810]
push eax
lea ecx, [ebp - 0x143c4]
call fcn.00404a90
mov esi, dword [ebp - 0x143c4]
test edi, edi
je 0x45d1cb
push edi
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
xor edi, edi
mov dword [ebp - 0x143d4], edi
mov ecx, dword [esi - 0x10]
add esi, 0xfffffff0
mov eax, dword [ecx]
mov dword [ebp - 0x143d0], 0
call dword [eax + 0x10]
cmp dword [esi + 0xc], 0
lea edx, [esi + 0xc]
mov ecx, eax
jl 0x45d1fc
cmp ecx, dword [esi]
jne 0x45d1fc
mov ebx, esi
mov eax, 1
lock xadd dword [edx], eax
jmp 0x45d239
mov eax, dword [ecx]
push 2
push dword [esi + 4]
call dword [eax]
mov ebx, eax
test ebx, ebx
jne 0x45d210
call fcn.0040caf0
mov eax, dword [esi + 4]
mov dword [ebx + 4], eax
mov ecx, dword [esi + 4]
lea eax, [ecx*2 + 2]
push eax
lea eax, [esi + 0x10]
push eax
lea eax, [ecx*2 + 2]
push eax
lea eax, [ebx + 0x10]
push eax
call fcn.004b8ee1
add esp, 0x10
lea eax, [ebx + 0x10]
mov ebx, dword [ebp - 0x143c8]
mov byte [ebp - 4], 0
mov dword [ebx], eax
lea eax, [esi + 0xc]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x45d25f
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
test edi, edi
je 0x45d26a
push edi
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, ebx
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.004b8181
mov esp, ebp
pop ebp
ret