; Listing generated by Microsoft (R) Optimizing Compiler Version 19.37.32824.0 include listing.inc INCLUDELIB OLDNAMES PUBLIC ??_C@_0CE@JBLPENML@Invalid?5context?5creation?5API?50x@ ; `string' PUBLIC ??_C@_0BK@EIOPBJJH@Invalid?5client?5API?50x?$CF08X@ ; `string' PUBLIC ??_C@_0DE@OKHDGAJN@Context?5creation?5APIs?5do?5not?5ma@ ; `string' PUBLIC ??_C@_0BN@DHKEBMCG@Invalid?5OpenGL?5version?5?$CFi?4?$CFi@ ; `string' PUBLIC ??_C@_0BO@PCKHNBJ@Invalid?5OpenGL?5profile?50x?$CF08X@ ; `string' PUBLIC ??_C@_0ED@FEABOOIM@Context?5profiles?5are?5only?5defin@ ; `string' PUBLIC ??_C@_0EH@CMDCLIEA@Forward?9compatibility?5is?5only?5d@ ; `string' PUBLIC ??_C@_0CA@LFIDGAHJ@Invalid?5OpenGL?5ES?5version?5?$CFi?4?$CFi@ ; `string' PUBLIC ??_C@_0CH@PNNMGINB@Invalid?5context?5robustness?5mode@ ; `string' PUBLIC ??_C@_0CI@JDDJIGNN@Invalid?5context?5release?5behavio@ ; `string' PUBLIC ??_C@_0CA@LDAANPIM@Entry?5point?5retrieval?5is?5broken@ ; `string' PUBLIC ??_C@_0CK@DKAFEDIC@OpenGL?5version?5string?5retrieval@ ; `string' PUBLIC ??_C@_0CN@GOPDCGGI@OpenGL?5ES?5version?5string?5retrie@ ; `string' PUBLIC ??_C@_08FOJKHHJA@?$CFd?4?$CFd?4?$CFd@ ; `string' PUBLIC ??_C@_0CK@DDNMEIKD@No?5version?5found?5in?5OpenGL?5vers@ ; `string' PUBLIC ??_C@_0CN@FALFGDO@No?5version?5found?5in?5OpenGL?5ES?5v@ ; `string' PUBLIC ??_C@_0DC@KIAJNHJN@Requested?5OpenGL?5version?5?$CFi?4?$CFi?0@ ; `string' PUBLIC ??_C@_0DF@EFFMOKHE@Requested?5OpenGL?5ES?5version?5?$CFi?4@ ; `string' PUBLIC ??_C@_0BC@CLDFFND@GL_EXT_robustness@ ; `string' PUBLIC ??_C@_0EK@HBJBDMAL@Cannot?5make?5current?5with?5a?5wind@ ; `string' PUBLIC ??_C@_0EI@PJFDHBJK@Cannot?5swap?5buffers?5of?5a?5window@ ; `string' PUBLIC ??_C@_0EH@BEBOCAGI@Cannot?5set?5swap?5interval?5withou@ ; `string' PUBLIC ??_C@_0EF@NMJGLODJ@Cannot?5query?5extension?5without?5@ ; `string' PUBLIC ??_C@_0CJ@JDBBFPLM@Extension?5name?5cannot?5be?5an?5emp@ ; `string' PUBLIC ??_C@_0CF@KMMHNOMI@Extension?5string?5retrieval?5is?5b@ ; `string' PUBLIC ??_C@_0EH@LGPPFAO@Cannot?5query?5entry?5point?5withou@ ; `string' ; COMDAT ??_C@_0EH@LGPPFAO@Cannot?5query?5entry?5point?5withou@ CONST SEGMENT ??_C@_0EH@LGPPFAO@Cannot?5query?5entry?5point?5withou@ DB 'Cannot query e' DB 'ntry point without a current OpenGL or OpenGL ES context', 00H ; `string' CONST ENDS ; COMDAT ??_C@_0CF@KMMHNOMI@Extension?5string?5retrieval?5is?5b@ CONST SEGMENT ??_C@_0CF@KMMHNOMI@Extension?5string?5retrieval?5is?5b@ DB 'Extension str' DB 'ing retrieval is broken', 00H ; `string' CONST ENDS ; COMDAT ??_C@_0CJ@JDBBFPLM@Extension?5name?5cannot?5be?5an?5emp@ CONST SEGMENT ??_C@_0CJ@JDBBFPLM@Extension?5name?5cannot?5be?5an?5emp@ DB 'Extension na' DB 'me cannot be an empty string', 00H ; `string' CONST ENDS ; COMDAT ??_C@_0EF@NMJGLODJ@Cannot?5query?5extension?5without?5@ CONST SEGMENT ??_C@_0EF@NMJGLODJ@Cannot?5query?5extension?5without?5@ DB 'Cannot query ' DB 'extension without a current OpenGL or OpenGL ES context', 00H ; `string' CONST ENDS ; COMDAT ??_C@_0EH@BEBOCAGI@Cannot?5set?5swap?5interval?5withou@ CONST SEGMENT ??_C@_0EH@BEBOCAGI@Cannot?5set?5swap?5interval?5withou@ DB 'Cannot set sw' DB 'ap interval without a current OpenGL or OpenGL ES context', 00H ; `string' CONST ENDS ; COMDAT ??_C@_0EI@PJFDHBJK@Cannot?5swap?5buffers?5of?5a?5window@ CONST SEGMENT ??_C@_0EI@PJFDHBJK@Cannot?5swap?5buffers?5of?5a?5window@ DB 'Cannot swap ' DB 'buffers of a window that has no OpenGL or OpenGL ES context', 00H ; `string' CONST ENDS ; COMDAT ??_C@_0EK@HBJBDMAL@Cannot?5make?5current?5with?5a?5wind@ CONST SEGMENT ??_C@_0EK@HBJBDMAL@Cannot?5make?5current?5with?5a?5wind@ DB 'Cannot make ' DB 'current with a window that has no OpenGL or OpenGL ES context' DB 00H ; `string' CONST ENDS ; COMDAT ??_C@_0BC@CLDFFND@GL_EXT_robustness@ CONST SEGMENT ??_C@_0BC@CLDFFND@GL_EXT_robustness@ DB 'GL_EXT_robustness', 00H ; `string' CONST ENDS ; COMDAT ??_C@_0DF@EFFMOKHE@Requested?5OpenGL?5ES?5version?5?$CFi?4@ CONST SEGMENT ??_C@_0DF@EFFMOKHE@Requested?5OpenGL?5ES?5version?5?$CFi?4@ DB 'Requested' DB ' OpenGL ES version %i.%i, got version %i.%i', 00H ; `string' CONST ENDS ; COMDAT ??_C@_0DC@KIAJNHJN@Requested?5OpenGL?5version?5?$CFi?4?$CFi?0@ CONST SEGMENT ??_C@_0DC@KIAJNHJN@Requested?5OpenGL?5version?5?$CFi?4?$CFi?0@ DB 'Reques' DB 'ted OpenGL version %i.%i, got version %i.%i', 00H ; `string' CONST ENDS ; COMDAT ??_C@_0CN@FALFGDO@No?5version?5found?5in?5OpenGL?5ES?5v@ CONST SEGMENT ??_C@_0CN@FALFGDO@No?5version?5found?5in?5OpenGL?5ES?5v@ DB 'No version f' DB 'ound in OpenGL ES version string', 00H ; `string' CONST ENDS ; COMDAT ??_C@_0CK@DDNMEIKD@No?5version?5found?5in?5OpenGL?5vers@ CONST SEGMENT ??_C@_0CK@DDNMEIKD@No?5version?5found?5in?5OpenGL?5vers@ DB 'No version f' DB 'ound in OpenGL version string', 00H ; `string' CONST ENDS ; COMDAT ??_C@_08FOJKHHJA@?$CFd?4?$CFd?4?$CFd@ CONST SEGMENT ??_C@_08FOJKHHJA@?$CFd?4?$CFd?4?$CFd@ DB '%d.%d.%d', 00H ; `string' CONST ENDS ; COMDAT ??_C@_0CN@GOPDCGGI@OpenGL?5ES?5version?5string?5retrie@ CONST SEGMENT ??_C@_0CN@GOPDCGGI@OpenGL?5ES?5version?5string?5retrie@ DB 'OpenGL ES ver' DB 'sion string retrieval is broken', 00H ; `string' CONST ENDS ; COMDAT ??_C@_0CK@DKAFEDIC@OpenGL?5version?5string?5retrieval@ CONST SEGMENT ??_C@_0CK@DKAFEDIC@OpenGL?5version?5string?5retrieval@ DB 'OpenGL version' DB ' string retrieval is broken', 00H ; `string' CONST ENDS ; COMDAT ??_C@_0CA@LDAANPIM@Entry?5point?5retrieval?5is?5broken@ CONST SEGMENT ??_C@_0CA@LDAANPIM@Entry?5point?5retrieval?5is?5broken@ DB 'Entry point r' DB 'etrieval is broken', 00H ; `string' CONST ENDS ; COMDAT ??_C@_0CI@JDDJIGNN@Invalid?5context?5release?5behavio@ CONST SEGMENT ??_C@_0CI@JDDJIGNN@Invalid?5context?5release?5behavio@ DB 'Invalid contex' DB 't release behavior 0x%08X', 00H ; `string' CONST ENDS ; COMDAT ??_C@_0CH@PNNMGINB@Invalid?5context?5robustness?5mode@ CONST SEGMENT ??_C@_0CH@PNNMGINB@Invalid?5context?5robustness?5mode@ DB 'Invalid contex' DB 't robustness mode 0x%08X', 00H ; `string' CONST ENDS ; COMDAT ??_C@_0CA@LFIDGAHJ@Invalid?5OpenGL?5ES?5version?5?$CFi?4?$CFi@ CONST SEGMENT ??_C@_0CA@LFIDGAHJ@Invalid?5OpenGL?5ES?5version?5?$CFi?4?$CFi@ DB 'Invali' DB 'd OpenGL ES version %i.%i', 00H ; `string' CONST ENDS ; COMDAT ??_C@_0EH@CMDCLIEA@Forward?9compatibility?5is?5only?5d@ CONST SEGMENT ??_C@_0EH@CMDCLIEA@Forward?9compatibility?5is?5only?5d@ DB 'Forward-compa' DB 'tibility is only defined for OpenGL version 3.0 and above', 00H ; `string' CONST ENDS ; COMDAT ??_C@_0ED@FEABOOIM@Context?5profiles?5are?5only?5defin@ CONST SEGMENT ??_C@_0ED@FEABOOIM@Context?5profiles?5are?5only?5defin@ DB 'Context profi' DB 'les are only defined for OpenGL version 3.2 and above', 00H ; `string' CONST ENDS ; COMDAT ??_C@_0BO@PCKHNBJ@Invalid?5OpenGL?5profile?50x?$CF08X@ CONST SEGMENT ??_C@_0BO@PCKHNBJ@Invalid?5OpenGL?5profile?50x?$CF08X@ DB 'Invalid OpenGL' DB ' profile 0x%08X', 00H ; `string' CONST ENDS ; COMDAT ??_C@_0BN@DHKEBMCG@Invalid?5OpenGL?5version?5?$CFi?4?$CFi@ CONST SEGMENT ??_C@_0BN@DHKEBMCG@Invalid?5OpenGL?5version?5?$CFi?4?$CFi@ DB 'Invalid Op' DB 'enGL version %i.%i', 00H ; `string' CONST ENDS ; COMDAT ??_C@_0DE@OKHDGAJN@Context?5creation?5APIs?5do?5not?5ma@ CONST SEGMENT ??_C@_0DE@OKHDGAJN@Context?5creation?5APIs?5do?5not?5ma@ DB 'Context crea' DB 'tion APIs do not match between contexts', 00H ; `string' CONST ENDS ; COMDAT ??_C@_0BK@EIOPBJJH@Invalid?5client?5API?50x?$CF08X@ CONST SEGMENT ??_C@_0BK@EIOPBJJH@Invalid?5client?5API?50x?$CF08X@ DB 'Invalid client AP' DB 'I 0x%08X', 00H ; `string' CONST ENDS ; COMDAT ??_C@_0CE@JBLPENML@Invalid?5context?5creation?5API?50x@ CONST SEGMENT ??_C@_0CE@JBLPENML@Invalid?5context?5creation?5API?50x@ DB 'Invalid conte' DB 'xt creation API 0x%08X', 00H ; `string' PUBLIC glfwGetProcAddress PUBLIC glfwExtensionSupported PUBLIC glfwSwapInterval PUBLIC glfwSwapBuffers PUBLIC glfwGetCurrentContext PUBLIC glfwMakeContextCurrent PUBLIC _glfwStringInExtensionString PUBLIC _glfwRefreshContextAttribs PUBLIC _glfwChooseFBConfig PUBLIC _glfwIsValidContextConfig PUBLIC sscanf PUBLIC _vsscanf_l ; COMDAT pdata pdata SEGMENT $pdata$glfwGetProcAddress DD imagerel $LN10 DD imagerel $LN10+95 DD imagerel $unwind$glfwGetProcAddress pdata ENDS ; COMDAT pdata pdata SEGMENT $pdata$glfwExtensionSupported DD imagerel $LN39 DD imagerel $LN39+72 DD imagerel $unwind$glfwExtensionSupported pdata ENDS ; COMDAT pdata pdata SEGMENT $pdata$0$glfwExtensionSupported DD imagerel $LN39+72 DD imagerel $LN39+148 DD imagerel $chain$0$glfwExtensionSupported pdata ENDS ; COMDAT pdata pdata SEGMENT $pdata$1$glfwExtensionSupported DD imagerel $LN39+148 DD imagerel $LN39+253 DD imagerel $chain$1$glfwExtensionSupported pdata ENDS ; COMDAT pdata pdata SEGMENT $pdata$2$glfwExtensionSupported DD imagerel $LN39+253 DD imagerel $LN39+277 DD imagerel $chain$2$glfwExtensionSupported pdata ENDS ; COMDAT pdata pdata SEGMENT $pdata$4$glfwExtensionSupported DD imagerel $LN39+277 DD imagerel $LN39+336 DD imagerel $chain$4$glfwExtensionSupported pdata ENDS ; COMDAT pdata pdata SEGMENT $pdata$glfwSwapInterval DD imagerel $LN10 DD imagerel $LN10+87 DD imagerel $unwind$glfwSwapInterval pdata ENDS ; COMDAT pdata pdata SEGMENT $pdata$glfwGetCurrentContext DD imagerel $LN7 DD imagerel $LN7+49 DD imagerel $unwind$glfwGetCurrentContext pdata ENDS ; COMDAT pdata pdata SEGMENT $pdata$glfwMakeContextCurrent DD imagerel $LN18 DD imagerel $LN18+147 DD imagerel $unwind$glfwMakeContextCurrent pdata ENDS ; COMDAT pdata pdata SEGMENT $pdata$_glfwStringInExtensionString DD imagerel $LN26 DD imagerel $LN26+129 DD imagerel $unwind$_glfwStringInExtensionString pdata ENDS ; COMDAT pdata pdata SEGMENT $pdata$_glfwRefreshContextAttribs DD imagerel $LN227 DD imagerel $LN227+1531 DD imagerel $unwind$_glfwRefreshContextAttribs pdata ENDS ; COMDAT pdata pdata SEGMENT $pdata$_glfwChooseFBConfig DD imagerel $LN68 DD imagerel $LN68+34 DD imagerel $unwind$_glfwChooseFBConfig pdata ENDS ; COMDAT pdata pdata SEGMENT $pdata$3$_glfwChooseFBConfig DD imagerel $LN68+34 DD imagerel $LN68+472 DD imagerel $chain$3$_glfwChooseFBConfig pdata ENDS ; COMDAT pdata pdata SEGMENT $pdata$4$_glfwChooseFBConfig DD imagerel $LN68+472 DD imagerel $LN68+483 DD imagerel $chain$4$_glfwChooseFBConfig pdata ENDS ; COMDAT pdata pdata SEGMENT $pdata$_glfwIsValidContextConfig DD imagerel $LN34 DD imagerel $LN34+575 DD imagerel $unwind$_glfwIsValidContextConfig pdata ENDS ; COMDAT pdata pdata SEGMENT $pdata$sscanf DD imagerel $LN6 DD imagerel $LN6+82 DD imagerel $unwind$sscanf pdata ENDS ; COMDAT pdata pdata SEGMENT $pdata$_vsscanf_l DD imagerel $LN4 DD imagerel $LN4+81 DD imagerel $unwind$_vsscanf_l ; COMDAT xdata xdata SEGMENT $unwind$_vsscanf_l DD 060f01H DD 09640fH DD 08340fH DD 0700b520fH xdata ENDS ; COMDAT xdata xdata SEGMENT $unwind$sscanf DD 041601H DD 070125216H DD 030106011H xdata ENDS ; COMDAT xdata xdata SEGMENT $unwind$_glfwIsValidContextConfig DD 010401H DD 04204H xdata ENDS ; COMDAT xdata xdata SEGMENT $chain$4$_glfwChooseFBConfig DD 021H DD imagerel $LN68 DD imagerel $LN68+34 DD imagerel $unwind$_glfwChooseFBConfig xdata ENDS ; COMDAT xdata xdata SEGMENT $chain$3$_glfwChooseFBConfig DD 081b21H DD 07741bH DD 066416H DD 05340dH DD 08d405H DD imagerel $LN68 DD imagerel $LN68+34 DD imagerel $unwind$_glfwChooseFBConfig xdata ENDS ; COMDAT xdata xdata SEGMENT $unwind$_glfwChooseFBConfig DD 040801H DD 0e006f008H DD 05002c004H xdata ENDS ; COMDAT xdata xdata SEGMENT $unwind$_glfwRefreshContextAttribs DD 0aec19H DD 015f4ecH DD 01474ddH DD 0e008b20cH DD 06004d006H DD 030025003H DD imagerel __GSHandlerCheck DD 058H xdata ENDS ; COMDAT xdata xdata SEGMENT $unwind$_glfwStringInExtensionString DD 040a01H DD 06340aH DD 07006320aH xdata ENDS ; COMDAT xdata xdata SEGMENT $unwind$glfwMakeContextCurrent DD 020601H DD 030023206H xdata ENDS ; COMDAT xdata xdata SEGMENT $unwind$glfwGetCurrentContext DD 010401H DD 04204H xdata ENDS ; COMDAT xdata xdata SEGMENT $unwind$glfwSwapInterval DD 020601H DD 030023206H xdata ENDS ; COMDAT xdata xdata SEGMENT $chain$4$glfwExtensionSupported DD 040021H DD 0a7400H DD 093400H DD imagerel $LN39 DD imagerel $LN39+72 DD imagerel $unwind$glfwExtensionSupported xdata ENDS ; COMDAT xdata xdata SEGMENT $chain$2$glfwExtensionSupported DD 021H DD imagerel $LN39+72 DD imagerel $LN39+148 DD imagerel $chain$0$glfwExtensionSupported xdata ENDS ; COMDAT xdata xdata SEGMENT $chain$1$glfwExtensionSupported DD 020521H DD 093405H DD imagerel $LN39+72 DD imagerel $LN39+148 DD imagerel $chain$0$glfwExtensionSupported xdata ENDS ; COMDAT xdata xdata SEGMENT $chain$0$glfwExtensionSupported DD 020521H DD 0a7405H DD imagerel $LN39 DD imagerel $LN39+72 DD imagerel $unwind$glfwExtensionSupported xdata ENDS ; COMDAT xdata xdata SEGMENT $unwind$glfwExtensionSupported DD 021519H DD 060025206H DD imagerel __GSHandlerCheck DD 028H xdata ENDS ; COMDAT xdata xdata SEGMENT $unwind$glfwGetProcAddress DD 020601H DD 030023206H ; Function compile flags: /Ogtpy ; File C:\Program Files (x86)\Windows Kits\10\Include\10.0.22621.0\ucrt\stdio.h ; COMDAT _vsscanf_l _TEXT SEGMENT _Buffer$ = 64 _Format$ = 72 _Locale$dead$ = 80 _ArgList$ = 88 _vsscanf_l PROC ; COMDAT ; 2152 : { $LN4: 00000 48 89 5c 24 08 mov QWORD PTR [rsp+8], rbx 00005 48 89 74 24 10 mov QWORD PTR [rsp+16], rsi 0000a 57 push rdi 0000b 48 83 ec 30 sub rsp, 48 ; 00000030H 0000f 49 8b d9 mov rbx, r9 00012 48 8b fa mov rdi, rdx 00015 48 8b f1 mov rsi, rcx ; 2153 : return __stdio_common_vsscanf( 00018 e8 00 00 00 00 call __local_stdio_scanf_options 0001d 48 89 5c 24 28 mov QWORD PTR [rsp+40], rbx 00022 4c 8b cf mov r9, rdi 00025 49 c7 c0 ff ff ff ff mov r8, -1 0002c 48 c7 44 24 20 00 00 00 00 mov QWORD PTR [rsp+32], 0 00035 48 8b d6 mov rdx, rsi 00038 48 8b 08 mov rcx, QWORD PTR [rax] 0003b ff 15 00 00 00 00 call QWORD PTR __imp___stdio_common_vsscanf ; 2154 : _CRT_INTERNAL_LOCAL_SCANF_OPTIONS, ; 2155 : _Buffer, (size_t)-1, _Format, _Locale, _ArgList); ; 2156 : } 00041 48 8b 5c 24 40 mov rbx, QWORD PTR [rsp+64] 00046 48 8b 74 24 48 mov rsi, QWORD PTR [rsp+72] 0004b 48 83 c4 30 add rsp, 48 ; 00000030H 0004f 5f pop rdi 00050 c3 ret 0 _vsscanf_l ENDP _TEXT ENDS ; Function compile flags: /Ogtpy ; File C:\Program Files (x86)\Windows Kits\10\Include\10.0.22621.0\ucrt\stdio.h ; COMDAT sscanf _TEXT SEGMENT _Buffer$ = 80 _Format$ = 88 sscanf PROC ; COMDAT ; 2247 : { $LN6: 00000 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx 00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8 0000a 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9 0000f 53 push rbx 00010 56 push rsi 00011 57 push rdi 00012 48 83 ec 30 sub rsp, 48 ; 00000030H 00016 48 8b da mov rbx, rdx ; 2248 : int _Result; ; 2249 : va_list _ArgList; ; 2250 : __crt_va_start(_ArgList, _Format); 00019 48 8d 74 24 60 lea rsi, QWORD PTR _Format$[rsp+8] 0001e 48 8b f9 mov rdi, rcx ; 2153 : return __stdio_common_vsscanf( 00021 e8 00 00 00 00 call __local_stdio_scanf_options 00026 48 89 74 24 28 mov QWORD PTR [rsp+40], rsi 0002b 4c 8b cb mov r9, rbx 0002e 49 c7 c0 ff ff ff ff mov r8, -1 00035 48 c7 44 24 20 00 00 00 00 mov QWORD PTR [rsp+32], 0 0003e 48 8b d7 mov rdx, rdi 00041 48 8b 08 mov rcx, QWORD PTR [rax] 00044 ff 15 00 00 00 00 call QWORD PTR __imp___stdio_common_vsscanf ; 2251 : _Result = _vsscanf_l(_Buffer, _Format, NULL, _ArgList); ; 2252 : __crt_va_end(_ArgList); ; 2253 : return _Result; ; 2254 : } 0004a 48 83 c4 30 add rsp, 48 ; 00000030H 0004e 5f pop rdi 0004f 5e pop rsi 00050 5b pop rbx 00051 c3 ret 0 sscanf ENDP _TEXT ENDS ; Function compile flags: /Ogtpy ; File D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpGraphic\code\glfw\context.c ; COMDAT _glfwIsValidContextConfig _TEXT SEGMENT ctxconfig$ = 48 _glfwIsValidContextConfig PROC ; COMDAT ; 50 : { $LN34: 00000 48 83 ec 28 sub rsp, 40 ; 00000028H ; 51 : if (ctxconfig->source != GLFW_NATIVE_CONTEXT_API && ; 52 : ctxconfig->source != GLFW_EGL_CONTEXT_API && 00004 44 8b 41 04 mov r8d, DWORD PTR [rcx+4] 00008 41 8d 80 ff 9f fc ff lea eax, DWORD PTR [r8-221185] 0000f 83 f8 02 cmp eax, 2 00012 76 18 jbe SHORT $LN2@glfwIsVali ; 53 : ctxconfig->source != GLFW_OSMESA_CONTEXT_API) ; 54 : { ; 55 : _glfwInputError(GLFW_INVALID_ENUM, 00014 48 8d 15 00 00 00 00 lea rdx, OFFSET FLAT:??_C@_0CE@JBLPENML@Invalid?5context?5creation?5API?50x@ 0001b b9 03 00 01 00 mov ecx, 65539 ; 00010003H 00020 e8 00 00 00 00 call _glfwInputError ; 56 : "Invalid context creation API 0x%08X", ; 57 : ctxconfig->source); ; 58 : return GLFW_FALSE; 00025 33 c0 xor eax, eax ; 181 : } 00027 48 83 c4 28 add rsp, 40 ; 00000028H 0002b c3 ret 0 $LN2@glfwIsVali: ; 59 : } ; 60 : ; 61 : if (ctxconfig->client != GLFW_NO_API && ; 62 : ctxconfig->client != GLFW_OPENGL_API && 0002c 8b 11 mov edx, DWORD PTR [rcx] 0002e 85 d2 test edx, edx 00030 74 26 je SHORT $LN3@glfwIsVali 00032 8d 82 ff ff fc ff lea eax, DWORD PTR [rdx-196609] 00038 83 f8 01 cmp eax, 1 0003b 76 1b jbe SHORT $LN3@glfwIsVali ; 63 : ctxconfig->client != GLFW_OPENGL_ES_API) ; 64 : { ; 65 : _glfwInputError(GLFW_INVALID_ENUM, 0003d 44 8b c2 mov r8d, edx 00040 b9 03 00 01 00 mov ecx, 65539 ; 00010003H 00045 48 8d 15 00 00 00 00 lea rdx, OFFSET FLAT:??_C@_0BK@EIOPBJJH@Invalid?5client?5API?50x?$CF08X@ 0004c e8 00 00 00 00 call _glfwInputError ; 66 : "Invalid client API 0x%08X", ; 67 : ctxconfig->client); ; 68 : return GLFW_FALSE; 00051 33 c0 xor eax, eax ; 181 : } 00053 48 83 c4 28 add rsp, 40 ; 00000028H 00057 c3 ret 0 $LN3@glfwIsVali: ; 69 : } ; 70 : ; 71 : if (ctxconfig->share) 00058 48 8b 41 28 mov rax, QWORD PTR [rcx+40] 0005c 48 85 c0 test rax, rax 0005f 74 41 je SHORT $LN7@glfwIsVali ; 72 : { ; 73 : if (ctxconfig->client == GLFW_NO_API || 00061 85 d2 test edx, edx 00063 74 2a je SHORT $LN6@glfwIsVali 00065 83 b8 08 02 00 00 00 cmp DWORD PTR [rax+520], 0 0006c 74 21 je SHORT $LN6@glfwIsVali ; 78 : } ; 79 : ; 80 : if (ctxconfig->source != ctxconfig->share->context.source) 0006e 44 3b 80 0c 02 00 00 cmp r8d, DWORD PTR [rax+524] 00075 74 2b je SHORT $LN7@glfwIsVali ; 81 : { ; 82 : _glfwInputError(GLFW_INVALID_ENUM, 00077 48 8d 15 00 00 00 00 lea rdx, OFFSET FLAT:??_C@_0DE@OKHDGAJN@Context?5creation?5APIs?5do?5not?5ma@ 0007e b9 03 00 01 00 mov ecx, 65539 ; 00010003H 00083 e8 00 00 00 00 call _glfwInputError ; 83 : "Context creation APIs do not match between contexts"); ; 84 : return GLFW_FALSE; 00088 33 c0 xor eax, eax ; 181 : } 0008a 48 83 c4 28 add rsp, 40 ; 00000028H 0008e c3 ret 0 $LN6@glfwIsVali: ; 74 : ctxconfig->share->context.client == GLFW_NO_API) ; 75 : { ; 76 : _glfwInputError(GLFW_NO_WINDOW_CONTEXT, NULL); 0008f 33 d2 xor edx, edx 00091 b9 0a 00 01 00 mov ecx, 65546 ; 0001000aH 00096 e8 00 00 00 00 call _glfwInputError ; 77 : return GLFW_FALSE; 0009b 33 c0 xor eax, eax ; 181 : } 0009d 48 83 c4 28 add rsp, 40 ; 00000028H 000a1 c3 ret 0 $LN7@glfwIsVali: ; 85 : } ; 86 : } ; 87 : ; 88 : if (ctxconfig->client == GLFW_OPENGL_API) 000a2 81 fa 01 00 03 00 cmp edx, 196609 ; 00030001H 000a8 0f 85 e3 00 00 00 jne $LN8@glfwIsVali ; 89 : { ; 90 : if ((ctxconfig->major < 1 || ctxconfig->minor < 0) || ; 91 : (ctxconfig->major == 1 && ctxconfig->minor > 5) || ; 92 : (ctxconfig->major == 2 && ctxconfig->minor > 1) || 000ae 44 8b 41 08 mov r8d, DWORD PTR [rcx+8] 000b2 41 83 f8 01 cmp r8d, 1 000b6 0f 8c b9 00 00 00 jl $LN11@glfwIsVali 000bc 8b 51 0c mov edx, DWORD PTR [rcx+12] 000bf 85 d2 test edx, edx 000c1 0f 88 ae 00 00 00 js $LN11@glfwIsVali 000c7 41 83 f8 01 cmp r8d, 1 000cb 75 09 jne SHORT $LN12@glfwIsVali 000cd 83 fa 05 cmp edx, 5 000d0 0f 8f 9f 00 00 00 jg $LN11@glfwIsVali $LN12@glfwIsVali: 000d6 41 83 f8 02 cmp r8d, 2 000da 75 09 jne SHORT $LN13@glfwIsVali 000dc 83 fa 01 cmp edx, 1 000df 0f 8f 90 00 00 00 jg $LN11@glfwIsVali $LN13@glfwIsVali: 000e5 41 83 f8 03 cmp r8d, 3 000e9 75 09 jne SHORT $LN10@glfwIsVali 000eb 41 3b d0 cmp edx, r8d 000ee 0f 8f 81 00 00 00 jg $LN11@glfwIsVali $LN10@glfwIsVali: ; 105 : } ; 106 : ; 107 : if (ctxconfig->profile) 000f4 44 8b 49 1c mov r9d, DWORD PTR [rcx+28] 000f8 45 85 c9 test r9d, r9d 000fb 74 50 je SHORT $LN16@glfwIsVali ; 108 : { ; 109 : if (ctxconfig->profile != GLFW_OPENGL_CORE_PROFILE && 000fd 41 8d 81 ff df fc ff lea eax, DWORD PTR [r9-204801] 00104 83 f8 01 cmp eax, 1 00107 76 1b jbe SHORT $LN15@glfwIsVali ; 110 : ctxconfig->profile != GLFW_OPENGL_COMPAT_PROFILE) ; 111 : { ; 112 : _glfwInputError(GLFW_INVALID_ENUM, 00109 45 8b c1 mov r8d, r9d 0010c 48 8d 15 00 00 00 00 lea rdx, OFFSET FLAT:??_C@_0BO@PCKHNBJ@Invalid?5OpenGL?5profile?50x?$CF08X@ 00113 b9 03 00 01 00 mov ecx, 65539 ; 00010003H 00118 e8 00 00 00 00 call _glfwInputError ; 113 : "Invalid OpenGL profile 0x%08X", ; 114 : ctxconfig->profile); ; 115 : return GLFW_FALSE; 0011d 33 c0 xor eax, eax ; 181 : } 0011f 48 83 c4 28 add rsp, 40 ; 00000028H 00123 c3 ret 0 $LN15@glfwIsVali: ; 116 : } ; 117 : ; 118 : if (ctxconfig->major <= 2 || 00124 41 83 f8 02 cmp r8d, 2 00128 7e 0b jle SHORT $LN17@glfwIsVali 0012a 41 83 f8 03 cmp r8d, 3 0012e 75 1d jne SHORT $LN16@glfwIsVali 00130 83 fa 02 cmp edx, 2 00133 7d 18 jge SHORT $LN16@glfwIsVali $LN17@glfwIsVali: ; 119 : (ctxconfig->major == 3 && ctxconfig->minor < 2)) ; 120 : { ; 121 : // Desktop OpenGL context profiles are only defined for version 3.2 ; 122 : // and above ; 123 : ; 124 : _glfwInputError(GLFW_INVALID_VALUE, 00135 48 8d 15 00 00 00 00 lea rdx, OFFSET FLAT:??_C@_0ED@FEABOOIM@Context?5profiles?5are?5only?5defin@ 0013c b9 04 00 01 00 mov ecx, 65540 ; 00010004H 00141 e8 00 00 00 00 call _glfwInputError ; 125 : "Context profiles are only defined for OpenGL version 3.2 and above"); ; 126 : return GLFW_FALSE; 00146 33 c0 xor eax, eax ; 181 : } 00148 48 83 c4 28 add rsp, 40 ; 00000028H 0014c c3 ret 0 $LN16@glfwIsVali: ; 127 : } ; 128 : } ; 129 : ; 130 : if (ctxconfig->forward && ctxconfig->major <= 2) 0014d 83 79 10 00 cmp DWORD PTR [rcx+16], 0 00151 0f 84 84 00 00 00 je $LN20@glfwIsVali 00157 41 83 f8 02 cmp r8d, 2 0015b 7f 7e jg SHORT $LN20@glfwIsVali ; 131 : { ; 132 : // Forward-compatible contexts are only defined for OpenGL version 3.0 and above ; 133 : _glfwInputError(GLFW_INVALID_VALUE, 0015d 48 8d 15 00 00 00 00 lea rdx, OFFSET FLAT:??_C@_0EH@CMDCLIEA@Forward?9compatibility?5is?5only?5d@ 00164 b9 04 00 01 00 mov ecx, 65540 ; 00010004H 00169 e8 00 00 00 00 call _glfwInputError ; 134 : "Forward-compatibility is only defined for OpenGL version 3.0 and above"); ; 135 : return GLFW_FALSE; 0016e 33 c0 xor eax, eax ; 181 : } 00170 48 83 c4 28 add rsp, 40 ; 00000028H 00174 c3 ret 0 $LN11@glfwIsVali: ; 93 : (ctxconfig->major == 3 && ctxconfig->minor > 3)) ; 94 : { ; 95 : // OpenGL 1.0 is the smallest valid version ; 96 : // OpenGL 1.x series ended with version 1.5 ; 97 : // OpenGL 2.x series ended with version 2.1 ; 98 : // OpenGL 3.x series ended with version 3.3 ; 99 : // For now, let everything else through ; 100 : ; 101 : _glfwInputError(GLFW_INVALID_VALUE, 00175 44 8b 49 0c mov r9d, DWORD PTR [rcx+12] 00179 48 8d 15 00 00 00 00 lea rdx, OFFSET FLAT:??_C@_0BN@DHKEBMCG@Invalid?5OpenGL?5version?5?$CFi?4?$CFi@ 00180 b9 04 00 01 00 mov ecx, 65540 ; 00010004H 00185 e8 00 00 00 00 call _glfwInputError ; 102 : "Invalid OpenGL version %i.%i", ; 103 : ctxconfig->major, ctxconfig->minor); ; 104 : return GLFW_FALSE; 0018a 33 c0 xor eax, eax ; 181 : } 0018c 48 83 c4 28 add rsp, 40 ; 00000028H 00190 c3 ret 0 $LN8@glfwIsVali: ; 136 : } ; 137 : } ; 138 : else if (ctxconfig->client == GLFW_OPENGL_ES_API) 00191 81 fa 02 00 03 00 cmp edx, 196610 ; 00030002H 00197 75 42 jne SHORT $LN20@glfwIsVali ; 139 : { ; 140 : if (ctxconfig->major < 1 || ctxconfig->minor < 0 || ; 141 : (ctxconfig->major == 1 && ctxconfig->minor > 1) || 00199 44 8b 41 08 mov r8d, DWORD PTR [rcx+8] 0019d 41 83 f8 01 cmp r8d, 1 001a1 7c 1c jl SHORT $LN21@glfwIsVali 001a3 8b 41 0c mov eax, DWORD PTR [rcx+12] 001a6 85 c0 test eax, eax 001a8 78 15 js SHORT $LN21@glfwIsVali 001aa 41 83 f8 01 cmp r8d, 1 001ae 75 05 jne SHORT $LN22@glfwIsVali 001b0 41 3b c0 cmp eax, r8d 001b3 7f 0a jg SHORT $LN21@glfwIsVali $LN22@glfwIsVali: 001b5 41 83 f8 02 cmp r8d, 2 001b9 75 20 jne SHORT $LN20@glfwIsVali 001bb 85 c0 test eax, eax 001bd 7e 1c jle SHORT $LN20@glfwIsVali $LN21@glfwIsVali: ; 142 : (ctxconfig->major == 2 && ctxconfig->minor > 0)) ; 143 : { ; 144 : // OpenGL ES 1.0 is the smallest valid version ; 145 : // OpenGL ES 1.x series ended with version 1.1 ; 146 : // OpenGL ES 2.x series ended with version 2.0 ; 147 : // For now, let everything else through ; 148 : ; 149 : _glfwInputError(GLFW_INVALID_VALUE, 001bf 44 8b 49 0c mov r9d, DWORD PTR [rcx+12] 001c3 48 8d 15 00 00 00 00 lea rdx, OFFSET FLAT:??_C@_0CA@LFIDGAHJ@Invalid?5OpenGL?5ES?5version?5?$CFi?4?$CFi@ 001ca b9 04 00 01 00 mov ecx, 65540 ; 00010004H 001cf e8 00 00 00 00 call _glfwInputError ; 150 : "Invalid OpenGL ES version %i.%i", ; 151 : ctxconfig->major, ctxconfig->minor); ; 152 : return GLFW_FALSE; 001d4 33 c0 xor eax, eax ; 181 : } 001d6 48 83 c4 28 add rsp, 40 ; 00000028H 001da c3 ret 0 $LN20@glfwIsVali: ; 153 : } ; 154 : } ; 155 : ; 156 : if (ctxconfig->robustness) 001db 44 8b 41 20 mov r8d, DWORD PTR [rcx+32] 001df 45 85 c0 test r8d, r8d 001e2 74 24 je SHORT $LN24@glfwIsVali 001e4 41 8d 80 ff ef fc ff lea eax, DWORD PTR [r8-200705] 001eb 83 f8 01 cmp eax, 1 001ee 76 18 jbe SHORT $LN24@glfwIsVali ; 157 : { ; 158 : if (ctxconfig->robustness != GLFW_NO_RESET_NOTIFICATION && ; 159 : ctxconfig->robustness != GLFW_LOSE_CONTEXT_ON_RESET) ; 160 : { ; 161 : _glfwInputError(GLFW_INVALID_ENUM, 001f0 48 8d 15 00 00 00 00 lea rdx, OFFSET FLAT:??_C@_0CH@PNNMGINB@Invalid?5context?5robustness?5mode@ 001f7 b9 03 00 01 00 mov ecx, 65539 ; 00010003H 001fc e8 00 00 00 00 call _glfwInputError ; 162 : "Invalid context robustness mode 0x%08X", ; 163 : ctxconfig->robustness); ; 164 : return GLFW_FALSE; 00201 33 c0 xor eax, eax ; 181 : } 00203 48 83 c4 28 add rsp, 40 ; 00000028H 00207 c3 ret 0 $LN24@glfwIsVali: ; 165 : } ; 166 : } ; 167 : ; 168 : if (ctxconfig->release) 00208 44 8b 41 24 mov r8d, DWORD PTR [rcx+36] 0020c 45 85 c0 test r8d, r8d 0020f 74 24 je SHORT $LN26@glfwIsVali 00211 41 8d 80 ff af fc ff lea eax, DWORD PTR [r8-217089] 00218 83 f8 01 cmp eax, 1 0021b 76 18 jbe SHORT $LN26@glfwIsVali ; 169 : { ; 170 : if (ctxconfig->release != GLFW_RELEASE_BEHAVIOR_NONE && ; 171 : ctxconfig->release != GLFW_RELEASE_BEHAVIOR_FLUSH) ; 172 : { ; 173 : _glfwInputError(GLFW_INVALID_ENUM, 0021d 48 8d 15 00 00 00 00 lea rdx, OFFSET FLAT:??_C@_0CI@JDDJIGNN@Invalid?5context?5release?5behavio@ 00224 b9 03 00 01 00 mov ecx, 65539 ; 00010003H 00229 e8 00 00 00 00 call _glfwInputError ; 174 : "Invalid context release behavior 0x%08X", ; 175 : ctxconfig->release); ; 176 : return GLFW_FALSE; 0022e 33 c0 xor eax, eax ; 181 : } 00230 48 83 c4 28 add rsp, 40 ; 00000028H 00234 c3 ret 0 $LN26@glfwIsVali: ; 177 : } ; 178 : } ; 179 : ; 180 : return GLFW_TRUE; 00235 b8 01 00 00 00 mov eax, 1 ; 181 : } 0023a 48 83 c4 28 add rsp, 40 ; 00000028H 0023e c3 ret 0 _glfwIsValidContextConfig ENDP _TEXT ENDS ; Function compile flags: /Ogtpy ; File D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpGraphic\code\glfw\context.c ; COMDAT _glfwChooseFBConfig _TEXT SEGMENT desired$ = 40 alternatives$ = 48 count$ = 56 _glfwChooseFBConfig PROC ; COMDAT ; 188 : { $LN68: 00000 40 55 push rbp 00002 41 54 push r12 00004 41 56 push r14 00006 41 57 push r15 ; 189 : unsigned int i; ; 190 : unsigned int missing, leastMissing = UINT_MAX; 00008 41 be ff ff ff ff mov r14d, -1 ; ffffffffH ; 191 : unsigned int colorDiff, leastColorDiff = UINT_MAX; ; 192 : unsigned int extraDiff, leastExtraDiff = UINT_MAX; ; 193 : const _GLFWfbconfig* current; ; 194 : const _GLFWfbconfig* closest = NULL; 0000e 33 ed xor ebp, ebp 00010 4c 8b c9 mov r9, rcx 00013 45 8b fe mov r15d, r14d 00016 45 8b e6 mov r12d, r14d ; 195 : ; 196 : for (i = 0; i < count; i++) 00019 45 85 c0 test r8d, r8d 0001c 0f 84 b6 01 00 00 je $LN36@glfwChoose 00022 4c 89 6c 24 40 mov QWORD PTR [rsp+64], r13 ; 197 : { ; 198 : current = alternatives + i; ; 199 : ; 200 : if (desired->stereo > 0 && current->stereo == 0) 00027 8d 45 01 lea eax, QWORD PTR [rbp+1] 0002a 48 89 5c 24 28 mov QWORD PTR [rsp+40], rbx 0002f 48 83 c2 28 add rdx, 40 ; 00000028H 00033 48 89 74 24 30 mov QWORD PTR [rsp+48], rsi 00038 48 89 7c 24 38 mov QWORD PTR [rsp+56], rdi 0003d 45 8b e8 mov r13d, r8d $LL4@glfwChoose: 00040 41 83 79 2c 00 cmp DWORD PTR [r9+44], 0 00045 7e 0a jle SHORT $LN5@glfwChoose 00047 83 7a 04 00 cmp DWORD PTR [rdx+4], 0 0004b 0f 84 65 01 00 00 je $LN2@glfwChoose $LN5@glfwChoose: ; 201 : { ; 202 : // Stereo is a hard constraint ; 203 : continue; ; 204 : } ; 205 : ; 206 : // Count number of missing buffers ; 207 : { ; 208 : missing = 0; ; 209 : ; 210 : if (desired->alphaBits > 0 && current->alphaBits == 0) 00051 41 8b 79 0c mov edi, DWORD PTR [r9+12] 00055 33 c9 xor ecx, ecx 00057 85 ff test edi, edi 00059 7e 06 jle SHORT $LN6@glfwChoose 0005b 39 4a e4 cmp DWORD PTR [rdx-28], ecx 0005e 0f 44 c8 cmove ecx, eax $LN6@glfwChoose: ; 211 : missing++; ; 212 : ; 213 : if (desired->depthBits > 0 && current->depthBits == 0) 00061 45 8b 59 10 mov r11d, DWORD PTR [r9+16] 00065 45 85 db test r11d, r11d 00068 7e 08 jle SHORT $LN7@glfwChoose 0006a 83 7a e8 00 cmp DWORD PTR [rdx-24], 0 0006e 75 02 jne SHORT $LN7@glfwChoose ; 214 : missing++; 00070 ff c1 inc ecx $LN7@glfwChoose: ; 215 : ; 216 : if (desired->stencilBits > 0 && current->stencilBits == 0) 00072 45 8b 51 14 mov r10d, DWORD PTR [r9+20] 00076 45 85 d2 test r10d, r10d 00079 7e 08 jle SHORT $LN8@glfwChoose 0007b 83 7a ec 00 cmp DWORD PTR [rdx-20], 0 0007f 75 02 jne SHORT $LN8@glfwChoose ; 217 : missing++; 00081 ff c1 inc ecx $LN8@glfwChoose: ; 218 : ; 219 : if (desired->auxBuffers > 0 && 00083 41 8b 41 28 mov eax, DWORD PTR [r9+40] 00087 85 c0 test eax, eax 00089 7e 0d jle SHORT $LN9@glfwChoose 0008b 44 8b 02 mov r8d, DWORD PTR [rdx] 0008e 44 3b c0 cmp r8d, eax 00091 7d 05 jge SHORT $LN9@glfwChoose ; 220 : current->auxBuffers < desired->auxBuffers) ; 221 : { ; 222 : missing += desired->auxBuffers - current->auxBuffers; 00093 41 2b c0 sub eax, r8d 00096 03 c8 add ecx, eax $LN9@glfwChoose: ; 223 : } ; 224 : ; 225 : if (desired->samples > 0 && current->samples == 0) 00098 41 8b 59 30 mov ebx, DWORD PTR [r9+48] 0009c 85 db test ebx, ebx 0009e 7e 08 jle SHORT $LN10@glfwChoose 000a0 83 7a 08 00 cmp DWORD PTR [rdx+8], 0 000a4 75 02 jne SHORT $LN10@glfwChoose ; 226 : { ; 227 : // Technically, several multisampling buffers could be ; 228 : // involved, but that's a lower level implementation detail and ; 229 : // not important to us here, so we count them as one ; 230 : missing++; 000a6 ff c1 inc ecx $LN10@glfwChoose: ; 231 : } ; 232 : ; 233 : if (desired->transparent != current->transparent) ; 234 : missing++; ; 235 : } ; 236 : ; 237 : // These polynomials make many small channel size differences matter ; 238 : // less than one large channel size difference ; 239 : ; 240 : // Calculate color channel size difference value ; 241 : { ; 242 : colorDiff = 0; 000a8 41 8b 41 3c mov eax, DWORD PTR [r9+60] 000ac 8d 71 01 lea esi, DWORD PTR [rcx+1] 000af 3b 42 14 cmp eax, DWORD PTR [rdx+20] ; 243 : ; 244 : if (desired->redBits != GLFW_DONT_CARE) 000b2 41 8b 01 mov eax, DWORD PTR [r9] 000b5 0f 44 f1 cmove esi, ecx 000b8 45 33 c0 xor r8d, r8d 000bb 83 f8 ff cmp eax, -1 000be 74 0b je SHORT $LN12@glfwChoose ; 245 : { ; 246 : colorDiff += (desired->redBits - current->redBits) * 000c0 44 8b c0 mov r8d, eax 000c3 44 2b 42 d8 sub r8d, DWORD PTR [rdx-40] 000c7 45 0f af c0 imul r8d, r8d $LN12@glfwChoose: ; 247 : (desired->redBits - current->redBits); ; 248 : } ; 249 : ; 250 : if (desired->greenBits != GLFW_DONT_CARE) 000cb 41 8b 41 04 mov eax, DWORD PTR [r9+4] 000cf 83 f8 ff cmp eax, -1 000d2 74 09 je SHORT $LN13@glfwChoose ; 251 : { ; 252 : colorDiff += (desired->greenBits - current->greenBits) * 000d4 2b 42 dc sub eax, DWORD PTR [rdx-36] 000d7 0f af c0 imul eax, eax 000da 44 03 c0 add r8d, eax $LN13@glfwChoose: ; 253 : (desired->greenBits - current->greenBits); ; 254 : } ; 255 : ; 256 : if (desired->blueBits != GLFW_DONT_CARE) 000dd 41 8b 41 08 mov eax, DWORD PTR [r9+8] 000e1 83 f8 ff cmp eax, -1 000e4 74 09 je SHORT $LN14@glfwChoose ; 257 : { ; 258 : colorDiff += (desired->blueBits - current->blueBits) * 000e6 2b 42 e0 sub eax, DWORD PTR [rdx-32] 000e9 0f af c0 imul eax, eax 000ec 44 03 c0 add r8d, eax $LN14@glfwChoose: ; 259 : (desired->blueBits - current->blueBits); ; 260 : } ; 261 : } ; 262 : ; 263 : // Calculate non-color channel size difference value ; 264 : { ; 265 : extraDiff = 0; 000ef 33 c0 xor eax, eax ; 266 : ; 267 : if (desired->alphaBits != GLFW_DONT_CARE) 000f1 83 ff ff cmp edi, -1 000f4 74 08 je SHORT $LN15@glfwChoose ; 268 : { ; 269 : extraDiff += (desired->alphaBits - current->alphaBits) * 000f6 8b c7 mov eax, edi 000f8 2b 42 e4 sub eax, DWORD PTR [rdx-28] 000fb 0f af c0 imul eax, eax $LN15@glfwChoose: ; 270 : (desired->alphaBits - current->alphaBits); ; 271 : } ; 272 : ; 273 : if (desired->depthBits != GLFW_DONT_CARE) 000fe 41 83 fb ff cmp r11d, -1 00102 74 0b je SHORT $LN16@glfwChoose ; 274 : { ; 275 : extraDiff += (desired->depthBits - current->depthBits) * 00104 44 2b 5a e8 sub r11d, DWORD PTR [rdx-24] 00108 45 0f af db imul r11d, r11d 0010c 41 03 c3 add eax, r11d $LN16@glfwChoose: ; 276 : (desired->depthBits - current->depthBits); ; 277 : } ; 278 : ; 279 : if (desired->stencilBits != GLFW_DONT_CARE) 0010f 41 83 fa ff cmp r10d, -1 00113 74 0b je SHORT $LN17@glfwChoose ; 280 : { ; 281 : extraDiff += (desired->stencilBits - current->stencilBits) * 00115 44 2b 52 ec sub r10d, DWORD PTR [rdx-20] 00119 45 0f af d2 imul r10d, r10d 0011d 41 03 c2 add eax, r10d $LN17@glfwChoose: ; 282 : (desired->stencilBits - current->stencilBits); ; 283 : } ; 284 : ; 285 : if (desired->accumRedBits != GLFW_DONT_CARE) 00120 41 8b 49 18 mov ecx, DWORD PTR [r9+24] 00124 83 f9 ff cmp ecx, -1 00127 74 08 je SHORT $LN18@glfwChoose ; 286 : { ; 287 : extraDiff += (desired->accumRedBits - current->accumRedBits) * 00129 2b 4a f0 sub ecx, DWORD PTR [rdx-16] 0012c 0f af c9 imul ecx, ecx 0012f 03 c1 add eax, ecx $LN18@glfwChoose: ; 288 : (desired->accumRedBits - current->accumRedBits); ; 289 : } ; 290 : ; 291 : if (desired->accumGreenBits != GLFW_DONT_CARE) 00131 41 8b 49 1c mov ecx, DWORD PTR [r9+28] 00135 83 f9 ff cmp ecx, -1 00138 74 08 je SHORT $LN19@glfwChoose ; 292 : { ; 293 : extraDiff += (desired->accumGreenBits - current->accumGreenBits) * 0013a 2b 4a f4 sub ecx, DWORD PTR [rdx-12] 0013d 0f af c9 imul ecx, ecx 00140 03 c1 add eax, ecx $LN19@glfwChoose: ; 294 : (desired->accumGreenBits - current->accumGreenBits); ; 295 : } ; 296 : ; 297 : if (desired->accumBlueBits != GLFW_DONT_CARE) 00142 41 8b 49 20 mov ecx, DWORD PTR [r9+32] 00146 83 f9 ff cmp ecx, -1 00149 74 08 je SHORT $LN20@glfwChoose ; 298 : { ; 299 : extraDiff += (desired->accumBlueBits - current->accumBlueBits) * 0014b 2b 4a f8 sub ecx, DWORD PTR [rdx-8] 0014e 0f af c9 imul ecx, ecx 00151 03 c1 add eax, ecx $LN20@glfwChoose: ; 300 : (desired->accumBlueBits - current->accumBlueBits); ; 301 : } ; 302 : ; 303 : if (desired->accumAlphaBits != GLFW_DONT_CARE) 00153 41 8b 49 24 mov ecx, DWORD PTR [r9+36] 00157 83 f9 ff cmp ecx, -1 0015a 74 08 je SHORT $LN21@glfwChoose ; 304 : { ; 305 : extraDiff += (desired->accumAlphaBits - current->accumAlphaBits) * 0015c 2b 4a fc sub ecx, DWORD PTR [rdx-4] 0015f 0f af c9 imul ecx, ecx 00162 03 c1 add eax, ecx $LN21@glfwChoose: ; 306 : (desired->accumAlphaBits - current->accumAlphaBits); ; 307 : } ; 308 : ; 309 : if (desired->samples != GLFW_DONT_CARE) 00164 83 fb ff cmp ebx, -1 00167 74 08 je SHORT $LN22@glfwChoose ; 310 : { ; 311 : extraDiff += (desired->samples - current->samples) * 00169 2b 5a 08 sub ebx, DWORD PTR [rdx+8] 0016c 0f af db imul ebx, ebx 0016f 03 c3 add eax, ebx $LN22@glfwChoose: ; 312 : (desired->samples - current->samples); ; 313 : } ; 314 : ; 315 : if (desired->sRGB && !current->sRGB) 00171 41 83 79 34 00 cmp DWORD PTR [r9+52], 0 00176 74 08 je SHORT $LN23@glfwChoose 00178 83 7a 0c 00 cmp DWORD PTR [rdx+12], 0 0017c 75 02 jne SHORT $LN23@glfwChoose ; 316 : extraDiff++; 0017e ff c0 inc eax $LN23@glfwChoose: ; 317 : } ; 318 : ; 319 : // Figure out if the current one is better than the best one found so far ; 320 : // Least number of missing buffers is the most important heuristic, ; 321 : // then color buffer size match and lastly size match for other buffers ; 322 : ; 323 : if (missing < leastMissing) 00180 41 3b f6 cmp esi, r14d 00183 73 06 jae SHORT $LN24@glfwChoose ; 324 : closest = current; 00185 48 8d 6a d8 lea rbp, QWORD PTR [rdx-40] 00189 eb 1d jmp SHORT $LN35@glfwChoose $LN24@glfwChoose: ; 325 : else if (missing == leastMissing) 0018b 75 12 jne SHORT $LN27@glfwChoose ; 326 : { ; 327 : if ((colorDiff < leastColorDiff) || 0018d 45 3b c7 cmp r8d, r15d 00190 72 07 jb SHORT $LN28@glfwChoose 00192 75 0b jne SHORT $LN27@glfwChoose 00194 41 3b c4 cmp eax, r12d 00197 73 06 jae SHORT $LN27@glfwChoose $LN28@glfwChoose: ; 328 : (colorDiff == leastColorDiff && extraDiff < leastExtraDiff)) ; 329 : { ; 330 : closest = current; 00199 48 8d 6a d8 lea rbp, QWORD PTR [rdx-40] ; 331 : } ; 332 : } ; 333 : ; 334 : if (current == closest) 0019d eb 09 jmp SHORT $LN35@glfwChoose $LN27@glfwChoose: 0019f 48 8d 4a d8 lea rcx, QWORD PTR [rdx-40] 001a3 48 3b cd cmp rcx, rbp 001a6 75 09 jne SHORT $LN37@glfwChoose $LN35@glfwChoose: ; 335 : { ; 336 : leastMissing = missing; 001a8 44 8b f6 mov r14d, esi ; 337 : leastColorDiff = colorDiff; 001ab 45 8b f8 mov r15d, r8d ; 338 : leastExtraDiff = extraDiff; 001ae 44 8b e0 mov r12d, eax $LN37@glfwChoose: ; 195 : ; 196 : for (i = 0; i < count; i++) 001b1 b8 01 00 00 00 mov eax, 1 $LN2@glfwChoose: 001b6 48 83 c2 48 add rdx, 72 ; 00000048H 001ba 49 83 ed 01 sub r13, 1 001be 0f 85 7c fe ff ff jne $LL4@glfwChoose 001c4 4c 8b 6c 24 40 mov r13, QWORD PTR [rsp+64] 001c9 48 8b 7c 24 38 mov rdi, QWORD PTR [rsp+56] 001ce 48 8b 74 24 30 mov rsi, QWORD PTR [rsp+48] 001d3 48 8b 5c 24 28 mov rbx, QWORD PTR [rsp+40] $LN36@glfwChoose: ; 339 : } ; 340 : } ; 341 : ; 342 : return closest; ; 343 : } 001d8 48 8b c5 mov rax, rbp 001db 41 5f pop r15 001dd 41 5e pop r14 001df 41 5c pop r12 001e1 5d pop rbp 001e2 c3 ret 0 _glfwChooseFBConfig ENDP _TEXT ENDS ; Function compile flags: /Ogtpy ; File D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpGraphic\code\glfw\context.c ; File D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpGraphic\code\glfw\win32_thread.c ; File D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpGraphic\code\glfw\context.c ; File D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpGraphic\code\glfw\win32_thread.c ; File D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpGraphic\code\glfw\context.c ; File D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpGraphic\code\glfw\win32_thread.c ; File D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpGraphic\code\glfw\context.c ; File D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpGraphic\code\glfw\win32_thread.c ; File D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpGraphic\code\glfw\context.c ; File D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpGraphic\code\glfw\win32_thread.c ; File D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpGraphic\code\glfw\context.c ; File D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpGraphic\code\glfw\win32_thread.c ; File D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpGraphic\code\glfw\context.c ; File D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpGraphic\code\glfw\win32_thread.c ; File D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpGraphic\code\glfw\context.c ; COMDAT _glfwRefreshContextAttribs _TEXT SEGMENT prefixes$ = 48 behavior$1 = 80 strategy$2 = 80 mask$3 = 80 flags$4 = 80 __$ArrayPad$ = 88 window$ = 144 ctxconfig$ = 152 _glfwRefreshContextAttribs PROC ; COMDAT ; 349 : { $LN227: 00000 40 53 push rbx 00002 55 push rbp 00003 56 push rsi 00004 41 55 push r13 00006 41 56 push r14 00008 48 83 ec 60 sub rsp, 96 ; 00000060H 0000c 48 8b 05 00 00 00 00 mov rax, QWORD PTR __security_cookie 00013 48 33 c4 xor rax, rsp 00016 48 89 44 24 58 mov QWORD PTR __$ArrayPad$[rsp], rax ; 353 : const char* prefixes[] = 0001b 48 8d 05 00 00 00 00 lea rax, OFFSET FLAT:??_C@_0O@EMKFPNOG@OpenGL?5ES?9CL?5@ 00022 48 8b f1 mov rsi, rcx 00025 48 89 44 24 38 mov QWORD PTR prefixes$[rsp+8], rax 0002a 48 8d 2d 00 00 00 00 lea rbp, OFFSET FLAT:??_C@_0O@ENGHJHNB@OpenGL?5ES?9CM?5@ 00031 48 8d 05 00 00 00 00 lea rax, OFFSET FLAT:??_C@_0L@JLFHOCGA@OpenGL?5ES?5@ 00038 48 89 6c 24 30 mov QWORD PTR prefixes$[rsp], rbp 0003d 48 89 44 24 40 mov QWORD PTR prefixes$[rsp+16], rax 00042 45 33 f6 xor r14d, r14d ; 354 : { ; 355 : "OpenGL ES-CM ", ; 356 : "OpenGL ES-CL ", ; 357 : "OpenGL ES ", ; 358 : NULL ; 359 : }; ; 360 : ; 361 : window->context.source = ctxconfig->source; 00045 8b 42 04 mov eax, DWORD PTR [rdx+4] 00048 4c 8b ea mov r13, rdx 0004b 89 81 0c 02 00 00 mov DWORD PTR [rcx+524], eax ; 362 : window->context.client = GLFW_OPENGL_API; 00051 c7 81 08 02 00 00 01 00 03 00 mov DWORD PTR [rcx+520], 196609 ; 00030001H ; File D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpGraphic\code\glfw\win32_thread.c ; 66 : return TlsGetValue(tls->win32.index); 0005b 8b 0d a8 19 00 00 mov ecx, DWORD PTR _glfw+6568 ; File D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpGraphic\code\glfw\context.c ; 353 : const char* prefixes[] = 00061 4c 89 74 24 48 mov QWORD PTR prefixes$[rsp+24], r14 ; File D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpGraphic\code\glfw\win32_thread.c ; 66 : return TlsGetValue(tls->win32.index); 00066 ff 15 00 00 00 00 call QWORD PTR __imp_TlsGetValue ; File D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpGraphic\code\glfw\context.c ; 621 : _GLFW_REQUIRE_INIT(); 0006c 44 39 35 00 00 00 00 cmp DWORD PTR _glfw, r14d ; File D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpGraphic\code\glfw\win32_thread.c ; 66 : return TlsGetValue(tls->win32.index); 00073 48 8b d8 mov rbx, rax ; File D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpGraphic\code\glfw\context.c ; 621 : _GLFW_REQUIRE_INIT(); 00076 75 0e jne SHORT $LN52@glfwRefres 00078 33 d2 xor edx, edx 0007a b9 01 00 01 00 mov ecx, 65537 ; 00010001H 0007f e8 00 00 00 00 call _glfwInputError 00084 eb 4f jmp SHORT $LN57@glfwRefres $LN52@glfwRefres: ; File D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpGraphic\code\glfw\win32_thread.c ; 66 : return TlsGetValue(tls->win32.index); 00086 8b 0d a8 19 00 00 mov ecx, DWORD PTR _glfw+6568 0008c ff 15 00 00 00 00 call QWORD PTR __imp_TlsGetValue 00092 48 8b d0 mov rdx, rax ; File D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpGraphic\code\glfw\context.c ; 625 : if (window && window->context.client == GLFW_NO_API) 00095 44 39 b6 08 02 00 00 cmp DWORD PTR [rsi+520], r14d 0009c 75 13 jne SHORT $LN125@glfwRefres ; 626 : { ; 627 : _glfwInputError(GLFW_NO_WINDOW_CONTEXT, 0009e 48 8d 15 00 00 00 00 lea rdx, OFFSET FLAT:??_C@_0EK@HBJBDMAL@Cannot?5make?5current?5with?5a?5wind@ 000a5 b9 0a 00 01 00 mov ecx, 65546 ; 0001000aH 000aa e8 00 00 00 00 call _glfwInputError ; 628 : "Cannot make current with a window that has no OpenGL or OpenGL ES context"); ; 629 : return; 000af eb 24 jmp SHORT $LN57@glfwRefres $LN125@glfwRefres: ; 630 : } ; 631 : ; 632 : if (previous) 000b1 48 85 d2 test rdx, rdx 000b4 74 16 je SHORT $LN55@glfwRefres ; 633 : { ; 634 : if (!window || window->context.source != previous->context.source) 000b6 8b 80 0c 02 00 00 mov eax, DWORD PTR [rax+524] 000bc 39 86 0c 02 00 00 cmp DWORD PTR [rsi+524], eax 000c2 74 08 je SHORT $LN55@glfwRefres ; 635 : previous->context.makeCurrent(NULL); 000c4 33 c9 xor ecx, ecx 000c6 ff 92 50 02 00 00 call QWORD PTR [rdx+592] $LN55@glfwRefres: ; 639 : window->context.makeCurrent(window); 000cc 48 8b ce mov rcx, rsi 000cf ff 96 50 02 00 00 call QWORD PTR [rsi+592] $LN57@glfwRefres: 000d5 48 89 bc 24 a0 00 00 00 mov QWORD PTR [rsp+160], rdi ; 363 : ; 364 : previous = _glfwPlatformGetTls(&_glfw.contextSlot); ; 365 : glfwMakeContextCurrent((GLFWwindow*)window); ; 366 : ; 367 : window->context.GetIntegerv = (PFNGLGETINTEGERVPROC) 000dd 48 8d 0d 00 00 00 00 lea rcx, OFFSET FLAT:??_C@_0O@DHHDCCLF@glGetIntegerv@ 000e4 4c 89 bc 24 a8 00 00 00 mov QWORD PTR [rsp+168], r15 000ec ff 96 70 02 00 00 call QWORD PTR [rsi+624] ; 368 : window->context.getProcAddress("glGetIntegerv"); ; 369 : window->context.GetString = (PFNGLGETSTRINGPROC) 000f2 48 8d 0d 00 00 00 00 lea rcx, OFFSET FLAT:??_C@_0M@OPOBFDCB@glGetString@ 000f9 48 89 86 40 02 00 00 mov QWORD PTR [rsi+576], rax 00100 ff 96 70 02 00 00 call QWORD PTR [rsi+624] 00106 48 89 86 48 02 00 00 mov QWORD PTR [rsi+584], rax ; 370 : window->context.getProcAddress("glGetString"); ; 371 : if (!window->context.GetIntegerv || !window->context.GetString) 0010d 4c 39 b6 40 02 00 00 cmp QWORD PTR [rsi+576], r14 00114 0f 84 3a 04 00 00 je $LN6@glfwRefres 0011a 48 85 c0 test rax, rax 0011d 0f 84 31 04 00 00 je $LN6@glfwRefres ; 376 : } ; 377 : ; 378 : version = (const char*)window->context.GetString(GL_VERSION); 00123 b9 02 1f 00 00 mov ecx, 7938 ; 00001f02H 00128 ff d0 call rax 0012a 4c 8b f8 mov r15, rax ; 379 : if (!version) 0012d 48 85 c0 test rax, rax 00130 0f 85 8a 00 00 00 jne $LL7@glfwRefres ; 618 : _GLFWwindow* window = (_GLFWwindow*)handle; 00136 41 81 7d 00 01 00 03 00 cmp DWORD PTR [r13], 196609 ; 00030001H 0013e 48 8d 05 00 00 00 00 lea rax, OFFSET FLAT:??_C@_0CN@GOPDCGGI@OpenGL?5ES?5version?5string?5retrie@ 00145 48 8d 15 00 00 00 00 lea rdx, OFFSET FLAT:??_C@_0CK@DKAFEDIC@OpenGL?5version?5string?5retrieval@ 0014c b9 08 00 01 00 mov ecx, 65544 ; 00010008H 00151 48 0f 45 d0 cmovne rdx, rax 00155 e8 00 00 00 00 call _glfwInputError ; 621 : _GLFW_REQUIRE_INIT(); 0015a 44 39 35 00 00 00 00 cmp DWORD PTR _glfw, r14d 00161 0f 84 7d 01 00 00 je $LN223@glfwRefres ; File D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpGraphic\code\glfw\win32_thread.c ; 66 : return TlsGetValue(tls->win32.index); 00167 8b 0d a8 19 00 00 mov ecx, DWORD PTR _glfw+6568 0016d ff 15 00 00 00 00 call QWORD PTR __imp_TlsGetValue 00173 4c 8b c0 mov r8, rax ; File D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpGraphic\code\glfw\context.c ; 625 : if (window && window->context.client == GLFW_NO_API) 00176 48 85 db test rbx, rbx 00179 74 0d je SHORT $LN103@glfwRefres 0017b 44 39 b3 08 02 00 00 cmp DWORD PTR [rbx+520], r14d 00182 0f 84 07 04 00 00 je $LN224@glfwRefres $LN103@glfwRefres: ; 630 : } ; 631 : ; 632 : if (previous) 00188 4d 85 c0 test r8, r8 0018b 0f 84 31 04 00 00 je $LN65@glfwRefres ; 633 : { ; 634 : if (!window || window->context.source != previous->context.source) 00191 48 85 db test rbx, rbx 00194 74 12 je SHORT $LN106@glfwRefres 00196 8b 80 0c 02 00 00 mov eax, DWORD PTR [rax+524] 0019c 39 83 0c 02 00 00 cmp DWORD PTR [rbx+524], eax 001a2 0f 84 1f 04 00 00 je $LN133@glfwRefres $LN106@glfwRefres: ; 635 : previous->context.makeCurrent(NULL); 001a8 33 c9 xor ecx, ecx 001aa 41 ff 90 50 02 00 00 call QWORD PTR [r8+592] ; 485 : ; 486 : if (flags & GL_CONTEXT_FLAG_DEBUG_BIT) 001b1 e9 0c 04 00 00 jmp $LN65@glfwRefres 001b6 66 66 0f 1f 84 00 00 00 00 00 npad 10 $LL7@glfwRefres: ; 397 : { ; 398 : const size_t length = strlen(prefixes[i]); 001c0 48 c7 c7 ff ff ff ff mov rdi, -1 $LL143@glfwRefres: 001c7 48 ff c7 inc rdi 001ca 80 3c 2f 00 cmp BYTE PTR [rdi+rbp], 0 001ce 75 f7 jne SHORT $LL143@glfwRefres ; 399 : ; 400 : if (strncmp(version, prefixes[i], length) == 0) 001d0 4c 8b c7 mov r8, rdi 001d3 48 8b d5 mov rdx, rbp 001d6 49 8b cf mov rcx, r15 001d9 ff 15 00 00 00 00 call QWORD PTR __imp_strncmp 001df 85 c0 test eax, eax 001e1 74 0f je SHORT $LN122@glfwRefres ; 380 : { ; 381 : if (ctxconfig->client == GLFW_OPENGL_API) ; 382 : { ; 383 : _glfwInputError(GLFW_PLATFORM_ERROR, ; 384 : "OpenGL version string retrieval is broken"); ; 385 : } ; 386 : else ; 387 : { ; 388 : _glfwInputError(GLFW_PLATFORM_ERROR, ; 389 : "OpenGL ES version string retrieval is broken"); ; 390 : } ; 391 : ; 392 : glfwMakeContextCurrent((GLFWwindow*)previous); ; 393 : return GLFW_FALSE; ; 394 : } ; 395 : ; 396 : for (i = 0; prefixes[i]; i++) 001e3 4a 8b 6c f4 38 mov rbp, QWORD PTR prefixes$[rsp+r14*8+8] 001e8 49 ff c6 inc r14 001eb 48 85 ed test rbp, rbp 001ee 75 d0 jne SHORT $LL7@glfwRefres ; 399 : ; 400 : if (strncmp(version, prefixes[i], length) == 0) 001f0 eb 0d jmp SHORT $LN3@glfwRefres $LN122@glfwRefres: ; 401 : { ; 402 : version += length; 001f2 4c 03 ff add r15, rdi ; 403 : window->context.client = GLFW_OPENGL_ES_API; 001f5 c7 86 08 02 00 00 02 00 03 00 mov DWORD PTR [rsi+520], 196610 ; 00030002H $LN3@glfwRefres: ; 404 : break; ; 405 : } ; 406 : } ; 407 : ; 408 : if (!sscanf(version, "%d.%d.%d", 001ff 48 8d 86 18 02 00 00 lea rax, QWORD PTR [rsi+536] 00206 49 8b cf mov rcx, r15 00209 4c 8d 8e 14 02 00 00 lea r9, QWORD PTR [rsi+532] 00210 48 89 44 24 20 mov QWORD PTR [rsp+32], rax 00215 4c 8d 86 10 02 00 00 lea r8, QWORD PTR [rsi+528] 0021c 48 8d 15 00 00 00 00 lea rdx, OFFSET FLAT:??_C@_08FOJKHHJA@?$CFd?4?$CFd?4?$CFd@ 00223 e8 00 00 00 00 call sscanf 00228 85 c0 test eax, eax 0022a 75 57 jne SHORT $LN11@glfwRefres ; 618 : _GLFWwindow* window = (_GLFWwindow*)handle; 0022c 81 be 08 02 00 00 01 00 03 00 cmp DWORD PTR [rsi+520], 196609 ; 00030001H 00236 48 8d 05 00 00 00 00 lea rax, OFFSET FLAT:??_C@_0CN@FALFGDO@No?5version?5found?5in?5OpenGL?5ES?5v@ 0023d 48 8d 15 00 00 00 00 lea rdx, OFFSET FLAT:??_C@_0CK@DDNMEIKD@No?5version?5found?5in?5OpenGL?5vers@ 00244 b9 08 00 01 00 mov ecx, 65544 ; 00010008H 00249 48 0f 45 d0 cmovne rdx, rax 0024d e8 00 00 00 00 call _glfwInputError ; 621 : _GLFW_REQUIRE_INIT(); 00252 83 3d 00 00 00 00 00 cmp DWORD PTR _glfw, 0 00259 0f 84 85 00 00 00 je $LN223@glfwRefres $LN72@glfwRefres: ; 374 : glfwMakeContextCurrent((GLFWwindow*)previous); ; 375 : return GLFW_FALSE; 0025f 8b 0d a8 19 00 00 mov ecx, DWORD PTR _glfw+6568 00265 ff 15 00 00 00 00 call QWORD PTR __imp_TlsGetValue 0026b 48 8b d0 mov rdx, rax 0026e 48 85 db test rbx, rbx 00271 0f 84 2b 03 00 00 je $LN63@glfwRefres 00277 83 bb 08 02 00 00 00 cmp DWORD PTR [rbx+520], 0 0027e e9 0a 03 00 00 jmp $LN217@glfwRefres $LN11@glfwRefres: ; 409 : &window->context.major, ; 410 : &window->context.minor, ; 411 : &window->context.revision)) ; 412 : { ; 413 : if (window->context.client == GLFW_OPENGL_API) ; 414 : { ; 415 : _glfwInputError(GLFW_PLATFORM_ERROR, ; 416 : "No version found in OpenGL version string"); ; 417 : } ; 418 : else ; 419 : { ; 420 : _glfwInputError(GLFW_PLATFORM_ERROR, ; 421 : "No version found in OpenGL ES version string"); ; 422 : } ; 423 : ; 424 : glfwMakeContextCurrent((GLFWwindow*)previous); ; 425 : return GLFW_FALSE; ; 426 : } ; 427 : ; 428 : if (window->context.major < ctxconfig->major || 00283 8b 86 10 02 00 00 mov eax, DWORD PTR [rsi+528] 00289 45 8b 45 08 mov r8d, DWORD PTR [r13+8] 0028d 41 3b c0 cmp eax, r8d 00290 0f 8c 81 02 00 00 jl $LN132@glfwRefres 00296 75 10 jne SHORT $LN131@glfwRefres 00298 8b 8e 14 02 00 00 mov ecx, DWORD PTR [rsi+532] 0029e 41 3b 4d 0c cmp ecx, DWORD PTR [r13+12] 002a2 0f 8c 75 02 00 00 jl $LN128@glfwRefres $LN131@glfwRefres: ; 429 : (window->context.major == ctxconfig->major && ; 430 : window->context.minor < ctxconfig->minor)) ; 431 : { ; 432 : // The desired OpenGL version is greater than the actual version ; 433 : // This only happens if the machine lacks {GLX|WGL}_ARB_create_context ; 434 : // /and/ the user has requested an OpenGL version greater than 1.0 ; 435 : ; 436 : // For API consistency, we emulate the behavior of the ; 437 : // {GLX|WGL}_ARB_create_context extension and fail here ; 438 : ; 439 : if (window->context.client == GLFW_OPENGL_API) ; 440 : { ; 441 : _glfwInputError(GLFW_VERSION_UNAVAILABLE, ; 442 : "Requested OpenGL version %i.%i, got version %i.%i", ; 443 : ctxconfig->major, ctxconfig->minor, ; 444 : window->context.major, window->context.minor); ; 445 : } ; 446 : else ; 447 : { ; 448 : _glfwInputError(GLFW_VERSION_UNAVAILABLE, ; 449 : "Requested OpenGL ES version %i.%i, got version %i.%i", ; 450 : ctxconfig->major, ctxconfig->minor, ; 451 : window->context.major, window->context.minor); ; 452 : } ; 453 : ; 454 : glfwMakeContextCurrent((GLFWwindow*)previous); ; 455 : return GLFW_FALSE; ; 456 : } ; 457 : ; 458 : if (window->context.major >= 3) 002a8 83 f8 03 cmp eax, 3 002ab 7c 48 jl SHORT $LN130@glfwRefres ; 459 : { ; 460 : // OpenGL 3.0+ uses a different function for extension string retrieval ; 461 : // We cache it here instead of in glfwExtensionSupported mostly to alert ; 462 : // users as early as possible that their build may be broken ; 463 : ; 464 : window->context.GetStringi = (PFNGLGETSTRINGIPROC) 002ad 48 8d 0d 00 00 00 00 lea rcx, OFFSET FLAT:??_C@_0N@PILJCBOD@glGetStringi@ 002b4 ff 96 70 02 00 00 call QWORD PTR [rsi+624] 002ba 48 89 86 38 02 00 00 mov QWORD PTR [rsi+568], rax ; 465 : window->context.getProcAddress("glGetStringi"); ; 466 : if (!window->context.GetStringi) 002c1 48 85 c0 test rax, rax 002c4 75 2f jne SHORT $LN130@glfwRefres ; 467 : { ; 468 : _glfwInputError(GLFW_PLATFORM_ERROR, 002c6 48 8d 15 00 00 00 00 lea rdx, OFFSET FLAT:??_C@_0CA@LDAANPIM@Entry?5point?5retrieval?5is?5broken@ 002cd b9 08 00 01 00 mov ecx, 65544 ; 00010008H 002d2 e8 00 00 00 00 call _glfwInputError $LN225@glfwRefres: ; 374 : glfwMakeContextCurrent((GLFWwindow*)previous); ; 375 : return GLFW_FALSE; 002d7 83 3d 00 00 00 00 00 cmp DWORD PTR _glfw, 0 002de 0f 85 7b ff ff ff jne $LN72@glfwRefres $LN223@glfwRefres: 002e4 33 d2 xor edx, edx 002e6 b9 01 00 01 00 mov ecx, 65537 ; 00010001H 002eb e8 00 00 00 00 call _glfwInputError 002f0 e9 db 02 00 00 jmp $LN67@glfwRefres $LN130@glfwRefres: ; 469 : "Entry point retrieval is broken"); ; 470 : glfwMakeContextCurrent((GLFWwindow*)previous); ; 471 : return GLFW_FALSE; ; 472 : } ; 473 : } ; 474 : ; 475 : if (window->context.client == GLFW_OPENGL_API) 002f5 81 be 08 02 00 00 01 00 03 00 cmp DWORD PTR [rsi+520], 196609 ; 00030001H 002ff 0f 85 d3 00 00 00 jne $LN20@glfwRefres ; 476 : { ; 477 : // Read back context flags (OpenGL 3.0 and above) ; 478 : if (window->context.major >= 3) 00305 83 be 10 02 00 00 03 cmp DWORD PTR [rsi+528], 3 0030c 7c 59 jl SHORT $LN27@glfwRefres ; 479 : { ; 480 : GLint flags; ; 481 : window->context.GetIntegerv(GL_CONTEXT_FLAGS, &flags); 0030e 48 8d 54 24 50 lea rdx, QWORD PTR flags$4[rsp] 00313 b9 1e 82 00 00 mov ecx, 33310 ; 0000821eH 00318 ff 96 40 02 00 00 call QWORD PTR [rsi+576] ; 482 : ; 483 : if (flags & GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT) 0031e 8b 44 24 50 mov eax, DWORD PTR flags$4[rsp] 00322 a8 01 test al, 1 00324 74 0a je SHORT $LN23@glfwRefres ; 484 : window->context.forward = GLFW_TRUE; 00326 c7 86 1c 02 00 00 01 00 00 00 mov DWORD PTR [rsi+540], 1 $LN23@glfwRefres: ; 485 : ; 486 : if (flags & GL_CONTEXT_FLAG_DEBUG_BIT) 00330 a8 02 test al, 2 00332 75 1b jne SHORT $LN141@glfwRefres ; 487 : window->context.debug = GLFW_TRUE; ; 488 : else if (glfwExtensionSupported("GL_ARB_debug_output") && 00334 48 8d 0d 00 00 00 00 lea rcx, OFFSET FLAT:??_C@_0BE@OHIPHHMJ@GL_ARB_debug_output@ 0033b e8 00 00 00 00 call glfwExtensionSupported 00340 85 c0 test eax, eax 00342 74 6b je SHORT $LN144@glfwRefres 00344 41 83 7d 14 00 cmp DWORD PTR [r13+20], 0 00349 74 64 je SHORT $LN144@glfwRefres 0034b 8b 44 24 50 mov eax, DWORD PTR flags$4[rsp] $LN141@glfwRefres: ; 489 : ctxconfig->debug) ; 490 : { ; 491 : // HACK: This is a workaround for older drivers (pre KHR_debug) ; 492 : // not setting the debug bit in the context flags for ; 493 : // debug contexts ; 494 : window->context.debug = GLFW_TRUE; 0034f c7 86 20 02 00 00 01 00 00 00 mov DWORD PTR [rsi+544], 1 $LN26@glfwRefres: ; 495 : } ; 496 : ; 497 : if (flags & GL_CONTEXT_FLAG_NO_ERROR_BIT_KHR) 00359 a8 08 test al, 8 0035b 74 0a je SHORT $LN27@glfwRefres ; 498 : window->context.noerror = GLFW_TRUE; 0035d c7 86 24 02 00 00 01 00 00 00 mov DWORD PTR [rsi+548], 1 $LN27@glfwRefres: ; 499 : } ; 500 : ; 501 : // Read back OpenGL context profile (OpenGL 3.2 and above) ; 502 : if (window->context.major >= 4 || 00367 8b 86 10 02 00 00 mov eax, DWORD PTR [rsi+528] 0036d 83 f8 04 cmp eax, 4 00370 7d 0e jge SHORT $LN29@glfwRefres 00372 83 f8 03 cmp eax, 3 00375 75 58 jne SHORT $LN34@glfwRefres 00377 83 be 14 02 00 00 02 cmp DWORD PTR [rsi+532], 2 0037e 7c 4f jl SHORT $LN34@glfwRefres $LN29@glfwRefres: ; 503 : (window->context.major == 3 && window->context.minor >= 2)) ; 504 : { ; 505 : GLint mask; ; 506 : window->context.GetIntegerv(GL_CONTEXT_PROFILE_MASK, &mask); 00380 48 8d 54 24 50 lea rdx, QWORD PTR mask$3[rsp] 00385 b9 26 91 00 00 mov ecx, 37158 ; 00009126H 0038a ff 96 40 02 00 00 call QWORD PTR [rsi+576] ; 507 : ; 508 : if (mask & GL_CONTEXT_COMPATIBILITY_PROFILE_BIT) 00390 8b 44 24 50 mov eax, DWORD PTR mask$3[rsp] 00394 a8 02 test al, 2 00396 75 2d jne SHORT $LN139@glfwRefres ; 509 : window->context.profile = GLFW_OPENGL_COMPAT_PROFILE; ; 510 : else if (mask & GL_CONTEXT_CORE_PROFILE_BIT) 00398 a8 01 test al, 1 0039a 74 19 je SHORT $LN32@glfwRefres ; 511 : window->context.profile = GLFW_OPENGL_CORE_PROFILE; 0039c c7 86 28 02 00 00 01 20 03 00 mov DWORD PTR [rsi+552], 204801 ; 00032001H ; 519 : } ; 520 : } ; 521 : ; 522 : // Read back robustness strategy ; 523 : if (glfwExtensionSupported("GL_ARB_robustness")) 003a6 48 8d 0d 00 00 00 00 lea rcx, OFFSET FLAT:??_C@_0BC@EOBKJDCM@GL_ARB_robustness@ ; 524 : { ; 525 : // NOTE: We avoid using the context flags for detection, as they are ; 526 : // only present from 3.0 while the extension applies from 1.1 ; 527 : ; 528 : GLint strategy; ; 529 : window->context.GetIntegerv(GL_RESET_NOTIFICATION_STRATEGY_ARB, ; 530 : &strategy); ; 531 : ; 532 : if (strategy == GL_LOSE_CONTEXT_ON_RESET_ARB) ; 533 : window->context.robustness = GLFW_LOSE_CONTEXT_ON_RESET; ; 534 : else if (strategy == GL_NO_RESET_NOTIFICATION_ARB) ; 535 : window->context.robustness = GLFW_NO_RESET_NOTIFICATION; ; 536 : } ; 537 : } 003ad eb 30 jmp SHORT $LN222@glfwRefres $LN144@glfwRefres: ; 487 : window->context.debug = GLFW_TRUE; ; 488 : else if (glfwExtensionSupported("GL_ARB_debug_output") && 003af 8b 44 24 50 mov eax, DWORD PTR flags$4[rsp] 003b3 eb a4 jmp SHORT $LN26@glfwRefres $LN32@glfwRefres: ; 512 : else if (glfwExtensionSupported("GL_ARB_compatibility")) 003b5 48 8d 0d 00 00 00 00 lea rcx, OFFSET FLAT:??_C@_0BF@CJMIIMBG@GL_ARB_compatibility@ 003bc e8 00 00 00 00 call glfwExtensionSupported 003c1 85 c0 test eax, eax 003c3 74 0a je SHORT $LN34@glfwRefres $LN139@glfwRefres: ; 513 : { ; 514 : // HACK: This is a workaround for the compatibility profile bit ; 515 : // not being set in the context flags if an OpenGL 3.2+ ; 516 : // context was created without having requested a specific ; 517 : // version ; 518 : window->context.profile = GLFW_OPENGL_COMPAT_PROFILE; 003c5 c7 86 28 02 00 00 02 20 03 00 mov DWORD PTR [rsi+552], 204802 ; 00032002H $LN34@glfwRefres: ; 519 : } ; 520 : } ; 521 : ; 522 : // Read back robustness strategy ; 523 : if (glfwExtensionSupported("GL_ARB_robustness")) 003cf 48 8d 0d 00 00 00 00 lea rcx, OFFSET FLAT:??_C@_0BC@EOBKJDCM@GL_ARB_robustness@ ; 524 : { ; 525 : // NOTE: We avoid using the context flags for detection, as they are ; 526 : // only present from 3.0 while the extension applies from 1.1 ; 527 : ; 528 : GLint strategy; ; 529 : window->context.GetIntegerv(GL_RESET_NOTIFICATION_STRATEGY_ARB, ; 530 : &strategy); ; 531 : ; 532 : if (strategy == GL_LOSE_CONTEXT_ON_RESET_ARB) ; 533 : window->context.robustness = GLFW_LOSE_CONTEXT_ON_RESET; ; 534 : else if (strategy == GL_NO_RESET_NOTIFICATION_ARB) ; 535 : window->context.robustness = GLFW_NO_RESET_NOTIFICATION; ; 536 : } ; 537 : } 003d6 eb 07 jmp SHORT $LN222@glfwRefres $LN20@glfwRefres: ; 538 : else ; 539 : { ; 540 : // Read back robustness strategy ; 541 : if (glfwExtensionSupported("GL_EXT_robustness")) 003d8 48 8d 0d 00 00 00 00 lea rcx, OFFSET FLAT:??_C@_0BC@CLDFFND@GL_EXT_robustness@ $LN222@glfwRefres: ; 542 : { ; 543 : // NOTE: The values of these constants match those of the OpenGL ARB ; 544 : // one, so we can reuse them here ; 545 : ; 546 : GLint strategy; ; 547 : window->context.GetIntegerv(GL_RESET_NOTIFICATION_STRATEGY_ARB, ; 548 : &strategy); ; 549 : ; 550 : if (strategy == GL_LOSE_CONTEXT_ON_RESET_ARB) ; 551 : window->context.robustness = GLFW_LOSE_CONTEXT_ON_RESET; ; 552 : else if (strategy == GL_NO_RESET_NOTIFICATION_ARB) ; 553 : window->context.robustness = GLFW_NO_RESET_NOTIFICATION; ; 554 : } ; 555 : } ; 556 : ; 557 : if (glfwExtensionSupported("GL_KHR_context_flush_control")) 003df e8 00 00 00 00 call glfwExtensionSupported 003e4 85 c0 test eax, eax 003e6 74 38 je SHORT $LN42@glfwRefres 003e8 48 8d 54 24 50 lea rdx, QWORD PTR strategy$2[rsp] 003ed b9 56 82 00 00 mov ecx, 33366 ; 00008256H 003f2 ff 96 40 02 00 00 call QWORD PTR [rsi+576] 003f8 8b 44 24 50 mov eax, DWORD PTR strategy$2[rsp] 003fc 3d 52 82 00 00 cmp eax, 33362 ; 00008252H 00401 75 0c jne SHORT $LN40@glfwRefres 00403 c7 86 2c 02 00 00 02 10 03 00 mov DWORD PTR [rsi+556], 200706 ; 00031002H 0040d eb 11 jmp SHORT $LN42@glfwRefres $LN40@glfwRefres: 0040f 3d 61 82 00 00 cmp eax, 33377 ; 00008261H 00414 75 0a jne SHORT $LN42@glfwRefres 00416 c7 86 2c 02 00 00 01 10 03 00 mov DWORD PTR [rsi+556], 200705 ; 00031001H $LN42@glfwRefres: 00420 48 8d 0d 00 00 00 00 lea rcx, OFFSET FLAT:??_C@_0BN@FNDGKECA@GL_KHR_context_flush_control@ 00427 e8 00 00 00 00 call glfwExtensionSupported 0042c 85 c0 test eax, eax 0042e 74 35 je SHORT $LN46@glfwRefres ; 558 : { ; 559 : GLint behavior; ; 560 : window->context.GetIntegerv(GL_CONTEXT_RELEASE_BEHAVIOR, &behavior); 00430 48 8d 54 24 50 lea rdx, QWORD PTR behavior$1[rsp] 00435 b9 fb 82 00 00 mov ecx, 33531 ; 000082fbH 0043a ff 96 40 02 00 00 call QWORD PTR [rsi+576] ; 561 : ; 562 : if (behavior == GL_NONE) 00440 8b 44 24 50 mov eax, DWORD PTR behavior$1[rsp] 00444 85 c0 test eax, eax 00446 75 0c jne SHORT $LN44@glfwRefres ; 563 : window->context.release = GLFW_RELEASE_BEHAVIOR_NONE; 00448 c7 86 30 02 00 00 02 50 03 00 mov DWORD PTR [rsi+560], 217090 ; 00035002H 00452 eb 11 jmp SHORT $LN46@glfwRefres $LN44@glfwRefres: ; 564 : else if (behavior == GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH) 00454 3d fc 82 00 00 cmp eax, 33532 ; 000082fcH 00459 75 0a jne SHORT $LN46@glfwRefres ; 565 : window->context.release = GLFW_RELEASE_BEHAVIOR_FLUSH; 0045b c7 86 30 02 00 00 01 50 03 00 mov DWORD PTR [rsi+560], 217089 ; 00035001H $LN46@glfwRefres: ; 566 : } ; 567 : ; 568 : // Clearing the front buffer to black to avoid garbage pixels left over from ; 569 : // previous uses of our bit of VRAM ; 570 : { ; 571 : PFNGLCLEARPROC glClear = (PFNGLCLEARPROC) 00465 48 8d 0d 00 00 00 00 lea rcx, OFFSET FLAT:??_C@_07IBAPPAHJ@glClear@ 0046c ff 96 70 02 00 00 call QWORD PTR [rsi+624] ; 572 : window->context.getProcAddress("glClear"); ; 573 : glClear(GL_COLOR_BUFFER_BIT); 00472 b9 00 40 00 00 mov ecx, 16384 ; 00004000H 00477 ff d0 call rax ; 574 : ; 575 : if (window->doublebuffer) 00479 83 7e 30 00 cmp DWORD PTR [rsi+48], 0 0047d 74 09 je SHORT $LN47@glfwRefres ; 576 : window->context.swapBuffers(window); 0047f 48 8b ce mov rcx, rsi 00482 ff 96 58 02 00 00 call QWORD PTR [rsi+600] $LN47@glfwRefres: ; 621 : _GLFW_REQUIRE_INIT(); 00488 83 3d 00 00 00 00 00 cmp DWORD PTR _glfw, 0 0048f 75 16 jne SHORT $LN92@glfwRefres 00491 33 d2 xor edx, edx 00493 b9 01 00 01 00 mov ecx, 65537 ; 00010001H 00498 e8 00 00 00 00 call _glfwInputError ; 577 : } ; 578 : ; 579 : glfwMakeContextCurrent((GLFWwindow*)previous); ; 580 : return GLFW_TRUE; 0049d b8 01 00 00 00 mov eax, 1 004a2 e9 2b 01 00 00 jmp $LN1@glfwRefres $LN92@glfwRefres: ; File D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpGraphic\code\glfw\win32_thread.c ; 66 : return TlsGetValue(tls->win32.index); 004a7 8b 0d a8 19 00 00 mov ecx, DWORD PTR _glfw+6568 004ad ff 15 00 00 00 00 call QWORD PTR __imp_TlsGetValue 004b3 48 8b d0 mov rdx, rax ; File D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpGraphic\code\glfw\context.c ; 625 : if (window && window->context.client == GLFW_NO_API) 004b6 48 85 db test rbx, rbx 004b9 74 24 je SHORT $LN93@glfwRefres 004bb 83 bb 08 02 00 00 00 cmp DWORD PTR [rbx+520], 0 004c2 75 1b jne SHORT $LN93@glfwRefres ; 626 : { ; 627 : _glfwInputError(GLFW_NO_WINDOW_CONTEXT, 004c4 48 8d 15 00 00 00 00 lea rdx, OFFSET FLAT:??_C@_0EK@HBJBDMAL@Cannot?5make?5current?5with?5a?5wind@ 004cb b9 0a 00 01 00 mov ecx, 65546 ; 0001000aH 004d0 e8 00 00 00 00 call _glfwInputError ; 577 : } ; 578 : ; 579 : glfwMakeContextCurrent((GLFWwindow*)previous); ; 580 : return GLFW_TRUE; 004d5 b8 01 00 00 00 mov eax, 1 004da e9 f3 00 00 00 jmp $LN1@glfwRefres $LN93@glfwRefres: ; 632 : if (previous) 004df 48 85 d2 test rdx, rdx 004e2 74 1b je SHORT $LN95@glfwRefres ; 633 : { ; 634 : if (!window || window->context.source != previous->context.source) 004e4 48 85 db test rbx, rbx 004e7 74 0e je SHORT $LN96@glfwRefres 004e9 8b 80 0c 02 00 00 mov eax, DWORD PTR [rax+524] 004ef 39 83 0c 02 00 00 cmp DWORD PTR [rbx+524], eax 004f5 74 0d je SHORT $LN135@glfwRefres $LN96@glfwRefres: ; 635 : previous->context.makeCurrent(NULL); 004f7 33 c9 xor ecx, ecx 004f9 ff 92 50 02 00 00 call QWORD PTR [rdx+592] $LN95@glfwRefres: ; 636 : } ; 637 : ; 638 : if (window) 004ff 48 85 db test rbx, rbx 00502 74 09 je SHORT $LN97@glfwRefres $LN135@glfwRefres: ; 639 : window->context.makeCurrent(window); 00504 48 8b cb mov rcx, rbx 00507 ff 93 50 02 00 00 call QWORD PTR [rbx+592] $LN97@glfwRefres: ; 577 : } ; 578 : ; 579 : glfwMakeContextCurrent((GLFWwindow*)previous); ; 580 : return GLFW_TRUE; 0050d b8 01 00 00 00 mov eax, 1 00512 e9 bb 00 00 00 jmp $LN1@glfwRefres $LN132@glfwRefres: ; 409 : &window->context.major, ; 410 : &window->context.minor, ; 411 : &window->context.revision)) ; 412 : { ; 413 : if (window->context.client == GLFW_OPENGL_API) ; 414 : { ; 415 : _glfwInputError(GLFW_PLATFORM_ERROR, ; 416 : "No version found in OpenGL version string"); ; 417 : } ; 418 : else ; 419 : { ; 420 : _glfwInputError(GLFW_PLATFORM_ERROR, ; 421 : "No version found in OpenGL ES version string"); ; 422 : } ; 423 : ; 424 : glfwMakeContextCurrent((GLFWwindow*)previous); ; 425 : return GLFW_FALSE; ; 426 : } ; 427 : ; 428 : if (window->context.major < ctxconfig->major || 00517 8b 8e 14 02 00 00 mov ecx, DWORD PTR [rsi+532] $LN128@glfwRefres: ; 618 : _GLFWwindow* window = (_GLFWwindow*)handle; 0051d 81 be 08 02 00 00 01 00 03 00 cmp DWORD PTR [rsi+520], 196609 ; 00030001H 00527 4c 8d 0d 00 00 00 00 lea r9, OFFSET FLAT:??_C@_0DF@EFFMOKHE@Requested?5OpenGL?5ES?5version?5?$CFi?4@ 0052e 89 4c 24 28 mov DWORD PTR [rsp+40], ecx 00532 48 8d 15 00 00 00 00 lea rdx, OFFSET FLAT:??_C@_0DC@KIAJNHJN@Requested?5OpenGL?5version?5?$CFi?4?$CFi?0@ 00539 49 0f 45 d1 cmovne rdx, r9 0053d 89 44 24 20 mov DWORD PTR [rsp+32], eax 00541 45 8b 4d 0c mov r9d, DWORD PTR [r13+12] 00545 b9 07 00 01 00 mov ecx, 65543 ; 00010007H 0054a e8 00 00 00 00 call _glfwInputError ; 621 : _GLFW_REQUIRE_INIT(); 0054f e9 83 fd ff ff jmp $LN225@glfwRefres $LN6@glfwRefres: ; 372 : { ; 373 : _glfwInputError(GLFW_PLATFORM_ERROR, "Entry point retrieval is broken"); 00554 48 8d 15 00 00 00 00 lea rdx, OFFSET FLAT:??_C@_0CA@LDAANPIM@Entry?5point?5retrieval?5is?5broken@ 0055b b9 08 00 01 00 mov ecx, 65544 ; 00010008H 00560 e8 00 00 00 00 call _glfwInputError ; 621 : _GLFW_REQUIRE_INIT(); 00565 44 39 35 00 00 00 00 cmp DWORD PTR _glfw, r14d 0056c 0f 84 72 fd ff ff je $LN223@glfwRefres ; File D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpGraphic\code\glfw\win32_thread.c ; 66 : return TlsGetValue(tls->win32.index); 00572 8b 0d a8 19 00 00 mov ecx, DWORD PTR _glfw+6568 00578 ff 15 00 00 00 00 call QWORD PTR __imp_TlsGetValue 0057e 48 8b d0 mov rdx, rax ; File D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpGraphic\code\glfw\context.c ; 625 : if (window && window->context.client == GLFW_NO_API) 00581 48 85 db test rbx, rbx 00584 74 1c je SHORT $LN63@glfwRefres 00586 44 39 b3 08 02 00 00 cmp DWORD PTR [rbx+520], r14d $LN217@glfwRefres: ; 374 : glfwMakeContextCurrent((GLFWwindow*)previous); ; 375 : return GLFW_FALSE; 0058d 75 13 jne SHORT $LN63@glfwRefres $LN224@glfwRefres: 0058f 48 8d 15 00 00 00 00 lea rdx, OFFSET FLAT:??_C@_0EK@HBJBDMAL@Cannot?5make?5current?5with?5a?5wind@ 00596 b9 0a 00 01 00 mov ecx, 65546 ; 0001000aH 0059b e8 00 00 00 00 call _glfwInputError 005a0 eb 2e jmp SHORT $LN67@glfwRefres $LN63@glfwRefres: 005a2 48 85 d2 test rdx, rdx 005a5 74 1b je SHORT $LN65@glfwRefres 005a7 48 85 db test rbx, rbx 005aa 74 0e je SHORT $LN66@glfwRefres 005ac 8b 80 0c 02 00 00 mov eax, DWORD PTR [rax+524] 005b2 39 83 0c 02 00 00 cmp DWORD PTR [rbx+524], eax 005b8 74 0d je SHORT $LN133@glfwRefres $LN66@glfwRefres: 005ba 33 c9 xor ecx, ecx 005bc ff 92 50 02 00 00 call QWORD PTR [rdx+592] $LN65@glfwRefres: 005c2 48 85 db test rbx, rbx 005c5 74 09 je SHORT $LN67@glfwRefres $LN133@glfwRefres: 005c7 48 8b cb mov rcx, rbx 005ca ff 93 50 02 00 00 call QWORD PTR [rbx+592] $LN67@glfwRefres: 005d0 33 c0 xor eax, eax $LN1@glfwRefres: 005d2 4c 8b bc 24 a8 00 00 00 mov r15, QWORD PTR [rsp+168] ; 581 : } 005da 48 8b bc 24 a0 00 00 00 mov rdi, QWORD PTR [rsp+160] 005e2 48 8b 4c 24 58 mov rcx, QWORD PTR __$ArrayPad$[rsp] 005e7 48 33 cc xor rcx, rsp 005ea e8 00 00 00 00 call __security_check_cookie 005ef 48 83 c4 60 add rsp, 96 ; 00000060H 005f3 41 5e pop r14 005f5 41 5d pop r13 005f7 5e pop rsi 005f8 5d pop rbp 005f9 5b pop rbx 005fa c3 ret 0 _glfwRefreshContextAttribs ENDP _TEXT ENDS ; Function compile flags: /Ogtpy ; File D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpGraphic\code\glfw\context.c ; COMDAT _glfwStringInExtensionString _TEXT SEGMENT string$ = 48 extensions$ = 56 _glfwStringInExtensionString PROC ; COMDAT ; 586 : { $LN26: 00000 48 89 5c 24 08 mov QWORD PTR [rsp+8], rbx 00005 57 push rdi 00006 48 83 ec 20 sub rsp, 32 ; 00000020H 0000a 48 8b fa mov rdi, rdx 0000d 48 8b d9 mov rbx, rcx ; 587 : const char* start = extensions; ; 588 : ; 589 : for (;;) ; 590 : { ; 591 : const char* where; ; 592 : const char* terminator; ; 593 : ; 594 : where = strstr(start, string); 00010 48 8b d1 mov rdx, rcx 00013 48 8b cf mov rcx, rdi 00016 ff 15 00 00 00 00 call QWORD PTR __imp_strstr ; 595 : if (!where) 0001c 48 85 c0 test rax, rax 0001f 74 43 je SHORT $LN12@glfwString 00021 0f 1f 40 00 66 66 66 0f 1f 84 00 00 00 00 00 npad 15 $LL2@glfwString: ; 597 : ; 598 : terminator = where + strlen(string); 00030 48 c7 c1 ff ff ff ff mov rcx, -1 $LL20@glfwString: 00037 48 ff c1 inc rcx 0003a 80 3c 0b 00 cmp BYTE PTR [rbx+rcx], 0 0003e 75 f7 jne SHORT $LL20@glfwString 00040 48 03 c8 add rcx, rax ; 599 : if (where == start || *(where - 1) == ' ') 00043 48 3b c7 cmp rax, rdi 00046 74 06 je SHORT $LN7@glfwString 00048 80 78 ff 20 cmp BYTE PTR [rax-1], 32 ; 00000020H 0004c 75 05 jne SHORT $LN18@glfwString $LN7@glfwString: ; 600 : { ; 601 : if (*terminator == ' ' || *terminator == '\0') 0004e f6 01 df test BYTE PTR [rcx], 223 ; 000000dfH 00051 74 1e je SHORT $LN13@glfwString $LN18@glfwString: ; 587 : const char* start = extensions; ; 588 : ; 589 : for (;;) ; 590 : { ; 591 : const char* where; ; 592 : const char* terminator; ; 593 : ; 594 : where = strstr(start, string); 00053 48 8b d3 mov rdx, rbx ; 602 : break; ; 603 : } ; 604 : ; 605 : start = terminator; 00056 48 8b f9 mov rdi, rcx 00059 ff 15 00 00 00 00 call QWORD PTR __imp_strstr 0005f 48 85 c0 test rax, rax 00062 75 cc jne SHORT $LL2@glfwString $LN12@glfwString: ; 596 : return GLFW_FALSE; 00064 33 c0 xor eax, eax ; 606 : } ; 607 : ; 608 : return GLFW_TRUE; ; 609 : } 00066 48 8b 5c 24 30 mov rbx, QWORD PTR [rsp+48] 0006b 48 83 c4 20 add rsp, 32 ; 00000020H 0006f 5f pop rdi 00070 c3 ret 0 $LN13@glfwString: 00071 48 8b 5c 24 30 mov rbx, QWORD PTR [rsp+48] 00076 b8 01 00 00 00 mov eax, 1 0007b 48 83 c4 20 add rsp, 32 ; 00000020H 0007f 5f pop rdi 00080 c3 ret 0 _glfwStringInExtensionString ENDP _TEXT ENDS ; Function compile flags: /Ogtpy ; File D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpGraphic\code\glfw\context.c ; File D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpGraphic\code\glfw\win32_thread.c ; File D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpGraphic\code\glfw\context.c ; COMDAT glfwMakeContextCurrent _TEXT SEGMENT handle$ = 48 glfwMakeContextCurrent PROC ; COMDAT ; 617 : { $LN18: 00000 40 53 push rbx 00002 48 83 ec 20 sub rsp, 32 ; 00000020H ; 618 : _GLFWwindow* window = (_GLFWwindow*)handle; ; 619 : _GLFWwindow* previous; ; 620 : ; 621 : _GLFW_REQUIRE_INIT(); 00006 83 3d 00 00 00 00 00 cmp DWORD PTR _glfw, 0 0000d 48 8b d9 mov rbx, rcx 00010 75 11 jne SHORT $LN2@glfwMakeCo 00012 33 d2 xor edx, edx 00014 b9 01 00 01 00 mov ecx, 65537 ; 00010001H ; 640 : } 00019 48 83 c4 20 add rsp, 32 ; 00000020H 0001d 5b pop rbx ; 618 : _GLFWwindow* window = (_GLFWwindow*)handle; ; 619 : _GLFWwindow* previous; ; 620 : ; 621 : _GLFW_REQUIRE_INIT(); 0001e e9 00 00 00 00 jmp _glfwInputError $LN2@glfwMakeCo: ; File D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpGraphic\code\glfw\win32_thread.c ; 66 : return TlsGetValue(tls->win32.index); 00023 8b 0d a8 19 00 00 mov ecx, DWORD PTR _glfw+6568 00029 ff 15 00 00 00 00 call QWORD PTR __imp_TlsGetValue 0002f 48 8b d0 mov rdx, rax ; File D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpGraphic\code\glfw\context.c ; 625 : if (window && window->context.client == GLFW_NO_API) 00032 48 85 db test rbx, rbx 00035 74 1f je SHORT $LN3@glfwMakeCo 00037 83 bb 08 02 00 00 00 cmp DWORD PTR [rbx+520], 0 0003e 75 16 jne SHORT $LN3@glfwMakeCo ; 626 : { ; 627 : _glfwInputError(GLFW_NO_WINDOW_CONTEXT, 00040 48 8d 15 00 00 00 00 lea rdx, OFFSET FLAT:??_C@_0EK@HBJBDMAL@Cannot?5make?5current?5with?5a?5wind@ 00047 b9 0a 00 01 00 mov ecx, 65546 ; 0001000aH ; 640 : } 0004c 48 83 c4 20 add rsp, 32 ; 00000020H 00050 5b pop rbx ; 626 : { ; 627 : _glfwInputError(GLFW_NO_WINDOW_CONTEXT, 00051 e9 00 00 00 00 jmp _glfwInputError $LN3@glfwMakeCo: ; 628 : "Cannot make current with a window that has no OpenGL or OpenGL ES context"); ; 629 : return; ; 630 : } ; 631 : ; 632 : if (previous) 00056 48 85 d2 test rdx, rdx 00059 74 1b je SHORT $LN5@glfwMakeCo ; 633 : { ; 634 : if (!window || window->context.source != previous->context.source) 0005b 48 85 db test rbx, rbx 0005e 74 0e je SHORT $LN6@glfwMakeCo 00060 8b 80 0c 02 00 00 mov eax, DWORD PTR [rax+524] 00066 39 83 0c 02 00 00 cmp DWORD PTR [rbx+524], eax 0006c 74 0d je SHORT $LN11@glfwMakeCo $LN6@glfwMakeCo: ; 635 : previous->context.makeCurrent(NULL); 0006e 33 c9 xor ecx, ecx 00070 ff 92 50 02 00 00 call QWORD PTR [rdx+592] $LN5@glfwMakeCo: ; 636 : } ; 637 : ; 638 : if (window) 00076 48 85 db test rbx, rbx 00079 74 12 je SHORT $LN7@glfwMakeCo $LN11@glfwMakeCo: ; 639 : window->context.makeCurrent(window); 0007b 48 8b cb mov rcx, rbx ; 626 : { ; 627 : _glfwInputError(GLFW_NO_WINDOW_CONTEXT, 0007e 48 8b 83 50 02 00 00 mov rax, QWORD PTR [rbx+592] ; 640 : } 00085 48 83 c4 20 add rsp, 32 ; 00000020H 00089 5b pop rbx ; 639 : window->context.makeCurrent(window); 0008a 48 ff e0 rex_jmp rax $LN7@glfwMakeCo: ; 640 : } 0008d 48 83 c4 20 add rsp, 32 ; 00000020H 00091 5b pop rbx 00092 c3 ret 0 glfwMakeContextCurrent ENDP _TEXT ENDS ; Function compile flags: /Ogtpy ; File D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpGraphic\code\glfw\context.c ; File D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpGraphic\code\glfw\win32_thread.c ; File D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpGraphic\code\glfw\context.c ; File D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpGraphic\code\glfw\win32_thread.c ; File D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpGraphic\code\glfw\context.c ; COMDAT glfwGetCurrentContext _TEXT SEGMENT glfwGetCurrentContext PROC ; COMDAT ; 643 : { $LN7: 00000 48 83 ec 28 sub rsp, 40 ; 00000028H ; 644 : _GLFW_REQUIRE_INIT_OR_RETURN(NULL); 00004 83 3d 00 00 00 00 00 cmp DWORD PTR _glfw, 0 0000b 75 13 jne SHORT $LN2@glfwGetCur 0000d 33 d2 xor edx, edx 0000f b9 01 00 01 00 mov ecx, 65537 ; 00010001H 00014 e8 00 00 00 00 call _glfwInputError 00019 33 c0 xor eax, eax ; 646 : } 0001b 48 83 c4 28 add rsp, 40 ; 00000028H 0001f c3 ret 0 $LN2@glfwGetCur: ; File D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpGraphic\code\glfw\win32_thread.c ; 66 : return TlsGetValue(tls->win32.index); 00020 8b 0d a8 19 00 00 mov ecx, DWORD PTR _glfw+6568 ; File D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpGraphic\code\glfw\context.c ; 646 : } 00026 48 83 c4 28 add rsp, 40 ; 00000028H ; File D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpGraphic\code\glfw\win32_thread.c ; 66 : return TlsGetValue(tls->win32.index); 0002a 48 ff 25 00 00 00 00 rex_jmp QWORD PTR __imp_TlsGetValue glfwGetCurrentContext ENDP _TEXT ENDS ; Function compile flags: /Ogtpy ; File D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpGraphic\code\glfw\context.c ; COMDAT glfwSwapBuffers _TEXT SEGMENT handle$ = 8 glfwSwapBuffers PROC ; COMDAT ; 650 : _GLFWwindow* window = (_GLFWwindow*)handle; ; 651 : assert(window != NULL); ; 652 : ; 653 : _GLFW_REQUIRE_INIT(); 00000 83 3d 00 00 00 00 00 cmp DWORD PTR _glfw, 0 00007 75 0c jne SHORT $LN2@glfwSwapBu 00009 33 d2 xor edx, edx 0000b b9 01 00 01 00 mov ecx, 65537 ; 00010001H 00010 e9 00 00 00 00 jmp _glfwInputError $LN2@glfwSwapBu: ; 654 : ; 655 : if (window->context.client == GLFW_NO_API) 00015 83 b9 08 02 00 00 00 cmp DWORD PTR [rcx+520], 0 0001c 75 11 jne SHORT $LN3@glfwSwapBu ; 656 : { ; 657 : _glfwInputError(GLFW_NO_WINDOW_CONTEXT, 0001e 48 8d 15 00 00 00 00 lea rdx, OFFSET FLAT:??_C@_0EI@PJFDHBJK@Cannot?5swap?5buffers?5of?5a?5window@ 00025 b9 0a 00 01 00 mov ecx, 65546 ; 0001000aH 0002a e9 00 00 00 00 jmp _glfwInputError $LN3@glfwSwapBu: ; 658 : "Cannot swap buffers of a window that has no OpenGL or OpenGL ES context"); ; 659 : return; ; 660 : } ; 661 : ; 662 : window->context.swapBuffers(window); 0002f 48 ff a1 58 02 00 00 rex_jmp QWORD PTR [rcx+600] glfwSwapBuffers ENDP _TEXT ENDS ; Function compile flags: /Ogtpy ; File D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpGraphic\code\glfw\context.c ; File D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpGraphic\code\glfw\win32_thread.c ; File D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpGraphic\code\glfw\context.c ; COMDAT glfwSwapInterval _TEXT SEGMENT interval$ = 48 glfwSwapInterval PROC ; COMDAT ; 666 : { $LN10: 00000 40 53 push rbx 00002 48 83 ec 20 sub rsp, 32 ; 00000020H ; 667 : _GLFWwindow* window; ; 668 : ; 669 : _GLFW_REQUIRE_INIT(); 00006 83 3d 00 00 00 00 00 cmp DWORD PTR _glfw, 0 0000d 8b d9 mov ebx, ecx 0000f 75 11 jne SHORT $LN2@glfwSwapIn 00011 33 d2 xor edx, edx 00013 b9 01 00 01 00 mov ecx, 65537 ; 00010001H ; 680 : } 00018 48 83 c4 20 add rsp, 32 ; 00000020H 0001c 5b pop rbx ; 667 : _GLFWwindow* window; ; 668 : ; 669 : _GLFW_REQUIRE_INIT(); 0001d e9 00 00 00 00 jmp _glfwInputError $LN2@glfwSwapIn: ; File D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpGraphic\code\glfw\win32_thread.c ; 66 : return TlsGetValue(tls->win32.index); 00022 8b 0d a8 19 00 00 mov ecx, DWORD PTR _glfw+6568 00028 ff 15 00 00 00 00 call QWORD PTR __imp_TlsGetValue ; File D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpGraphic\code\glfw\context.c ; 672 : if (!window) 0002e 48 85 c0 test rax, rax 00031 75 16 jne SHORT $LN3@glfwSwapIn ; 673 : { ; 674 : _glfwInputError(GLFW_NO_CURRENT_CONTEXT, 00033 48 8d 15 00 00 00 00 lea rdx, OFFSET FLAT:??_C@_0EH@BEBOCAGI@Cannot?5set?5swap?5interval?5withou@ 0003a b9 02 00 01 00 mov ecx, 65538 ; 00010002H ; 680 : } 0003f 48 83 c4 20 add rsp, 32 ; 00000020H 00043 5b pop rbx ; 673 : { ; 674 : _glfwInputError(GLFW_NO_CURRENT_CONTEXT, 00044 e9 00 00 00 00 jmp _glfwInputError $LN3@glfwSwapIn: ; 675 : "Cannot set swap interval without a current OpenGL or OpenGL ES context"); ; 676 : return; ; 677 : } ; 678 : ; 679 : window->context.swapInterval(interval); 00049 8b cb mov ecx, ebx ; 680 : } 0004b 48 83 c4 20 add rsp, 32 ; 00000020H 0004f 5b pop rbx ; 675 : "Cannot set swap interval without a current OpenGL or OpenGL ES context"); ; 676 : return; ; 677 : } ; 678 : ; 679 : window->context.swapInterval(interval); 00050 48 ff a0 60 02 00 00 rex_jmp QWORD PTR [rax+608] glfwSwapInterval ENDP _TEXT ENDS ; Function compile flags: /Ogtpy ; File D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpGraphic\code\glfw\context.c ; File D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpGraphic\code\glfw\win32_thread.c ; File D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpGraphic\code\glfw\context.c ; COMDAT glfwExtensionSupported _TEXT SEGMENT count$1 = 32 __$ArrayPad$ = 40 extension$ = 64 glfwExtensionSupported PROC ; COMDAT ; 683 : { $LN39: 00000 40 56 push rsi 00002 48 83 ec 30 sub rsp, 48 ; 00000030H 00006 48 8b 05 00 00 00 00 mov rax, QWORD PTR __security_cookie 0000d 48 33 c4 xor rax, rsp 00010 48 89 44 24 28 mov QWORD PTR __$ArrayPad$[rsp], rax ; 684 : _GLFWwindow* window; ; 685 : assert(extension != NULL); ; 686 : ; 687 : _GLFW_REQUIRE_INIT_OR_RETURN(GLFW_FALSE); 00015 83 3d 00 00 00 00 00 cmp DWORD PTR _glfw, 0 0001c 48 8b f1 mov rsi, rcx 0001f 75 21 jne SHORT $LN5@glfwExtens 00021 33 d2 xor edx, edx 00023 b9 01 00 01 00 mov ecx, 65537 ; 00010001H 00028 e8 00 00 00 00 call _glfwInputError 0002d 33 c0 xor eax, eax ; 746 : } 0002f 48 8b 4c 24 28 mov rcx, QWORD PTR __$ArrayPad$[rsp] 00034 48 33 cc xor rcx, rsp 00037 e8 00 00 00 00 call __security_check_cookie 0003c 48 83 c4 30 add rsp, 48 ; 00000030H 00040 5e pop rsi 00041 c3 ret 0 $LN5@glfwExtens: ; File D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpGraphic\code\glfw\win32_thread.c ; 66 : return TlsGetValue(tls->win32.index); 00042 8b 0d a8 19 00 00 mov ecx, DWORD PTR _glfw+6568 00048 48 89 7c 24 50 mov QWORD PTR [rsp+80], rdi 0004d ff 15 00 00 00 00 call QWORD PTR __imp_TlsGetValue 00053 48 8b f8 mov rdi, rax ; File D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpGraphic\code\glfw\context.c ; 690 : if (!window) 00056 48 85 c0 test rax, rax 00059 75 18 jne SHORT $LN6@glfwExtens ; 691 : { ; 692 : _glfwInputError(GLFW_NO_CURRENT_CONTEXT, 0005b 48 8d 15 00 00 00 00 lea rdx, OFFSET FLAT:??_C@_0EF@NMJGLODJ@Cannot?5query?5extension?5without?5@ 00062 b9 02 00 01 00 mov ecx, 65538 ; 00010002H 00067 e8 00 00 00 00 call _glfwInputError ; 693 : "Cannot query extension without a current OpenGL or OpenGL ES context"); ; 694 : return GLFW_FALSE; 0006c 33 c0 xor eax, eax 0006e e9 8a 00 00 00 jmp $LN36@glfwExtens $LN6@glfwExtens: ; 695 : } ; 696 : ; 697 : if (*extension == '\0') 00073 80 3e 00 cmp BYTE PTR [rsi], 0 00076 75 15 jne SHORT $LN7@glfwExtens ; 698 : { ; 699 : _glfwInputError(GLFW_INVALID_VALUE, "Extension name cannot be an empty string"); 00078 48 8d 15 00 00 00 00 lea rdx, OFFSET FLAT:??_C@_0CJ@JDBBFPLM@Extension?5name?5cannot?5be?5an?5emp@ 0007f b9 04 00 01 00 mov ecx, 65540 ; 00010004H 00084 e8 00 00 00 00 call _glfwInputError ; 700 : return GLFW_FALSE; 00089 33 c0 xor eax, eax 0008b eb 70 jmp SHORT $LN36@glfwExtens $LN7@glfwExtens: ; 701 : } ; 702 : ; 703 : if (window->context.major >= 3) 0008d 83 b8 10 02 00 00 03 cmp DWORD PTR [rax+528], 3 00094 48 89 5c 24 48 mov QWORD PTR [rsp+72], rbx 00099 7c 7a jl SHORT $LN8@glfwExtens ; 704 : { ; 705 : int i; ; 706 : GLint count; ; 707 : ; 708 : // Check if extension is in the modern OpenGL extensions string list ; 709 : ; 710 : window->context.GetIntegerv(GL_NUM_EXTENSIONS, &count); 0009b 48 8d 54 24 20 lea rdx, QWORD PTR count$1[rsp] 000a0 b9 1d 82 00 00 mov ecx, 33309 ; 0000821dH 000a5 ff 90 40 02 00 00 call QWORD PTR [rax+576] ; 711 : ; 712 : for (i = 0; i < count; i++) 000ab 33 db xor ebx, ebx 000ad 39 5c 24 20 cmp DWORD PTR count$1[rsp], ebx 000b1 7e 3c jle SHORT $LN13@glfwExtens $LL4@glfwExtens: ; 713 : { ; 714 : const char* en = (const char*) 000b3 8b d3 mov edx, ebx 000b5 b9 03 1f 00 00 mov ecx, 7939 ; 00001f03H 000ba ff 97 38 02 00 00 call QWORD PTR [rdi+568] ; 715 : window->context.GetStringi(GL_EXTENSIONS, i); ; 716 : if (!en) 000c0 48 85 c0 test rax, rax 000c3 74 60 je SHORT $LN18@glfwExtens ; 717 : { ; 718 : _glfwInputError(GLFW_PLATFORM_ERROR, ; 719 : "Extension string retrieval is broken"); ; 720 : return GLFW_FALSE; ; 721 : } ; 722 : ; 723 : if (strcmp(en, extension) == 0) 000c5 4c 8b c6 mov r8, rsi 000c8 4c 2b c0 sub r8, rax 000cb 0f 1f 44 00 00 npad 5 $LL24@glfwExtens: 000d0 0f b6 10 movzx edx, BYTE PTR [rax] 000d3 42 0f b6 0c 00 movzx ecx, BYTE PTR [rax+r8] 000d8 2b d1 sub edx, ecx 000da 75 07 jne SHORT $LN25@glfwExtens 000dc 48 ff c0 inc rax 000df 85 c9 test ecx, ecx 000e1 75 ed jne SHORT $LL24@glfwExtens $LN25@glfwExtens: 000e3 85 d2 test edx, edx 000e5 74 62 je SHORT $LN23@glfwExtens ; 711 : ; 712 : for (i = 0; i < count; i++) 000e7 ff c3 inc ebx 000e9 3b 5c 24 20 cmp ebx, DWORD PTR count$1[rsp] 000ed 7c c4 jl SHORT $LL4@glfwExtens $LN13@glfwExtens: ; 742 : } ; 743 : ; 744 : // Check if extension is in the platform-specific string ; 745 : return window->context.extensionSupported(extension); 000ef 48 8b ce mov rcx, rsi 000f2 ff 97 68 02 00 00 call QWORD PTR [rdi+616] $LN37@glfwExtens: 000f8 48 8b 5c 24 48 mov rbx, QWORD PTR [rsp+72] $LN36@glfwExtens: 000fd 48 8b 7c 24 50 mov rdi, QWORD PTR [rsp+80] ; 746 : } 00102 48 8b 4c 24 28 mov rcx, QWORD PTR __$ArrayPad$[rsp] 00107 48 33 cc xor rcx, rsp 0010a e8 00 00 00 00 call __security_check_cookie 0010f 48 83 c4 30 add rsp, 48 ; 00000030H 00113 5e pop rsi 00114 c3 ret 0 $LN8@glfwExtens: ; 724 : return GLFW_TRUE; ; 725 : } ; 726 : } ; 727 : else ; 728 : { ; 729 : // Check if extension is in the old style OpenGL extensions string ; 730 : ; 731 : const char* extensions = (const char*) 00115 b9 03 1f 00 00 mov ecx, 7939 ; 00001f03H 0011a ff 90 48 02 00 00 call QWORD PTR [rax+584] ; 732 : window->context.GetString(GL_EXTENSIONS); ; 733 : if (!extensions) 00120 48 85 c0 test rax, rax 00123 75 15 jne SHORT $LN12@glfwExtens $LN18@glfwExtens: ; 734 : { ; 735 : _glfwInputError(GLFW_PLATFORM_ERROR, 00125 48 8d 15 00 00 00 00 lea rdx, OFFSET FLAT:??_C@_0CF@KMMHNOMI@Extension?5string?5retrieval?5is?5b@ 0012c b9 08 00 01 00 mov ecx, 65544 ; 00010008H 00131 e8 00 00 00 00 call _glfwInputError ; 736 : "Extension string retrieval is broken"); ; 737 : return GLFW_FALSE; 00136 33 c0 xor eax, eax 00138 eb be jmp SHORT $LN37@glfwExtens $LN12@glfwExtens: ; 738 : } ; 739 : ; 740 : if (_glfwStringInExtensionString(extension, extensions)) 0013a 48 8b d0 mov rdx, rax 0013d 48 8b ce mov rcx, rsi 00140 e8 00 00 00 00 call _glfwStringInExtensionString 00145 85 c0 test eax, eax 00147 74 a6 je SHORT $LN13@glfwExtens $LN23@glfwExtens: ; 741 : return GLFW_TRUE; 00149 b8 01 00 00 00 mov eax, 1 0014e eb a8 jmp SHORT $LN37@glfwExtens glfwExtensionSupported ENDP _TEXT ENDS ; Function compile flags: /Ogtpy ; File D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpGraphic\code\glfw\context.c ; File D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpGraphic\code\glfw\win32_thread.c ; File D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpGraphic\code\glfw\context.c ; COMDAT glfwGetProcAddress _TEXT SEGMENT procname$ = 48 glfwGetProcAddress PROC ; COMDAT ; 749 : { $LN10: 00000 40 53 push rbx 00002 48 83 ec 20 sub rsp, 32 ; 00000020H ; 750 : _GLFWwindow* window; ; 751 : assert(procname != NULL); ; 752 : ; 753 : _GLFW_REQUIRE_INIT_OR_RETURN(NULL); 00006 83 3d 00 00 00 00 00 cmp DWORD PTR _glfw, 0 0000d 48 8b d9 mov rbx, rcx 00010 75 14 jne SHORT $LN2@glfwGetPro 00012 33 d2 xor edx, edx 00014 b9 01 00 01 00 mov ecx, 65537 ; 00010001H 00019 e8 00 00 00 00 call _glfwInputError 0001e 33 c0 xor eax, eax ; 764 : } 00020 48 83 c4 20 add rsp, 32 ; 00000020H 00024 5b pop rbx 00025 c3 ret 0 $LN2@glfwGetPro: ; File D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpGraphic\code\glfw\win32_thread.c ; 66 : return TlsGetValue(tls->win32.index); 00026 8b 0d a8 19 00 00 mov ecx, DWORD PTR _glfw+6568 0002c ff 15 00 00 00 00 call QWORD PTR __imp_TlsGetValue ; File D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpGraphic\code\glfw\context.c ; 756 : if (!window) 00032 48 85 c0 test rax, rax 00035 75 19 jne SHORT $LN3@glfwGetPro ; 757 : { ; 758 : _glfwInputError(GLFW_NO_CURRENT_CONTEXT, 00037 48 8d 15 00 00 00 00 lea rdx, OFFSET FLAT:??_C@_0EH@LGPPFAO@Cannot?5query?5entry?5point?5withou@ 0003e b9 02 00 01 00 mov ecx, 65538 ; 00010002H 00043 e8 00 00 00 00 call _glfwInputError ; 759 : "Cannot query entry point without a current OpenGL or OpenGL ES context"); ; 760 : return NULL; 00048 33 c0 xor eax, eax ; 764 : } 0004a 48 83 c4 20 add rsp, 32 ; 00000020H 0004e 5b pop rbx 0004f c3 ret 0 $LN3@glfwGetPro: ; 761 : } ; 762 : ; 763 : return window->context.getProcAddress(procname); 00050 48 8b cb mov rcx, rbx ; 764 : } 00053 48 83 c4 20 add rsp, 32 ; 00000020H 00057 5b pop rbx ; 761 : } ; 762 : ; 763 : return window->context.getProcAddress(procname); 00058 48 ff a0 70 02 00 00 rex_jmp QWORD PTR [rax+624] glfwGetProcAddress ENDP _TEXT ENDS END