Function at 0x43a0bd
Capabilities:
Set registry value

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x28
mov eax, dword [0x44f0f4]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
push edi
xor eax, eax
mov esi, ecx
mov edi, 0x2000
mov dword [ebp - 0x18], esi
push edi
mov dword [ebp - 0x28], eax
mov dword [ebp - 0x20], eax
call dword [sym.imp.msvcrt.dll_malloc]
mov ebx, eax
mov dword [ebp - 0x24], ebx
pop ecx
test ebx, ebx
jne 0x43a0ff
mov esi, 0x8007000e
jmp 0x43a4a4
push ebx
mov ecx, esi
call fcn.0043a929
mov esi, eax
test esi, esi
jns 0x43a119
push ebx
call dword [sym.imp.msvcrt.dll_free]
jmp 0x43a4a3
xor eax, eax
mov esi, eax
push dword [esi*8 + 0x4012f0]
push ebx
call dword [sym.imp.KERNEL32.dll_lstrcmpiW]
test eax, eax
je 0x43a146
inc esi
cmp esi, 3
jb 0x43a11d
push ebx
call dword [sym.imp.msvcrt.dll_free]
mov esi, 0x80020009
jmp 0x43a4a3
movzx eax, word [esi*8 + 0x4012f4]
push edi
mov dword [ebp - 0x10], eax
call dword [sym.imp.msvcrt.dll_malloc]
mov edi, eax
pop ecx
test edi, edi
jne 0x43a170
push ebx
call dword [sym.imp.msvcrt.dll_free]
mov esi, 0x8007000e
jmp 0x43a4a3
mov ecx, dword [ebp - 0x18]
call fcn.0043b1ab
mov ecx, dword [ebp - 0x18]
push edi
call fcn.0043a929
mov esi, eax
test esi, esi
jns 0x43a19a
push edi
call dword [sym.imp.msvcrt.dll_free]
push ebx
call dword [sym.imp.msvcrt.dll_free]
jmp 0x43a4a2
mov eax, dword [ebp - 0x10]
xor ecx, ecx
movzx eax, ax
mov dword [ebp - 0x1c], ecx
sub eax, 8
je 0x43a30d
sub eax, 9
je 0x43a1e0
dec eax
sub eax, 1
jne 0x43a47f
lea eax, [ebp - 0x1c]
push eax
push ecx
push ecx
push edi
call dword [sym.imp.OLEAUT32.dll_VarUI4FromDisp]
mov eax, dword [ebp - 0x1c]
mov dword [ebp - 0x10], eax
lea eax, [ebp - 0x10]
push 4
push eax
push 4
xor eax, eax
push eax
jmp 0x43a2e2
mov ecx, edi
xor esi, esi
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
cmp ax, si
jne 0x43a1e7
sub ecx, edx
sar ecx, 1
mov dword [ebp - 0x10], ecx
test cl, 1
jne 0x43a2f5
mov eax, ecx
cdq
sub eax, edx
mov esi, eax
sar esi, 1
mov dword [ebp - 0x14], esi
cmp esi, 0x400
ja 0x43a22e
mov ecx, esi
call fcn.0043a58d
test al, al
je 0x43a22e
mov eax, esi
call fcn.00444450
mov eax, esp
xor ecx, ecx
jmp 0x43a251
lea eax, [esi + 8]
cmp eax, esi
jae 0x43a23b
xor ecx, ecx
mov eax, ecx
jmp 0x43a251
push eax
call dword [sym.imp.msvcrt.dll_malloc]
pop ecx
xor ecx, ecx
test eax, eax
je 0x43a237
mov dword [eax], ecx
mov dword [ebp - 0x20], eax
add eax, 8
mov dword [ebp - 8], eax
test eax, eax
je 0x43a2f5
push esi
push ecx
push eax
call sub.msvcrt.dll_memset
mov esi, dword [ebp - 0x10]
add esp, 0xc
xor edx, edx
test esi, esi
jle 0x43a2d8
mov ebx, edx
movzx eax, word [edi + ebx*2]
mov ecx, eax
cmp ecx, 0x30
jb 0x43a2a5
cmp ecx, 0x39
jbe 0x43a29e
cmp ecx, 0x40
jbe 0x43a2a5
cmp ecx, 0x46
jbe 0x43a29a
cmp ecx, 0x60
jbe 0x43a2a5
cmp eax, 0x66
ja 0x43a2a5
sub al, 0x57
jmp 0x43a2a0
sub al, 0x37
jmp 0x43a2a0
sub al, 0x30
mov dword [ebp - 0xc], eax
jmp 0x43a2a8
mov byte [ebp - 0xc], dl
mov edx, ebx
test edx, edx
jns 0x43a2b1
add edx, 1
sar edx, 1
mov eax, ebx
and eax, 1
shl eax, 2
push 4
pop ecx
sub ecx, eax
mov eax, dword [ebp - 0xc]
shl al, cl
mov ecx, dword [ebp - 8]
push 0
or byte [edx + ecx], al
inc ebx
pop edx
cmp ebx, esi
jl 0x43a272
mov ebx, dword [ebp - 0x24]
jmp 0x43a2db
mov ecx, dword [ebp - 8]
push dword [ebp - 0x14]
push ecx
push 3
push edx
mov eax, dword [ebp + 8]
push dword [ebp + 0xc]
push dword [eax]
call dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
jmp 0x43a47f
push edi
call dword [sym.imp.msvcrt.dll_free]
push ebx
call dword [sym.imp.msvcrt.dll_free]
mov esi, 0x80004005
jmp 0x43a4a2
mov edx, edi
mov esi, ecx
mov dword [ebp - 0x10], edx
cmp byte [ebp + 0x14], cl
je 0x43a43e
mov ecx, edi
xor esi, esi
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
cmp ax, si
jne 0x43a324
sub ecx, edx
sar ecx, 1
cmp ecx, 0xffe
jg 0x43a2f5
push 0x2000
call dword [sym.imp.msvcrt.dll_malloc]
mov dword [ebp - 8], eax
pop ecx
test eax, eax
jne 0x43a366
push edi
call dword [sym.imp.msvcrt.dll_free]
push ebx
call dword [sym.imp.msvcrt.dll_free]
mov esi, 0x8007000e
jmp 0x43a4a2
mov ecx, dword [ebp - 0x18]
push 0x41146c
mov dword [ebp - 0x14], esi
mov ecx, dword [ecx + 4]
call fcn.00439fb2
mov esi, eax
test esi, esi
je 0x43a430
mov edx, esi
mov ecx, edi
call fcn.0043a015
mov dword [ebp - 0xc], eax
test eax, eax
je 0x43a430
cmp eax, dword [ebp + 0x10]
je 0x43a3b1
push eax
push edi
call dword [sym.imp.USER32.dll_CharPrevW]
cmp word [eax], 0x22
je 0x43a430
mov eax, dword [ebp - 0xc]
mov ecx, dword [ebp - 8]
sub eax, edi
sar eax, 1
xor edx, edx
push eax
push edi
push ecx
mov word [ecx], dx
call dword [sym.imp.KERNEL32.dll_lstrcpynW]
push 0x41147c
push 0x1000
push dword [ebp - 8]
call dword [sym.imp.msvcrt.dll_wcscat_s]
push esi
push 0x1000
push dword [ebp - 8]
call dword [sym.imp.msvcrt.dll_wcscat_s]
push 0x41147c
push 0x1000
push dword [ebp - 8]
call dword [sym.imp.msvcrt.dll_wcscat_s]
add esp, 0x24
lea ecx, [esi + 2]
xor edx, edx
mov ax, word [esi]
add esi, 2
cmp ax, dx
jne 0x43a403
mov eax, dword [ebp - 0xc]
sub esi, ecx
sar esi, 1
lea eax, [eax + esi*2]
mov esi, dword [ebp - 8]
push eax
push 0x1000
push esi
call dword [sym.imp.msvcrt.dll_wcscat_s]
add esp, 0xc
mov dword [ebp - 0x10], esi
jmp 0x43a433
mov esi, dword [ebp - 8]
lea ecx, [ebp - 0x14]
call fcn.00439f96
mov edx, dword [ebp - 0x10]
mov ecx, edx
lea eax, [ecx + 2]
mov dword [ebp - 0x14], eax
mov ax, word [ecx]
add ecx, 2
cmp ax, word [ebp - 0x28]
jne 0x43a446
sub ecx, dword [ebp - 0x14]
sar ecx, 1
lea eax, [ecx*2 + 2]
push eax
push edx
push 1
xor eax, eax
push eax
mov eax, dword [ebp + 8]
push dword [ebp + 0xc]
push dword [eax]
call dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
test esi, esi
je 0x43a47f
push esi
call dword [sym.imp.msvcrt.dll_free]
pop ecx
push dword [ebp + 0x10]
mov ecx, dword [ebp - 0x18]
call fcn.0043a929
push edi
mov esi, eax
call dword [sym.imp.msvcrt.dll_free]
push ebx
call dword [sym.imp.msvcrt.dll_free]
test esi, esi
js 0x43a4a2
xor eax, eax
mov esi, eax
pop ecx
pop ecx
lea ecx, [ebp - 0x20]
call fcn.00439f96
mov eax, esi
lea esp, [ebp - 0x34]
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.004437b0
leave
ret 0x10