Function at 0x5018b37f
Capabilities:
Query or enumerate registry key
Query or enumerate registry value

Disassembly:
push ebp
lea ebp, [esp - 0x78]
sub esp, 0x90
push ebx
push esi
mov ebx, 0x104
push edi
xor edi, edi
mov esi, reloc.OLEAUT32.dll_SysReAllocString
push ebx
mov dword [ebp + 0xc], ecx
mov dword [ebp - 0xc], edi
mov dword [ebp - 0x18], esi
mov dword [ebp - 0x14], SysAllocStringLen
mov dword [ebp - 0x10], edi
mov dword [ebp - 8], 1
mov dword [ebp + 0x40], edi
mov dword [ebp + 0x24], ebx
mov dword [ebp + 0x18], ebx
mov dword [ebp + 0x10], ebx
mov dword [ebp + 0x28], ebx
call sub.MSVCR70.dll_void____cdecl_operator_new_unsigned_int_
push ebx
mov dword [ebp + 0x38], eax
call sub.MSVCR70.dll_void____cdecl_operator_new_unsigned_int_
push ebx
mov dword [ebp + 0x48], eax
call sub.MSVCR70.dll_void____cdecl_operator_new_unsigned_int_
push ebx
mov dword [ebp + 0x58], eax
call sub.MSVCR70.dll_void____cdecl_operator_new_unsigned_int_
push ebx
mov dword [ebp + 0x68], eax
call sub.MSVCR70.dll_void____cdecl_operator_new_unsigned_int_
push ebx
mov dword [ebp + 0x60], eax
call sub.MSVCR70.dll_void____cdecl_operator_new_unsigned_int_
push ebx
mov dword [ebp + 0x50], eax
call sub.MSVCR70.dll_void____cdecl_operator_new_unsigned_int_
push ebx
mov dword [ebp + 0x4c], eax
call sub.MSVCR70.dll_void____cdecl_operator_new_unsigned_int_
push ebx
mov dword [ebp + 0x6c], eax
call sub.MSVCR70.dll_void____cdecl_operator_new_unsigned_int_
add esp, 0x24
cmp dword [ebp + 0x48], edi
mov dword [ebp + 0x5c], eax
je 0x5018b43d
cmp dword [ebp + 0x58], edi
je 0x5018b43d
cmp dword [ebp + 0x68], edi
je 0x5018b43d
cmp dword [ebp + 0x60], edi
je 0x5018b43d
cmp dword [ebp + 0x50], edi
je 0x5018b43d
cmp dword [ebp + 0x4c], edi
je 0x5018b43d
cmp dword [ebp + 0x6c], edi
je 0x5018b43d
cmp eax, edi
jne 0x5018b449
mov dword [ebp - 0xc], 0x8007000e
jmp 0x5018b935
lea eax, [ebp - 0x18]
mov dword [ebp + 0x34], esi
mov dword [ebp], eax
call fcn.5019b9f1
mov edx, dword [ebp + 0x38]
mov cl, byte [eax]
inc eax
mov byte [edx], cl
inc edx
test cl, cl
jne 0x5018b45a
mov edi, dword [ebp + 0x38]
xor eax, eax
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
lea eax, [ebp + 0x20]
push eax
push 0x20019
push 0
push dword [ebp + 0x38]
dec edi
push dword [ebp + 0x34]
mov esi, 0x50011e18
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
test eax, eax
jne 0x5018b921
push eax
push eax
push eax
push eax
lea ecx, [ebp + 0x24]
push ecx
push dword [ebp + 0x4c]
mov dword [ebp - 4], eax
push eax
jmp 0x5018b904
mov edi, dword [ebp + 0x4c]
xor eax, eax
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
dec edi
lea eax, [ebp + 0x1c]
push eax
mov esi, 0x5001bfb4
movsd dword es:[edi], dword [esi]
push 0x20019
push 0
push dword [ebp + 0x4c]
movsd dword es:[edi], dword [esi]
push dword [ebp + 0x20]
movsb byte es:[edi], byte [esi]
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
xor esi, esi
test eax, eax
jne 0x5018b8f3
push esi
push esi
push esi
push esi
lea eax, [ebp + 0x28]
push eax
push dword [ebp + 0x5c]
mov dword [ebp + 0x28], ebx
push esi
push dword [ebp + 0x1c]
mov dword [ebp + 4], esi
call dword [sym.imp.ADVAPI32.dll_RegEnumKeyExA]
test eax, eax
jne 0x5018b8ea
mov edi, dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
lea eax, [ebp + 0x44]
push eax
push 0x20019
push esi
push dword [ebp + 0x5c]
mov dword [ebp + 8], esi
push dword [ebp + 0x1c]
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
test eax, eax
jne 0x5018b8c5
lea eax, [ebp + 0x14]
push eax
push dword [ebp + 0x60]
lea eax, [ebp + 0x2c]
push eax
push esi
push 0x5001bfa0
push dword [ebp + 0x44]
mov dword [ebp + 0x3c], esi
mov dword [ebp + 0x64], esi
mov dword [ebp + 0x14], ebx
call edi
test eax, eax
jne 0x5018b553
inc eax
cmp dword [ebp + 0x2c], eax
jne 0x5018b553
mov dword [ebp + 0x3c], eax
lea eax, [ebp + 0x14]
push eax
push dword [ebp + 0x50]
lea eax, [ebp + 0x2c]
push eax
push esi
push 0x5001bf8c
push dword [ebp + 0x44]
mov dword [ebp + 0x14], ebx
call edi
test eax, eax
jne 0x5018b579
inc eax
cmp dword [ebp + 0x2c], eax
jne 0x5018b579
mov dword [ebp + 0x64], eax
cmp dword [ebp + 0x3c], esi
mov dword [ebp + 0x14], ebx
je 0x5018b5d3
cmp dword [ebp + 0x64], esi
je 0x5018b5d3
lea eax, [ebp + 0x18]
push eax
push dword [ebp + 0x58]
lea eax, [ebp + 0x2c]
push eax
push esi
push 0x50011f00
push dword [ebp + 0x44]
mov dword [ebp + 0x18], ebx
call edi
test eax, eax
jne 0x5018b5d3
cmp dword [ebp + 0x2c], 1
jne 0x5018b5d3
push dword [ebp + 0x58]
call dword [sym.imp.USER32.dll_CharNextA]
push dword [ebp + 0x48]
push eax
call dword [sym.imp.MSVCR70.dll_atoi]
pop ecx
push eax
push dword [ebp + 0x50]
push dword [ebp + 0x60]
call fcn.50272bbe
xor ecx, ecx
test eax, eax
setge cl
mov dword [ebp + 0x40], ecx
push dword [0x50297d50]
push 0xa8
call fcn.50040c9c
cmp eax, esi
pop ecx
pop ecx
je 0x5018b5f7
push 1
mov ecx, eax
call fcn.5018b31d
mov dword [ebp + 0x70], eax
jmp 0x5018b5fa
mov dword [ebp + 0x70], esi
cmp dword [ebp + 0x70], esi
je 0x5018b657
mov eax, dword [ebp + 0x70]
mov ecx, 0x50001f20
lea edi, [eax + 0x4c]
mov esi, ecx
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
lea edi, [eax + 0x5c]
mov esi, ecx
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
and dword [eax + 0x48], 0
mov dword [eax + 0x98], 1
mov eax, dword [ebp + 0xc]
inc dword [eax + 0x98]
cmp dword [ebp + 0x40], 0
push 0xffffffffffffffff
je 0x5018b63d
push dword [ebp + 0x48]
jmp 0x5018b640
push dword [ebp + 0x5c]
call fcn.50056fbf
mov ecx, dword [ebp + 0x70]
and dword [ebp + 0x40], 0
mov edi, dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
mov dword [ecx + 0x40], eax
xor esi, esi
push esi
push esi
push esi
push esi
lea eax, [ebp + 0x10]
push eax
push dword [ebp + 0x6c]
mov dword [ebp + 0x3c], esi
push esi
jmp 0x5018b894
lea eax, [ebp + 0x30]
push eax
push 0x20019
push esi
push dword [ebp + 0x6c]
push dword [ebp + 0x44]
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
test eax, eax
jne 0x5018b883
lea eax, [ebp + 0x64]
push eax
push dword [ebp + 0x60]
lea eax, [ebp + 0x54]
push eax
push esi
push 0x5001bfa0
push dword [ebp + 0x30]
mov dword [ebp + 0x74], esi
mov dword [ebp + 0x34], esi
mov dword [ebp + 0x64], ebx
call edi
test eax, eax
jne 0x5018b6b5
inc eax
cmp dword [ebp + 0x54], eax
jne 0x5018b6b5
mov dword [ebp + 0x74], eax
lea eax, [ebp + 0x64]
push eax
push dword [ebp + 0x50]
lea eax, [ebp + 0x54]
push eax
push esi
push 0x5001bf8c
push dword [ebp + 0x30]
mov dword [ebp + 0x64], ebx
call edi
test eax, eax
jne 0x5018b6db
inc eax
cmp dword [ebp + 0x54], eax
jne 0x5018b6db
mov dword [ebp + 0x34], eax
cmp dword [ebp + 0x74], esi
mov dword [ebp + 0x64], ebx
je 0x5018b735
cmp dword [ebp + 0x34], esi
je 0x5018b735
lea eax, [ebp + 0x18]
push eax
push dword [ebp + 0x58]
lea eax, [ebp + 0x54]
push eax
push esi
push 0x50011f00
push dword [ebp + 0x30]
mov dword [ebp + 0x18], ebx
call edi
test eax, eax
jne 0x5018b735
cmp dword [ebp + 0x54], 1
jne 0x5018b735
push dword [ebp + 0x58]
call dword [sym.imp.USER32.dll_CharNextA]
push dword [ebp + 0x48]
push eax
call dword [sym.imp.MSVCR70.dll_atoi]
pop ecx
push eax
push dword [ebp + 0x50]
push dword [ebp + 0x60]
call fcn.50272bbe
xor ecx, ecx
test eax, eax
setge cl
mov dword [ebp + 0x40], ecx
lea eax, [ebp + 0x64]
push eax
push dword [ebp + 0x68]
lea eax, [ebp + 0x54]
push eax
push esi
push 0x50011e04
push dword [ebp + 0x30]
call edi
test eax, eax
jne 0x5018b764
cmp dword [ebp + 0x54], 1
jne 0x5018b764
push dword [ebp + 0x68]
call fcn.50272bbe
test eax, eax
jge 0x5018b764
mov dword [ebp - 8], esi
push esi
push dword [ebp + 0x68]
mov ecx, 0x50296c84
push dword [ebp + 0x6c]
push dword [ebp + 0x5c]
call fcn.50272bbe
test eax, eax
jl 0x5018b872
push dword [0x50297d50]
push 0xa8
call fcn.50040c9c
xor esi, esi
cmp eax, esi
pop ecx
pop ecx
je 0x5018b7a6
push 1
mov ecx, eax
call fcn.5018b31d
mov dword [ebp + 0x74], eax
jmp 0x5018b7a9
mov dword [ebp + 0x74], esi
cmp dword [ebp + 8], esi
jne 0x5018b7c3
mov ecx, dword [ebp + 0xc]
push dword [ebp + 0x70]
add ecx, 0x18
mov eax, dword [ecx]
call dword [eax + 4]
mov dword [ebp + 8], 1
cmp dword [ebp + 0x74], esi
je 0x5018b872
mov eax, dword [ebp + 0x74]
lea edi, [eax + 0x4c]
mov esi, 0x50001dd0
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
lea edi, [eax + 0x5c]
mov esi, 0x50001e60
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
and dword [eax + 0x48], 0
mov dword [eax + 0x98], 1
mov eax, dword [ebp + 0xc]
inc dword [eax + 0x98]
cmp dword [ebp + 0x40], 0
push 0xffffffffffffffff
je 0x5018b816
push dword [ebp + 0x48]
call fcn.50056fbf
mov esi, dword [ebp + 0x74]
mov dword [esi + 0x40], eax
jmp 0x5018b826
push dword [ebp + 0x6c]
call fcn.50056fbf
mov ecx, dword [ebp + 0x74]
mov dword [ecx + 0x40], eax
mov esi, ecx
mov ecx, dword [ebp + 0x70]
add ecx, 0x18
mov eax, dword [ecx]
xor edi, edi
push esi
mov dword [ebp + 0x40], edi
call dword [eax + 4]
cmp dword [ebp - 8], edi
je 0x5018b86c
mov edi, dword [ebp + 0x68]
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
push ecx
push 8
push dword [0x50297d50]
call dword [sym.imp.kernel32.dll_HeapAlloc]
mov edx, dword [ebp + 0x68]
mov dword [esi + 0xa0], eax
mov cl, byte [edx]
inc edx
mov byte [eax], cl
inc eax
test cl, cl
jne 0x5018b860
jmp 0x5018b872
mov dword [esi + 0xa0], edi
push dword [ebp + 0x30]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov edi, dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
xor esi, esi
inc dword [ebp + 0x3c]
push esi
push esi
push esi
push esi
lea eax, [ebp + 0x10]
push eax
push dword [ebp + 0x6c]
push dword [ebp + 0x3c]
push dword [ebp + 0x44]
mov dword [ebp + 0x10], ebx
call dword [sym.imp.ADVAPI32.dll_RegEnumKeyExA]
test eax, eax
je 0x5018b66b
push dword [ebp + 0x44]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
cmp dword [ebp + 8], esi
jne 0x5018b8c5
cmp dword [ebp + 0x70], esi
je 0x5018b8c5
mov ecx, dword [ebp + 0x70]
mov eax, dword [ecx]
push 1
call dword [eax + 0x24]
inc dword [ebp + 4]
push esi
push esi
push esi
push esi
lea eax, [ebp + 0x28]
push eax
push dword [ebp + 0x5c]
mov dword [ebp + 0x28], ebx
push dword [ebp + 4]
push dword [ebp + 0x1c]
call dword [sym.imp.ADVAPI32.dll_RegEnumKeyExA]
test eax, eax
je 0x5018b506
push dword [ebp + 0x1c]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
inc dword [ebp - 4]
push esi
push esi
push esi
push esi
lea eax, [ebp + 0x24]
push eax
push dword [ebp + 0x4c]
push dword [ebp - 4]
push dword [ebp + 0x20]
mov dword [ebp + 0x24], ebx
call dword [sym.imp.ADVAPI32.dll_RegEnumKeyExA]
test eax, eax
je 0x5018b4a9
push dword [ebp + 0x20]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
add dword [ebp], 4
mov eax, dword [ebp]
mov eax, dword [eax]
test eax, eax
mov dword [ebp + 0x34], eax
jne 0x5018b452
xor esi, esi
cmp dword [ebp + 0x38], esi
je 0x5018b945
push dword [ebp + 0x38]
call sub.MSVCR70.dll_void___cdecl_operator_delete_void__
pop ecx
cmp dword [ebp + 0x48], esi
je 0x5018b953
push dword [ebp + 0x48]
call sub.MSVCR70.dll_void___cdecl_operator_delete_void__
pop ecx
cmp dword [ebp + 0x58], esi
je 0x5018b961
push dword [ebp + 0x58]
call sub.MSVCR70.dll_void___cdecl_operator_delete_void__
pop ecx
cmp dword [ebp + 0x68], esi
je 0x5018b96f
push dword [ebp + 0x68]
call sub.MSVCR70.dll_void___cdecl_operator_delete_void__
pop ecx
cmp dword [ebp + 0x60], esi
je 0x5018b97d
push dword [ebp + 0x60]
call sub.MSVCR70.dll_void___cdecl_operator_delete_void__
pop ecx
cmp dword [ebp + 0x50], esi
je 0x5018b98b
push dword [ebp + 0x50]
call sub.MSVCR70.dll_void___cdecl_operator_delete_void__
pop ecx
cmp dword [ebp + 0x4c], esi
je 0x5018b999
push dword [ebp + 0x4c]
call sub.MSVCR70.dll_void___cdecl_operator_delete_void__
pop ecx
cmp dword [ebp + 0x6c], esi
je 0x5018b9a7
push dword [ebp + 0x6c]
call sub.MSVCR70.dll_void___cdecl_operator_delete_void__
pop ecx
cmp dword [ebp + 0x5c], esi
pop edi
pop esi
pop ebx
je 0x5018b9b8
push dword [ebp + 0x5c]
call sub.MSVCR70.dll_void___cdecl_operator_delete_void__
pop ecx
mov eax, dword [ebp - 0xc]
add ebp, 0x78
leave
ret