Function at 0x40ce80
Capabilities:
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4330d2
mov eax, dword fs:[0]
push eax
sub esp, 0x35c
mov eax, dword [0x45da50]
xor eax, ebp
mov dword [ebp - 0x10], eax
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x344], 0
lea ecx, [ebp - 0x4c]
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::constructor_void_]
mov dword [ebp - 4], 1
lea eax, [ebp - 0x30]
push eax
push 0x20019
push 0
push str.SOFTWAREATI_TechnologiesInstaller
push 0x80000002
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
jne 0x40cf84
mov word [ebp - 0x2e4], 0
mov dword [ebp - 0xd8], 0
mov dword [ebp - 0x2e8], 0x208
lea ecx, [ebp - 0x2e8]
push ecx
lea edx, [ebp - 0x2e4]
push edx
lea eax, [ebp - 0xd8]
push eax
push 0
push str.BaseLocation
mov ecx, dword [ebp - 0x30]
push ecx
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
jne 0x40cf7a
lea edx, [ebp - 0x2e4]
push edx
lea ecx, [ebp - 0x4c]
call dword [sym.imp.MSVCP80.dll_public:_class_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int______thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::operator_unsigned_short_int_const__]
mov eax, dword [ebp - 0x30]
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
lea ecx, [ebp - 0x4c]
push ecx
mov ecx, dword [ebp + 8]
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::constructor_class_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int___const__]
mov edx, dword [ebp - 0x344]
or edx, 1
mov dword [ebp - 0x344], edx
mov byte [ebp - 4], 0
lea ecx, [ebp - 0x4c]
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::destructor_void_]
mov eax, dword [ebp + 8]
jmp 0x40d18f
mov eax, dword [ebp - 0x30]
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
lea ecx, [ebp - 0x2c]
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::constructor_void_]
mov byte [ebp - 4], 2
lea ecx, [ebp - 0x2c]
push ecx
push 0x26
call fcn.0040deb0
push 1
push 3
lea ecx, [ebp - 0xd4]
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_stringstream_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::constructor_int_]
mov byte [ebp - 4], 3
lea edx, [ebp - 0xd4]
test edx, edx
je 0x40cfc8
lea eax, [ebp - 0xcc]
mov dword [ebp - 0x348], eax
jmp 0x40cfd2
mov dword [ebp - 0x348], 0
lea ecx, [ebp - 0x2c]
push ecx
mov edx, dword [ebp - 0x348]
push edx
call dword [sym.imp.MSVCP80.dll_class_std::basic_ostream_unsigned_short_int__struct_std::char_traits_unsigned_short_int______cdecl_std::operator___unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int___class_std::basic_ostream_unsigned_short_int__struct_std::char_traits_unsigned_short_int_____class_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int___const__]
add esp, 8
lea eax, [ebp - 0xd4]
test eax, eax
je 0x40cffe
lea ecx, [ebp - 0xcc]
mov dword [ebp - 0x34c], ecx
jmp 0x40d008
mov dword [ebp - 0x34c], 0
lea ecx, [ebp - 0x2c]
call dword [sym.imp.MSVCP80.dll_public:_unsigned_short_int_const____thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::c_str_void_const]
push eax
call fcn.0040b780
push eax
mov edx, dword [ebp - 0x34c]
push edx
call fcn.00404550
add esp, 8
lea eax, [ebp - 0xd4]
test eax, eax
je 0x40d03f
lea ecx, [ebp - 0xcc]
mov dword [ebp - 0x350], ecx
jmp 0x40d049
mov dword [ebp - 0x350], 0
push str.ATI_CIM
mov edx, dword [ebp - 0x350]
push edx
call fcn.00404550
add esp, 8
lea eax, [ebp - 0x308]
push eax
lea ecx, [ebp - 0xd4]
call dword [sym.imp.MSVCP80.dll_public:_class_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int_____thiscall_std::basic_stringstream_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::str_void_]
mov dword [ebp - 0x354], eax
mov ecx, dword [ebp - 0x354]
mov dword [ebp - 0x358], ecx
mov byte [ebp - 4], 4
mov ecx, dword [ebp - 0x358]
call dword [sym.imp.MSVCP80.dll_public:_unsigned_short_int_const____thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::c_str_void_const]
push eax
call fcn.00409e10
mov byte [ebp - 0x2e9], al
mov byte [ebp - 4], 3
lea ecx, [ebp - 0x308]
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::destructor_void_]
movzx edx, byte [ebp - 0x2e9]
test edx, edx
je 0x40d104
lea eax, [ebp - 0x324]
push eax
lea ecx, [ebp - 0xd4]
call dword [sym.imp.MSVCP80.dll_public:_class_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int_____thiscall_std::basic_stringstream_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::str_void_]
mov dword [ebp - 0x35c], eax
mov ecx, dword [ebp - 0x35c]
mov dword [ebp - 0x360], ecx
mov byte [ebp - 4], 5
mov edx, dword [ebp - 0x360]
push edx
lea ecx, [ebp - 0x4c]
call dword [sym.imp.MSVCP80.dll_public:_class_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int______thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::operator_class_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int___const__]
mov byte [ebp - 4], 3
lea ecx, [ebp - 0x324]
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::destructor_void_]
jmp 0x40d146
lea eax, [ebp - 0x340]
push eax
call fcn.0040d1b0
mov dword [ebp - 0x364], eax
mov ecx, dword [ebp - 0x364]
mov dword [ebp - 0x368], ecx
mov byte [ebp - 4], 6
mov edx, dword [ebp - 0x368]
push edx
lea ecx, [ebp - 0x4c]
call dword [sym.imp.MSVCP80.dll_public:_class_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int______thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::operator_class_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int___const__]
mov byte [ebp - 4], 3
lea ecx, [ebp - 0x340]
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::destructor_void_]
lea eax, [ebp - 0x4c]
push eax
mov ecx, dword [ebp + 8]
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::constructor_class_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int___const__]
mov ecx, dword [ebp - 0x344]
or ecx, 1
mov dword [ebp - 0x344], ecx
mov byte [ebp - 4], 2
lea ecx, [ebp - 0xd4]
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_stringstream_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::vbase_dtor_void_]
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x2c]
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::destructor_void_]
mov byte [ebp - 4], 0
lea ecx, [ebp - 0x4c]
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::destructor_void_]
mov eax, dword [ebp + 8]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.00430f9c
mov esp, ebp
pop ebp
ret 4