Function at 0x401000
Capabilities:
Check os version
Link many functions at runtime
Terminate process

Disassembly:
push ebp
mov ebp, esp
mov eax, 0xa59c
call fcn.0042a000
mov eax, dword [0x447400]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [str.___n_t_]
mov dword [ebp - 0xc], eax
mov cx, word [0x441df0]
mov word [ebp - 8], cx
mov edx, 4
imul edx, edx, 0
mov eax, dword [ebp + 0xc]
mov ecx, dword [eax + edx]
mov dword [ebp - 0xa590], ecx
lea edx, [ebp - 0xc]
push edx
mov eax, dword [ebp - 0xa590]
push eax
call fcn.004287b3
add esp, 8
mov dword [ebp - 0xa584], eax
lea ecx, [ebp - 0x10c]
push ecx
call fcn.004014c0
add esp, 4
mov word [ebp - 0xa588], ax
movsx edx, word [ebp - 0xa588]
test edx, edx
jne 0x40108c
push str.cannot_load_driver_n
call fcn.0042888d
add esp, 4
push 0
call fcn.00428cc7
mov dword [0x448364], 0
push str..exe
mov eax, dword [ebp - 0xa584]
push eax
call fcn.00401350
add esp, 8
test eax, eax
jne 0x4010c6
push str..EXE
mov ecx, dword [ebp - 0xa584]
push ecx
call fcn.00401350
add esp, 8
test eax, eax
je 0x401114
push 0x105
call fcn.00428f69
add esp, 4
mov dword [ebp - 0xa598], eax
mov edx, dword [ebp - 0xa598]
mov dword [0x448364], edx
push 0x104
mov eax, dword [ebp - 0xa584]
push eax
mov ecx, dword [0x448364]
push ecx
call fcn.00428fe0
add esp, 0xc
mov edx, 1
imul edx, edx, 0x104
mov eax, dword [0x448364]
mov byte [eax + edx], 0
call dword [sym.imp.KERNEL32.dll_GetVersion]
mov dword [ebp - 0xa580], eax
mov ecx, dword [ebp - 0xa580]
and ecx, 0xff
mov dword [ebp - 0xa58c], ecx
mov edx, dword [ebp - 0xa580]
shr edx, 8
mov dword [ebp - 0xa580], edx
mov eax, dword [ebp - 0xa580]
and eax, 0xff
mov dword [ebp - 0xa580], eax
cmp dword [ebp - 0xa58c], 6
jb 0x40127a
push str.ULPSCtrl.dll
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov dword [0x4496c0], eax
cmp dword [0x4496c0], 0
jne 0x401193
push 0
push 0x441e28
push str.ULPSCtrl.dll_missing
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
push 1
call fcn.00428cc7
push str.ULPSOpen
mov ecx, dword [0x4496c0]
push ecx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x4496d4], eax
push str.ULPSClose
mov edx, dword [0x4496c0]
push edx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x4496d0], eax
push str.ULPSCheck
mov eax, dword [0x4496c0]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x4496cc], eax
push str.ULPSWait
mov ecx, dword [0x4496c0]
push ecx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x4496c8], eax
push str.ULPSCloseD3D
mov edx, dword [0x4496c0]
push edx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x4496c4], eax
cmp dword [0x4496c0], 0
je 0x40123b
cmp dword [0x4496d4], 0
je 0x40123b
cmp dword [0x4496d0], 0
je 0x40123b
cmp dword [0x4496cc], 0
je 0x40123b
cmp dword [0x4496c8], 0
je 0x40123b
cmp dword [0x4496c4], 0
jne 0x401262
push 0
push str.Error
push str.Couldnt_load_functions_from_ULPSCtrl.dll
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
mov eax, dword [0x4496c0]
push eax
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
push 2
call fcn.00428cc7
mov byte [ebp - 0xa579], 1
movzx ecx, byte [ebp - 0xa579]
push ecx
call dword [0x4496d4]
add esp, 4
lea edx, [ebp - 0xa578]
push edx
call fcn.0040c160
add esp, 4
push 0x441ebc
push str.atiflash.rom
call fcn.004291c8
add esp, 8
mov dword [ebp - 0xa594], eax
mov eax, dword [ebp - 0xa594]
push eax
lea ecx, [ebp - 0x654c]
push ecx
call fcn.00411a50
add esp, 8
lea edx, [ebp - 0x654c]
push edx
mov eax, dword [ebp + 0xc]
push eax
mov ecx, dword [ebp + 8]
push ecx
lea edx, [ebp - 0xa578]
push edx
call fcn.00408be0
add esp, 0x10
lea eax, [ebp - 0x654c]
push eax
call fcn.00411c90
add esp, 4
lea ecx, [ebp - 0xa578]
push ecx
call fcn.0040c3a0
add esp, 4
cmp dword [0x4496c0], 0
je 0x401309
mov edx, dword [0x4496c0]
push edx
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
call fcn.00401db0
cmp dword [0x448364], 0
je 0x401331
mov eax, dword [0x448364]
mov dword [ebp - 0xa59c], eax
mov ecx, dword [ebp - 0xa59c]
push ecx
call fcn.004291dd
add esp, 4
jmp 0x401335
xor eax, eax
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.004287a4
mov esp, ebp
pop ebp
ret