Function at 0x520290
Capabilities:
Set registry value

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
mov eax, 0x2118
call fcn.004edcb0
mov esi, ecx
mov eax, dword [0x587040]
xor eax, ebp
mov dword [ebp - 0x10], eax
lea edi, [ebp - 0x2010]
push 0x2000
push 0xff
push edi
call fcn.004f0940
add esp, 0xc
mov ecx, esi
push edi
call fcn.0051f1e0
test eax, eax
js 0x520363
push str.SMDB
push edi
call dword [sym.imp.KERNEL32.dll_lstrcmpiW]
test eax, eax
je 0x52038a
push 0x56ae24
push edi
call dword [sym.imp.KERNEL32.dll_lstrcmpiW]
test eax, eax
je 0x520384
push 0x56ae28
push edi
call dword [sym.imp.KERNEL32.dll_lstrcmpiW]
test eax, eax
je 0x52037e
push 0x56ae2c
push edi
call dword [sym.imp.KERNEL32.dll_lstrcmpiW]
xor ecx, ecx
mov edx, 0x11
mov ebx, 0x80020009
test eax, eax
cmovne edx, ecx
jne 0x520365
mov dword [ebp - 0x211c], edx
jmp 0x520394
cmp eax, 0x13
jne 0x52057e
lea eax, [ebp - 0x2118]
mov dword [eax], 0xffffffff
xor ecx, ecx
lea edx, [ebp - 0x2010]
push eax
push ecx
push ecx
push edx
call dword [sym.imp.OLEAUT32.dll_VarUI4FromDisp]
test eax, eax
jns 0x520513
mov ebx, eax
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.004ecef0
mov eax, ebx
add esp, 0x2118
pop esi
pop edi
pop ebx
pop ebp
ret 0xc
mov ax, 0x13
jmp 0x52038e
mov ax, 0x4008
jmp 0x52038e
mov ax, 8
mov dword [ebp - 0x211c], eax
mov eax, dword [esi]
mov edi, 0x800013
mov ebx, dword [sym.imp.USER32.dll_CharNextW]
jmp 0x5206cc
mov ecx, esi
lea edi, [ebp - 0x2010]
push edi
call fcn.0051f1e0
test eax, eax
js 0x520363
movzx eax, word [ebp - 0x211c]
cmp eax, 0x12
jg 0x520334
cmp eax, 0x11
jne 0x52052b
lea eax, [ebp - 0x2010]
push eax
call fcn.00507e54
add esp, 4
mov ebx, 0x80004005
test al, 1
jne 0x520365
mov dword [ebp - 0x211c], eax
mov edi, eax
sar edi, 1
lea eax, [ebp - 0x2110]
push 0x100
push 0xff
push eax
call fcn.004f0940
lea edx, [ebp - 0x2110]
add esp, 0xc
mov dword [edx - 4], 0
mov dword [ebp - 0x2120], edi
cmp edi, 0x101
jae 0x5206e5
mov dword [ebp - 0x2114], edx
test edx, edx
je 0x520462
push dword [ebp - 0x2120]
push 0
mov dword [ebp - 0x2124], edx
push edx
call fcn.004f0940
add esp, 0xc
cmp dword [ebp - 0x211c], 0
jle 0x520468
xor eax, eax
xor edx, edx
jmp 0x5204e6
xor eax, eax
xor edi, edi
jmp 0x520499
push dword [ebp - 0x2120]
push dword [ebp - 0x2114]
push 3
push 0
push dword [ebp + 0xc]
mov eax, dword [ebp + 8]
push dword [eax]
call dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
mov edi, eax
mov eax, dword [ebp - 0x2114]
mov ebx, 0x80004005
mov edx, dword [ebp - 0x2124]
lea ecx, [ebp - 0x2110]
cmp eax, ecx
jne 0x5206ff
test edx, edx
je 0x520365
jmp 0x520556
add ecx, 0xc9
jmp 0x5204c2
add ecx, 0xd0
mov ebx, ecx
mov ecx, eax
not cl
and cl, 4
shl ebx, cl
mov ecx, dword [ebp - 0x2114]
mov edi, edx
shr edi, 1
or byte [ecx + edi], bl
inc edx
add eax, 4
cmp dword [ebp - 0x211c], edx
je 0x520468
movzx ecx, word [ebp + edx*2 - 0x2010]
lea ebx, [ecx - 0x30]
cmp ebx, 0xa
jb 0x5204bc
lea ebx, [ecx - 0x41]
cmp ebx, 6
jb 0x5204b4
lea edi, [ecx - 0x61]
mov ebx, 0
cmp edi, 6
jae 0x5204c4
add ecx, 0xa9
jmp 0x5204c2
mov eax, dword [ebp - 0x2118]
lea ecx, [ebp - 0x2114]
mov dword [ecx], eax
mov eax, 4
push eax
push ecx
push eax
jmp 0x520544
cmp eax, 8
jne 0x520568
push edi
call fcn.00507e54
add esp, 4
lea eax, [eax*2 + 2]
push eax
push edi
push 1
push 0
push dword [ebp + 0xc]
mov eax, dword [ebp + 8]
push dword [eax]
call dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
mov edi, eax
test edi, edi
je 0x520568
push edi
call fcn.00520730
add esp, 4
jmp 0x520363
mov ecx, esi
push dword [ebp + 0x10]
call fcn.0051f1e0
mov ebx, eax
sar ebx, 0x1f
and ebx, eax
jmp 0x520365
cmp eax, 0x4008
jne 0x520568
lea eax, [ebp - 0x2010]
push eax
call fcn.00507e54
add esp, 4
mov edi, eax
lea eax, [ebp - 0x2110]
push 0x100
push 0xff
push eax
call fcn.004f0940
mov eax, edi
lea edi, [ebp - 0x2110]
add esp, 0xc
add eax, 2
mov dword [edi - 4], 0
js 0x52071f
cmp eax, 0x81
jae 0x5205d6
mov dword [ebp - 0x2114], edi
jmp 0x5205e8
add eax, eax
lea edi, [ebp - 0x2114]
mov ecx, edi
push eax
call fcn.0051ee40
mov edi, dword [edi]
lea edx, [ebp - 0x2010]
xor ecx, ecx
test edi, edi
jne 0x520617
mov edi, 0xe
lea eax, [ebp - 0x2110]
cmp ecx, eax
je 0x520556
lea ecx, [ebp - 0x2114]
call fcn.00520920
jmp 0x520556
cmp word [ebp - 0x2010], 0
jne 0x520699
mov dword [edi], 0
mov eax, dword [ebp - 0x2114]
mov edi, 0xd
test eax, eax
mov ecx, 0
je 0x5205f9
xor ebx, ebx
mov dword [ebp - 0x211c], eax
mov edi, eax
push edi
call fcn.00507e54
add esp, 4
lea edi, [edi + eax*2]
add edi, 2
lea ebx, [ebx + eax*2]
add ebx, 2
test eax, eax
jne 0x520645
push ebx
push dword [ebp - 0x211c]
push 7
push 0
push dword [ebp + 0xc]
mov eax, dword [ebp + 8]
push dword [eax]
call dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
mov edi, eax
mov ecx, dword [ebp - 0x2114]
jmp 0x5205f9
mov edi, dword [ebp - 0x211c]
mov word [edi], cx
add edx, 2
add edi, 2
cmp word [edx], 0
je 0x520621
mov dword [ebp - 0x211c], edi
push edx
mov edi, edx
call ebx
mov edx, edi
movzx ecx, word [edi]
cmp cx, 0x5c
jne 0x520684
cmp word [eax], 0x30
jne 0x520684
mov edi, dword [ebp - 0x211c]
mov word [edi], 0
push eax
call ebx
mov edx, eax
jmp 0x520690
push eax
call ebx
mov dword [esi], eax
movzx ecx, word [eax]
add ecx, 0xfffffff7
cmp ecx, 0x17
ja 0x5203a6
bt edi, ecx
jb 0x5206c7
jmp 0x5203a6
lea edi, [ebp - 0x2114]
mov ecx, edi
push dword [ebp - 0x2120]
call fcn.0051ee40
mov edx, dword [edi]
jmp 0x520435
lea ecx, [ebp - 0x2114]
mov dword [ebp - 0x211c], edi
mov edi, edx
call fcn.00520920
mov edx, edi
mov edi, dword [ebp - 0x211c]
jmp 0x5204a7
push 0x80070216
call fcn.00537370
int3