Function at 0x401f50
Capabilities:
Set registry value

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x41a2c6
mov eax, dword fs:[0]
push eax
push ecx
mov eax, 0x2124
call fcn.00419ed0
mov eax, dword [0x42600c]
xor eax, ebp
mov dword [ebp - 0x14], 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 - 0x2124], ecx
mov eax, dword [ebp + 0x10]
mov edi, dword [ebp + 8]
mov ebx, dword [ebp + 0xc]
mov dword [ebp - 0x2134], eax
lea eax, [ebp - 0x2014]
push eax
mov dword [ebp - 0x2128], ecx
mov dword [ebp - 0x2120], edi
mov dword [ebp - 0x211c], ebx
call fcn.00401df6
test eax, eax
js 0x4023a9
push str.SMDB
lea eax, [ebp - 0x2014]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcmpiW]
test eax, eax
jne 0x401fdb
push 8
jmp 0x40202e
push 0x4210a8
lea eax, [ebp - 0x2014]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcmpiW]
test eax, eax
jne 0x401ff8
mov esi, 0x4008
jmp 0x40202f
push 0x4210ac
lea eax, [ebp - 0x2014]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcmpiW]
test eax, eax
jne 0x402012
push 0x13
jmp 0x40202e
push 0x4210b0
lea eax, [ebp - 0x2014]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcmpiW]
test eax, eax
jne 0x4023a4
push 0x11
pop esi
mov ecx, dword [ebp - 0x2124]
call fcn.00401dd6
mov ecx, dword [ebp - 0x2124]
lea eax, [ebp - 0x2014]
push eax
call fcn.00401df6
test eax, eax
js 0x4023a9
sub esi, 8
je 0x402350
sub esi, 9
je 0x4021f4
push 2
pop edi
sub esi, edi
je 0x4021a9
sub esi, 0x3ff5
jne 0x402388
lea eax, [ebp - 0x2014]
push eax
call fcn.0040b51e
xor ebx, ebx
add eax, edi
pop ecx
mov dword [ebp - 0x2118], ebx
mul edi
mov dword [ebp - 4], ebx
mov byte [ebp - 4], 1
cmp edx, ebx
ja 0x4023c5
jb 0x4020b0
cmp eax, 0xffffffff
ja 0x4023c5
cmp eax, 0x100
jbe 0x4020c5
push eax
lea ecx, [ebp - 0x2118]
call fcn.00405ec3
jmp 0x4020e7
lea esi, [ebp - 0x2114]
mov dword [ebp - 0x2118], esi
jmp 0x4020ed
mov esi, dword [ebp - 0x2118]
test esi, esi
je 0x402188
cmp word [ebp - 0x2014], 0
lea edi, [ebp - 0x2014]
je 0x40213a
push edi
call dword [sym.imp.USER32.dll_CharNextW]
movzx ecx, word [edi]
cmp ecx, 0x5c
jne 0x40212c
push 0x30
pop edx
cmp word [eax], dx
jne 0x40212c
xor ecx, ecx
push eax
mov word [esi], cx
call dword [sym.imp.USER32.dll_CharNextW]
mov edi, eax
jmp 0x402132
mov word [esi], cx
add edi, 2
add esi, 2
cmp word [edi], bx
jne 0x402105
xor eax, eax
mov dword [esi], eax
mov esi, dword [ebp - 0x2118]
test esi, esi
jne 0x40214c
push 0xd
jmp 0x40218a
mov edi, ebx
mov ebx, esi
push ebx
call fcn.0040b51e
inc eax
pop ecx
lea ebx, [ebx + eax*2]
lea edi, [edi + eax*2]
cmp eax, 1
jne 0x402150
mov eax, dword [ebp - 0x2120]
xor ebx, ebx
push edi
push esi
push 7
push ebx
push dword [ebp - 0x211c]
push dword [eax]
call dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
mov esi, dword [ebp - 0x2118]
mov edi, eax
jmp 0x40218b
push 0xe
pop edi
lea eax, [ebp - 0x2114]
cmp esi, eax
je 0x40237b
lea ecx, [ebp - 0x2118]
call fcn.00405eba
jmp 0x40237b
lea eax, [ebp - 0x212c]
xor ebx, ebx
push eax
push ebx
push ebx
lea eax, [ebp - 0x2014]
push eax
call dword [sym.imp.OLEAUT32.dll_VarUI4FromDisp]
test eax, eax
js 0x4023a9
mov eax, dword [ebp - 0x212c]
push 4
mov dword [ebp - 0x2128], eax
lea eax, [ebp - 0x2128]
push eax
mov eax, dword [ebp - 0x2120]
push 4
push ebx
push dword [ebp - 0x211c]
push dword [eax]
jmp 0x402373
lea eax, [ebp - 0x2014]
push eax
call fcn.0040b51e
mov dword [ebp - 0x2130], eax
pop ecx
test al, 1
jne 0x402284
cdq
xor ebx, ebx
sub eax, edx
mov dword [ebp - 0x2118], ebx
mov esi, eax
sar esi, 1
mov dword [ebp - 0x212c], esi
mov dword [ebp - 4], 3
mov byte [ebp - 4], 4
cmp esi, 0x100
jbe 0x402269
push esi
lea ecx, [ebp - 0x2118]
call fcn.00405ec3
mov eax, dword [ebp - 0x2118]
jmp 0x402275
lea eax, [ebp - 0x2114]
mov dword [ebp - 0x2118], eax
test eax, eax
jne 0x40228e
lea ecx, [ebp - 0x2118]
call fcn.00405eba
mov eax, 0x80004005
jmp 0x4023a9
push esi
push ebx
push eax
call fcn.004094e0
mov edi, dword [ebp - 0x2130]
add esp, 0xc
test edi, edi
jle 0x402315
mov esi, ebx
mov eax, esi
shr eax, 1
add eax, dword [ebp - 0x2118]
mov dword [ebp - 0x2130], eax
movzx eax, word [ebp + esi*2 - 0x2014]
mov ecx, eax
mov edx, eax
push 0x30
pop eax
cmp cx, ax
jb 0x4022f1
cmp ecx, 0x39
jbe 0x4022ec
cmp ecx, 0x40
jbe 0x4022f1
cmp ecx, 0x46
jbe 0x4022e7
cmp ecx, 0x60
jbe 0x4022f1
cmp edx, 0x66
ja 0x4022f1
sub dl, 0x57
jmp 0x4022f3
sub dl, 0x37
jmp 0x4022f3
sub dl, 0x30
jmp 0x4022f3
mov dl, bl
mov eax, esi
and eax, 1
shl eax, 2
push 4
pop ecx
sub ecx, eax
mov eax, dword [ebp - 0x2130]
shl dl, cl
or byte [eax], dl
inc esi
cmp esi, edi
jl 0x4022a5
mov esi, dword [ebp - 0x212c]
mov eax, dword [ebp - 0x2120]
push esi
push dword [ebp - 0x2118]
push 3
push ebx
push dword [ebp - 0x211c]
push dword [eax]
call dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
mov edi, eax
lea eax, [ebp - 0x2114]
cmp dword [ebp - 0x2118], eax
je 0x40237b
lea ecx, [ebp - 0x2118]
call fcn.00405eba
jmp 0x40237b
lea eax, [ebp - 0x2014]
push eax
call fcn.0040b51e
pop ecx
lea eax, [eax*2 + 2]
push eax
lea eax, [ebp - 0x2014]
push eax
push 1
push 0
push ebx
push dword [edi]
call dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
mov edi, eax
test edi, edi
je 0x402388
mov ecx, edi
call fcn.0040123c
jmp 0x4023a9
push dword [ebp - 0x2134]
mov ecx, dword [ebp - 0x2124]
call fcn.00401df6
xor ecx, ecx
test eax, eax
cmovs ecx, eax
mov eax, ecx
jmp 0x4023a9
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 - 0x14]
xor ecx, ebp
call fcn.0040787a
leave
ret 0xc
push 0x80070216
call fcn.004011a5
int3