Function at 0x10003650
Capabilities:
Set registry value

Disassembly:
push ebp
mov ebp, esp
mov eax, 0x4014
call fcn.10015fe0
push ebx
push esi
mov esi, ecx
push edi
lea edi, [ebp - 0x4014]
mov eax, dword [esi]
mov cx, word [eax]
push ecx
mov ecx, esi
call fcn.100023b0
test eax, eax
je 0x10003693
mov edx, dword [esi]
push edx
call dword [sym.imp.USER32.dll_CharNextW]
mov dword [esi], eax
mov ax, word [eax]
push eax
mov ecx, esi
call fcn.100023b0
test eax, eax
jne 0x10003679
mov ecx, dword [esi]
mov ax, word [ecx]
test ax, ax
je 0x100037a0
cmp ax, 0x27
jne 0x100037b4
push ecx
call dword [sym.imp.USER32.dll_CharNextW]
mov dword [esi], eax
cmp word [eax], 0
je 0x10003712
mov ecx, esi
call fcn.10002390
test eax, eax
jne 0x10003712
mov eax, dword [esi]
cmp word [eax], 0x27
jne 0x100036d6
push eax
call dword [sym.imp.USER32.dll_CharNextW]
mov dword [esi], eax
mov ebx, dword [esi]
push ebx
call dword [sym.imp.USER32.dll_CharNextW]
lea ecx, [edi + 4]
lea edx, [ebp - 0x2014]
cmp ecx, edx
mov dword [esi], eax
jae 0x100037a0
cmp ebx, eax
jae 0x1000370c
mov edx, ebx
mov ecx, ebx
mov dx, word [edx]
add ecx, 2
mov word [edi], dx
add edi, 2
cmp ecx, eax
mov edx, ecx
jb 0x100036fa
cmp word [eax], 0
jne 0x100036ba
mov eax, dword [esi]
cmp word [eax], 0
je 0x100037a0
push eax
mov word [edi], 0
call dword [sym.imp.USER32.dll_CharNextW]
mov dword [esi], eax
mov al, byte [0x100469c4]
test al, 1
jne 0x10003779
mov ecx, dword [0x1001f26c]
mov edx, dword [0x1001f270]
or al, 1
mov word [0x1003e33c], 8
mov byte [0x100469c4], al
mov eax, dword [0x1001f268]
mov dword [0x1003e338], eax
mov dword [0x1003e340], ecx
mov word [0x1003e344], 0x13
mov dword [0x1003e348], edx
mov word [0x1003e34c], 0x11
xor ebx, ebx
mov edi, 0x1003e338
mov eax, dword [edi]
lea ecx, [ebp - 0x4014]
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_lstrcmpiW]
test eax, eax
je 0x100037f7
add edi, 8
inc ebx
cmp edi, 0x1003e350
jb 0x10003780
mov eax, 0x80020009
lea esp, [ebp - 0x4020]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc
push eax
mov ecx, esi
call fcn.100023b0
test eax, eax
jne 0x100037ed
mov ebx, dword [esi]
push ebx
call dword [sym.imp.USER32.dll_CharNextW]
cmp ebx, eax
mov dword [esi], eax
jae 0x100037e5
mov edx, ebx
mov ecx, ebx
mov dx, word [edx]
add ecx, 2
mov word [edi], dx
add edi, 2
cmp ecx, eax
mov edx, ecx
jb 0x100037d3
mov ax, word [eax]
test ax, ax
jne 0x100037b4
mov word [edi], 0
jmp 0x1000372c
mov di, word [ebx*8 + 0x1003e33c]
mov ecx, dword [esi]
xor eax, eax
mov ax, word [ecx]
add eax, 0xfffffff7
cmp eax, 0x17
ja case.0x10003816.10
xor edx, edx
mov dl, byte [eax + 0x100039f0]
jmp dword [edx*4 + 0x100039e8]
push ecx
call dword [sym.imp.USER32.dll_CharNextW]
mov dword [esi], eax
jmp 0x100037ff
lea eax, [ebp - 0x2014]
mov ecx, esi
push eax
call fcn.10002460
test eax, eax
jl 0x100039d8
and edi, 0xffff
mov eax, edi
sub eax, 8
je 0x10003996
sub eax, 9
je 0x10003891
sub eax, 2
jne 0x100039c3
lea ecx, [ebp - 0x10]
lea edx, [ebp - 0x2014]
push ecx
push 0
push 0
push edx
call dword [sym.imp.OLEAUT32.dll_VarUI4FromDisp]
mov eax, dword [ebp - 0x10]
mov edx, dword [ebp + 0xc]
mov dword [ebp - 4], eax
mov eax, dword [ebp + 8]
lea ecx, [ebp - 4]
push 4
push ecx
mov ecx, dword [eax]
push 4
push 0
push edx
push ecx
jmp 0x100039bd
lea edx, [ebp - 0x2014]
push edx
call dword [sym.imp.KERNEL32.dll_lstrlenW]
test al, 1
mov dword [ebp - 4], eax
je 0x100038b9
mov eax, 0x80004005
lea esp, [ebp - 0x4020]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc
cdq
sub eax, edx
mov ebx, eax
sar ebx, 1
mov eax, ebx
mov dword [ebp - 0x14], ebx
add eax, 3
and al, 0xfc
call fcn.10015fe0
mov ecx, ebx
mov edi, esp
mov edx, ecx
xor eax, eax
shr ecx, 2
mov dword [ebp - 8], edi
rep stosd dword es:[edi], eax
mov ecx, edx
and ecx, 3
rep stosb byte es:[edi], al
mov eax, esp
test eax, eax
jne 0x10003900
mov eax, 0x80004005
lea esp, [ebp - 0x4020]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc
mov eax, dword [ebp - 4]
xor edi, edi
test eax, eax
jle 0x10003981
lea eax, [ebp - 0x2014]
mov dword [ebp - 0xc], eax
mov ecx, dword [ebp - 0xc]
mov bx, word [ecx]
mov edx, ebx
and edx, 0xffff
lea eax, [edx - 0x30]
cmp eax, 0x36
ja case.0x10003930.51
xor ecx, ecx
mov cl, byte [eax + 0x10003a18]
jmp dword [ecx*4 + 0x10003a08]
sub bl, 0x30
jmp 0x10003948
sub bl, 0x37
jmp 0x10003948
sub bl, 0x57
jmp 0x10003948
xor bl, bl
mov eax, edi
mov ecx, edi
cdq
sub eax, edx
mov edx, dword [ebp - 8]
and ecx, 1
sar eax, 1
shl ecx, 2
add eax, edx
mov edx, ecx
mov ecx, 4
sub ecx, edx
shl bl, cl
mov cl, byte [eax]
or cl, bl
inc edi
mov byte [eax], cl
mov ecx, dword [ebp - 0xc]
mov eax, dword [ebp - 4]
add ecx, 2
cmp edi, eax
mov dword [ebp - 0xc], ecx
jl 0x10003912
mov ebx, dword [ebp - 0x14]
mov ecx, dword [ebp - 8]
mov eax, dword [ebp + 8]
mov edx, dword [ebp + 0xc]
push ebx
mov eax, dword [eax]
push ecx
push 3
push 0
push edx
push eax
jmp 0x100039bd
lea eax, [ebp - 0x2014]
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenW]
lea ecx, [eax + eax + 2]
mov eax, dword [ebp + 0xc]
push ecx
mov ecx, dword [ebp + 8]
lea edx, [ebp - 0x2014]
push edx
mov edx, dword [ecx]
push 1
push 0
push eax
push edx
call dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
mov eax, dword [ebp + 0x10]
mov ecx, esi
push eax
call fcn.10002460
xor ecx, ecx
test eax, eax
setge cl
dec ecx
and eax, ecx
lea esp, [ebp - 0x4020]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc