Function at 0x458030
Capabilities:
Query or enumerate registry value

Disassembly:
push 0xffffffffffffffff
push 0x484cc6
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x194
push ebx
push ebp
push esi
xor eax, eax
push edi
mov ebp, ecx
push eax
mov dword [esp + 0x2c], eax
mov dword [esp + 0x40], eax
call dword [sym.imp.user32.dll_GetDC]
mov edi, dword [sym.imp.gdi32.dll_GetDeviceCaps]
mov esi, eax
push 8
push esi
call edi
push 0xa
push esi
mov ebx, eax
call edi
push 0xc
push esi
mov edi, eax
call dword [sym.imp.gdi32.dll_GetDeviceCaps]
push esi
push 0
mov dword [esp + 0x3c], eax
call dword [sym.imp.user32.dll_ReleaseDC]
xor eax, eax
lea edx, [esp + 0x3c]
mov dword [esp + 0x40], eax
push edx
mov dword [esp + 0x48], eax
lea edx, [esp + 0x2c]
mov dword [esp + 0x4c], eax
push edx
mov dword [esp + 0x54], eax
mov eax, dword [ebp + 0xc]
lea edx, [esp + 0x48]
mov dword [esp + 0x48], 0x10004000
mov ecx, dword [eax]
push edx
push eax
call dword [ecx + 0x5c]
test eax, eax
mov dword [esp + 0x38], eax
jge 0x4580d9
push eax
push 0x53
mov ecx, ebp
call fcn.00457fb0
xor al, al
jmp 0x4584cd
mov eax, dword [esp + 0x34]
mov ecx, 0x4a04d0
cdq
and edx, 7
add eax, edx
mov edx, dword [esp + 0x28]
mov esi, eax
sar esi, 3
imul esi, edi
imul esi, ebx
and edi, 0xffff
add esi, edx
shl edi, 0x10
and ebx, 0xffff
shr esi, 0x14
or edi, ebx
call fcn.004305a0
mov ecx, dword [0x4a04b8]
push eax
push ecx
call fcn.00424cb5
add esp, 8
test eax, eax
jne 0x45814c
mov eax, dword [0x4a04b4]
mov ecx, dword [0x4a04fc]
cmp eax, ecx
jne 0x45814c
cmp dword [0x4a04b0], edi
jne 0x45814c
mov ecx, 0x4a04a8
call fcn.00430590
jmp 0x4584cd
push 0x4a04d0
mov ecx, 0x4a04b8
call fcn.0042f0e0
mov ecx, dword [0x4a04fc]
mov dword [0x4a04b0], edi
mov dword [0x4a04b4], ecx
mov ecx, 0x4a04a8
call fcn.0042ef10
mov ecx, 0x4a04e0
call fcn.0042ef10
mov eax, dword [0x4a04c8]
mov dword [0x4a04a0], esi
cmp esi, eax
jae 0x4581a3
push 0x4c
mov ecx, 0x4a04a8
call fcn.00430250
xor al, al
jmp 0x4584cd
cmp esi, dword [0x4a04c4]
jae 0x4581b4
push 0x4c
mov ecx, ebp
call fcn.00457f20
mov edx, dword [0x4a04c0]
lea eax, [esp + 0x24]
push eax
cmp esi, edx
push 0x20019
push 0
setb dl
push str.SoftwareMicrosoftDirectX
push 0x80000002
mov byte [0x49644c], dl
call dword [sym.imp.advapi32.dll_RegOpenKeyExA]
test eax, eax
jne 0x45823a
lea ecx, [esp + 0x30]
lea edx, [esp + 0xdc]
push ecx
mov ecx, dword [esp + 0x28]
lea eax, [esp + 0x30]
push edx
push eax
push 0
push str.Version
push ecx
mov dword [esp + 0x44], 1
mov dword [esp + 0x48], 0xc8
call dword [sym.imp.advapi32.dll_RegQueryValueExA]
test eax, eax
jne 0x45822f
lea edx, [esp + 0xdc]
mov ecx, 0x4a0498
push edx
call fcn.0042f140
mov eax, dword [esp + 0x24]
push eax
call dword [sym.imp.advapi32.dll_RegCloseKey]
lea ecx, [esp + 0x10]
call fcn.0042ee00
lea ecx, [esp + 0x18]
mov dword [esp + 0x1ac], 0
call fcn.0042ee00
lea ecx, [esp + 0x18]
lea edx, [esp + 0x10]
push ecx
lea eax, [esp + 0xd0]
push edx
push eax
mov byte [esp + 0x1b8], 1
call fcn.0045ea50
add esp, 0xc
test al, al
je 0x4582e7
lea ecx, [esp + 0x10]
call fcn.004305a0
push eax
push str.Driver
push str.3DSettings
call fcn.0043cef0
add esp, 0xc
lea ecx, [esp + 0x18]
call fcn.004305a0
push eax
push str.DriverDescription
push str.3DSettings
call fcn.0043cef0
add esp, 0xc
lea ecx, [esp + 0x18]
call fcn.004305a0
push eax
lea ecx, [esp + 0x14]
call fcn.004305a0
push eax
mov ecx, ebp
call fcn.004593d0
test al, al
jne 0x4582e7
mov ecx, dword [esp + 0x38]
push ecx
push 0x65
mov ecx, ebp
call fcn.00457fb0
jmp 0x45845a
mov eax, dword [ebp + 0xc]
lea ebx, [ebp + 0x1c]
push ebx
push 0x48aaf8
mov edx, dword [eax]
push eax
call dword [edx]
test eax, eax
jge 0x45830b
push eax
push 0x54
mov ecx, ebp
call fcn.00457fb0
jmp 0x45845a
push 8
mov ecx, ebp
call fcn.00457a80
test eax, eax
jge 0x458320
push eax
push 0x55
jmp 0x45844c
mov ecx, 0x1f
xor eax, eax
lea edi, [esp + 0x50]
lea esi, [ebp + 0x10]
rep stosd dword es:[edi], eax
mov eax, 0x64
push 0
mov dword [esp + 0x60], eax
mov dword [esp + 0x5c], eax
mov eax, dword [ebp + 0xc]
lea edx, [esp + 0x54]
mov dword [esp + 0x54], 0x7c
mov dword [esp + 0x58], 7
mov dword [esp + 0xbc], 0x2040
mov ecx, dword [eax]
push esi
push edx
push eax
call dword [ecx + 0x18]
test eax, eax
jge 0x458375
push eax
push 0x56
jmp 0x45844c
mov eax, dword [ebx]
mov edx, dword [esi]
lea edi, [ebp + 0x20]
mov ecx, dword [eax]
push edi
push edx
push 0x48aad8
push eax
call dword [ecx + 0x10]
test eax, eax
jge 0x4583aa
mov eax, dword [ebx]
mov edx, dword [esi]
push edi
push edx
mov ecx, dword [eax]
push 0x48aae8
push eax
call dword [ecx + 0x10]
test eax, eax
jge 0x4583aa
push eax
push 0x57
jmp 0x45844c
mov edi, dword [edi]
lea ecx, [esp + 0x20]
mov dword [esp + 0x20], 0
push ecx
mov eax, dword [edi]
push 0x4558c0
push edi
call dword [eax + 0x10]
mov al, byte [esp + 0x20]
test al, 2
jne 0x4583e1
test al, 1
je 0x4583e1
test al, 4
jne 0x4583e1
push 0x4d
mov ecx, ebp
call fcn.00457f20
mov al, byte [esp + 0x20]
test al, 3
jne 0x4583f3
push 0x4e
mov ecx, 0x4a04a8
call fcn.00430250
jmp 0x458453
mov eax, 0x40
mov ecx, 8
mov esi, 0x4a0a60
lea edi, [esp + 0x98]
mov dword [esp + 0x54], 0x1007
mov dword [esp + 0xb8], 0x1000
mov dword [esp + 0xbc], 0x10
mov dword [esp + 0x5c], eax
mov dword [esp + 0x58], eax
mov eax, dword [ebp + 0xc]
rep movsd dword es:[edi], dword [esi]
mov edx, dword [eax]
lea ecx, [ebp + 0x14]
push 0
push ecx
lea ecx, [esp + 0x58]
push ecx
push eax
call dword [edx + 0x18]
test eax, eax
jge 0x458483
push eax
push 0x58
mov ecx, ebp
call fcn.00457fb0
mov ecx, ebp
call fcn.00458ea0
lea ecx, [esp + 0x18]
mov byte [esp + 0x1ac], 0
call fcn.0042efa0
lea ecx, [esp + 0x10]
mov dword [esp + 0x1ac], 0xffffffff
call fcn.0042efa0
xor al, al
jmp 0x4584cd
mov ecx, ebp
call fcn.004584f0
mov ecx, ebp
mov bl, al
call fcn.00458ea0
mov ecx, 0x4a04e0
call fcn.00430590
test al, al
jne 0x4584a6
mov byte [0x49644a], al
lea ecx, [esp + 0x18]
mov byte [esp + 0x1ac], 0
call fcn.0042efa0
lea ecx, [esp + 0x10]
mov dword [esp + 0x1ac], 0xffffffff
call fcn.0042efa0
mov al, bl
mov ecx, dword [esp + 0x1a4]
pop edi
pop esi
pop ebp
pop ebx
mov dword fs:[0], ecx
add esp, 0x1a0
ret