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

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x25c
movzx eax, byte [esp + 0x274]
movzx ecx, byte [esp + 0x278]
test al, al
mov byte [esp + 0x43], al
jne 0x4644c1
mov eax, dword [esp + 0x270]
mov ebx, dword [eax + 0x14]
mov eax, dword [0x4e68b8]
mov word [esp + 0x70], 0x28
mov word [esp + 0x72], 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 [esp + 0x74], edx
jne 0x4642c8
mov edx, eax
and edx, 8
mov byte [esp + 0x78], 0
mov byte [esp + 0x7a], 8
mov byte [esp + 0x7c], 8
mov byte [esp + 0x7e], 8
mov byte [esp + 0x80], dl
mov edx, eax
shr edx, 2
and edx, 1
test ah, 0x80
mov byte [esp + 0x82], dl
mov edx, 4
mov byte [esp + 0x79], 0x18
mov byte [esp + 0x7b], 0
mov byte [esp + 0x7d], 0
mov byte [esp + 0x7f], 0
mov byte [esp + 0x81], 0
mov byte [esp + 0x83], 0
mov byte [esp + 0x84], 0
mov byte [esp + 0x85], 0
mov byte [esp + 0x86], 0
mov byte [esp + 0x87], 0x18
mov byte [esp + 0x88], 8
je 0x4642f0
mov byte [esp + 0x89], dl
mov byte [esp + 0x8a], cl
mov byte [esp + 0x8b], 0
mov dword [esp + 0x8c], 0
mov dword [esp + 0x90], 0
mov dword [esp + 0x94], 0
mov dword [esp + 4], 0xc
mov dword [esp], ebx
call dword [sym.imp.GDI32.dll_GetDeviceCaps]
sub esp, 8
lea esi, [esp + 0x70]
mov byte [esp + 0x79], al
mov dword [esp + 4], esi
mov dword [esp], ebx
call dword [sym.imp.GDI32.dll_ChoosePixelFormat]
sub esp, 8
mov ebp, eax
test dword [0x4e68b8], 0x1080
jne 0x464323
test ebp, ebp
je 0x4642b2
cmp byte [esp + 0x43], 0
mov edi, 1
je 0x464500
mov dword [esp], ebx
call dword [sym.imp.GDI32.dll_DeleteDC]
mov eax, edi
sub esp, 4
add esp, 0x25c
pop ebx
pop esi
pop edi
pop ebp
ret
xor edi, edi
cmp byte [esp + 0x43], 0
jne 0x464299
add esp, 0x25c
mov eax, edi
pop ebx
pop esi
pop edi
pop ebp
ret
mov byte [esp + 0x78], 1
mov byte [esp + 0x7a], 0
mov byte [esp + 0x7c], 0
mov byte [esp + 0x7e], 0
mov byte [esp + 0x80], 0
jmp 0x4641a7
test ah, 0x40
mov edx, 3
jne 0x464210
test ah, 0x20
mov edx, 2
jne 0x464210
xor edx, edx
test ah, 0x10
je 0x464210
movzx edx, byte [0x4e6930]
jmp 0x464210
call dword [sym.imp.OPENGL32.DLL_wglGetCurrentContext]
mov dword [esp + 0x4c], eax
call dword [sym.imp.OPENGL32.DLL_wglGetCurrentDC]
lea edx, [esp + 0x98]
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 + 0x98], 0x23
mov dword [esp + 0xbc], str.FREEGLUT_dummy
mov dword [esp + 0x9c], eax
mov eax, dword [0xaafa20]
mov dword [esp + 0xa8], eax
call dword [sym.imp.USER32.dll_RegisterClassA]
mov edi, dword [0xaafa20]
sub esp, 4
call fcn.0040aa3d
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], 0x5036eb
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], esi
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 + 0x3c], 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.00463ee0
test eax, eax
jne 0x464528
mov eax, dword [esp + 0x4c]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x50]
mov dword [esp], eax
call dword [esp + 0x3c]
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 [0xaafa20]
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 0x464285
mov byte [esp + 0x38], 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 + 0x38]
jmp 0x464150
mov dword [esp + 8], esi
mov dword [esp + 4], ebp
mov dword [esp], ebx
call dword [sym.imp.GDI32.dll_SetPixelFormat]
sub esp, 0xc
test eax, eax
setne dl
add esp, 0x25c
mov edi, edx
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 0x464459
movzx eax, byte [esp + 0x79]
mov edx, dword [0x4e68b8]
mov dword [esp + 0x68], 0
mov dword [esp + 0x6c], 0
mov dword [esp + 0xdc], eax
movzx eax, byte [esp + 0x80]
mov dword [esp + 0xc0], 0x2001
mov dword [esp + 0xc4], 1
mov dword [esp + 0xc8], 0x2010
mov dword [esp + 0xe4], eax
movzx eax, byte [esp + 0x87]
mov dword [esp + 0xcc], 1
mov dword [esp + 0xd0], 0x2003
mov dword [esp + 0xd4], 0x2027
mov dword [esp + 0xec], eax
movzx eax, byte [esp + 0x88]
mov dword [esp + 0xd8], 0x2014
mov dword [esp + 0xe0], 0x201b
mov dword [esp + 0xe8], 0x2022
mov dword [esp + 0xf4], eax
mov eax, edx
shr eax, 1
and eax, 1
and dh, 0x10
mov dword [esp + 0xf0], 0x2023
mov dword [esp + 0xf8], 0x2011
mov dword [esp + 0xfc], eax
je 0x4646f0
mov dword [esp + 0x100], 0x20a9
mov edx, 0x4c
mov dword [esp + 0x104], 1
mov dword [esp + 0x5c], 0x58
mov dword [esp + 0x58], 0x54
mov dword [esp + 0x34], 0x50
mov dword [esp + 0x54], 0x48
mov eax, dword [esp + 0x54]
mov dword [esp + eax + 0xc0], 0x2041
mov eax, dword [0x4e6934]
mov dword [esp + edx + 0xc0], 1
mov edx, dword [esp + 0x34]
mov dword [esp + edx + 0xc0], 0x2042
mov edx, dword [esp + 0x58]
mov dword [esp + edx + 0xc0], eax
mov eax, dword [esp + 0x5c]
mov dword [esp + eax + 0xc0], 0
lea eax, [esp + 0x64]
mov dword [esp + 0x14], eax
lea eax, [esp + 0x60]
mov dword [esp + 0x10], eax
lea eax, [esp + 0x68]
mov dword [esp + 8], eax
lea eax, [esp + 0xc0]
mov dword [esp + 0xc], 1
mov dword [esp + 4], eax
mov dword [esp], edi
call ecx
sub esp, 0x18
test eax, eax
je 0x464459
mov ecx, dword [esp + 0x64]
test ecx, ecx
cmovne ebp, dword [esp + 0x60]
jmp 0x464459
mov dword [esp + 0x5c], 0x50
mov edx, 0x44
mov dword [esp + 0x58], 0x4c
mov dword [esp + 0x34], 0x48
mov dword [esp + 0x54], 0x40
jmp 0x46465c