Function at 0x40d322
Capabilities:
Set registry value

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xc
push ebx
push esi
mov esi, dword [sym.imp.USER32.dll_LoadStringW]
push edi
mov ebx, ecx
mov eax, dword [ebx + 8]
lea ecx, [ebx + 0xb2e0]
mov edi, 0x105
push edi
push ecx
mov dword [ebp - 0xc], ecx
mov ecx, dword [ebp + 0xc]
add ecx, 0x1410
push ecx
push eax
call esi
test eax, eax
je 0x40d5d0
test byte [ebx + 0xa648], 4
je 0x40d4e1
mov eax, dword [ebx + 0x9828]
lea edi, [ebx + 0xb0d6]
mov ecx, eax
lea esi, [ebx + 0x961c]
rep movsw word es:[edi], word [esi]
cmp word [ebx + eax*2 + 0xb0d4], 0x5c
mov dword [ebp - 4], eax
je 0x40d39b
mov word [ebx + eax*2 + 0xb0d6], 0x5c
inc eax
mov dword [ebp - 4], eax
mov ecx, dword [ebx + 4]
mov eax, dword [ecx]
call dword [eax + 0x40]
mov ecx, dword [ebx + 4]
mov esi, eax
mov eax, dword [ecx]
call dword [eax + 0x44]
add eax, eax
mov ecx, eax
mov eax, dword [ebp - 4]
lea edi, [ebx + eax*2 + 0xb0d6]
mov eax, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [ebx + 4]
mov eax, dword [ecx]
call dword [eax + 0x44]
add eax, dword [ebp - 4]
lea edi, [ebx + 0xaecc]
and word [ebx + eax*2 + 0xb0d6], 0
mov eax, dword [ebx + 0x9a3c]
mov ecx, eax
lea esi, [ebx + 0x9830]
mov dword [ebp - 8], edi
rep movsw word es:[edi], word [esi]
cmp word [ebx + eax*2 + 0xaeca], 0x5c
mov dword [ebp - 4], eax
je 0x40d413
mov word [ebx + eax*2 + 0xaecc], 0x5c
inc eax
mov dword [ebp - 4], eax
mov ecx, dword [ebx + 4]
mov eax, dword [ecx]
call dword [eax + 0x40]
mov ecx, dword [ebx + 4]
mov esi, eax
mov eax, dword [ecx]
call dword [eax + 0x44]
add eax, eax
mov ecx, eax
mov eax, dword [ebp - 4]
lea edi, [ebx + eax*2 + 0xaecc]
mov eax, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [ebx + 4]
mov eax, dword [ecx]
call dword [eax + 0x44]
mov edi, dword [ebp - 4]
push 0
push dword [ebp - 8]
add edi, eax
lea eax, [ebx + 0xb0d6]
lea esi, [ebx + edi*2 + 0xaecc]
and word [esi], 0
push eax
call dword [ebx + 0xa68c]
mov eax, dword [ebx + 8]
mov ecx, 0x105
sub ecx, edi
push ecx
mov ecx, dword [ebp + 0xc]
push esi
add ecx, 0x1430
push ecx
push eax
call dword [sym.imp.USER32.dll_LoadStringW]
add edi, eax
test byte [ebx + 0x18], 0x80
je 0x40d4d4
mov word [ebx + edi*2 + 0xaecc], 0x20
inc edi
mov word [ebx + edi*2 + 0xaecc], 0x2f
mov esi, 0x4041d0
inc edi
push esi
mov dword [ebp - 4], edi
call dword [sym.imp.KERNEL32.dll_lstrlenW]
lea ecx, [eax + eax + 2]
mov edx, ecx
shr ecx, 2
lea edi, [ebx + edi*2 + 0xaecc]
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
add dword [ebp - 4], eax
rep movsb byte es:[edi], byte [esi]
mov edi, dword [ebp - 4]
lea eax, [edi + edi + 2]
push eax
push dword [ebp - 8]
jmp 0x40d5fd
test byte [ebx + 0x982c], 1
jne 0x40d5b1
mov eax, dword [ebx + 0x9a3c]
lea edi, [ebx + 0xaecc]
mov ecx, eax
lea esi, [ebx + 0x9830]
rep movsw word es:[edi], word [esi]
cmp word [ebx + eax*2 + 0xaeca], 0x5c
mov dword [ebp - 4], eax
je 0x40d521
mov word [ebx + eax*2 + 0xaecc], 0x5c
inc eax
mov dword [ebp - 4], eax
mov ecx, dword [ebx + 4]
mov eax, dword [ecx]
call dword [eax + 0x40]
mov ecx, dword [ebx + 4]
mov esi, eax
mov eax, dword [ecx]
call dword [eax + 0x44]
add eax, eax
mov ecx, eax
mov eax, dword [ebp - 4]
lea edi, [ebx + eax*2 + 0xaecc]
mov eax, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [ebx + 4]
mov eax, dword [ecx]
call dword [eax + 0x44]
add eax, dword [ebp - 4]
and word [ebx + eax*2 + 0xaecc], 0
mov ecx, dword [ebx + 4]
mov eax, dword [ecx]
call dword [eax + 4]
push eax
lea esi, [ebx + 0xaecc]
push esi
call dword [sym.imp.KERNEL32.dll_lstrcmpiW]
test eax, eax
jne 0x40d60d
mov ecx, dword [ebp + 0xc]
mov eax, dword [ebx + 8]
push 0x105
push esi
add ecx, 0x1440
push ecx
push eax
call dword [sym.imp.USER32.dll_LoadStringW]
test eax, eax
je 0x40d5d0
mov ecx, dword [ebx + 4]
mov eax, dword [ecx]
add ebx, 0xb0d6
call dword [eax + 4]
push eax
push esi
jmp 0x40d5e6
mov eax, dword [ebx + 8]
push edi
lea ecx, [ebx + 0xaecc]
push ecx
mov dword [ebp - 8], ecx
mov ecx, dword [ebp + 0xc]
add ecx, 0x1440
push ecx
push eax
call esi
test eax, eax
jne 0x40d5d4
xor eax, eax
jmp 0x40d610
mov ecx, dword [ebx + 4]
mov eax, dword [ecx]
add ebx, 0xb0d6
call dword [eax + 4]
push eax
push dword [ebp - 8]
push ebx
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0xc
push ebx
call dword [sym.imp.KERNEL32.dll_lstrlenW]
lea eax, [eax + eax + 2]
push eax
push ebx
push 1
push 0
push dword [ebp - 0xc]
push dword [ebp + 8]
call dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
xor eax, eax
inc eax
pop edi
pop esi
pop ebx
leave
ret 8