Function at 0x448ec0
Capabilities:
Link many functions at runtime
Log keystrokes via application hook

Disassembly:
sub esp, 0xd0
push ebx
push ebp
push esi
push edi
push str.Glide3x.dll
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
test eax, eax
mov dword [0x49928c], eax
je 0x449750
mov esi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
push str._grGlideInit_0
push eax
call esi
mov dword [0x499280], eax
mov eax, dword [0x49928c]
push str._grGlideShutdown_0
push eax
call esi
mov ecx, dword [0x49928c]
push str._grSstSelect_4
push ecx
mov dword [0x49923c], eax
call esi
mov edx, dword [0x49928c]
push str._grSstWinOpen_28
push edx
mov dword [0x49926c], eax
call esi
mov dword [0x499274], eax
mov eax, dword [0x49928c]
push str._grSstWinClose_4
push eax
call esi
mov ecx, dword [0x49928c]
push str._grBufferClear_12
push ecx
mov dword [0x49921c], eax
call esi
mov edx, dword [0x49928c]
push str._grBufferSwap_4
push edx
mov dword [0x499268], eax
call esi
mov dword [0x4991ec], eax
mov eax, dword [0x49928c]
push str._grAlphaTestFunction_4
push eax
call esi
mov ecx, dword [0x49928c]
push str._grAlphaTestReferenceValue_4
push ecx
mov dword [0x49920c], eax
call esi
mov edx, dword [0x49928c]
push str._grSstOrigin_4
push edx
mov dword [0x499200], eax
call esi
mov dword [0x499240], eax
mov eax, dword [0x49928c]
push str._grCullMode_4
push eax
call esi
mov ecx, dword [0x49928c]
push str._grAlphaBlendFunction_16
push ecx
mov dword [0x499214], eax
call esi
mov edx, dword [0x49928c]
push str._grClipWindow_16
push edx
mov dword [0x499230], eax
call esi
mov dword [0x4991e8], eax
mov eax, dword [0x49928c]
push str._grDrawTriangle_12
push eax
call esi
mov ecx, dword [0x49928c]
push str._grDrawVertexArrayContiguous_16
push ecx
mov dword [0x499248], eax
call esi
mov edx, dword [0x49928c]
push str._grDepthBufferMode_4
push edx
mov dword [0x499288], eax
call esi
mov dword [0x499264], eax
push str._grDepthBufferFunction_4
mov eax, dword [0x49928c]
push eax
call esi
mov ecx, dword [0x49928c]
push str._grDepthMask_4
push ecx
mov dword [0x499234], eax
call esi
mov edx, dword [0x49928c]
push str._grColorCombine_20
push edx
mov dword [0x4991e4], eax
call esi
mov dword [0x499270], eax
mov eax, dword [0x49928c]
push str._grConstantColorValue_4
push eax
call esi
mov ecx, dword [0x49928c]
push str._grCoordinateSpace_4
push ecx
mov dword [0x499278], eax
call esi
mov edx, dword [0x49928c]
push str._grDepthRange_8
push edx
mov dword [0x499258], eax
call esi
mov dword [0x49925c], eax
mov eax, dword [0x49928c]
push str._grVertexLayout_12
push eax
call esi
mov ecx, dword [0x49928c]
push str._grGet_12
push ecx
mov dword [0x499254], eax
call esi
mov edx, dword [0x49928c]
push str._grGetString_4
push edx
mov dword [0x499238], eax
call esi
mov dword [0x499250], eax
mov eax, dword [0x49928c]
push str._grAlphaCombine_20
push eax
call esi
mov ecx, dword [0x49928c]
push str._grTexDownloadMipMap_16
push ecx
mov dword [0x49922c], eax
call esi
mov edx, dword [0x49928c]
push str._grTexMinAddress_4
push edx
mov dword [0x499208], eax
call esi
mov dword [0x499224], eax
mov eax, dword [0x49928c]
push str._grTexMaxAddress_4
push eax
call esi
mov ecx, dword [0x49928c]
push str._grTexCalcMemRequired_16
push ecx
mov dword [0x499244], eax
call esi
mov edx, dword [0x49928c]
push str._grTexFilterMode_12
push edx
mov dword [0x499228], eax
call esi
mov dword [0x499210], eax
mov eax, dword [0x49928c]
push str._grTexClampMode_12
push eax
call esi
mov ecx, dword [0x49928c]
mov dword [0x499260], eax
push str._grTexCombine_28
push ecx
call esi
mov edx, dword [0x49928c]
push str._grTexMipMapMode_12
push edx
mov dword [0x49924c], eax
call esi
mov dword [0x49927c], eax
mov eax, dword [0x49928c]
push str._grTexSource_16
push eax
call esi
mov ecx, dword [0x49928c]
push str._grQueryResolutions_8
push ecx
mov dword [0x499204], eax
call esi
mov edx, dword [0x49928c]
push str._grSelectContext_4
push edx
mov dword [0x499284], eax
call esi
mov dword [0x499218], eax
mov eax, dword [0x49928c]
push str._grEnable_4
push eax
call esi
mov ecx, dword [0x49928c]
push str._grDisable_4
push ecx
mov dword [0x499220], eax
call esi
mov ecx, dword [0x499280]
mov dword [0x4991e0], eax
test ecx, ecx
je 0x449743
mov ecx, dword [0x49923c]
test ecx, ecx
je 0x449743
mov ecx, dword [0x49926c]
test ecx, ecx
je 0x449743
mov ecx, dword [0x499274]
test ecx, ecx
je 0x449743
mov ecx, dword [0x49921c]
test ecx, ecx
je 0x449743
mov ecx, dword [0x499268]
test ecx, ecx
je 0x449743
mov ecx, dword [0x4991ec]
test ecx, ecx
je 0x449743
mov ecx, dword [0x49920c]
test ecx, ecx
je 0x449743
mov ecx, dword [0x499200]
test ecx, ecx
je 0x449743
mov ecx, dword [0x499240]
test ecx, ecx
je 0x449743
mov ecx, dword [0x499214]
test ecx, ecx
je 0x449743
mov ecx, dword [0x499230]
test ecx, ecx
je 0x449743
mov ecx, dword [0x4991e8]
test ecx, ecx
je 0x449743
mov ecx, dword [0x499248]
test ecx, ecx
je 0x449743
mov ecx, dword [0x499288]
test ecx, ecx
je 0x449743
mov ecx, dword [0x499264]
test ecx, ecx
je 0x449743
mov ecx, dword [0x499234]
test ecx, ecx
je 0x449743
mov ecx, dword [0x4991e4]
test ecx, ecx
je 0x449743
mov ecx, dword [0x499270]
test ecx, ecx
je 0x449743
mov ecx, dword [0x499278]
test ecx, ecx
je 0x449743
mov ecx, dword [0x499258]
test ecx, ecx
je 0x449743
mov ecx, dword [0x49925c]
test ecx, ecx
je 0x449743
mov ecx, dword [0x499254]
test ecx, ecx
je 0x449743
mov ecx, dword [0x499238]
test ecx, ecx
je 0x449743
mov edx, dword [0x499250]
test edx, edx
je 0x449743
mov edx, dword [0x49922c]
test edx, edx
je 0x449743
mov edx, dword [0x499208]
test edx, edx
je 0x449743
mov edx, dword [0x499224]
test edx, edx
je 0x449743
mov edx, dword [0x499244]
test edx, edx
je 0x449743
mov edx, dword [0x499228]
test edx, edx
je 0x449743
mov edx, dword [0x499210]
test edx, edx
je 0x449743
mov edx, dword [0x499260]
test edx, edx
je 0x449743
mov edx, dword [0x49924c]
test edx, edx
je 0x449743
mov edx, dword [0x49927c]
test edx, edx
je 0x449743
mov edx, dword [0x499204]
test edx, edx
je 0x449743
mov edx, dword [0x499284]
test edx, edx
je 0x449743
mov edx, dword [0x499218]
test edx, edx
je 0x449743
mov edx, dword [0x499220]
test edx, edx
je 0x449743
test eax, eax
je 0x449743
lea edx, [esp + 0x10]
mov dword [esp + 0x10], 0
push edx
push 4
push 0xf
call ecx
mov eax, dword [esp + 0x10]
mov ebx, 1
cmp eax, ebx
jl 0x449750
call dword [0x499280]
push 0
call dword [0x49926c]
mov ebp, dword [esp + 0xe8]
mov esi, dword [esp + 0xec]
sub esp, 0x10
mov ecx, dword [esp + 0x100]
mov eax, esp
mov edi, dword [esp + 0x104]
mov dword [eax], ebp
mov dword [eax + 4], esi
mov dword [eax + 8], ecx
mov dword [eax + 0xc], edi
call fcn.00450440
lea ecx, [edi - 0x3c]
add esp, 0x10
cmp ecx, 0x3c
ja case.0x44944c.69
xor edx, edx
mov dl, byte [ecx + 0x449788]
jmp dword [edx*4 + 0x449760]
xor eax, eax
jmp 0x4494ee
mov eax, ebx
jmp 0x4494ee
mov eax, 2
jmp 0x4494ee
mov eax, 3
jmp 0x4494ee
mov eax, 4
jmp 0x4494ee
mov eax, 5
jmp 0x4494ee
mov eax, 6
jmp 0x4494ee
mov eax, 7
jmp 0x4494ee
mov eax, 8
jmp 0x4494ee
mov dword [esp + 0x18], eax
or eax, 0xffffffff
mov dword [esp + 0x1c], eax
mov dword [esp + 0x20], eax
lea eax, [esp + 0x18]
push 0
push eax
mov dword [esp + 0x2c], ebx
call dword [0x499284]
mov esi, eax
push esi
call fcn.0043ed10
add esp, 4
mov ebx, eax
lea ecx, [esp + 0x18]
push ebx
push ecx
call dword [0x499284]
shr esi, 4
test esi, esi
jle 0x4494da
mov esi, dword [ebx + 4]
jmp 0x4494dc
xor esi, esi
push ebx
call fcn.00460b8f
mov eax, esi
mov esi, dword [esp + 0xf0]
add esp, 4
push 1
push 2
push 1
push 0
push eax
mov eax, dword [esp + 0x104]
sub esp, 0x10
mov edx, esp
mov dword [edx], ebp
mov dword [edx + 4], esi
mov dword [edx + 8], eax
mov dword [edx + 0xc], edi
call fcn.00450440
mov ebx, dword [esp + 0x108]
add esp, 0x10
mov ecx, dword [ebx]
push eax
push ecx
call dword [0x499274]
test eax, eax
mov dword [0x499290], eax
je 0x449750
push eax
call dword [0x499218]
mov eax, dword [0x499208]
mov edx, dword [esp + 0xf0]
mov ecx, dword [0x499224]
mov dword [esp + 0x28], eax
mov eax, dword [0x499228]
mov dword [0x4991f8], edx
mov edx, dword [0x499244]
mov dword [esp + 0x34], eax
mov eax, dword [0x49924c]
mov dword [esp + 0x2c], ecx
mov ecx, dword [0x499210]
mov dword [esp + 0x30], edx
mov edx, dword [0x499260]
mov dword [esp + 0x40], eax
lea eax, [esp + 0x14]
mov dword [0x4991f4], esi
mov dword [esp + 0x38], ecx
mov ecx, dword [0x49927c]
mov dword [esp + 0x3c], edx
mov edx, dword [0x499204]
push eax
xor esi, esi
push 4
push 0x24
mov dword [0x4991f0], ebp
mov dword [0x4991fc], edi
mov dword [esp + 0x50], ecx
mov dword [esp + 0x54], edx
mov dword [esp + 0x20], esi
call dword [0x499238]
lea ecx, [esp + 0x10]
mov dword [esp + 0x10], esi
push ecx
push 4
push 0x13
call dword [0x499238]
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x14]
lea edx, [esp + 0x28]
push edx
push eax
push ecx
call fcn.0045f300
add esp, 0xc
lea edx, [esp + 0x14]
push edx
push 4
push 0x23
call dword [0x499238]
mov edi, dword [esp + 0x14]
xor eax, eax
cmp edi, esi
lea ecx, [esp + 0x4c]
setne al
push ecx
mov dword [0x499298], eax
mov dword [esp + 0x50], 0x94
call dword [sym.imp.KERNEL32.dll_GetVersionExA]
test eax, eax
je 0x44972c
mov eax, dword [esp + 0x5c]
cmp eax, 1
jne 0x449655
lea edx, [esp + 0x14]
push esi
push edx
push eax
push 0x61
call dword [sym.imp.USER32.dll_SystemParametersInfoA]
mov dword [ebx + 4], esi
mov eax, 1
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xd0
ret
cmp eax, 2
jne 0x449705
mov eax, dword [esp + 0x50]
cmp eax, 4
ja 0x4496d1
jne 0x449705
mov edi, str.Service_Pack_3
lea esi, [esp + 0x60]
mov ecx, 0xf
xor eax, eax
repe cmpsb byte [esi], byte es:[edi]
je 0x4496d1
mov edi, str.Service_Pack_4
lea esi, [esp + 0x60]
mov ecx, 0xf
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
je 0x4496d1
mov edi, str.Service_Pack_5
lea esi, [esp + 0x60]
mov ecx, 0xf
xor eax, eax
repe cmpsb byte [esi], byte es:[edi]
je 0x4496d1
mov edi, str.Service_Pack_6
lea esi, [esp + 0x60]
mov ecx, 0xf
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
je 0x4496d1
mov edi, str.Service_Pack_6a
lea esi, [esp + 0x60]
mov ecx, 0x10
xor eax, eax
repe cmpsb byte [esi], byte es:[edi]
jne 0x449705
push 0
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
push eax
push 0x450650
push 0xd
call dword [sym.imp.USER32.dll_SetWindowsHookExA]
mov dword [0x499294], eax
mov dword [ebx + 4], 0
mov eax, 1
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xd0
ret
mov ecx, dword [ebx]
mov esi, dword [sym.imp.USER32.dll_RegisterHotKey]
push 9
push 1
push 0
push ecx
call esi
mov edx, dword [ebx]
push 0xd
push 1
push 1
push edx
call esi
mov eax, dword [ebx]
push 0x1b
push 1
push 2
push eax
call esi
mov dword [ebx + 4], 0
mov eax, 1
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xd0
ret
mov ecx, dword [0x49928c]
push ecx
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xd0
ret