Function at 0x40e2a0
Capabilities:
Set registry value

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4f315b
mov eax, dword fs:[0]
push eax
push ecx
mov eax, 0x2128
call fcn.004c4e80
mov eax, dword [0x53c160]
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 - 0x211c], ecx
mov eax, dword [ebp + 0x10]
mov edi, dword [ebp + 8]
mov ebx, dword [ebp + 0xc]
mov dword [ebp - 0x2138], eax
lea eax, [ebp - 0x2014]
push eax
mov dword [ebp - 0x2134], ecx
mov dword [ebp - 0x2124], edi
mov dword [ebp - 0x2120], ebx
call fcn.0040eb50
test eax, eax
jns 0x40e315
lfence
jmp 0x40e74b
mov esi, dword [sym.imp.KERNEL32.DLL_lstrcmpiW]
lea eax, [ebp - 0x2014]
push 0x510314
push eax
call esi
test eax, eax
jne 0x40e332
lea esi, [eax + 8]
jmp 0x40e37b
push 0x510318
lea eax, [ebp - 0x2014]
push eax
call esi
test eax, eax
jne 0x40e34b
mov esi, 0x4008
jmp 0x40e37b
push 0x51031c
lea eax, [ebp - 0x2014]
push eax
call esi
test eax, eax
jne 0x40e362
lea esi, [eax + 0x13]
jmp 0x40e37b
push 0x510320
lea eax, [ebp - 0x2014]
push eax
call esi
test eax, eax
jne 0x40e746
lea esi, [eax + 0x11]
mov ecx, dword [ebp - 0x211c]
lfence
call fcn.0040f850
mov ecx, dword [ebp - 0x211c]
lea eax, [ebp - 0x2014]
push eax
call fcn.0040eb50
test eax, eax
js 0x40e30d
cmp esi, 0x13
ja 0x40e5b9
je 0x40e584
cmp esi, 8
je 0x40e549
cmp esi, 0x11
jne 0x40e726
lea ebx, [ebp - 0x2014]
lea ecx, [ebx + 2]
nop dword [eax]
mov ax, word [ebx]
add ebx, 2
test ax, ax
jne 0x40e3d0
sub ebx, ecx
sar ebx, 1
mov dword [ebp - 0x2130], ebx
mov dword [ebp - 0x212c], ebx
test bl, 1
jne 0x40e484
mov eax, ebx
mov dword [ebp - 0x2118], 0
cdq
sub eax, edx
mov ecx, eax
sar ecx, 1
mov dword [ebp - 0x2128], ecx
mov dword [ebp - 4], 3
mov byte [ebp - 4], 4
cmp ecx, 0x100
jbe 0x40e469
push ecx
lea ecx, [ebp - 0x2118]
lfence
call fcn.0040dd50
mov eax, dword [ebp - 0x2118]
mov ecx, dword [ebp - 0x2128]
jmp 0x40e475
lea eax, [ebp - 0x2114]
mov dword [ebp - 0x2118], eax
test eax, eax
jne 0x40e48e
lea ecx, [ebp - 0x2118]
call fcn.0040dd30
mov eax, 0x80004005
jmp 0x40e74b
push ecx
push 0
push eax
call fcn.004c6130
add esp, 0xc
xor edi, edi
test ebx, ebx
jle 0x40e501
mov esi, dword [ebp - 0x2130]
nop word [eax + eax]
movzx ebx, word [ebp + edi*2 - 0x2014]
lea eax, [ebx - 0x30]
cmp eax, 0x36
ja case.0x40e4c7.58
movzx eax, byte [eax + 0x40e788]
jmp dword [eax*4 + 0x40e778]
sub bl, 0x30
jmp 0x40e4df
sub bl, 0x37
jmp 0x40e4df
sub bl, 0x57
jmp 0x40e4df
xor bl, bl
mov eax, edi
mov edx, edi
and eax, 1
shr edx, 1
add edx, dword [ebp - 0x2118]
mov ecx, 4
shl eax, 2
inc edi
sub ecx, eax
shl bl, cl
or byte [edx], bl
cmp edi, esi
jl 0x40e4b0
push dword [ebp - 0x2128]
mov eax, dword [ebp - 0x2124]
push dword [ebp - 0x2118]
push 3
push 0
push dword [ebp - 0x2120]
push dword [eax]
call dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
mov edi, eax
lea eax, [ebp - 0x2114]
cmp dword [ebp - 0x2118], eax
je 0x40e719
lea ecx, [ebp - 0x2118]
call fcn.0040dd30
jmp 0x40e719
lea ecx, [ebp - 0x2014]
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x40e552
sub ecx, edx
sar ecx, 1
lea eax, [ecx*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
jmp 0x40e719
lea eax, [ebp - 0x212c]
push eax
push 0
push 0
lea eax, [ebp - 0x2014]
push eax
call dword [sym.imp.OLEAUT32.dll_VarUI4FromDisp]
test eax, eax
js 0x40e30d
push dword [ebp - 0x212c]
mov ecx, edi
push ebx
call fcn.0040e280
mov edi, eax
jmp 0x40e719
cmp esi, 0x4008
jne 0x40e726
lea ecx, [ebp - 0x2014]
lea edx, [ecx + 2]
nop
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x40e5d0
sub ecx, edx
mov dword [ebp - 0x2118], 0
sar ecx, 1
lea eax, [ecx + 2]
mov ecx, 2
mov dword [ebp - 4], 0
mul ecx
mov byte [ebp - 4], 1
test edx, edx
jne 0x40e769
cmp eax, 0xffffffff
ja 0x40e769
cmp eax, 0x100
jbe 0x40e627
push eax
lea ecx, [ebp - 0x2118]
lfence
call fcn.0040dd50
jmp 0x40e647
lea esi, [ebp - 0x2114]
mov dword [ebp - 0x2118], esi
jmp 0x40e64d
mov esi, dword [ebp - 0x2118]
test esi, esi
je 0x40e6ff
cmp word [ebp - 0x2014], 0
lea edi, [ebp - 0x2014]
je 0x40e69c
mov ebx, dword [sym.imp.USER32.dll_CharNextW]
nop dword [eax + eax]
push edi
call ebx
movzx ecx, word [edi]
cmp ecx, 0x5c
jne 0x40e68d
cmp word [eax], 0x30
jne 0x40e68d
xor ecx, ecx
push eax
mov word [esi], cx
call ebx
mov edi, eax
jmp 0x40e693
mov word [esi], cx
add edi, 2
add esi, 2
cmp word [edi], 0
jne 0x40e670
xor eax, eax
mov dword [esi], eax
mov esi, dword [ebp - 0x2118]
test esi, esi
jne 0x40e6af
lea edi, [eax + 0xd]
jmp 0x40e704
xor edi, edi
mov edx, esi
mov ecx, edx
lea ebx, [ecx + 2]
nop dword [eax + eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x40e6c0
sub ecx, ebx
sar ecx, 1
inc ecx
lea edx, [edx + ecx*2]
lea edi, [edi + ecx*2]
cmp ecx, 1
jne 0x40e6b3
mov eax, dword [ebp - 0x2124]
push edi
push esi
push 7
push 0
push dword [ebp - 0x2120]
push dword [eax]
call dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
mov esi, dword [ebp - 0x2118]
mov edi, eax
jmp 0x40e704
mov edi, 0xe
lea eax, [ebp - 0x2114]
cmp esi, eax
je 0x40e719
lea ecx, [ebp - 0x2118]
call fcn.0040dd30
test edi, edi
je 0x40e726
mov ecx, edi
call fcn.0040eb40
jmp 0x40e74b
push dword [ebp - 0x2138]
mov ecx, dword [ebp - 0x211c]
lfence
call fcn.0040eb50
test eax, eax
js 0x40e30d
xor eax, eax
jmp 0x40e74b
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.004c3ba1
mov esp, ebp
pop ebp
ret 0xc
push 0x80070216
lfence
call fcn.00407080
nop
into
in al, 64
add bl, dl
in al, 0x40
add al, bl
in al, 0x40
add ch, bl
in al, 0x40
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