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

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x1022c834
mov eax, dword fs:[0]
push eax
sub esp, 0x270
mov eax, dword [0x102bff3c]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov eax, dword [ebp + 0xc]
xor ebx, ebx
mov ecx, dword [ebp + 0x10]
mov edi, dword [ebp + 8]
mov dword [ebp - 0x260], eax
mov eax, dword [ebp + 0x14]
mov dword [ebp - 0x25c], eax
mov al, byte [ebp + 0x18]
mov dword [ebp - 0x250], ecx
mov byte [ebp - 0x255], al
mov byte [ebp - 0x270], al
mov dword [ebp - 0x274], ebx
test al, al
je 0x101967a6
push ecx
lea ecx, [ebp - 0x254]
call fcn.1001f510
push 0x10288f74
mov ebx, 1
push eax
mov dword [ebp - 0x274], ebx
call fcn.10196130
add esp, 8
mov byte [ebp - 0x249], bl
test al, al
jne 0x101967ad
mov byte [ebp - 0x249], 0
or esi, 0xffffffff
test bl, 1
je 0x101967db
mov edx, dword [ebp - 0x254]
and ebx, 0xfffffffe
mov dword [ebp - 0x274], ebx
add edx, 0xfffffff0
mov eax, esi
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x101967db
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
cmp byte [ebp - 0x249], 0
je 0x10196a2b
push 0x208
lea eax, [ebp - 0x218]
push 0
push eax
call fcn.101d1720
add esp, 0xc
lea ecx, [ebp - 0x278]
push dword [ebp - 0x250]
call fcn.1001f510
push 0x10288a8c
push eax
mov dword [ebp - 4], 0
call fcn.10196130
add esp, 8
test al, al
mov eax, str.Default
jne 0x10196833
mov eax, dword [ebp - 0x250]
push eax
lea ecx, [ebp - 0x254]
call fcn.1001f510
mov edx, dword [ebp - 0x278]
mov eax, esi
mov byte [ebp - 4], 2
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x10196860
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
push dword [ebp - 0x260]
lea ecx, [ebp - 0x27c]
call fcn.1001f510
push 0x10288a8c
push eax
mov byte [ebp - 4], 3
call fcn.10196130
add esp, 8
test al, al
mov eax, str.Default
jne 0x10196892
mov eax, dword [ebp - 0x260]
push eax
lea ecx, [ebp - 0x264]
call fcn.1001f510
mov edx, dword [ebp - 0x27c]
mov eax, esi
mov byte [ebp - 4], 5
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x101968bf
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
lea eax, [ebp - 0x248]
push 0
push eax
call fcn.101999e0
push str._settings.ini
push eax
lea eax, [ebp - 0x230]
mov byte [ebp - 4], 6
push eax
call fcn.10026025
add esp, 0x14
cmp dword [eax + 0x14], 8
jb 0x101968ee
mov eax, dword [eax]
push eax
push 0x104
lea eax, [ebp - 0x218]
push eax
push dword [ebp - 0x25c]
push dword [ebp - 0x264]
push dword [ebp - 0x254]
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
mov dword [ebp - 0x26c], eax
mov eax, dword [ebp - 0x21c]
cmp eax, 8
jb 0x10196937
inc eax
lea ecx, [ebp - 0x230]
push eax
push dword [ebp - 0x230]
call fcn.100114d0
xor eax, eax
mov dword [ebp - 0x21c], 7
mov word [ebp - 0x230], ax
mov eax, dword [ebp - 0x234]
mov dword [ebp - 0x220], 0
mov byte [ebp - 4], 5
cmp eax, 8
jb 0x10196976
inc eax
lea ecx, [ebp - 0x248]
push eax
push dword [ebp - 0x248]
call fcn.100114d0
cmp dword [ebp - 0x26c], 0
je 0x101969e8
lea eax, [ebp - 0x218]
push eax
call dword [sym.imp.OLEAUT32.dll_SysReAllocString]
mov dword [edi], eax
test eax, eax
jne 0x1019699c
push 0x8007000e
call fcn.1000dd70
mov edx, dword [ebp - 0x264]
mov eax, esi
mov byte [ebp - 4], 2
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x101969bd
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebp - 0x254]
mov dword [ebp - 4], 0xffffffff
add eax, 0xfffffff0
lock xadd dword [eax + 0xc], esi
dec esi
test esi, esi
jg 0x10196be7
mov ecx, dword [eax]
push eax
mov edx, dword [ecx]
call dword [edx + 4]
jmp 0x10196be7
mov edx, dword [ebp - 0x264]
mov eax, esi
mov byte [ebp - 4], 2
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x10196a09
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x254]
mov dword [ebp - 4], 0xffffffff
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], esi
dec esi
test esi, esi
jg 0x10196a2b
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
push 0
push dword [ebp - 0x270]
push dword [ebp - 0x250]
call fcn.10196c30
add esp, 0xc
mov dword [ebp - 0x250], eax
test eax, eax
jne 0x10196a77
mov eax, dword [ebp - 0x25c]
test eax, eax
jne 0x10196a5c
mov dword [edi], eax
jmp 0x10196be7
push eax
call dword [sym.imp.OLEAUT32.dll_SysReAllocString]
mov dword [edi], eax
test eax, eax
jne 0x10196be7
push 0x8007000e
call fcn.1000dd70
lea ecx, [ebp - 0x268]
mov dword [ebp - 0x268], 0
push ecx
push 0
push 0
push 0
push dword [ebp - 0x260]
push eax
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
xor esi, esi
mov dword [ebp - 0x26c], eax
mov dword [ebp - 0x254], esi
mov ecx, dword [ebp - 0x268]
mov dword [ebp - 4], 7
test ecx, ecx
je 0x10196b0f
push 0x1027751c
push ecx
call fcn.101b76a6
add esp, 8
mov dword [ebp - 0x270], eax
test eax, eax
je 0x10196b0f
lea ecx, [ebp - 0x268]
push ecx
push eax
push esi
push esi
push dword [ebp - 0x260]
push dword [ebp - 0x250]
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
mov esi, dword [ebp - 0x270]
lea ecx, [ebp - 0x254]
push esi
call fcn.100205c8
push esi
call fcn.1006658a
mov esi, dword [ebp - 0x254]
add esp, 4
mov ecx, dword [0x102ddf8c]
mov eax, dword [ebp - 0x250]
mov edx, dword [sym.imp.ADVAPI32.dll_RegCloseKey]
cmp eax, ecx
je 0x10196b3c
cmp eax, dword [0x102ddf88]
je 0x10196b3c
push eax
call edx
mov ecx, dword [0x102ddf8c]
mov edx, dword [sym.imp.ADVAPI32.dll_RegCloseKey]
cmp byte [ebp - 0x255], 0
je 0x10196b52
push ecx
call edx
mov dword [0x102ddf8c], 0
cmp dword [ebp - 0x26c], 0
jne 0x10196b93
test esi, esi
jne 0x10196b70
mov dword [ebp - 0x250], esi
lea ecx, [ebp - 0x250]
or ebx, 4
jmp 0x10196bac
push esi
call dword [sym.imp.OLEAUT32.dll_SysAllocStringByteLen]
push eax
push esi
call dword [sym.imp.OLEAUT32.dll_DllRegisterServer]
mov dword [ebp - 0x250], eax
test eax, eax
jne 0x10196b65
push 0x8007000e
call fcn.1000dd70
mov eax, dword [ebp - 0x25c]
test eax, eax
jne 0x10196c05
mov dword [ebp - 0x25c], eax
lea ecx, [ebp - 0x25c]
or ebx, 8
mov eax, dword [ecx]
or ebx, 2
mov dword [edi], eax
mov eax, dword [sym.imp.OLEAUT32.dll_SysStringLen]
mov dword [ecx], 0
test bl, 8
je 0x10196bd3
push dword [ebp - 0x25c]
and ebx, 0xfffffff7
call eax
mov eax, dword [sym.imp.OLEAUT32.dll_SysStringLen]
test bl, 4
je 0x10196be0
push dword [ebp - 0x250]
call eax
push esi
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
mov eax, edi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.101b70aa
mov esp, ebp
pop ebp
ret
push eax
call dword [sym.imp.OLEAUT32.dll_SysReAllocString]
mov dword [ebp - 0x25c], eax
test eax, eax
jne 0x10196ba3
push 0x8007000e
call fcn.1000dd70
int3