Function at 0xd291300
Capabilities:
Query or enumerate registry value
Read .ini file
Set registry value

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x83c
mov eax, dword [0xd2b0418]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
push edi
mov edi, dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
mov esi, ecx
lea eax, [ebp - 0x82c]
push eax
mov eax, dword [esi + 0x110]
lea ecx, [ebp - 0x20c]
push ecx
lea edx, [ebp - 0x830]
push edx
push 0
push 0xd27175c
mov ebx, 0x208
push eax
mov dword [ebp - 0x828], esi
mov dword [ebp - 0x838], 0
mov dword [ebp - 0x82c], ebx
call edi
test eax, eax
jne 0xd29163a
mov eax, dword [ebp - 0x830]
cmp eax, 4
je 0xd291627
cmp eax, 1
jne 0xd29163a
lea ecx, [ebp - 0x20c]
push ecx
call dword [sym.imp.msvcrt.dll__wtoi]
movzx dx, al
mov dword [esi + 0xa8], eax
movzx eax, dx
add esp, 4
push eax
push esi
call fcn.0d287b20
mov ecx, esi
call fcn.0d290c30
test ax, ax
jne 0xd29168a
lea ecx, [ebp - 0x82c]
push ecx
mov ecx, dword [esi + 0x110]
lea edx, [ebp - 0x414]
push edx
lea eax, [ebp - 0x830]
push eax
push 0
push 0xd2734e0
push ecx
mov dword [ebp - 0x82c], ebx
call edi
test eax, eax
jne 0xd2913ec
cmp dword [ebp - 0x830], 1
je 0xd291405
push 0xd2734c8
lea edx, [ebp - 0x414]
push 0x104
push edx
call sub.msvcrt.dll_wcscpy_s
add esp, 0xc
push 0
call fcn.0d2763f0
mov ebx, eax
test ebx, ebx
je 0xd291627
jmp 0xd291420
mov edi, dword [ebx + 8]
inc dword [ebp - 0x838]
mov eax, edi
and eax, 0xf
mov dword [ebp - 0x834], eax
mov dword [ebp - 0x82c], 0x208
cmp eax, 2
jne 0xd291457
test edi, 0x100000
je 0xd2914a7
test edi, 0x200000
je 0xd291611
test edi, 0x100000
je 0xd2914a7
lea eax, [ebp - 0x82c]
push eax
mov eax, dword [ebx]
lea ecx, [ebp - 0x20c]
push ecx
mov ecx, dword [esi + 0x110]
lea edx, [ebp - 0x830]
push edx
push 0
push eax
push ecx
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
jne 0xd2914a7
cmp dword [ebp - 0x830], 1
jne 0xd2914a7
mov esi, dword [esi + 0x110]
test esi, esi
jne 0xd291531
mov esi, dword [ebp - 0x828]
test edi, 0x200000
je 0xd291611
mov ecx, dword [ebx]
lea edx, [ebp - 0x414]
push edx
mov edx, dword [esi + 0xac]
push 0x104
lea eax, [ebp - 0x20c]
push eax
mov eax, dword [edx + 4]
push 0xd2734ac
push ecx
push eax
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
mov ecx, 0xd2734ac
lea eax, [ebp - 0x20c]
lea esp, [esp]
mov dx, word [eax]
cmp dx, word [ecx]
jne 0xd291516
test dx, dx
je 0xd291512
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0xd291516
add eax, 4
add ecx, 4
test dx, dx
jne 0xd2914f0
xor eax, eax
jmp 0xd29151b
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0xd291611
mov esi, dword [esi + 0x10c]
test esi, esi
je 0xd29160b
mov eax, dword [ebp - 0x834]
sub eax, 1
je 0xd2915de
sub eax, 1
je 0xd2915ba
sub eax, 1
jne 0xd29160b
mov edi, dword [sym.imp.msvcrt.dll__wcsicmp]
lea edx, [ebp - 0x20c]
xor ecx, ecx
push 0xd271a58
push edx
mov word [ebp - 0x834], cx
call edi
add esp, 8
test eax, eax
je 0xd29159c
lea eax, [ebp - 0x20c]
push 0xd2734a4
push eax
call edi
add esp, 8
test eax, eax
je 0xd29159c
lea ecx, [ebp - 0x20c]
push 0xd27349c
push ecx
call edi
add esp, 8
test eax, eax
jne 0xd2915a8
mov edx, 1
mov word [ebp - 0x834], dx
mov ecx, dword [ebx]
push 1
lea eax, [ebp - 0x834]
push eax
push 3
push 0
push ecx
jmp 0xd291604
lea eax, [ebp - 0x20c]
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0xd2915c3
sub eax, edx
sar eax, 1
push eax
lea edx, [ebp - 0x20c]
push edx
push 1
jmp 0xd2915ff
lea ecx, [ebp - 0x20c]
push ecx
call dword [sym.imp.msvcrt.dll__wtoi]
add esp, 4
push 4
lea edx, [ebp - 0x83c]
push edx
mov dword [ebp - 0x83c], eax
push 4
mov eax, dword [ebx]
push 0
push eax
push esi
call dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
mov esi, dword [ebp - 0x828]
mov ecx, dword [ebp - 0x838]
push ecx
call fcn.0d2763f0
mov ebx, eax
test ebx, ebx
jne 0xd291420
pop edi
pop esi
xor eax, eax
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0d2a6cd9
mov esp, ebp
pop ebp
ret
push 0x104
lea edx, [ebp - 0x824]
push edx
push 0xb3b0
call fcn.0d29fa20
push 0xd27175c
lea eax, [ebp - 0x824]
push eax
lea ecx, [ebp - 0x61c]
push 0x104
push ecx
call sub.msvcrt.dll_swprintf_s
mov ecx, dword [esi + 0x7c]
add esp, 0x10
push 0
push 0
lea edx, [ebp - 0x61c]
push edx
lea eax, [esi + 0x6c]
push eax
push ecx
push 0x3f
call fcn.0d288e10
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
or eax, 0xffffffff
pop ebx
call fcn.0d2a6cd9
mov esp, ebp
pop ebp
ret