Function at 0x422073
Capabilities:
Query or enumerate registry value

Disassembly:
mov eax, 0x43072d
call fcn.0042e9c0
sub esp, 0x20
mov al, byte [ebp + 0xb]
push ebx
push esi
xor ebx, ebx
push edi
push ebx
lea ecx, [ebp - 0x2c]
mov dword [ebp - 0x1c], ebx
mov byte [ebp - 0x2c], al
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
cmp dword [0x438c4c], ebx
push 1
pop edi
mov dword [ebp - 4], edi
je 0x4220b5
cmp word [0x438c26], bx
mov dword [0x438c3c], edi
jne 0x4220bb
mov dword [0x438c3c], ebx
mov esi, dword [0x4331a0]
mov al, byte [esi]
sub al, 3
movzx eax, al
add eax, 3
and al, 0xfc
call fcn.0042e9e0
mov eax, esp
lea ecx, [ebp - 0x14]
push ebx
push ecx
push ebx
push 0x20019
push ebx
push ebx
push ebx
push esi
push eax
call fcn.0042bd2b
pop ecx
pop ecx
push eax
push 0x80000001
push 0x10
call fcn.0040ebd2
pop ecx
call eax
test eax, eax
jne 0x4222eb
cmp word [0x438c30], bx
jne 0x422114
cmp byte [0x438c1e], bl
je 0x422116
mov eax, edi
add dword [0x438c44], eax
push 0x29c7ffff
movsx eax, byte [0x438c1c]
push eax
call fcn.0040aa4f
mov dword [0x438c5c], eax
movsx eax, byte [0x438c1e]
push eax
push 0xa8d9ffff
call fcn.0040a9a5
add byte [0x438c1a], al
mov eax, dword [0x438c58]
push eax
push eax
mov dword [0x438c50], edi
mov dword [ebp - 0x10], ebx
call fcn.0040aa83
add dword [0x438c5c], eax
add esp, 0x18
cmp dword [0x438c50], ebx
jne 0x42217f
cmp dword [0x438c58], ebx
mov byte [0x438c1d], bl
je 0x422186
mov byte [0x438c1d], 1
mov esi, dword [0x4331a8]
mov al, byte [esi]
sub al, 3
movzx eax, al
add eax, 3
and al, 0xfc
call fcn.0042e9e0
lea ecx, [ebp - 0x10]
mov eax, esp
push ecx
lea ecx, [ebp - 0x18]
push ebx
push ecx
push ebx
push esi
push eax
call fcn.0042bd2b
pop ecx
pop ecx
push eax
push dword [ebp - 0x14]
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
test eax, eax
jne 0x4222ac
cmp dword [ebp - 0x18], edi
jne 0x4222ac
cmp byte [0x438c18], bl
setne al
add word [0x438c26], ax
mov eax, dword [ebp - 0x10]
inc eax
push eax
call sub.MSVCRT.dll_void____cdecl_operator_new_unsigned_int_
pop ecx
mov edi, eax
call dword [sym.imp.USER32.dll_GetActiveWindow]
add byte [0x438c1a], al
cmp byte [0x438c1e], bl
jne 0x42220a
cmp byte [0x438c19], bl
jne 0x42220a
xor eax, eax
jmp 0x42220d
push 1
pop eax
add dword [0x438c4c], eax
push 0xd5bdffff
push dword [0x438c3c]
call fcn.0040aa4f
mov esi, dword [0x4331a8]
mov byte [0x438c1b], al
pop ecx
mov al, byte [esi]
pop ecx
sub al, 3
movzx eax, al
add eax, 3
and al, 0xfc
call fcn.0042e9e0
lea ecx, [ebp - 0x10]
mov eax, esp
push ecx
lea ecx, [ebp - 0x18]
push edi
push ecx
push ebx
push esi
push eax
call fcn.0042bd2b
pop ecx
pop ecx
push eax
push dword [ebp - 0x14]
push 0x12
call fcn.0040ebd2
pop ecx
call eax
test eax, eax
jne 0x4222a2
movsx eax, byte [0x438c1d]
inc byte [0x438c20]
push eax
movsx eax, byte [0x438c1e]
push eax
call fcn.0040a8f9
mov byte [0x438c1c], al
mov eax, dword [ebp - 0x10]
push edi
mov byte [edi + eax], bl
call sub.MSVCRT.dll_strlen
add esp, 0xc
lea ecx, [ebp - 0x2c]
push eax
push edi
call dword [sym.imp.MSVCP60.dll_public:_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char______thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::assign_char_const___unsigned_int_]
push edi
call fcn.0042e920
pop ecx
push 1
pop edi
call dword [sym.imp.KERNEL32.dll_GetUserDefaultLCID]
push dword [ebp - 0x14]
mov byte [0x438c18], al
push 0xf
call fcn.0040ebd2
pop ecx
call eax
movsx eax, word [0x438c2a]
push dword [0x438c40]
push eax
call fcn.0040aa4f
add word [0x438c28], ax
pop ecx
pop ecx
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov byte [0x438c1f], al
mov ax, word [0x438c50]
mov esi, dword [ebp + 8]
or ax, word [0x438c34]
mov byte [0x438c1c], bl
push ebx
mov ecx, esi
mov word [0x438c24], ax
mov al, byte [ebp - 0x2c]
mov byte [esi], al
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
mov eax, dword [sym.imp.MSVCP60.dll_unsigned_int_const_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::npos]
mov ecx, esi
push dword [eax]
lea eax, [ebp - 0x2c]
push ebx
push eax
call dword [sym.imp.MSVCP60.dll_public:_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char______thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::assign_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char___const___unsigned_int__unsigned_int_]
mov dword [ebp - 0x1c], edi
push edi
lea ecx, [ebp - 0x2c]
mov byte [ebp - 4], bl
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
mov ecx, dword [ebp - 0xc]
lea esp, [ebp - 0x38]
mov eax, esi
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
leave
ret