Function at 0x422c26
Capabilities:
Query or enumerate registry value
Set registry value

Disassembly:
push 0x238
mov eax, 0x42ba37
call fcn.00428a3d
mov edi, ecx
mov ebx, dword [ebp + 8]
lea ecx, [ebp - 0x244]
mov eax, dword [ebp + 0xc]
and dword [ebp - 0x224], 0
push ebx
mov dword [ebp - 0x23c], ebx
mov dword [ebp - 0x238], eax
call dword [sym.imp.MFC42u.dll_CString::CString_1]
and dword [ebp - 4], 0
lea ecx, [ebp - 0x244]
call fcn.004220f2
test eax, eax
jne 0x422d49
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
test esi, esi
jle 0x422c89
movzx esi, si
or esi, 0x80070000
lea ecx, [ebp - 0x220]
call dword [0x43629c]
lea ecx, [ebp - 0x224]
mov byte [ebp - 4], 1
call dword [0x43629c]
push 0x18f
lea ecx, [ebp - 0x220]
mov byte [ebp - 4], 2
call dword [sym.imp.MFC42u.dll_CString::LoadStringW]
push 0x75
lea ecx, [ebp - 0x224]
call dword [sym.imp.MFC42u.dll_CString::LoadStringW]
test esi, esi
je 0x422d11
push 0x802
call fcn.00428108
mov ebx, eax
pop ecx
test ebx, ebx
je 0x422cf1
push 0
push 0x400
push ebx
push 0
push esi
push edi
call fcn.0042341d
add esp, 0x18
push 0x4088b0
lea ecx, [ebp - 0x220]
call dword [sym.imp.MFC42u.dll_CString::operator]
push ebx
lea ecx, [ebp - 0x220]
call dword [sym.imp.MFC42u.dll_CString::operator]
jmp 0x422d14
push 2
pop esi
mov eax, dword [ebp - 0x220]
cmp dword [eax - 8], 0
je 0x422d32
push 0
push dword [ebp - 0x224]
push eax
push dword [edi + 4]
call dword [sym.imp.USER32.dll_MessageBoxW]
lea ecx, [ebp - 0x224]
call dword [sym.imp.MFC42u.dll_CString::CString]
lea ecx, [ebp - 0x220]
jmp 0x423333
cmp dword [edi + 0x20], 0
je 0x422d85
push 4
lea eax, [ebp - 0x21c]
lea ecx, [edi + 0xc]
push eax
call dword [sym.imp.MFC42u.dll_CString::Right]
mov dword [ebp - 0x224], 1
push 0x4088b8
push dword [eax]
call dword [sym.imp.msvcrt.dll__wcsicmp]
mov byte [ebp - 0x225], 1
pop ecx
pop ecx
test eax, eax
je 0x422d8c
mov byte [ebp - 0x225], 0
test byte [ebp - 0x224], 1
je 0x422da1
lea ecx, [ebp - 0x21c]
call dword [sym.imp.MFC42u.dll_CString::CString]
cmp byte [ebp - 0x225], 0
je 0x422db1
mov ecx, edi
call fcn.00423399
mov ecx, dword [edi + 0x20]
mov esi, dword [0x4339e0]
mov dword [ebp - 0x220], ecx
call dword [sym.imp.MFC42u.dll_AfxGetModuleState]
push 0x4088c4
mov dword [eax + 0xc], esi
mov eax, dword [ebp - 0x238]
lea esi, [ebx + eax*2]
push esi
call dword [sym.imp.msvcrt.dll__wcsicmp]
pop ecx
pop ecx
test eax, eax
jne 0x422f9d
push ebx
lea ecx, [ebp - 0x21c]
call dword [sym.imp.MFC42u.dll_CString::CString_1]
lea eax, [ebp - 0x21c]
push eax
call fcn.00424388
lea ecx, [ebp - 0x21c]
mov esi, eax
call dword [sym.imp.MFC42u.dll_CString::CString]
test esi, esi
je 0x422e2a
push ecx
push 0x18e
mov ecx, edi
call fcn.004234a2
mov esi, 0x80004005
jmp 0x42337d
xor eax, eax
push eax
push eax
push 3
push eax
push 1
push SysReAllocStringLen
push ebx
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov dword [ebp - 0x224], eax
cmp eax, 0xffffffff
jne 0x422e52
push ecx
push 0x4d8
jmp 0x422e19
push 0xc
call dword [sym.imp.MFC42u.dll_operatornew]
mov esi, eax
mov dword [ebp - 0x238], esi
pop ecx
test esi, esi
je 0x422ec5
xor eax, eax
mov dword [esi], 0x401068
mov dword [esi + 4], eax
mov dword [esi + 8], eax
test esi, esi
je 0x422ec5
mov ecx, dword [ebp - 0x224]
lea edx, [ebp - 0x21c]
push ebx
mov dword [ebp - 0x21c], eax
call fcn.004194d7
mov ebx, eax
test ebx, ebx
js 0x422ead
mov eax, dword [ebp - 0x21c]
test eax, eax
je 0x422ea9
mov dword [esi + 4], eax
mov dword [edi + 0x20], esi
jmp 0x422eca
test ebx, ebx
jns 0x422ea4
mov eax, dword [esi]
push 1
mov esi, dword [eax]
mov ecx, esi
call dword [0x436604]
mov ecx, dword [ebp - 0x238]
call esi
jmp 0x422eca
mov ebx, 0x80004005
push dword [ebp - 0x224]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
test ebx, ebx
jns 0x422f3e
push 0xc
call dword [sym.imp.MFC42u.dll_operatornew]
mov esi, eax
mov dword [ebp - 0x238], esi
pop ecx
test esi, esi
je 0x423376
xor eax, eax
mov dword [esi], 0x40105c
mov dword [esi + 4], eax
mov dword [esi + 8], eax
test esi, esi
je 0x423376
mov edx, dword [ebp - 0x23c]
lea ecx, [ebp - 0x21c]
mov dword [ebp - 0x21c], eax
call fcn.00418446
mov ebx, eax
test eax, eax
js 0x422f72
mov ecx, dword [ebp - 0x21c]
test ecx, ecx
je 0x422f72
mov dword [esi + 4], ecx
mov dword [edi + 0x20], esi
test ebx, ebx
js 0x42337b
mov eax, dword [ebp - 0x220]
test eax, eax
je 0x422f63
cmp eax, dword [edi + 0x20]
je 0x422f63
mov eax, dword [eax]
push 1
mov esi, dword [eax]
mov ecx, esi
call dword [0x436604]
mov ecx, dword [ebp - 0x220]
call esi
push dword [edi + 0x20]
mov ecx, edi
call fcn.00423da0
jmp 0x42337b
mov ebx, eax
test eax, eax
jns 0x422f33
mov eax, dword [esi]
push 1
mov esi, dword [eax]
mov ecx, esi
call dword [0x436604]
mov ecx, dword [ebp - 0x238]
call esi
push ecx
push 0x4d8
mov ecx, edi
call fcn.004234a2
jmp 0x422f36
push 0x4088cc
push esi
call dword [sym.imp.msvcrt.dll__wcsicmp]
pop ecx
pop ecx
test eax, eax
jne 0x423369
lea ecx, [ebp - 0x230]
call dword [0x43629c]
push 0x40288c
lea ecx, [ebp - 0x21c]
mov byte [ebp - 4], 3
call dword [sym.imp.MFC42u.dll_CString::CString_1]
lea eax, [ebp - 0x21c]
mov byte [ebp - 4], 4
push eax
lea ecx, [ebp - 0x230]
call fcn.00421ac5
lea ecx, [ebp - 0x21c]
mov byte [ebp - 4], 3
call dword [sym.imp.MFC42u.dll_CString::CString]
mov eax, dword [ebp - 0x230]
cmp dword [eax - 8], 0
je 0x423357
push ebx
lea ecx, [ebp - 0x21c]
call dword [sym.imp.MFC42u.dll_CString::CString_1]
lea eax, [ebp - 0x230]
mov byte [ebp - 4], 5
push eax
mov ecx, 0x434f38
call dword [0x4362a4]
xor ebx, ebx
push ebx
push 0x421050
push ebx
push dword [ebp - 0x21c]
call dword [sym.imp.SETUPAPI.dll_SetupIterateCabinetW]
neg eax
mov byte [ebp - 4], 3
lea ecx, [ebp - 0x21c]
sbb esi, esi
call dword [sym.imp.MFC42u.dll_CString::CString]
neg esi
je 0x423357
lea ecx, [ebp - 0x22c]
call dword [0x43629c]
lea ecx, [ebp - 0x234]
mov byte [ebp - 4], 6
call dword [0x43629c]
lea eax, [ebp - 0x21c]
mov byte [ebp - 4], 7
push eax
push 1
push ebx
mov esi, 0x4088d8
push esi
push reloc.OLEAUT32.dll_SysReAllocString
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
jne 0x4231d7
lea eax, [ebp - 0x23c]
mov dword [ebp - 0x23c], 0x208
push eax
lea eax, [ebp - 0x218]
push eax
lea eax, [ebp - 0x238]
push eax
push 0x1000ffff
push 0x408928
push ebx
push dword [ebp - 0x21c]
call dword [sym.imp.ADVAPI32.dll_RegGetValueW]
test eax, eax
jne 0x423135
cmp dword [ebp - 0x238], 1
mov word [ebp - 0x12], ax
jne 0x423100
lea eax, [ebp - 0x218]
push eax
lea ecx, [ebp - 0x234]
call dword [0x4362a8]
jmp 0x4231cb
push dword [ebp - 0x21c]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
lea ecx, [ebp - 0x234]
call dword [sym.imp.MFC42u.dll_CString::CString]
lea ecx, [ebp - 0x22c]
call dword [sym.imp.MFC42u.dll_CString::CString]
lea ecx, [ebp - 0x230]
call dword [sym.imp.MFC42u.dll_CString::CString]
jmp 0x422e20
cmp eax, 2
jne 0x4231cb
lea eax, [ebp - 0x224]
push eax
push 2
push ebx
push esi
push reloc.OLEAUT32.dll_SysReAllocString
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
jne 0x4231cb
push 0x40894c
lea ecx, [ebp - 0x220]
call dword [sym.imp.MFC42u.dll_CString::CString_1]
mov byte [ebp - 4], 8
lea ecx, [ebp - 0x220]
mov eax, dword [ebp - 0x220]
mov eax, dword [eax - 8]
push eax
lea esi, [eax + eax]
call dword [sym.imp.MFC42u.dll_CString::GetBuffer]
push esi
push eax
push 1
push ebx
push 0x408928
push dword [ebp - 0x224]
call dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
lea eax, [ebp - 0x220]
push eax
lea ecx, [ebp - 0x234]
call dword [0x4362a4]
push dword [ebp - 0x224]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
lea ecx, [ebp - 0x220]
mov byte [ebp - 4], 7
call dword [sym.imp.MFC42u.dll_CString::CString]
push dword [ebp - 0x21c]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
push ecx
lea eax, [ebp - 0x234]
mov dword [ebp - 0x240], esp
mov ecx, esp
push eax
call dword [sym.imp.MFC42u.dll_CString::CString_2]
push ecx
lea eax, [ebp - 0x230]
mov byte [ebp - 4], 9
mov ecx, esp
push eax
call dword [sym.imp.MFC42u.dll_CString::CString_2]
mov byte [ebp - 4], 7
call fcn.004210da
test eax, eax
je 0x4232cb
push 0x408968
lea ecx, [ebp - 0x220]
call dword [sym.imp.MFC42u.dll_CString::CString_3]
lea eax, [ebp - 0x220]
mov byte [ebp - 4], 0xa
push eax
lea eax, [ebp - 0x230]
push eax
lea eax, [ebp - 0x240]
push eax
call dword [sym.imp.MFC42u.dll_operator]
push eax
lea ecx, [ebp - 0x22c]
mov byte [ebp - 4], 0xb
call dword [0x4362a4]
lea ecx, [ebp - 0x240]
call dword [sym.imp.MFC42u.dll_CString::CString]
lea ecx, [ebp - 0x220]
mov byte [ebp - 4], 7
call dword [sym.imp.MFC42u.dll_CString::CString]
lea eax, [ebp - 0x234]
push eax
lea ecx, [ebp - 0x22c]
call dword [sym.imp.MFC42u.dll_CString::operator_2]
push 0x4088b8
lea ecx, [ebp - 0x22c]
call dword [sym.imp.MFC42u.dll_CString::Find_1]
inc eax
mov ecx, edi
push eax
push dword [ebp - 0x22c]
call fcn.00422c26
lea ecx, [ebp - 0x234]
call dword [sym.imp.MFC42u.dll_CString::CString]
lea ecx, [ebp - 0x22c]
call dword [sym.imp.MFC42u.dll_CString::CString]
lea ecx, [ebp - 0x230]
call dword [sym.imp.MFC42u.dll_CString::CString]
jmp 0x42337b
lea edx, [ebp - 0x22c]
lea ecx, [ebp - 0x230]
call fcn.0042113e
mov eax, dword [ebp - 0x22c]
mov edx, dword [eax - 8]
test edx, edx
je 0x42333b
sub edx, 1
je 0x42333b
test edx, edx
js 0x4232fe
cmp edx, dword [eax - 8]
jge 0x4232fe
cmp word [eax + edx*2], 0x2e
je 0x423303
sub edx, 1
jne 0x4232ee
test edx, edx
je 0x42333b
lea ecx, [edx + 1]
push ecx
push eax
mov ecx, edi
call fcn.00422c26
lea ecx, [ebp - 0x234]
mov esi, eax
call dword [sym.imp.MFC42u.dll_CString::CString]
lea ecx, [ebp - 0x22c]
call dword [sym.imp.MFC42u.dll_CString::CString]
lea ecx, [ebp - 0x230]
call dword [sym.imp.MFC42u.dll_CString::CString]
jmp 0x42337d
lea ecx, [ebp - 0x234]
call dword [sym.imp.MFC42u.dll_CString::CString]
lea ecx, [ebp - 0x22c]
mov byte [ebp - 4], 3
call dword [sym.imp.MFC42u.dll_CString::CString]
push ecx
push 0x15e
mov ecx, edi
call fcn.004234a2
jmp 0x423124
push ecx
push 0x166
mov ecx, edi
call fcn.004234a2
mov ebx, 0x80004005
mov esi, ebx
lea ecx, [ebp - 0x244]
call dword [sym.imp.MFC42u.dll_CString::CString]
mov eax, esi
call fcn.004289da
ret 8