Function at 0x1000200f
Capabilities:
Check os version
Query or enumerate registry value
Read .ini file

Disassembly:
push ebp
lea ebp, [esp - 0x78]
sub esp, 0x794
mov eax, dword [0x10022160]
xor eax, ebp
mov dword [ebp + 0x74], eax
push ebx
push esi
push edi
mov edi, 0x80
xor ebx, ebx
push edi
lea eax, [ebp - 0x70]
push ebx
push eax
mov dword [ebp - 0x708], ebx
call fcn.1000aa30
lea esi, [edi + 0x14]
push esi
lea eax, [ebp - 0x704]
push ebx
push eax
call fcn.1000aa30
add esp, 0x18
lea eax, [ebp - 0x704]
push eax
mov dword [ebp - 0x704], esi
call dword [sym.imp.KERNEL32.dll_GetVersionExA]
test eax, eax
je 0x1000209a
cmp dword [ebp - 0x6f4], 1
jne 0x100020b1
push str.System.ini
push edi
lea eax, [ebp - 0x70]
push eax
push 0x1001d508
push str.display.drv
push str.boot.description
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
test eax, eax
ja 0x10002289
mov eax, 0x80000001
mov ecx, dword [ebp + 0x74]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.1000aaaa
add ebp, 0x78
leave
ret
cmp dword [ebp - 0x6f4], 2
jne 0x1000209a
push 6
pop ecx
mov esi, str.HARDWAREDEVICEMAPVIDEO
lea edi, [ebp + 0x10]
rep movsd dword es:[edi], dword [esi]
movsb byte es:[edi], byte [esi]
mov esi, str.DeviceVideo0
lea edi, [ebp + 0x40]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
movsb byte es:[edi], byte [esi]
mov esi, str.Device_Description
lea edi, [ebp + 0x2c]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
movsb byte es:[edi], byte [esi]
mov esi, 0x100
push esi
lea eax, [ebp - 0x170]
push ebx
push eax
mov dword [ebp - 0x710], esi
mov dword [ebp - 0x718], 1
call fcn.1000aa30
push esi
lea eax, [ebp - 0x270]
push ebx
push eax
call fcn.1000aa30
mov esi, dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
add esp, 0x18
lea eax, [ebp - 0x71c]
push eax
mov edi, 0x20019
push edi
push ebx
lea eax, [ebp + 0x10]
push eax
push 0x80000002
call esi
test eax, eax
jne 0x1000226d
lea eax, [ebp - 0x710]
push eax
lea eax, [ebp - 0x170]
push eax
lea eax, [ebp - 0x718]
push eax
push ebx
lea eax, [ebp + 0x40]
push eax
push dword [ebp - 0x71c]
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
mov ebx, 0x80000001
test eax, eax
jne 0x100021d6
cmp dword [ebp - 0x710], eax
jbe 0x100021d0
lea eax, [ebp - 0x170]
push 0x14
push eax
mov dword [ebp - 0x70c], eax
lea eax, [ebp + 0x50]
push eax
call fcn.1000a900
lea eax, [ebp + 0x50]
push eax
mov byte [ebp + 0x63], 0
call fcn.1000a89a
lea eax, [ebp + 0x50]
push str.REGISTRYMACHINE_
push eax
call fcn.1000a4e0
lea ecx, [ebp + 0x50]
add esp, 0x18
cmp eax, ecx
lea eax, [ebp - 0x15e]
je 0x100021c0
mov eax, dword [ebp - 0x70c]
push eax
lea eax, [ebp - 0x270]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
jmp 0x100021d6
mov dword [ebp - 0x708], ebx
push dword [ebp - 0x71c]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
lea eax, [ebp - 0x270]
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenA]
test eax, eax
je 0x10002278
lea eax, [ebp - 0x714]
push eax
push edi
xor edi, edi
push edi
lea eax, [ebp - 0x270]
push eax
push 0x80000002
call esi
test eax, eax
jne 0x10002272
lea eax, [ebp - 0x710]
push eax
lea eax, [ebp - 0x170]
push eax
lea eax, [ebp - 0x718]
push eax
push edi
lea eax, [ebp + 0x2c]
push eax
push dword [ebp - 0x714]
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
test eax, eax
jne 0x1000225f
cmp dword [ebp - 0x710], edi
jbe 0x10002259
lea eax, [ebp - 0x170]
push eax
lea eax, [ebp - 0x70]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
jmp 0x1000225f
mov dword [ebp - 0x708], ebx
push dword [ebp - 0x714]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
jmp 0x10002278
mov ebx, 0x80000001
mov dword [ebp - 0x708], ebx
cmp dword [ebp - 0x708], ebx
jne 0x10002287
mov eax, ebx
jmp 0x1000209f
xor ebx, ebx
mov esi, 0x200
push esi
lea eax, [ebp - 0x470]
push ebx
push eax
call fcn.1000aa30
add esp, 0xc
cmp dword [ebp - 0x6f4], 1
jne 0x100022d7
cmp dword [ebp - 0x6fc], ebx
je 0x100022d0
cmp dword [ebp - 0x6fc], 0xa
je 0x100022c9
cmp dword [ebp - 0x6fc], 0x5a
jne 0x10002326
push str.WinMe
jmp 0x1000231c
push str.Win98
jmp 0x1000231c
push str.Win95
jmp 0x1000231c
cmp dword [ebp - 0x6f4], 2
jne 0x10002326
mov eax, dword [ebp - 0x700]
sub eax, 3
je 0x10002317
dec eax
je 0x10002310
dec eax
jne 0x10002326
cmp dword [ebp - 0x6fc], ebx
jne 0x10002300
push str.Win2K
jmp 0x1000231c
cmp dword [ebp - 0x6fc], 1
jne 0x10002326
push str.WinXP
jmp 0x1000231c
push 0x1001d468
jmp 0x1000231c
push str.NT351
lea eax, [ebp + 0x64]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
push str.KcMV3DGD.ini
push esi
lea eax, [ebp - 0x470]
push eax
mov edi, str.Read_error
push edi
push ebx
push str.Critical_Driver
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
mov dword [ebp - 0x70c], eax
cmp eax, ebx
jbe 0x100023fd
push edi
lea eax, [ebp - 0x470]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcmpA]
test eax, eax
je 0x100023fd
mov eax, dword [ebp - 0x70c]
lea eax, [ebp + eax - 0x470]
lea ebx, [ebp - 0x470]
mov dword [ebp - 0x70c], eax
cmp ebx, dword [ebp - 0x70c]
jae 0x10002407
lea eax, [ebp - 0x70]
push ebx
push eax
call fcn.1000a4e0
pop ecx
pop ecx
test eax, eax
je 0x100023dc
push esi
lea eax, [ebp - 0x670]
push 0
push eax
call fcn.1000aa30
add esp, 0xc
push str.KcMV3DGD.ini
push esi
lea eax, [ebp - 0x670]
push eax
push edi
push ebx
push str.Critical_Driver
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
lea eax, [ebp + 0x64]
push eax
lea eax, [ebp - 0x670]
push eax
call fcn.1000a4e0
pop ecx
pop ecx
test eax, eax
jne 0x100023f1
push ebx
call dword [sym.imp.KERNEL32.dll_lstrlenA]
test eax, eax
jle 0x10002407
lea ebx, [ebx + eax + 1]
test ebx, ebx
jne 0x10002382
jmp 0x10002407
mov dword [ebp - 0x708], 1
jmp 0x10002407
mov dword [ebp - 0x708], 0x80000002
mov eax, dword [ebp - 0x708]
jmp 0x1000209f