Function at 0x7cf4f666
Capabilities:
Set registry value

Disassembly:
push ecx
push ebx
push ebp
push esi
mov esi, dword [esp + 0x14]
xor ebp, ebp
push edi
cmp esi, ebp
mov dword [esp + 0x10], ebp
jne 0x7cf4f68f
cmp dword [esp + 0x1c], ebp
jne 0x7cf4f68f
cmp dword [esp + 0x20], ebp
je 0x7cf4f68f
call fcn.7cf5dcf1
jmp 0x7cf4fd25
cmp dword [0x7d04dd88], ebp
je 0x7cf4f6be
call fcn.7cfaec98
test eax, eax
jne 0x7cf4f6be
mov eax, dword [0x7d04dd88]
cmp eax, ebp
je 0x7cf4f6cc
mov edi, 0x7d04ce10
push edi
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
push edi
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
jmp 0x7cf4f6c7
call fcn.7cfaecb8
mov dword [esp + 0x10], eax
mov eax, dword [0x7d04dd88]
cmp dword [esp + 0x20], ebp
push 1
mov dword [esp + 0x1c], ebp
pop ebx
je 0x7cf4fa6d
test byte [esp + 0x1c], bl
je 0x7cf4f706
mov ecx, dword [esi]
mov edi, dword [eax + 4]
mov edx, ecx
xor edx, edi
test bl, dl
je 0x7cf4f706
shl ecx, 0x1f
sar ecx, 0x1f
xor ecx, edi
mov ebp, ebx
and ecx, ebx
xor ecx, edi
mov dword [eax + 4], ecx
mov eax, dword [0x7d04dd88]
test byte [esp + 0x1c], 0x20
je 0x7cf4f732
mov ecx, dword [esi]
mov edi, dword [eax + 4]
mov edx, ecx
xor edx, edi
test dl, 8
je 0x7cf4f732
shl ecx, 0x1c
sar ecx, 0x1c
xor ecx, edi
mov ebp, ebx
and ecx, 8
xor ecx, edi
mov dword [eax + 4], ecx
mov eax, dword [0x7d04dd88]
test byte [esp + 0x1c], 2
je 0x7cf4f75e
mov ecx, dword [esi]
mov edi, dword [eax + 4]
mov edx, ecx
xor edx, edi
test dl, 2
je 0x7cf4f75e
shl ecx, 0x1e
sar ecx, 0x1e
xor ecx, edi
mov ebp, ebx
and ecx, 2
xor ecx, edi
mov dword [eax + 4], ecx
mov eax, dword [0x7d04dd88]
test byte [esp + 0x1c], 8
je 0x7cf4f78a
mov ecx, dword [esi]
mov edi, dword [eax + 4]
mov edx, ecx
xor edx, edi
test dl, 0x10
je 0x7cf4f78a
shl ecx, 0x1b
sar ecx, 0x1b
xor ecx, edi
mov ebp, ebx
and ecx, 0x10
xor ecx, edi
mov dword [eax + 4], ecx
mov eax, dword [0x7d04dd88]
test byte [esp + 0x1d], 0x80
je 0x7cf4f7b8
mov ecx, dword [esi]
mov edi, dword [eax + 4]
mov edx, ecx
xor edx, edi
test dl, 4
je 0x7cf4f7b8
shl ecx, 0x1d
sar ecx, 0x1d
xor ecx, edi
mov dword [esp + 0x18], ebx
and ecx, 4
xor ecx, edi
mov dword [eax + 4], ecx
mov eax, dword [0x7d04dd88]
test byte [esp + 0x1c], 0x80
mov edi, 0x40000008
je 0x7cf4f7fb
mov ecx, dword [eax + 4]
xor ecx, dword [esi]
test cl, 0x20
je 0x7cf4f7fb
push edi
call sym.SHELL32.dll_SHRestricted
test eax, eax
mov eax, dword [0x7d04dd88]
jne 0x7cf4f7fb
mov edx, dword [esi]
mov ecx, dword [eax + 4]
shl edx, 0x1a
sar edx, 0x1a
xor edx, ecx
mov dword [esp + 0x18], ebx
and edx, 0x20
xor edx, ecx
mov dword [eax + 4], edx
mov eax, dword [0x7d04dd88]
test byte [esp + 0x1d], 2
je 0x7cf4f855
mov ecx, dword [eax + 4]
xor ecx, dword [esi]
test cl, 0x40
je 0x7cf4f855
push 0x40000004
call sym.SHELL32.dll_SHRestricted
test eax, eax
jne 0x7cf4f850
push edi
call sym.SHELL32.dll_SHRestricted
test eax, eax
jne 0x7cf4f850
push 0x4000004a
call sym.SHELL32.dll_SHRestricted
test eax, eax
jne 0x7cf4f850
mov edx, dword [esi]
mov eax, dword [0x7d04dd88]
shl edx, 0x19
mov ecx, dword [eax + 4]
mov dword [esp + 0x18], ebx
sar edx, 0x19
xor edx, ecx
and edx, 0x40
xor edx, ecx
mov dword [eax + 4], edx
mov eax, dword [0x7d04dd88]
test byte [esp + 0x1d], 4
je 0x7cf4f896
mov ecx, dword [eax + 4]
xor ecx, dword [esi]
test cl, 0x80
je 0x7cf4f896
push edi
call sym.SHELL32.dll_SHRestricted
test eax, eax
mov eax, dword [0x7d04dd88]
jne 0x7cf4f896
mov edx, dword [esi]
mov ecx, dword [eax + 4]
shl edx, 0x18
sar edx, 0x18
xor edx, ecx
mov dword [esp + 0x18], ebx
and edx, 0x80
xor edx, ecx
mov dword [eax + 4], edx
mov eax, dword [0x7d04dd88]
test byte [esp + 0x1e], 2
je 0x7cf4f8e3
mov ecx, dword [eax + 4]
xor ecx, dword [esi]
test ch, 0x20
je 0x7cf4f8e3
push 0x40000033
call sym.SHELL32.dll_SHRestricted
test eax, eax
jne 0x7cf4f8de
push edi
call sym.SHELL32.dll_SHRestricted
test eax, eax
jne 0x7cf4f8de
mov edx, dword [esi]
mov eax, dword [0x7d04dd88]
shl edx, 0x12
mov ecx, dword [eax + 4]
mov ebp, ebx
sar edx, 0x12
xor edx, ecx
and edx, 0x2000
xor edx, ecx
mov dword [eax + 4], edx
mov eax, dword [0x7d04dd88]
test byte [esp + 0x1d], 8
je 0x7cf4f915
mov ecx, dword [esi]
mov edx, dword [eax + 4]
mov edi, ecx
xor edi, edx
test edi, 0x100
je 0x7cf4f915
shl ecx, 0x17
sar ecx, 0x17
xor ecx, edx
mov ebp, ebx
and ecx, 0x100
xor ecx, edx
mov dword [eax + 4], ecx
mov eax, dword [0x7d04dd88]
test byte [esp + 0x1d], 0x20
je 0x7cf4f947
mov ecx, dword [esi]
mov edx, dword [eax + 4]
mov edi, ecx
xor edi, edx
test edi, 0x800
je 0x7cf4f947
shl ecx, 0x14
sar ecx, 0x14
xor ecx, edx
mov ebp, ebx
and ecx, 0x800
xor ecx, edx
mov dword [eax + 4], ecx
mov eax, dword [0x7d04dd88]
test byte [esp + 0x1d], 0x40
je 0x7cf4f979
mov ecx, dword [esi]
mov edx, dword [eax + 4]
mov edi, ecx
xor edi, edx
test edi, 0x1000
je 0x7cf4f979
shl ecx, 0x13
sar ecx, 0x13
xor ecx, edx
mov ebp, ebx
and ecx, 0x1000
xor ecx, edx
mov dword [eax + 4], ecx
mov eax, dword [0x7d04dd88]
test byte [esp + 0x1d], 0x10
je 0x7cf4f9ab
mov ecx, dword [esi]
mov edx, dword [eax + 4]
mov edi, ecx
xor edi, edx
test edi, 0x400
je 0x7cf4f9ab
shl ecx, 0x15
sar ecx, 0x15
xor ecx, edx
mov ebp, ebx
and ecx, 0x400
xor ecx, edx
mov dword [eax + 4], ecx
mov eax, dword [0x7d04dd88]
test byte [esp + 0x1c], 0x10
je 0x7cf4f9dd
mov ecx, dword [eax + 0x10]
cmp ecx, dword [esi + 0xc]
jne 0x7cf4f9c2
mov ecx, dword [eax + 0x14]
cmp ecx, dword [esi + 0x10]
je 0x7cf4f9dd
mov ecx, dword [esi + 0x10]
mov dword [esp + 0x18], ebx
mov dword [eax + 0x14], ecx
mov ecx, dword [0x7d04dd88]
mov eax, dword [esi + 0xc]
mov dword [ecx + 0x10], eax
mov eax, dword [0x7d04dd88]
test byte [esp + 0x1e], 1
je 0x7cf4fa0f
mov ecx, dword [esi]
mov edx, dword [eax + 4]
mov edi, ecx
xor edi, edx
test edi, 0x4000
je 0x7cf4fa0f
shl ecx, 0x11
sar ecx, 0x11
xor ecx, edx
mov ebp, ebx
and ecx, 0x4000
xor ecx, edx
mov dword [eax + 4], ecx
mov eax, dword [0x7d04dd88]
test byte [esp + 0x1e], 4
je 0x7cf4fa41
mov ecx, dword [esi]
mov edx, dword [eax + 4]
mov edi, ecx
xor edi, edx
test edi, 0x8000
je 0x7cf4fa41
shl ecx, 0x10
sar ecx, 0x10
xor ecx, edx
mov ebp, ebx
and ecx, 0x8000
xor ecx, edx
mov dword [eax + 4], ecx
mov eax, dword [0x7d04dd88]
test byte [esp + 0x1e], 8
je 0x7cf4fa6d
mov edi, dword [eax + 0x20]
mov ecx, dword [esi + 0x1c]
mov edx, edi
xor edx, ecx
test dl, 1
je 0x7cf4fa6d
shl ecx, 0x1f
sar ecx, 0x1f
xor ecx, edi
mov ebp, ebx
and ecx, ebx
xor ecx, edi
mov dword [eax + 0x20], ecx
mov eax, dword [0x7d04dd88]
cmp dword [esp + 0x10], 0
mov ebx, 0x7cf3c5a0
jne 0x7cf4fa84
cmp dword [esp + 0x18], 0
jne 0x7cf4fa84
test ebp, ebp
je 0x7cf4fab6
push 1
push reloc.SHLWAPI.dll_ParseURLA
call fcn.7cf5afcc
mov edi, eax
mov eax, dword [0x7d04dd88]
test edi, edi
je 0x7cf4fab6
push dword [eax]
push eax
push 3
push 0
push ebx
push edi
call dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
push edi
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, dword [0x7d04dd88]
xor edi, edi
cmp dword [esp + 0x10], edi
jne 0x7cf4fac2
cmp ebp, edi
je 0x7cf4fad0
add eax, 4
push eax
call fcn.7cfaf033
mov eax, dword [0x7d04dd88]
cmp dword [esp + 0x18], edi
jne 0x7cf4fada
cmp ebp, edi
je 0x7cf4faee
call fcn.7cf5dcf1
push ebx
push edi
push 0x1a
call dword [sym.imp.SHLWAPI.dll_SHSendMessageBroadcastW]
mov eax, dword [0x7d04dd88]
cmp dword [esp + 0x20], edi
jne 0x7cf4fd25
mov ebx, dword [esp + 0x1c]
test bl, 1
je 0x7cf4fb1a
mov eax, dword [eax + 4]
mov ecx, dword [esi]
shl eax, 0x1f
sar eax, 0x1f
xor eax, ecx
and eax, 1
xor eax, ecx
mov dword [esi], eax
mov eax, dword [0x7d04dd88]
test bl, 0x20
je 0x7cf4fb38
mov eax, dword [eax + 4]
mov ecx, dword [esi]
shl eax, 0x1c
sar eax, 0x1c
xor eax, ecx
and eax, 8
xor eax, ecx
mov dword [esi], eax
mov eax, dword [0x7d04dd88]
test bl, 2
je 0x7cf4fb56
mov eax, dword [eax + 4]
mov ecx, dword [esi]
shl eax, 0x1e
sar eax, 0x1e
xor eax, ecx
and eax, 2
xor eax, ecx
mov dword [esi], eax
mov eax, dword [0x7d04dd88]
test bl, 8
je 0x7cf4fb74
mov eax, dword [eax + 4]
mov ecx, dword [esi]
shl eax, 0x1b
sar eax, 0x1b
xor eax, ecx
and eax, 0x10
xor eax, ecx
mov dword [esi], eax
mov eax, dword [0x7d04dd88]
mov edi, 0x8000
test edi, ebx
je 0x7cf4fb96
mov eax, dword [eax + 4]
mov ecx, dword [esi]
shl eax, 0x1d
sar eax, 0x1d
xor eax, ecx
and eax, 4
xor eax, ecx
mov dword [esi], eax
mov eax, dword [0x7d04dd88]
test bl, 0x80
je 0x7cf4fbb4
mov eax, dword [eax + 4]
mov ecx, dword [esi]
shl eax, 0x1a
sar eax, 0x1a
xor eax, ecx
and eax, 0x20
xor eax, ecx
mov dword [esi], eax
mov eax, dword [0x7d04dd88]
test bh, 2
je 0x7cf4fbd2
mov eax, dword [eax + 4]
mov ecx, dword [esi]
shl eax, 0x19
sar eax, 0x19
xor eax, ecx
and eax, 0x40
xor eax, ecx
mov dword [esi], eax
mov eax, dword [0x7d04dd88]
mov ebp, 0x400
test ebp, ebx
je 0x7cf4fbf6
mov eax, dword [eax + 4]
mov ecx, dword [esi]
shl eax, 0x18
sar eax, 0x18
xor eax, ecx
and eax, 0x80
xor eax, ecx
mov dword [esi], eax
mov eax, dword [0x7d04dd88]
test ebx, 0x20000
je 0x7cf4fc19
mov eax, dword [eax + 4]
mov ecx, dword [esi]
shl eax, 0x12
sar eax, 0x12
xor eax, ecx
and eax, 0x2000
xor eax, ecx
mov dword [esi], eax
mov eax, dword [0x7d04dd88]
mov edx, 0x800
test edx, ebx
je 0x7cf4fc3d
mov eax, dword [eax + 4]
mov ecx, dword [esi]
shl eax, 0x17
sar eax, 0x17
xor eax, ecx
and eax, 0x100
xor eax, ecx
mov dword [esi], eax
mov eax, dword [0x7d04dd88]
test bh, 0x20
je 0x7cf4fc5a
mov eax, dword [eax + 4]
mov ecx, dword [esi]
shl eax, 0x14
sar eax, 0x14
xor eax, ecx
and eax, edx
xor eax, ecx
mov dword [esi], eax
mov eax, dword [0x7d04dd88]
mov edx, 0x4000
test edx, ebx
je 0x7cf4fc7e
mov eax, dword [eax + 4]
mov ecx, dword [esi]
shl eax, 0x13
sar eax, 0x13
xor eax, ecx
and eax, 0x1000
xor eax, ecx
mov dword [esi], eax
mov eax, dword [0x7d04dd88]
test bh, 0x10
je 0x7cf4fc9b
mov eax, dword [eax + 4]
mov ecx, dword [esi]
shl eax, 0x15
sar eax, 0x15
xor eax, ecx
and eax, ebp
xor eax, ecx
mov dword [esi], eax
mov eax, dword [0x7d04dd88]
test bl, 4
je 0x7cf4fcac
mov eax, dword [esi + 4]
and word [eax], 0
mov eax, dword [0x7d04dd88]
test bl, 0x10
je 0x7cf4fcc7
mov eax, dword [eax + 0x14]
mov dword [esi + 0x10], eax
mov eax, dword [0x7d04dd88]
mov eax, dword [eax + 0x10]
mov dword [esi + 0xc], eax
mov eax, dword [0x7d04dd88]
test ebx, 0x10000
je 0x7cf4fce7
mov eax, dword [eax + 4]
mov ecx, dword [esi]
shl eax, 0x11
sar eax, 0x11
xor eax, ecx
and eax, edx
xor eax, ecx
mov dword [esi], eax
mov eax, dword [0x7d04dd88]
test ebx, 0x40000
je 0x7cf4fd07
mov eax, dword [eax + 4]
mov ecx, dword [esi]
shl eax, 0x10
sar eax, 0x10
xor eax, ecx
and eax, edi
xor eax, ecx
mov dword [esi], eax
mov eax, dword [0x7d04dd88]
test ebx, 0x80000
je 0x7cf4fd25
mov eax, dword [eax + 0x20]
mov ecx, dword [esi + 0x1c]
shl eax, 0x1f
sar eax, 0x1f
xor eax, ecx
and eax, 1
xor eax, ecx
mov dword [esi + 0x1c], eax
pop edi
pop esi
pop ebp
pop ebx
pop ecx
ret 0xc