Function at 0x10066c20
Capabilities:
Set registry value

Disassembly:
sub esp, 0x40
push ebx
push ebp
push esi
mov esi, dword [esp + 0x50]
mov edx, dword [esi + 0x34]
xor ebx, ebx
push edi
mov dword [esi + 0xb8], 8
cmp edx, ebx
je 0x10066c5f
mov ecx, dword [edx + 0x10]
cmp ecx, ebx
je 0x10066c5f
cmp dword [ecx + 0x34], ebx
sete al
cmp al, bl
sete al
movzx eax, al
neg eax
sbb eax, eax
and eax, ecx
mov dword [esp + 0x1c], eax
jmp 0x10066c63
mov dword [esp + 0x1c], ebx
cmp edx, ebx
je 0x10066c88
mov ecx, dword [edx + 0xc]
cmp ecx, ebx
je 0x10066c88
cmp dword [ecx + 0x34], ebx
sete al
cmp al, bl
sete al
movzx eax, al
neg eax
sbb eax, eax
and eax, ecx
mov dword [esp + 0x30], eax
jmp 0x10066c8c
mov dword [esp + 0x30], ebx
mov eax, dword [esi + 0x38]
lea ecx, [esp + 0x40]
push ecx
mov dword [esp + 0x48], esi
mov dword [esp + 0x4c], ebx
mov dword [esp + 0x50], ebx
mov dword [esp + 0x44], eax
call fcn.1006a2f0
mov eax, dword [0x100bc66c]
lea edx, [esp + 0x20]
push edx
mov dword [esp + 0x18], eax
mov dword [esp + 0x1c], eax
lea eax, [esp + 0x28]
push eax
lea ecx, [esp + 0x3c]
push ecx
lea edx, [esp + 0x4c]
push edx
mov dword [esp + 0x44], ebx
mov dword [esp + 0x34], ebx
mov dword [esp + 0x30], ebx
call fcn.100691e0
lea eax, [esp + 0x40]
push eax
call fcn.100690f0
mov edi, eax
mov eax, dword [esi + 0x38]
mov esi, dword [eax + 0xcc]
mov eax, dword [esp + 0x40]
add eax, 0x4c
mov dword [esp + 0x3c], edi
mov dword [esp + 0x38], esi
cmp eax, ebx
je 0x10066d0e
mov ecx, dword [eax + 0x10]
sub ecx, dword [eax + 0xc]
sar ecx, 3
jmp 0x10066d10
xor ecx, ecx
xor eax, eax
cmp ecx, ebx
setg al
mov dword [esp + 0x28], ebx
mov dword [esp + 0x2c], eax
cmp edi, ebx
jne 0x10066d27
cmp eax, ebx
je 0x10066d44
mov ecx, 1
mov dword [esp + 0x28], ecx
cmp edi, ebx
jne 0x10066db8
cmp eax, ebx
je 0x10066d44
mov dword [esp + 0x28], 3
cmp esi, ebx
jne 0x10066fa2
cmp dword [esp + 0x24], ebx
jne 0x10066ee4
push 0x12f
push ecx
call fcn.1004e950
add esp, 4
push eax
mov eax, 0xa
lea ecx, [esp + 0x2c]
call fcn.1004e840
mov edi, eax
lea eax, [esp + 0x14]
call fcn.10003840
mov eax, dword [esp + 0x24]
mov esi, dword [sym.imp.KERNEL32.DLL_InterlockedDecrement]
lea edx, [eax - 0xc]
cmp edx, 0x100bc65c
je 0x10066dad
add eax, 0xfffffff4
push eax
call esi
test eax, eax
jg 0x10066dad
mov eax, dword [esp + 0x24]
add eax, 0xfffffff4
push eax
call fcn.1008441c
add esp, 4
push ebx
push 0x12f
jmp 0x10066f41
test byte [0x100c7d6c], cl
jne 0x10066de4
or dword [0x100c7d6c], ecx
call fcn.1004ecd0
push 0x100a3500
mov dword [0x100c7b34], ebx
mov dword [0x100c7b38], ebx
call fcn.1008416d
add esp, 4
call fcn.1004e130
push 9
mov eax, 0x100c7b14
call fcn.1004e8e0
cmp eax, ebx
jne 0x10066e00
mov ebx, 0x100a7638
jmp 0x10066e0d
mov ecx, dword [eax]
mov edx, dword [ecx + 4]
push ebx
push ebx
push ebx
push eax
call edx
mov ebx, eax
lea edi, [esp + 0x24]
call fcn.100036f0
lea eax, [esp + 0x14]
call fcn.10003840
mov eax, dword [esp + 0x24]
mov ebp, dword [sym.imp.KERNEL32.DLL_InterlockedDecrement]
lea ecx, [eax - 0xc]
cmp ecx, 0x100bc65c
je 0x10066e47
lea esi, [eax - 0xc]
push esi
call ebp
test eax, eax
jg 0x10066e47
push esi
call fcn.1008441c
add esp, 4
mov eax, 1
test byte [0x100c7d6c], al
jne 0x10066e78
or dword [0x100c7d6c], eax
call fcn.1004ecd0
xor eax, eax
push 0x100a3500
mov dword [0x100c7b34], eax
mov dword [0x100c7b38], eax
call fcn.1008416d
add esp, 4
call fcn.1004e130
push 9
mov eax, 0x100c7b14
call fcn.1004e8e0
test eax, eax
jne 0x10066e94
mov ebx, 0x100a7638
jmp 0x10066ea4
mov edx, dword [eax]
push 0
push 0
push 0
push eax
mov eax, dword [edx + 8]
call eax
mov ebx, eax
lea edi, [esp + 0x24]
call fcn.100036f0
lea eax, [esp + 0x18]
call fcn.10003840
mov eax, dword [esp + 0x24]
lea ecx, [eax - 0xc]
cmp ecx, 0x100bc65c
je 0x10066ed8
lea esi, [eax - 0xc]
push esi
call ebp
test eax, eax
jg 0x10066ed8
push esi
call fcn.1008441c
add esp, 4
mov ebp, 6
xor ebx, ebx
jmp 0x100671cb
push 0x130
push ecx
call fcn.1004e950
add esp, 4
push eax
mov eax, 0xa
lea ecx, [esp + 0x2c]
call fcn.1004e840
mov edi, eax
lea eax, [esp + 0x14]
call fcn.10003840
mov eax, dword [esp + 0x24]
mov esi, dword [sym.imp.KERNEL32.DLL_InterlockedDecrement]
lea edx, [eax - 0xc]
cmp edx, 0x100bc65c
je 0x10066f3b
add eax, 0xfffffff4
push eax
call esi
test eax, eax
jg 0x10066f3b
mov eax, dword [esp + 0x24]
add eax, 0xfffffff4
push eax
call fcn.1008441c
add esp, 4
push ebx
push 0x130
call fcn.1004e950
push eax
mov eax, 0xa
lea ecx, [esp + 0x30]
call fcn.1004e890
mov edi, eax
lea eax, [esp + 0x18]
call fcn.10003840
mov eax, dword [esp + 0x24]
lea ecx, [eax - 0xc]
cmp ecx, 0x100bc65c
je 0x10066f89
add eax, 0xfffffff4
push eax
call esi
test eax, eax
jg 0x10066f89
mov eax, dword [esp + 0x24]
add eax, 0xfffffff4
push eax
call fcn.1008441c
add esp, 4
mov ebp, 5
cmp dword [esp + 0x2c], ebx
je 0x100671cb
mov edx, dword [esp + 0x54]
push edx
jmp 0x100671c6
mov esi, dword [sym.imp.KERNEL32.DLL_InterlockedDecrement]
cmp dword [esp + 0x24], ebx
jne 0x1006705e
push 0x12d
push ecx
call fcn.1004e950
add esp, 4
push eax
mov eax, 0xa
lea ecx, [esp + 0x28]
call fcn.1004e840
mov edi, eax
lea eax, [esp + 0x14]
call fcn.10003840
mov eax, dword [esp + 0x20]
lea ecx, [eax - 0xc]
cmp ecx, 0x100bc65c
je 0x10067003
add eax, 0xfffffff4
push eax
call esi
test eax, eax
jg 0x10067003
mov eax, dword [esp + 0x20]
add eax, 0xfffffff4
push eax
call fcn.1008441c
add esp, 4
push ebx
push 0x12d
call fcn.1004e950
push eax
mov eax, 0xa
lea ecx, [esp + 0x2c]
call fcn.1004e890
mov edi, eax
lea eax, [esp + 0x18]
call fcn.10003840
mov eax, dword [esp + 0x20]
lea edx, [eax - 0xc]
cmp edx, 0x100bc65c
je 0x10067102
add eax, 0xfffffff4
push eax
call esi
test eax, eax
jg 0x10067102
mov eax, dword [esp + 0x20]
add eax, 0xfffffff4
push eax
call fcn.1008441c
add esp, 4
jmp 0x10067102
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x34]
add eax, ecx
jne 0x100670a3
push 0x132
push ecx
call fcn.1004e950
add esp, 4
push eax
mov eax, 0xa
lea ecx, [esp + 0x3c]
call fcn.1004e840
mov edi, eax
lea eax, [esp + 0x14]
call fcn.10003840
lea esi, [esp + 0x34]
call fcn.100072c0
push ebx
push 0x132
jmp 0x100670da
push 0x12e
push ecx
call fcn.1004e950
add esp, 4
push eax
mov eax, 0xa
lea ecx, [esp + 0x3c]
call fcn.1004e840
mov edi, eax
lea eax, [esp + 0x14]
call fcn.10003840
lea esi, [esp + 0x34]
call fcn.100072c0
push ebx
push 0x12e
call fcn.1004e950
push eax
mov eax, 0xa
lea ecx, [esp + 0x40]
call fcn.1004e890
mov edi, eax
lea eax, [esp + 0x18]
call fcn.10003840
lea esi, [esp + 0x34]
call fcn.100072c0
mov ebp, 7
cmp dword [esp + 0x2c], ebx
je 0x100671cb
mov edi, dword [esp + 0x54]
mov esi, dword [edi + 0x38]
mov dword [esp + 0x20], ebx
call fcn.10063a60
mov ecx, dword [edi + 0x2c]
cmp ecx, ebx
je 0x10067185
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 0xc]
push ecx
call eax
mov esi, eax
cmp esi, ebx
je 0x10067185
mov ecx, dword [esi]
mov eax, dword [ecx + 0x98]
lea edx, [esp + 0x20]
push edx
push 0x100af2e4
push esi
call eax
mov eax, dword [esp + 0x20]
cmp eax, ebx
je 0x1006715e
push eax
lea eax, [esp + 0x18]
call fcn.100035a0
mov ecx, dword [esi]
mov eax, dword [ecx + 0x98]
lea edx, [esp + 0x20]
push edx
push 0x100af30c
push esi
call eax
mov eax, dword [esp + 0x20]
cmp eax, ebx
je 0x10067185
push eax
lea eax, [esp + 0x1c]
call fcn.100035a0
cmp dword [esp + 0x24], ebx
jne 0x100671c0
push 0x12c
push ecx
call fcn.1004e950
add esp, 4
push eax
mov eax, 0xa
lea ecx, [esp + 0x3c]
call fcn.1004e840
mov edi, eax
lea eax, [esp + 0x14]
call fcn.10003840
lea esi, [esp + 0x34]
call fcn.100072c0
mov edi, dword [esp + 0x54]
mov ebp, 5
push edi
call fcn.10067ea0
mov ecx, dword [esp + 0x54]
mov dword [esp + 0x34], ebx
push ecx
lea esi, [esp + 0x1c]
lea edi, [esp + 0x18]
lea ebx, [esp + 0x38]
call fcn.10067c10
cmp dword [esp + 0x1c], 0
mov ebx, dword [esp + 0x14]
mov edi, dword [esp + 0x18]
je 0x100672bb
mov esi, dword [esp + 0x34]
mov edx, dword [esp + 0x38]
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x1c]
push esi
push edx
push eax
mov eax, ebp
call fcn.10037e00
cmp esi, 1
jne 0x1006723f
call fcn.100125d0
push 4
lea ecx, [esp + 0x58]
push ecx
push 4
push 0x100a8874
push 0x100a8880
inc eax
push reloc.OLEAUT32.DLL_SysReAllocString
mov dword [esp + 0x6c], eax
call dword [sym.imp.SHLWAPI.DLL_SHSetValueW]
cmp dword [edi - 0xc], 0
push ecx
lea ecx, [edi - 0xc]
mov eax, esp
jl 0x10067256
push ecx
mov dword [eax], edi
call dword [sym.imp.KERNEL32.DLL_InterlockedIncrement]
jmp 0x10067264
mov edx, dword [0x100bc66c]
push edi
mov dword [eax], edx
call fcn.100035a0
cmp dword [ebx - 0xc], 0
push ecx
lea ecx, [ebx - 0xc]
mov eax, esp
jl 0x1006727b
push ecx
mov dword [eax], ebx
call dword [sym.imp.KERNEL32.DLL_InterlockedIncrement]
jmp 0x10067289
mov ecx, dword [0x100bc66c]
push ebx
mov dword [eax], ecx
call fcn.100035a0
mov edx, dword [esp + 0x24]
push edx
call fcn.10038300
cmp dword [esp + 0x3c], 0
jne 0x100672af
cmp dword [esp + 0x38], 0
je 0x100672af
cmp dword [esp + 0x2c], 0
jne 0x100672af
mov eax, 1
jmp 0x100672b1
xor eax, eax
mov esi, dword [esp + 0x1c]
push eax
call fcn.10039040
mov esi, dword [esp + 0x30]
test esi, esi
je 0x1006731d
mov eax, ebp
mov ecx, esi
call fcn.10042d20
cmp dword [edi - 0xc], 0
push ecx
lea ecx, [edi - 0xc]
mov eax, esp
jl 0x100672e3
push ecx
mov dword [eax], edi
call dword [sym.imp.KERNEL32.DLL_InterlockedIncrement]
jmp 0x100672f1
mov ecx, dword [0x100bc66c]
push edi
mov dword [eax], ecx
call fcn.100035a0
cmp dword [ebx - 0xc], 0
push ecx
lea ecx, [ebx - 0xc]
mov eax, esp
jl 0x10067308
push ecx
mov dword [eax], ebx
call dword [sym.imp.KERNEL32.DLL_InterlockedIncrement]
jmp 0x10067316
mov edx, dword [0x100bc66c]
push ebx
mov dword [eax], edx
call fcn.100035a0
mov eax, esi
call fcn.100451a0
lea eax, [edi - 0xc]
cmp eax, 0x100bc65c
je 0x1006733e
lea esi, [edi - 0xc]
push esi
call dword [sym.imp.KERNEL32.DLL_InterlockedDecrement]
test eax, eax
jg 0x1006733e
push esi
call fcn.1008441c
add esp, 4
lea ecx, [ebx - 0xc]
cmp ecx, 0x100bc65c
je 0x10067360
lea esi, [ebx - 0xc]
push esi
call dword [sym.imp.KERNEL32.DLL_InterlockedDecrement]
test eax, eax
jg 0x10067360
push esi
call fcn.1008441c
add esp, 4
mov eax, dword [esp + 0x4c]
test eax, eax
je 0x10067370
mov edx, dword [eax]
push eax
mov eax, dword [edx + 8]
call eax
mov eax, dword [esp + 0x48]
test eax, eax
je 0x10067380
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x40
ret 4