Function at 0x497840
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x23c
movzx esi, byte [esp + 0x254]
movzx ecx, byte [esp + 0x258]
mov eax, esi
test al, al
jne 0x497bf0
mov eax, dword [esp + 0x250]
mov ebx, dword [eax + 0x14]
mov eax, dword [0x51a9b8]
mov word [0xa38880], 0x28
mov word [0xa38882], 1
mov edx, eax
and edx, 2
cmp edx, 1
sbb edx, edx
add edx, 0x25
mov edi, edx
or edi, 2
test ah, 1
cmovne edx, edi
test al, 1
mov dword [0xa38884], edx
jne 0x4979f0
mov edx, eax
and edx, 8
mov byte [0xa38888], 0
mov byte [0xa3888a], 8
mov byte [0xa3888c], 8
mov byte [0xa3888e], 8
mov byte [0xa38890], dl
mov edx, eax
shr edx, 2
and edx, 1
test ah, 0x80
mov byte [0xa38892], dl
mov edx, 4
mov byte [0xa38889], 0x18
mov byte [0xa3888b], 0
mov byte [0xa3888d], 0
mov byte [0xa3888f], 0
mov byte [0xa38891], 0
mov byte [0xa38893], 0
mov byte [0xa38894], 0
mov byte [0xa38895], 0
mov byte [0xa38896], 0
mov byte [0xa38897], 0x18
mov byte [0xa38898], 8
je 0x497a18
mov byte [0xa38899], dl
mov byte [0xa3889a], cl
mov byte [0xa3889b], 0
mov dword [0xa3889c], 0
mov dword [0xa388a0], 0
mov dword [0xa388a4], 0
mov dword [esp + 4], 0xc
mov dword [esp], ebx
call dword [sym.imp.GDI32.dll_GetDeviceCaps]
sub esp, 8
mov byte [0xa38889], al
mov dword [esp + 4], 0xa38880
mov dword [esp], ebx
call dword [sym.imp.GDI32.dll_ChoosePixelFormat]
sub esp, 8
mov ebp, eax
test dword [0x51a9b8], 0x1080
jne 0x497a50
test ebp, ebp
je 0x4979d7
mov edx, esi
mov edi, 1
test dl, dl
je 0x497c28
mov dword [esp], ebx
call dword [sym.imp.GDI32.dll_DeleteDC]
mov eax, edi
sub esp, 4
add esp, 0x23c
pop ebx
pop esi
pop edi
pop ebp
ret
mov edx, esi
xor edi, edi
test dl, dl
jne 0x4979be
add esp, 0x23c
mov eax, edi
pop ebx
pop esi
pop edi
pop ebp
ret
mov byte [0xa38888], 1
mov byte [0xa3888a], 0
mov byte [0xa3888c], 0
mov byte [0xa3888e], 0
mov byte [0xa38890], 0
jmp 0x4978d2
test ah, 0x40
mov edx, 3
jne 0x49793b
test ah, 0x20
mov edx, 2
jne 0x49793b
xor edx, edx
test ah, 0x10
je 0x49793b
movzx edx, byte [0x51aa30]
jmp 0x49793b
call dword [sym.imp.OPENGL32.DLL_wglGetCurrentContext]
mov dword [esp + 0x4c], eax
call dword [sym.imp.OPENGL32.DLL_wglGetCurrentDC]
lea edx, [esp + 0x78]
mov ecx, 0xa
mov edi, edx
mov dword [esp + 0x50], eax
xor eax, eax
rep stosd dword es:[edi], eax
mov eax, dword [sym.imp.USER32.dll_DefWindowProcA]
mov dword [esp], edx
mov dword [esp + 0x78], 0x23
mov dword [esp + 0x9c], str.FREEGLUT_dummy
mov dword [esp + 0x7c], eax
mov eax, dword [0xa387c0]
mov dword [esp + 0x88], eax
call dword [sym.imp.USER32.dll_RegisterClassA]
mov edi, dword [0xa387c0]
sub esp, 4
call fcn.004363c1
mov dword [esp + 0x28], edi
mov dword [esp + 0x2c], 0
mov dword [esp + 0x24], 0
mov dword [esp + 0x20], 0
mov dword [esp + 0x1c], 0
imul eax, eax, 0xcf0000
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 0
or eax, 0x6cb0000
mov dword [esp + 0xc], eax
mov dword [esp + 8], 0x54a1b1
mov dword [esp + 4], str.FREEGLUT_dummy
mov dword [esp], 0
call dword [sym.imp.USER32.dll_CreateWindowExA]
sub esp, 0x30
mov dword [esp + 0x44], eax
mov dword [esp], eax
call dword [sym.imp.USER32.dll_GetDC]
sub esp, 4
mov edi, eax
mov dword [esp + 8], 0xa38880
mov dword [esp + 4], ebp
mov dword [esp], eax
call dword [sym.imp.GDI32.dll_SetPixelFormat]
sub esp, 0xc
mov dword [esp], edi
call dword [sym.imp.OPENGL32.DLL_wglCreateContext]
mov edx, dword [sym.imp.OPENGL32.DLL_wglMakeCurrent]
sub esp, 4
mov dword [esp + 0x40], edx
mov dword [esp + 0x48], eax
mov dword [esp + 4], eax
mov dword [esp], edi
call edx
mov edx, str.WGL_ARB_multisample
mov eax, edi
sub esp, 8
call fcn.00497200
test eax, eax
jne 0x497c54
mov eax, dword [esp + 0x4c]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x50]
mov dword [esp], eax
call dword [esp + 0x40]
sub esp, 8
mov eax, dword [esp + 0x48]
mov dword [esp], eax
call dword [sym.imp.OPENGL32.DLL_wglDeleteContext]
sub esp, 4
mov eax, dword [esp + 0x44]
mov dword [esp + 4], edi
mov dword [esp], eax
call dword [sym.imp.USER32.dll_ReleaseDC]
sub esp, 8
mov eax, dword [esp + 0x44]
mov dword [esp], eax
call dword [sym.imp.USER32.dll_DestroyWindow]
mov eax, dword [0xa387c0]
sub esp, 4
mov dword [esp + 4], eax
mov dword [esp], str.FREEGLUT_dummy
call dword [sym.imp.USER32.dll_UnregisterClassA]
sub esp, 8
jmp 0x4979ab
mov byte [esp + 0x3c], cl
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], str.DISPLAY
call dword [sym.imp.GDI32.dll_CreateDCA]
sub esp, 0x10
mov ebx, eax
movzx ecx, byte [esp + 0x3c]
jmp 0x49786e
mov dword [esp + 4], ebp
mov dword [esp], ebx
mov dword [esp + 8], 0xa38880
call dword [sym.imp.GDI32.dll_SetPixelFormat]
sub esp, 0xc
test eax, eax
setne al
add esp, 0x23c
mov edi, eax
pop ebx
mov eax, edi
pop esi
pop edi
pop ebp
ret
mov dword [esp], str.wglChoosePixelFormatARB
call dword [sym.imp.OPENGL32.DLL_wglGetProcAddress]
sub esp, 4
test eax, eax
mov ecx, eax
je 0x497b81
movzx eax, byte [0xa38889]
mov edx, dword [0x51a9b8]
mov dword [esp + 0x70], 0
mov dword [esp + 0x74], 0
mov dword [esp + 0xbc], eax
movzx eax, byte [0xa38890]
mov dword [esp + 0xa0], 0x2001
mov dword [esp + 0xa4], 1
mov dword [esp + 0xa8], 0x2010
mov dword [esp + 0xc4], eax
movzx eax, byte [0xa38897]
mov dword [esp + 0xac], 1
mov dword [esp + 0xb0], 0x2003
mov dword [esp + 0xb4], 0x2027
mov dword [esp + 0xcc], eax
movzx eax, byte [0xa38898]
mov dword [esp + 0xb8], 0x2014
mov dword [esp + 0xc0], 0x201b
mov dword [esp + 0xc8], 0x2022
mov dword [esp + 0xd4], eax
mov eax, edx
shr eax, 1
and eax, 1
and dh, 0x10
mov dword [esp + 0xd0], 0x2023
mov dword [esp + 0xd8], 0x2011
mov dword [esp + 0xdc], eax
je 0x497e20
mov dword [esp + 0xe0], 0x20a9
mov edx, 0x4c
mov dword [esp + 0xe4], 1
mov dword [esp + 0x5c], 0x58
mov dword [esp + 0x58], 0x54
mov dword [esp + 0x38], 0x50
mov dword [esp + 0x54], 0x48
mov eax, dword [esp + 0x54]
mov dword [esp + eax + 0xa0], 0x2041
mov eax, dword [0x51aa34]
mov dword [esp + edx + 0xa0], 1
mov edx, dword [esp + 0x38]
mov dword [esp + edx + 0xa0], 0x2042
mov edx, dword [esp + 0x58]
mov dword [esp + edx + 0xa0], eax
mov eax, dword [esp + 0x5c]
mov dword [esp + eax + 0xa0], 0
lea eax, [esp + 0x6c]
mov dword [esp + 0x14], eax
lea eax, [esp + 0x68]
mov dword [esp + 0x10], eax
lea eax, [esp + 0x70]
mov dword [esp + 8], eax
lea eax, [esp + 0xa0]
mov dword [esp + 0xc], 1
mov dword [esp + 4], eax
mov dword [esp], edi
call ecx
sub esp, 0x18
test eax, eax
je 0x497b81
mov eax, dword [esp + 0x6c]
test eax, eax
cmovne ebp, dword [esp + 0x68]
jmp 0x497b81
mov dword [esp + 0x5c], 0x50
mov edx, 0x44
mov dword [esp + 0x58], 0x4c
mov dword [esp + 0x38], 0x48
mov dword [esp + 0x54], 0x40
jmp 0x497d87