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

Disassembly:
push ebp
lea ebp, [esp - 0xdc4]
sub esp, 0xe44
push ebx
push esi
push edi
mov eax, dword [0x721bb0]
push 9
pop ecx
mov esi, str.SYSTEMCurrentControlSetControlClass
lea edi, [ebp + 0x8ac]
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
movsb byte es:[edi], byte [esi]
mov dword [ebp + 0xdc0], eax
xor eax, eax
push 0x37
pop ecx
lea edi, [ebp + 0x8d3]
rep stosd dword es:[edi], eax
stosb byte es:[edi], al
mov al, byte [0x6d05b8]
mov byte [ebp + 0xbb8], al
push 0x40
xor eax, eax
pop ecx
lea edi, [ebp + 0xbb9]
rep stosd dword es:[edi], eax
xor ebx, ebx
cmp dword [0x1209ae8], ebx
stosw word es:[edi], ax
mov dword [ebp - 0x74], ebx
mov dword [ebp - 0x70], ebx
stosb byte es:[edi], al
mov dword [ebp - 0x7c], 0x104
mov byte [ebp - 0x59], bl
mov dword [ebp - 0x80], ebx
jbe 0x455f31
mov dword [ebp - 0x80], 0x10713c0
lea eax, [ebp - 0x6c]
push eax
push 0x20019
push ebx
lea eax, [ebp + 0x8ac]
push eax
push 0x80000002
call dword [sym.imp.advapi32.dll_RegOpenKeyExA]
test eax, eax
jne 0x4561aa
push ebx
push ebx
push ebx
push ebx
push ebx
push ebx
push ebx
lea eax, [ebp - 0x74]
push eax
push ebx
push ebx
push ebx
push dword [ebp - 0x6c]
call dword [sym.imp.advapi32.dll_RegQueryInfoKeyA]
test eax, eax
jne 0x4561a1
cmp dword [ebp - 0x74], ebx
mov dword [ebp - 0x64], ebx
jbe 0x4561a1
push 0x104
lea eax, [ebp + 0x7a8]
push eax
push dword [ebp - 0x64]
push dword [ebp - 0x6c]
call dword [sym.imp.advapi32.dll_RegEnumKeyA]
test eax, eax
jne 0x45618d
mov cl, byte [ebp + eax + 0x8ac]
mov byte [ebp + eax + 0xcbc], cl
inc eax
cmp cl, bl
jne 0x455fa0
lea edi, [ebp + 0xcbc]
dec edi
mov al, byte [edi + 1]
inc edi
cmp al, bl
jne 0x455fba
mov esi, 0x6d5828
lea eax, [ebp + 0x7a8]
movsw word es:[edi], word [esi]
mov edx, eax
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x455fd1
lea edi, [ebp + 0xcbc]
sub eax, edx
dec edi
mov cl, byte [edi + 1]
inc edi
cmp cl, bl
jne 0x455fe1
mov ecx, eax
shr ecx, 2
mov esi, edx
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
lea eax, [ebp - 0x60]
push eax
push 0x20019
push ebx
lea eax, [ebp + 0xcbc]
push eax
and ecx, 3
push 0x80000002
rep movsb byte es:[edi], byte [esi]
call dword [sym.imp.advapi32.dll_RegOpenKeyExA]
test eax, eax
jne 0x456192
lea eax, [ebp - 0x7c]
push eax
lea eax, [ebp + 0x9b0]
push eax
push ebx
push ebx
push str.Class
push dword [ebp - 0x60]
call dword [sym.imp.advapi32.dll_RegQueryValueExA]
test eax, eax
je 0x45604a
push dword [ebp - 0x60]
call dword [sym.imp.advapi32.dll_RegCloseKey]
jmp 0x456192
lea eax, [ebp + 0x9b0]
push str.Display
push eax
call fcn.006a481c
test eax, eax
pop ecx
pop ecx
jne 0x456184
push ebx
push ebx
push ebx
push ebx
push ebx
push ebx
push ebx
lea eax, [ebp - 0x70]
push eax
push ebx
push ebx
push ebx
push dword [ebp - 0x60]
call dword [sym.imp.advapi32.dll_RegQueryInfoKeyA]
test eax, eax
jne 0x456192
cmp dword [ebp - 0x70], ebx
mov dword [ebp - 0x68], ebx
jbe 0x456184
push 0x104
lea eax, [ebp + 0x7a8]
push eax
push dword [ebp - 0x68]
push dword [ebp - 0x60]
call dword [sym.imp.advapi32.dll_RegEnumKeyA]
test eax, eax
jne 0x456151
mov cl, byte [ebp + eax + 0xcbc]
mov byte [ebp + eax + 0xab4], cl
inc eax
cmp cl, bl
jne 0x4560b0
lea edi, [ebp + 0xab4]
dec edi
mov al, byte [edi + 1]
inc edi
cmp al, bl
jne 0x4560ca
mov esi, 0x6d5828
lea eax, [ebp + 0x7a8]
movsw word es:[edi], word [esi]
mov edx, eax
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x4560e1
lea edi, [ebp + 0xab4]
sub eax, edx
dec edi
mov cl, byte [edi + 1]
inc edi
cmp cl, bl
jne 0x4560f1
mov ecx, eax
shr ecx, 2
mov esi, edx
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
lea eax, [ebp - 0x78]
push eax
push 0x20019
push ebx
lea eax, [ebp + 0xab4]
push eax
and ecx, 3
push 0x80000002
rep movsb byte es:[edi], byte [esi]
call dword [sym.imp.advapi32.dll_RegOpenKeyExA]
test eax, eax
jne 0x456184
lea eax, [ebp - 0x7c]
push eax
lea eax, [ebp + 0x9b0]
push eax
push ebx
push ebx
push str.DriverVersion
push dword [ebp - 0x78]
call dword [sym.imp.advapi32.dll_RegQueryValueExA]
test eax, eax
je 0x456162
push dword [ebp - 0x78]
call dword [sym.imp.advapi32.dll_RegCloseKey]
inc dword [ebp - 0x68]
mov eax, dword [ebp - 0x68]
cmp eax, dword [ebp - 0x70]
jb 0x456090
jmp 0x456184
mov byte [ebp - 0x59], 1
xor eax, eax
mov cl, byte [ebp + eax + 0x9b0]
mov byte [ebp + eax + 0xbb8], cl
inc eax
cmp cl, bl
jne 0x456168
push dword [ebp - 0x78]
call dword [sym.imp.advapi32.dll_RegCloseKey]
push dword [ebp - 0x60]
call dword [sym.imp.advapi32.dll_RegCloseKey]
cmp byte [ebp - 0x59], bl
jne 0x4561a1
inc dword [ebp - 0x64]
mov eax, dword [ebp - 0x64]
cmp eax, dword [ebp - 0x74]
jb 0x455f80
push dword [ebp - 0x6c]
call dword [sym.imp.advapi32.dll_RegCloseKey]
mov eax, dword [ebp - 0x80]
cmp eax, ebx
je 0x456255
push eax
add eax, 0x200
push eax
lea eax, [ebp - 0x58]
push str._Graphic_Card_t_t:___s__n_Graphic_Driver_t_t:___s__n
push eax
call fcn.006935d4
lea eax, [ebp - 0x58]
add esp, 0x10
mov edx, eax
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x4561d2
mov edi, dword [ebp + 0xdcc]
sub eax, edx
dec edi
mov cl, byte [edi + 1]
inc edi
cmp cl, bl
jne 0x4561e2
mov ecx, eax
shr ecx, 2
mov esi, edx
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
xor ecx, ecx
inc ecx
mov edi, 0x6d05b8
lea esi, [ebp + 0xbb8]
xor eax, eax
repe cmpsb byte [esi], byte es:[edi]
je 0x456255
lea eax, [ebp + 0xbb8]
push eax
lea eax, [ebp - 0x58]
push str._Graphic_Driver_Version_t:___s__n
push eax
call fcn.006935d4
lea eax, [ebp - 0x58]
add esp, 0xc
mov edx, eax
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x45622b
mov ecx, dword [ebp + 0xdcc]
sub eax, edx
mov esi, edx
dec ecx
mov dl, byte [ecx + 1]
inc ecx
cmp dl, bl
jne 0x45623d
mov edi, ecx
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [ebp + 0xdc0]
pop edi
pop esi
pop ebx
call fcn.00692fc7
add ebp, 0xdc4
leave
ret