Function at 0x46fbe0
Capabilities:
Set registry value

Disassembly:
push ebp
lea ebp, [esp - 0x2108]
mov eax, 0x2108
call fcn.0047ef80
push 0xffffffffffffffff
push 0x4b30dd
mov eax, dword fs:[0]
push eax
sub esp, 0x2c
mov eax, dword [0x4e4050]
xor eax, ebp
mov dword [ebp + 0x2104], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x10], esp
mov dword [ebp - 0x18], ecx
mov dword [ebp - 0x14], ecx
mov ebx, dword [ebp + 0x2110]
mov dword [ebp - 0x20], ebx
mov edi, dword [ebp + 0x2114]
mov dword [ebp - 0x1c], edi
mov eax, dword [ebp + 0x2118]
mov dword [ebp - 0x30], eax
lea eax, [ebp + 0x104]
push eax
call fcn.00470430
test eax, eax
js 0x470067
push str.SMDB
lea eax, [ebp + 0x104]
push eax
mov esi, dword [sym.imp.KERNEL32.dll_lstrcmpiW]
call esi
test eax, eax
jne 0x46fc72
lea esi, [eax + 8]
jmp 0x46fcbb
push 0x4c8e5c
lea eax, [ebp + 0x104]
push eax
call esi
test eax, eax
jne 0x46fc8b
mov esi, 0x4008
jmp 0x46fcbb
push 0x4c8e60
lea eax, [ebp + 0x104]
push eax
call esi
test eax, eax
jne 0x46fca2
lea esi, [eax + 0x13]
jmp 0x46fcbb
push 0x4c8e64
lea eax, [ebp + 0x104]
push eax
call esi
test eax, eax
jne 0x470062
lea esi, [eax + 0x11]
mov ecx, dword [ebp - 0x18]
call fcn.00470fe0
lea eax, [ebp + 0x104]
push eax
mov ecx, dword [ebp - 0x18]
call fcn.00470430
test eax, eax
js 0x470067
cmp esi, 0x13
ja 0x46fef1
je 0x46fe97
cmp esi, 8
je 0x46fe5c
cmp esi, 0x11
jne 0x47004c
lea ebx, [ebp + 0x104]
lea ecx, [ebx + 2]
mov ax, word [ebx]
add ebx, 2
test ax, ax
jne 0x46fd04
sub ebx, ecx
sar ebx, 1
mov dword [ebp - 0x28], ebx
test bl, 1
jne 0x46fdad
mov eax, ebx
cdq
sub eax, edx
sar eax, 1
mov dword [ebp - 0x24], eax
mov dword [ebp - 0x2c], eax
mov dword [ebp], 0
mov dword [ebp - 4], 4
mov byte [ebp - 4], 5
mov dword [ebp - 0x38], eax
mov dword [ebp - 0x34], 0
cmp eax, 0x100
jbe 0x46fd64
push eax
lea ecx, [ebp]
call fcn.0040abd0
mov eax, dword [ebp - 0x24]
mov dword [ebp - 4], 4
jmp 0x46fd8f
lea ecx, [ebp + 4]
mov dword [ebp], ecx
mov dword [ebp - 4], 4
jmp 0x46fd8f
mov ecx, dword [ebp]
test ecx, ecx
jne 0x46fdb7
mov dword [ebp - 4], 0xffffffff
lea eax, [ebp + 4]
cmp dword [ebp], eax
je 0x46fdad
lea ecx, [ebp]
call fcn.0040ab90
mov eax, 0x80004005
jmp 0x470067
push eax
push 0
push ecx
call fcn.0047fe70
add esp, 0xc
xor edi, edi
test ebx, ebx
jle 0x46fe22
nop dword [eax]
movzx ecx, word [ebp + edi*2 + 0x104]
lea eax, [ecx - 0x30]
mov dword [ebp - 0x14], eax
cmp eax, 0x36
ja case.0x46fdea.58
movzx eax, byte [eax + 0x4700a8]
jmp dword [eax*4 + 0x470098]
lea eax, [ecx - 0x37]
jmp 0x46fdfd
lea eax, [ecx - 0x57]
jmp 0x46fdfd
xor eax, eax
mov dword [ebp - 0x14], eax
mov esi, edi
shr esi, 1
add esi, dword [ebp]
mov eax, edi
and eax, 1
shl eax, 2
mov ecx, 4
sub ecx, eax
mov eax, dword [ebp - 0x14]
shl al, cl
or byte [esi], al
inc edi
cmp edi, ebx
jl 0x46fdd0
push dword [ebp - 0x24]
push dword [ebp]
push 3
push 0
push dword [ebp - 0x1c]
mov eax, dword [ebp - 0x20]
push dword [eax]
call dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
mov esi, eax
mov dword [ebp - 4], 0xffffffff
lea eax, [ebp + 4]
cmp dword [ebp], eax
je 0x47003f
lea ecx, [ebp]
call fcn.0040ab90
jmp 0x47003f
lea ecx, [ebp + 0x104]
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x46fe65
sub ecx, edx
sar ecx, 1
lea eax, [ecx*2 + 2]
push eax
lea eax, [ebp + 0x104]
push eax
push 1
push 0
push edi
push dword [ebx]
call dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
mov esi, eax
jmp 0x47003f
mov dword [ebp - 0x24], 0
mov dword [ebp - 4], 3
lea eax, [ebp - 0x2c]
push eax
push 0
push 0
lea eax, [ebp + 0x104]
push eax
call dword [sym.imp.OLEAUT32.dll_VarUI4FromDisp]
test eax, eax
jns 0x46feca
mov dword [ebp - 4], 0xffffffff
jmp 0x470067
mov eax, dword [ebp - 0x2c]
mov dword [ebp - 0x28], eax
push 4
lea eax, [ebp - 0x28]
push eax
push 4
push 0
push edi
push dword [ebx]
call dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
mov esi, eax
mov dword [ebp - 4], 0xffffffff
jmp 0x47003f
cmp esi, 0x4008
jne 0x47004c
lea ecx, [ebp + 0x104]
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x46ff06
sub ecx, edx
sar ecx, 1
lea eax, [ecx + 2]
mov dword [ebp], 0
mov dword [ebp - 4], 0
mov byte [ebp - 4], 1
mov ecx, 2
mul ecx
mov dword [ebp - 0x38], eax
mov dword [ebp - 0x34], edx
test edx, edx
jne 0x47008c
cmp eax, 0xffffffff
ja 0x47008c
cmp eax, 0x100
jbe 0x46ff61
push eax
lea ecx, [ebp]
call fcn.0040abd0
mov dword [ebp - 4], 0
jmp 0x46ff83
lea eax, [ebp + 4]
mov dword [ebp], eax
mov dword [ebp - 4], 0
jmp 0x46ff83
mov edi, dword [ebp]
test edi, edi
je 0x470023
lea esi, [ebp + 0x104]
cmp word [ebp + 0x104], 0
je 0x46ffd0
mov ebx, dword [sym.imp.USER32.dll_CharNextW]
push esi
call ebx
movzx ecx, word [esi]
cmp ecx, 0x5c
jne 0x46ffc1
cmp word [eax], 0x30
jne 0x46ffc1
xor ecx, ecx
mov word [edi], cx
push eax
call ebx
mov esi, eax
jmp 0x46ffc7
mov word [edi], cx
add esi, 2
add edi, 2
cmp word [esi], 0
jne 0x46ffa4
xor eax, eax
mov dword [edi], eax
mov ebx, dword [ebp]
test ebx, ebx
jne 0x46ffe0
lea esi, [eax + 0xd]
jmp 0x470028
xor esi, esi
mov edx, ebx
mov ecx, edx
lea edi, [ecx + 2]
nop dword [eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x46fff0
sub ecx, edi
sar ecx, 1
inc ecx
lea edx, [edx + ecx*2]
lea esi, [esi + ecx*2]
cmp ecx, 1
jne 0x46ffe4
push esi
push ebx
push 7
push 0
push dword [ebp - 0x1c]
mov eax, dword [ebp - 0x20]
push dword [eax]
call dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
mov esi, eax
jmp 0x470028
mov esi, 0xe
mov dword [ebp - 4], 0xffffffff
lea eax, [ebp + 4]
cmp dword [ebp], eax
je 0x47003f
lea ecx, [ebp]
call fcn.0040ab90
test esi, esi
je 0x47004c
mov ecx, esi
call fcn.00470420
jmp 0x470067
push dword [ebp - 0x30]
mov ecx, dword [ebp - 0x18]
call fcn.00470430
xor ecx, ecx
test eax, eax
cmovs ecx, eax
mov eax, ecx
jmp 0x470067
mov eax, 0x80020009
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp + 0x2104]
xor ecx, ebp
call fcn.0047de56
lea esp, [ebp + 0x2108]
pop ebp
ret 0xc
push 0x80070216
call fcn.004027c0
nop
add dh, bh
inc esi
add cl, dh
std
inc esi
add dh, dh
std
inc esi
add bl, bh
std
inc esi
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [ebx], al
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add dword [ecx], eax
add dword [ecx], eax
add dword [ecx], eax
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add al, byte [edx]
add al, byte [edx]
add al, byte [edx]
int3