; Listing generated by Microsoft (R) Optimizing Compiler Version 19.37.32824.0 include listing.inc INCLUDELIB MSVCRTD INCLUDELIB OLDNAMES msvcjmc SEGMENT __9C03CD75_concurrencysal@h DB 01H __CA64BAF1_sal@h DB 01H __95655E73_vadefs@h DB 01H __1D560A45_vcruntime@h DB 01H __1B0272D9_corecrt@h DB 01H __13F5961F_stddef@h DB 01H __ED683015_stdint@h DB 01H __89F75FCD_ssgc_internal@h DB 01H __A5E73FD0_glfw3@h DB 01H __1D45B1A5_glfw_null_platform@h DB 01H __74484FB3_corecrt_wctype@h DB 01H __CBE172F9_wctype@h DB 01H __0ED14FEE_winpackagefamily@h DB 01H __F92EF742_winapifamily@h DB 01H __22E515EB_sdkddkver@h DB 01H __F214EFBF_excpt@h DB 01H __D9B78EDA_stdarg@h DB 01H __29F49F40_specstrings_undef@h DB 01H __D0F42932_specstrings_strict@h DB 01H __F00405FD_sdv_driverspecs@h DB 01H __173E09CA_driverspecs@h DB 01H __9A452361_specstrings@h DB 01H __1EC467ED_ctype@h DB 01H __98517906_kernelspecs@h DB 01H __D3497022_basetsd@h DB 01H __61CC25A1_errno@h DB 01H __7061C667_vcruntime_string@h DB 01H __E4C945B4_corecrt_memcpy_s@h DB 01H __8EAFF484_corecrt_memory@h DB 01H __6490AEC5_corecrt_wstring@h DB 01H __E8295E1E_string@h DB 01H __7FCB5136_guiddef@h DB 01H __FF8A9E11_pshpack4@h DB 01H __D5438902_poppack@h DB 01H __FB07E2A3_pshpack2@h DB 01H __F6906775_pshpack8@h DB 01H __F9415CFA_pshpack1@h DB 01H __E58C6F1C_apiset@h DB 01H __A5C52262_ktmtypes@h DB 01H __FBBA8F9D_winnt@h DB 01H __A32D3D2C_minwindef@h DB 01H __7D798299_windef@h DB 01H __9AE108E9_apisetcconv@h DB 01H __9CE53D2C_minwinbase@h DB 01H __5D0AA210_apiquery2@h DB 01H __4DD4E726_processenv@h DB 01H __3575CC96_fileapi@h DB 01H __8EA220E6_fileapifromapp@h DB 01H __BF9B31FE_debugapi@h DB 01H __C3AFE134_utilapiset@h DB 01H __76F69E51_handleapi@h DB 01H __7E63D784_errhandlingapi@h DB 01H __FFA7003C_fibersapi@h DB 01H __8971CECF_namedpipeapi@h DB 01H __46C9D8A6_profileapi@h DB 01H __98D4F0A3_heapapi@h DB 01H __50EF2A88_ioapiset@h DB 01H __92EA1464_synchapi@h DB 01H __A53D8AED_interlockedapi@h DB 01H __B506CAAF_processthreadsapi@h DB 01H __FF735694_sysinfoapi@h DB 01H __29589789_memoryapi@h DB 01H __E9C7A663_enclaveapi@h DB 01H __D035F9F7_threadpoollegacyapiset@h DB 01H __C899130C_threadpoolapiset@h DB 01H __E0441EE7_jobapi@h DB 01H __CEF86838_jobapi2@h DB 01H __35AC6B9A_wow64apiset@h DB 01H __C8AE41A5_libloaderapi@h DB 01H __CC9E232D_securitybaseapi@h DB 01H __C9D0C9B8_namespaceapi@h DB 01H __30FF9CAD_systemtopologyapi@h DB 01H __4D358795_processtopologyapi@h DB 01H __40446D10_securityappcontainer@h DB 01H __3A952EDF_realtimeapiset@h DB 01H __F4865F4B_winerror@h DB 01H __53C1BD93_timezoneapi@h DB 01H __1FFBEDBF_winbase@h DB 01H __43D3FA34_wingdi@h DB 01H __D24A7391_tvout@h DB 01H __7713A6C8_winuser@h DB 01H __0B345F71_datetimeapi@h DB 01H __9AC6960C_winnls@h DB 01H __973A40A8_stringapiset@h DB 01H __CC46FEE2_wincontypes@h DB 01H __97D70BE1_consoleapi@h DB 01H __27EC5E18_consoleapi2@h DB 01H __262E342F_consoleapi3@h DB 01H __641DCD70_wincon@h DB 01H __5A96C7A7_verrsrc@h DB 01H __B69C6FF2_winver@h DB 01H __7AEB8C37_reason@h DB 01H __59F1A8A9_winreg@h DB 01H __EE0E2B7F_wnnc@h DB 01H __DCDB7054_winnetwk@h DB 01H __81DDEDE3_stralign@h DB 01H __2134D1B4_winsvc@h DB 01H __11C07376_mcx@h DB 01H __577CE3E7_ime_cmodes@h DB 01H __1E72C31E_imm@h DB 01H __E15BF856_windows@h DB 01H __DF8704F0_rpcdcep@h DB 01H __5C6CA7BB_rpcdce@h DB 01H __853533C4_rpcnsi@h DB 01H __2D2406C3_rpcnterr@h DB 01H __64521D71_rpcasync@h DB 01H __AADCBA08_rpc@h DB 01H __1FE431C9_rpcnsip@h DB 01H __2B741F2D_rpcsal@h DB 01H __92623256_rpcndr@h DB 01H __45DED006_corecrt_malloc@h DB 01H __FD6DBD68_corecrt_search@h DB 01H __E2E33A61_corecrt_wstdlib@h DB 01H __531E1E2A_limits@h DB 01H __6E5ACABA_stdlib@h DB 01H __9C18532E_wtypesbase@h DB 01H __30B1AFDA_unknwnbase@h DB 01H __328C1996_objidlbase@h DB 01H __C4E06B6A_cguid@h DB 01H __434718C5_combaseapi@h DB 01H __EA2E1D6D_wtypes@h DB 01H __DE6FDEF1_unknwn@h DB 01H __CCE0BACC_objidl@h DB 01H __8C7011E5_oaidl@h DB 01H __2E0B7863_propidlbase@h DB 01H __BF4CF2EC_coml2api@h DB 01H __6D897344_oleidl@h DB 01H __1129FC2C_servprov@h DB 01H __757952E4_msxml@h DB 01H __B1191D53_urlmon@h DB 01H __404D1A47_propidl@h DB 01H __A1C63593_objbase@h DB 01H __9F7C87B7_dinput@h DB 01H __B468A3D3_xinput@h DB 01H __AD768F06_dbt@h DB 01H __D83367F8_glfw_win32_platform@h DB 01H __53CB9229_glfw_null_joystick@h DB 01H __96BD4474_glfw_win32_joystick@h DB 01H __7D74CEA8_glfw_win32_thread@h DB 01H __C7421531_glfw_win32_time@h DB 01H __43B1F397_glfw_platform@h DB 01H __A547227D_glfw_internal@h DB 01H __44420885_corecrt_stdio_config@h DB 01H __AB601D8D_corecrt_wstdio@h DB 01H __C1EC35D3_stdio@h DB 01H __BB16330F_corecrt_math@h DB 01H __3BF2A406_math@h DB 01H __BD81096D_win32_joystick@c DB 01H msvcjmc ENDS _DATA SEGMENT _glfwObjectDataFormats DQ FLAT:_glfw_GUID_XAxis DD 00H DD 080ffff03H DD 0100H ORG $+4 DQ FLAT:_glfw_GUID_YAxis DD 04H DD 080ffff03H DD 0100H ORG $+4 DQ FLAT:_glfw_GUID_ZAxis DD 08H DD 080ffff03H DD 0100H ORG $+4 DQ FLAT:_glfw_GUID_RxAxis DD 0cH DD 080ffff03H DD 0100H ORG $+4 DQ FLAT:_glfw_GUID_RyAxis DD 010H DD 080ffff03H DD 0100H ORG $+4 DQ FLAT:_glfw_GUID_RzAxis DD 014H DD 080ffff03H DD 0100H ORG $+4 DQ FLAT:_glfw_GUID_Slider DD 018H DD 080ffff03H DD 0100H ORG $+4 DQ FLAT:_glfw_GUID_Slider DD 01cH DD 080ffff03H DD 0100H ORG $+4 DQ FLAT:_glfw_GUID_POV DD 020H DD 080ffff10H DD 00H ORG $+4 DQ FLAT:_glfw_GUID_POV DD 024H DD 080ffff10H DD 00H ORG $+4 DQ FLAT:_glfw_GUID_POV DD 028H DD 080ffff10H DD 00H ORG $+4 DQ FLAT:_glfw_GUID_POV DD 02cH DD 080ffff10H DD 00H ORG $+4 DQ 0000000000000000H DD 030H DD 080ffff0cH DD 00H ORG $+4 DQ 0000000000000000H DD 031H DD 080ffff0cH DD 00H ORG $+4 DQ 0000000000000000H DD 032H DD 080ffff0cH DD 00H ORG $+4 DQ 0000000000000000H DD 033H DD 080ffff0cH DD 00H ORG $+4 DQ 0000000000000000H DD 034H DD 080ffff0cH DD 00H ORG $+4 DQ 0000000000000000H DD 035H DD 080ffff0cH DD 00H ORG $+4 DQ 0000000000000000H DD 036H DD 080ffff0cH DD 00H ORG $+4 DQ 0000000000000000H DD 037H DD 080ffff0cH DD 00H ORG $+4 DQ 0000000000000000H DD 038H DD 080ffff0cH DD 00H ORG $+4 DQ 0000000000000000H DD 039H DD 080ffff0cH DD 00H ORG $+4 DQ 0000000000000000H DD 03aH DD 080ffff0cH DD 00H ORG $+4 DQ 0000000000000000H DD 03bH DD 080ffff0cH DD 00H ORG $+4 DQ 0000000000000000H DD 03cH DD 080ffff0cH DD 00H ORG $+4 DQ 0000000000000000H DD 03dH DD 080ffff0cH DD 00H ORG $+4 DQ 0000000000000000H DD 03eH DD 080ffff0cH DD 00H ORG $+4 DQ 0000000000000000H DD 03fH DD 080ffff0cH DD 00H ORG $+4 DQ 0000000000000000H DD 040H DD 080ffff0cH DD 00H ORG $+4 DQ 0000000000000000H DD 041H DD 080ffff0cH DD 00H ORG $+4 DQ 0000000000000000H DD 042H DD 080ffff0cH DD 00H ORG $+4 DQ 0000000000000000H DD 043H DD 080ffff0cH DD 00H ORG $+4 DQ 0000000000000000H DD 044H DD 080ffff0cH DD 00H ORG $+4 DQ 0000000000000000H DD 045H DD 080ffff0cH DD 00H ORG $+4 DQ 0000000000000000H DD 046H DD 080ffff0cH DD 00H ORG $+4 DQ 0000000000000000H DD 047H DD 080ffff0cH DD 00H ORG $+4 DQ 0000000000000000H DD 048H DD 080ffff0cH DD 00H ORG $+4 DQ 0000000000000000H DD 049H DD 080ffff0cH DD 00H ORG $+4 DQ 0000000000000000H DD 04aH DD 080ffff0cH DD 00H ORG $+4 DQ 0000000000000000H DD 04bH DD 080ffff0cH DD 00H ORG $+4 DQ 0000000000000000H DD 04cH DD 080ffff0cH DD 00H ORG $+4 DQ 0000000000000000H DD 04dH DD 080ffff0cH DD 00H ORG $+4 DQ 0000000000000000H DD 04eH DD 080ffff0cH DD 00H ORG $+4 DQ 0000000000000000H DD 04fH DD 080ffff0cH DD 00H ORG $+4 _DATA ENDS CONST SEGMENT _glfw_IID_IDirectInput8W DD 0bf798031H DW 0483aH DW 04da2H DB 0aaH DB 099H DB 05dH DB 064H DB 0edH DB 036H DB 097H DB 00H _glfw_GUID_XAxis DD 0a36d02e0H DW 0c9f3H DW 011cfH DB 0bfH DB 0c7H DB 044H DB 045H DB 053H DB 054H DB 00H DB 00H _glfw_GUID_YAxis DD 0a36d02e1H DW 0c9f3H DW 011cfH DB 0bfH DB 0c7H DB 044H DB 045H DB 053H DB 054H DB 00H DB 00H _glfw_GUID_ZAxis DD 0a36d02e2H DW 0c9f3H DW 011cfH DB 0bfH DB 0c7H DB 044H DB 045H DB 053H DB 054H DB 00H DB 00H _glfw_GUID_RxAxis DD 0a36d02f4H DW 0c9f3H DW 011cfH DB 0bfH DB 0c7H DB 044H DB 045H DB 053H DB 054H DB 00H DB 00H _glfw_GUID_RyAxis DD 0a36d02f5H DW 0c9f3H DW 011cfH DB 0bfH DB 0c7H DB 044H DB 045H DB 053H DB 054H DB 00H DB 00H _glfw_GUID_RzAxis DD 0a36d02e3H DW 0c9f3H DW 011cfH DB 0bfH DB 0c7H DB 044H DB 045H DB 053H DB 054H DB 00H DB 00H _glfw_GUID_Slider DD 0a36d02e4H DW 0c9f3H DW 011cfH DB 0bfH DB 0c7H DB 044H DB 045H DB 053H DB 054H DB 00H DB 00H _glfw_GUID_POV DD 0a36d02f2H DW 0c9f3H DW 011cfH DB 0bfH DB 0c7H DB 044H DB 045H DB 053H DB 054H DB 00H DB 00H _glfwDataFormat DD 020H DD 018H DD 02H DD 050H DD 02cH ORG $+4 DQ FLAT:_glfwObjectDataFormats CONST ENDS PUBLIC _glfwInitJoysticksWin32 PUBLIC _glfwTerminateJoysticksWin32 PUBLIC _glfwPollJoystickWin32 PUBLIC _glfwGetMappingNameWin32 PUBLIC _glfwUpdateGamepadGUIDWin32 PUBLIC _glfwDetectJoystickConnectionWin32 PUBLIC _glfwDetectJoystickDisconnectionWin32 PUBLIC __local_stdio_printf_options PUBLIC _vsnprintf_l PUBLIC _vsprintf_l PUBLIC sprintf PUBLIC __JustMyCode_Default PUBLIC ??_C@_0N@JENFOGFI@XInput?5Wheel@ ; `string' PUBLIC ??_C@_0BE@FABDLJKH@XInput?5Arcade?5Stick@ ; `string' PUBLIC ??_C@_0BE@HBNNGLHP@XInput?5Flight?5Stick@ ; `string' PUBLIC ??_C@_0BB@JDDMDGFO@XInput?5Dance?5Pad@ ; `string' PUBLIC ??_C@_0O@IFDGNEHH@XInput?5Guitar@ ; `string' PUBLIC ??_C@_0BA@LCMKGGHA@XInput?5Drum?5Kit@ ; `string' PUBLIC ??_C@_0BJ@IIGAEGGE@Wireless?5Xbox?5Controller@ ; `string' PUBLIC ??_C@_0BA@EPLGABLH@Xbox?5Controller@ ; `string' PUBLIC ??_C@_0BG@DGJLFNBN@Unknown?5XInput?5Device@ ; `string' PUBLIC ??_C@_03HAFBONIK@IG_@ ; `string' PUBLIC ??_C@_0BP@OHJGLFIP@Win32?3?5Failed?5to?5create?5device@ ; `string' PUBLIC ??_C@_0CI@MMBFOOEA@Win32?3?5Failed?5to?5set?5device?5dat@ ; `string' PUBLIC ??_C@_0CL@JHIPHFAC@Win32?3?5Failed?5to?5query?5device?5c@ ; `string' PUBLIC ??_C@_0CG@JJEBGGIE@Win32?3?5Failed?5to?5set?5device?5axi@ ; `string' PUBLIC ??_C@_0CK@FKJPIIOF@Win32?3?5Failed?5to?5enumerate?5devi@ ; `string' PUBLIC ??_C@_0DA@IIGLKABA@Win32?3?5Failed?5to?5convert?5joysti@ ; `string' PUBLIC ??_C@_06MBFKAACL@PIDVID@ ; `string' PUBLIC ??_C@_0CJ@NMCAPCBP@03000000?$CF02x?$CF02x0000?$CF02x?$CF02x000@ ; `string' PUBLIC ??_C@_0DH@LCNJGHOP@05000000?$CF02x?$CF02x?$CF02x?$CF02x?$CF02x?$CF02@ ; `string' PUBLIC ??_C@_0CD@CBFNHKPK@78696e707574?$CF02x000000000000000@ ; `string' PUBLIC ??_C@_0CJ@HDJDHLNO@Failed?5to?5enumerate?5DirectInput@ ; `string' PUBLIC ??_C@_0CC@MGDCJJKB@Win32?3?5Failed?5to?5create?5interfa@ ; `string' PUBLIC ??_C@_07LDLFNPGN@Windows@ ; `string' PUBLIC ??_C@_0N@OJEJPFOD@504944564944@ ; `string' PUBLIC ??_C@_0CB@BIHPPBFK@03000000?$CF?44s0000?$CF?44s00000000000@ ; `string' PUBLIC __real@3f000000 PUBLIC __real@3f800000 PUBLIC __real@42ff0000 PUBLIC __real@46ffff00 PUBLIC __xmm@80000000800000008000000080000000 EXTRN __report_rangecheckfailure:PROC EXTRN memcmp:PROC EXTRN memset:PROC EXTRN strstr:PROC EXTRN strcmp:PROC EXTRN __imp_strncpy:PROC EXTRN __imp_GetRawInputDeviceInfoA:PROC EXTRN __imp_GetRawInputDeviceList:PROC EXTRN __imp_WideCharToMultiByte:PROC EXTRN __imp_qsort:PROC EXTRN _glfwInputJoystick:PROC EXTRN _glfwInputJoystickAxis:PROC EXTRN _glfwInputJoystickButton:PROC EXTRN _glfwInputJoystickHat:PROC EXTRN _glfwInputError:PROC EXTRN _glfwAllocJoystick:PROC EXTRN _glfwFreeJoystick:PROC EXTRN _glfw_calloc:PROC EXTRN _glfw_free:PROC EXTRN __imp___stdio_common_vsprintf:PROC EXTRN _RTC_CheckStackVars:PROC EXTRN _RTC_InitBase:PROC EXTRN _RTC_Shutdown:PROC EXTRN __CheckForDebuggerJustMyCode:PROC EXTRN __GSHandlerCheck:PROC EXTRN __security_check_cookie:PROC EXTRN _glfw:BYTE EXTRN __ImageBase:BYTE EXTRN __security_cookie:QWORD EXTRN _fltused:DWORD _DATA SEGMENT COMM ?_OptionsStorage@?1??__local_stdio_printf_options@@9@9:QWORD ; `__local_stdio_printf_options'::`2'::_OptionsStorage _DATA ENDS ; COMDAT pdata pdata SEGMENT $pdata$_glfwInitJoysticksWin32 DD imagerel $LN5 DD imagerel $LN5+123 DD imagerel $unwind$_glfwInitJoysticksWin32 pdata ENDS ; COMDAT pdata pdata SEGMENT $pdata$_glfwTerminateJoysticksWin32 DD imagerel $LN7 DD imagerel $LN7+124 DD imagerel $unwind$_glfwTerminateJoysticksWin32 pdata ENDS ; COMDAT pdata pdata SEGMENT $pdata$_glfwPollJoystickWin32 DD imagerel $LN34 DD imagerel $LN34+1760 DD imagerel $unwind$_glfwPollJoystickWin32 pdata ENDS ; COMDAT pdata pdata SEGMENT $pdata$_glfwGetMappingNameWin32 DD imagerel $LN3 DD imagerel $LN3+44 DD imagerel $unwind$_glfwGetMappingNameWin32 pdata ENDS ; COMDAT pdata pdata SEGMENT $pdata$_glfwUpdateGamepadGUIDWin32 DD imagerel $LN4 DD imagerel $LN4+197 DD imagerel $unwind$_glfwUpdateGamepadGUIDWin32 pdata ENDS ; COMDAT pdata pdata SEGMENT $pdata$_glfwDetectJoystickConnectionWin32 DD imagerel $LN16 DD imagerel $LN16+501 DD imagerel $unwind$_glfwDetectJoystickConnectionWin32 pdata ENDS ; COMDAT pdata pdata SEGMENT $pdata$_glfwDetectJoystickDisconnectionWin32 DD imagerel $LN7 DD imagerel $LN7+111 DD imagerel $unwind$_glfwDetectJoystickDisconnectionWin32 pdata ENDS ; COMDAT pdata pdata SEGMENT $pdata$__local_stdio_printf_options DD imagerel $LN3 DD imagerel $LN3+44 DD imagerel $unwind$__local_stdio_printf_options pdata ENDS ; COMDAT pdata pdata SEGMENT $pdata$_vsnprintf_l DD imagerel $LN5 DD imagerel $LN5+158 DD imagerel $unwind$_vsnprintf_l pdata ENDS ; COMDAT pdata pdata SEGMENT $pdata$_vsprintf_l DD imagerel $LN3 DD imagerel $LN3+101 DD imagerel $unwind$_vsprintf_l pdata ENDS ; COMDAT pdata pdata SEGMENT $pdata$sprintf DD imagerel $LN3 DD imagerel $LN3+184 DD imagerel $unwind$sprintf pdata ENDS ; COMDAT pdata pdata SEGMENT $pdata$getDeviceDescription DD imagerel getDeviceDescription DD imagerel getDeviceDescription+240 DD imagerel $unwind$getDeviceDescription pdata ENDS ; COMDAT pdata pdata SEGMENT $pdata$compareJoystickObjects DD imagerel compareJoystickObjects DD imagerel compareJoystickObjects+116 DD imagerel $unwind$compareJoystickObjects pdata ENDS ; COMDAT pdata pdata SEGMENT $pdata$supportsXInput DD imagerel supportsXInput DD imagerel supportsXInput+592 DD imagerel $unwind$supportsXInput pdata ENDS ; COMDAT pdata pdata SEGMENT $pdata$closeJoystick DD imagerel closeJoystick DD imagerel closeJoystick+174 DD imagerel $unwind$closeJoystick pdata ENDS ; COMDAT pdata pdata SEGMENT $pdata$deviceObjectCallback DD imagerel deviceObjectCallback DD imagerel deviceObjectCallback+932 DD imagerel $unwind$deviceObjectCallback pdata ENDS ; COMDAT pdata pdata SEGMENT $pdata$deviceCallback DD imagerel deviceCallback DD imagerel deviceCallback+1663 DD imagerel $unwind$deviceCallback pdata ENDS ; COMDAT __xmm@80000000800000008000000080000000 CONST SEGMENT __xmm@80000000800000008000000080000000 DB 00H, 00H, 00H, 080H, 00H, 00H, 00H DB 080H, 00H, 00H, 00H, 080H, 00H, 00H, 00H, 080H CONST ENDS ; COMDAT __real@46ffff00 CONST SEGMENT __real@46ffff00 DD 046ffff00r ; 32767.5 CONST ENDS ; COMDAT __real@42ff0000 CONST SEGMENT __real@42ff0000 DD 042ff0000r ; 127.5 CONST ENDS ; COMDAT __real@3f800000 CONST SEGMENT __real@3f800000 DD 03f800000r ; 1 CONST ENDS ; COMDAT __real@3f000000 CONST SEGMENT __real@3f000000 DD 03f000000r ; 0.5 CONST ENDS ; COMDAT rtc$TMZ rtc$TMZ SEGMENT _RTC_Shutdown.rtc$TMZ DQ FLAT:_RTC_Shutdown rtc$TMZ ENDS ; COMDAT rtc$IMZ rtc$IMZ SEGMENT _RTC_InitBase.rtc$IMZ DQ FLAT:_RTC_InitBase rtc$IMZ ENDS ; COMDAT ??_C@_0CB@BIHPPBFK@03000000?$CF?44s0000?$CF?44s00000000000@ CONST SEGMENT ??_C@_0CB@BIHPPBFK@03000000?$CF?44s0000?$CF?44s00000000000@ DB '03000000%' DB '.4s0000%.4s000000000000', 00H ; `string' CONST ENDS ; COMDAT ??_C@_0N@OJEJPFOD@504944564944@ CONST SEGMENT ??_C@_0N@OJEJPFOD@504944564944@ DB '504944564944', 00H ; `string' CONST ENDS ; COMDAT ??_C@_07LDLFNPGN@Windows@ CONST SEGMENT ??_C@_07LDLFNPGN@Windows@ DB 'Windows', 00H ; `string' CONST ENDS ; COMDAT ??_C@_0CC@MGDCJJKB@Win32?3?5Failed?5to?5create?5interfa@ CONST SEGMENT ??_C@_0CC@MGDCJJKB@Win32?3?5Failed?5to?5create?5interfa@ DB 'Win32: Faile' DB 'd to create interface', 00H ; `string' CONST ENDS ; COMDAT ??_C@_0CJ@HDJDHLNO@Failed?5to?5enumerate?5DirectInput@ CONST SEGMENT ??_C@_0CJ@HDJDHLNO@Failed?5to?5enumerate?5DirectInput@ DB 'Failed to enum' DB 'erate DirectInput8 devices', 00H ; `string' CONST ENDS ; COMDAT ??_C@_0CD@CBFNHKPK@78696e707574?$CF02x000000000000000@ CONST SEGMENT ??_C@_0CD@CBFNHKPK@78696e707574?$CF02x000000000000000@ DB '78696e707574%0' DB '2x000000000000000000', 00H ; `string' CONST ENDS ; COMDAT ??_C@_0DH@LCNJGHOP@05000000?$CF02x?$CF02x?$CF02x?$CF02x?$CF02x?$CF02@ CONST SEGMENT ??_C@_0DH@LCNJGHOP@05000000?$CF02x?$CF02x?$CF02x?$CF02x?$CF02x?$CF02@ DB '0' DB '5000000%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x00', 00H ; `string' CONST ENDS ; COMDAT ??_C@_0CJ@NMCAPCBP@03000000?$CF02x?$CF02x0000?$CF02x?$CF02x000@ CONST SEGMENT ??_C@_0CJ@NMCAPCBP@03000000?$CF02x?$CF02x0000?$CF02x?$CF02x000@ DB '03000' DB '000%02x%02x0000%02x%02x000000000000', 00H ; `string' CONST ENDS ; COMDAT ??_C@_06MBFKAACL@PIDVID@ CONST SEGMENT ??_C@_06MBFKAACL@PIDVID@ DB 'PIDVID', 00H ; `string' CONST ENDS ; COMDAT ??_C@_0DA@IIGLKABA@Win32?3?5Failed?5to?5convert?5joysti@ CONST SEGMENT ??_C@_0DA@IIGLKABA@Win32?3?5Failed?5to?5convert?5joysti@ DB 'Win32: Faile' DB 'd to convert joystick name to UTF-8', 00H ; `string' CONST ENDS ; COMDAT ??_C@_0CK@FKJPIIOF@Win32?3?5Failed?5to?5enumerate?5devi@ CONST SEGMENT ??_C@_0CK@FKJPIIOF@Win32?3?5Failed?5to?5enumerate?5devi@ DB 'Win32: Faile' DB 'd to enumerate device objects', 00H ; `string' CONST ENDS ; COMDAT ??_C@_0CG@JJEBGGIE@Win32?3?5Failed?5to?5set?5device?5axi@ CONST SEGMENT ??_C@_0CG@JJEBGGIE@Win32?3?5Failed?5to?5set?5device?5axi@ DB 'Win32: Fail' DB 'ed to set device axis mode', 00H ; `string' CONST ENDS ; COMDAT ??_C@_0CL@JHIPHFAC@Win32?3?5Failed?5to?5query?5device?5c@ CONST SEGMENT ??_C@_0CL@JHIPHFAC@Win32?3?5Failed?5to?5query?5device?5c@ DB 'Win32: Fail' DB 'ed to query device capabilities', 00H ; `string' CONST ENDS ; COMDAT ??_C@_0CI@MMBFOOEA@Win32?3?5Failed?5to?5set?5device?5dat@ CONST SEGMENT ??_C@_0CI@MMBFOOEA@Win32?3?5Failed?5to?5set?5device?5dat@ DB 'Win32: Fail' DB 'ed to set device data format', 00H ; `string' CONST ENDS ; COMDAT ??_C@_0BP@OHJGLFIP@Win32?3?5Failed?5to?5create?5device@ CONST SEGMENT ??_C@_0BP@OHJGLFIP@Win32?3?5Failed?5to?5create?5device@ DB 'Win32: Failed' DB ' to create device', 00H ; `string' CONST ENDS ; COMDAT ??_C@_03HAFBONIK@IG_@ CONST SEGMENT ??_C@_03HAFBONIK@IG_@ DB 'IG_', 00H ; `string' CONST ENDS ; COMDAT ??_C@_0BG@DGJLFNBN@Unknown?5XInput?5Device@ CONST SEGMENT ??_C@_0BG@DGJLFNBN@Unknown?5XInput?5Device@ DB 'Unknown XInput Device', 00H ; `string' CONST ENDS ; COMDAT ??_C@_0BA@EPLGABLH@Xbox?5Controller@ CONST SEGMENT ??_C@_0BA@EPLGABLH@Xbox?5Controller@ DB 'Xbox Controller', 00H ; `string' CONST ENDS ; COMDAT ??_C@_0BJ@IIGAEGGE@Wireless?5Xbox?5Controller@ CONST SEGMENT ??_C@_0BJ@IIGAEGGE@Wireless?5Xbox?5Controller@ DB 'Wireless Xbox Controll' DB 'er', 00H ; `string' CONST ENDS ; COMDAT ??_C@_0BA@LCMKGGHA@XInput?5Drum?5Kit@ CONST SEGMENT ??_C@_0BA@LCMKGGHA@XInput?5Drum?5Kit@ DB 'XInput Drum Kit', 00H ; `string' CONST ENDS ; COMDAT ??_C@_0O@IFDGNEHH@XInput?5Guitar@ CONST SEGMENT ??_C@_0O@IFDGNEHH@XInput?5Guitar@ DB 'XInput Guitar', 00H ; `string' CONST ENDS ; COMDAT ??_C@_0BB@JDDMDGFO@XInput?5Dance?5Pad@ CONST SEGMENT ??_C@_0BB@JDDMDGFO@XInput?5Dance?5Pad@ DB 'XInput Dance Pad', 00H ; `string' CONST ENDS ; COMDAT ??_C@_0BE@HBNNGLHP@XInput?5Flight?5Stick@ CONST SEGMENT ??_C@_0BE@HBNNGLHP@XInput?5Flight?5Stick@ DB 'XInput Flight Stick', 00H ; `string' CONST ENDS ; COMDAT ??_C@_0BE@FABDLJKH@XInput?5Arcade?5Stick@ CONST SEGMENT ??_C@_0BE@FABDLJKH@XInput?5Arcade?5Stick@ DB 'XInput Arcade Stick', 00H ; `string' CONST ENDS ; COMDAT ??_C@_0N@JENFOGFI@XInput?5Wheel@ CONST SEGMENT ??_C@_0N@JENFOGFI@XInput?5Wheel@ DB 'XInput Wheel', 00H ; `string' CONST ENDS ; COMDAT voltbl voltbl SEGMENT _volmd DW 03dH DW 0664H voltbl ENDS ; COMDAT xdata xdata SEGMENT $unwind$deviceCallback DD 075074419H DD 0115731aH DD 0700e0091H DD 0300c600dH DD 0500bH DD imagerel __GSHandlerCheck DD 0470H xdata ENDS ; COMDAT CONST CONST SEGMENT deviceCallback$rtcName$0 DB 064H DB 063H DB 00H ORG $+1 deviceCallback$rtcName$1 DB 064H DB 069H DB 070H DB 064H DB 00H ORG $+3 deviceCallback$rtcName$2 DB 064H DB 065H DB 076H DB 069H DB 063H DB 065H DB 00H ORG $+1 deviceCallback$rtcName$3 DB 064H DB 061H DB 074H DB 061H DB 00H ORG $+3 deviceCallback$rtcName$4 DB 067H DB 075H DB 069H DB 064H DB 00H ORG $+3 deviceCallback$rtcName$5 DB 06eH DB 061H DB 06dH DB 065H DB 00H ORG $+7 deviceCallback$rtcVarDesc DD 01e0H DD 0100H DQ FLAT:deviceCallback$rtcName$5 DD 0198H DD 021H DQ FLAT:deviceCallback$rtcName$4 DD 0138H DD 028H DQ FLAT:deviceCallback$rtcName$3 DD 0118H DD 08H DQ FLAT:deviceCallback$rtcName$2 DD 0e8H DD 014H DQ FLAT:deviceCallback$rtcName$1 DD 098H DD 02cH DQ FLAT:deviceCallback$rtcName$0 ORG $+288 deviceCallback$rtcFrameData DD 06H DD 00H DQ FLAT:deviceCallback$rtcVarDesc CONST ENDS ; COMDAT voltbl voltbl SEGMENT _volmd DW 03bH DW 038bH voltbl ENDS ; COMDAT xdata xdata SEGMENT $unwind$deviceObjectCallback DD 025054219H DD 01132318H DD 0700c002bH DD 0500bH DD imagerel __GSHandlerCheck DD 0148H xdata ENDS ; COMDAT CONST CONST SEGMENT deviceObjectCallback$rtcName$0 DB 064H DB 069H DB 070H DB 072H DB 00H ORG $+11 deviceObjectCallback$rtcVarDesc DD 068H DD 018H DQ FLAT:deviceObjectCallback$rtcName$0 ORG $+48 deviceObjectCallback$rtcFrameData DD 01H DD 00H DQ FLAT:deviceObjectCallback$rtcVarDesc CONST ENDS ; COMDAT xdata xdata SEGMENT $unwind$closeJoystick DD 025051301H DD 010e2313H DD 07007001dH DD 05006H xdata ENDS ; COMDAT voltbl voltbl SEGMENT _volmd DW 036H DW 0237H voltbl ENDS ; COMDAT xdata xdata SEGMENT $unwind$supportsXInput DD 025053d19H DD 010e2313H DD 070070079H DD 05006H DD imagerel __GSHandlerCheck DD 03b8H xdata ENDS ; COMDAT CONST CONST SEGMENT supportsXInput$rtcName$0 DB 063H DB 06fH DB 075H DB 06eH DB 074H DB 00H ORG $+2 supportsXInput$rtcName$1 DB 072H DB 064H DB 069H DB 00H supportsXInput$rtcName$2 DB 06eH DB 061H DB 06dH DB 065H DB 00H ORG $+3 supportsXInput$rtcName$3 DB 073H DB 069H DB 07aH DB 065H DB 00H ORG $+7 supportsXInput$rtcVarDesc DD 0204H DD 04H DQ FLAT:supportsXInput$rtcName$3 DD 0f0H DD 0100H DQ FLAT:supportsXInput$rtcName$2 DD 0a8H DD 020H DQ FLAT:supportsXInput$rtcName$1 DD 044H DD 04H DQ FLAT:supportsXInput$rtcName$0 ORG $+192 supportsXInput$rtcFrameData DD 04H DD 00H DQ FLAT:supportsXInput$rtcVarDesc CONST ENDS ; COMDAT xdata xdata SEGMENT $unwind$compareJoystickObjects DD 025051801H DD 01132318H DD 0700c0025H DD 0500bH xdata ENDS ; COMDAT xdata xdata SEGMENT $unwind$getDeviceDescription DD 025051301H DD 010e2313H DD 07007001fH DD 05006H xdata ENDS ; COMDAT voltbl voltbl SEGMENT _volmd DB 045H DB 09fH voltbl ENDS ; COMDAT xdata xdata SEGMENT $unwind$sprintf DD 025054c19H DD 011d2322H DD 070160025H DD 05015H DD imagerel __GSHandlerCheck DD 0118H xdata ENDS ; COMDAT CONST CONST SEGMENT sprintf$rtcName$0 DB 05fH DB 041H DB 072H DB 067H DB 04cH DB 069H DB 073H DB 074H DB 00H ORG $+7 sprintf$rtcVarDesc DD 048H DD 08H DQ FLAT:sprintf$rtcName$0 ORG $+48 sprintf$rtcFrameData DD 01H DD 00H DQ FLAT:sprintf$rtcVarDesc CONST ENDS ; COMDAT xdata xdata SEGMENT $unwind$_vsprintf_l DD 035052201H DD 011d3322H DD 07016001fH DD 05015H xdata ENDS ; COMDAT xdata xdata SEGMENT $unwind$_vsnprintf_l DD 035052201H DD 011d3322H DD 070160023H DD 05015H xdata ENDS ; COMDAT xdata xdata SEGMENT $unwind$__local_stdio_printf_options DD 025050f01H DD 010a230fH DD 07003001dH DD 05002H xdata ENDS ; COMDAT xdata xdata SEGMENT $unwind$_glfwDetectJoystickDisconnectionWin32 DD 025050f01H DD 010a230fH DD 070030025H DD 05002H xdata ENDS ; COMDAT voltbl voltbl SEGMENT _volmd DW 02aH DW 01dcH voltbl ENDS ; COMDAT xdata xdata SEGMENT $unwind$_glfwDetectJoystickConnectionWin32 DD 035053119H DD 010a330fH DD 070030039H DD 05002H DD imagerel __GSHandlerCheck DD 01b8H xdata ENDS ; COMDAT CONST CONST SEGMENT _glfwDetectJoystickConnectionWin32$rtcName$0 DB 067H DB 075H DB 069H DB 064H DB 00H ORG $+3 _glfwDetectJoystickConnectionWin32$rtcName$1 DB 078H DB 069H DB 063H DB 00H ORG $+4 _glfwDetectJoystickConnectionWin32$rtcVarDesc DD 0b8H DD 014H DQ FLAT:_glfwDetectJoystickConnectionWin32$rtcName$1 DD 078H DD 021H DQ FLAT:_glfwDetectJoystickConnectionWin32$rtcName$0 ORG $+96 _glfwDetectJoystickConnectionWin32$rtcFrameData DD 02H DD 00H DQ FLAT:_glfwDetectJoystickConnectionWin32$rtcVarDesc CONST ENDS ; COMDAT voltbl voltbl SEGMENT _volmd DB 036H DB 0acH voltbl ENDS ; COMDAT xdata xdata SEGMENT $unwind$_glfwUpdateGamepadGUIDWin32 DD 025053d19H DD 010e2313H DD 070070025H DD 05006H DD imagerel __GSHandlerCheck DD 0118H xdata ENDS ; COMDAT CONST CONST SEGMENT _glfwUpdateGamepadGUIDWin32$rtcName$0 DB 06fH DB 072H DB 069H DB 067H DB 069H DB 06eH DB 061H DB 06cH DB 00H ORG $+7 _glfwUpdateGamepadGUIDWin32$rtcVarDesc DD 028H DD 021H DQ FLAT:_glfwUpdateGamepadGUIDWin32$rtcName$0 ORG $+48 _glfwUpdateGamepadGUIDWin32$rtcFrameData DD 01H DD 00H DQ FLAT:_glfwUpdateGamepadGUIDWin32$rtcVarDesc CONST ENDS ; COMDAT xdata xdata SEGMENT $unwind$_glfwGetMappingNameWin32 DD 025050f01H DD 010a230fH DD 07003001dH DD 05002H xdata ENDS ; COMDAT voltbl voltbl SEGMENT _volmd DW 03aH DW 06c7H voltbl ENDS ; COMDAT xdata xdata SEGMENT $unwind$_glfwPollJoystickWin32 DD 025054119H DD 01122317H DD 0700b008bH DD 0500aH DD imagerel __GSHandlerCheck DD 0448H xdata ENDS ; COMDAT CONST CONST SEGMENT _glfwPollJoystickWin32$rtcName$0 DB 073H DB 074H DB 061H DB 074H DB 065H DB 00H ORG $+2 _glfwPollJoystickWin32$rtcName$1 DB 073H DB 074H DB 061H DB 074H DB 065H DB 073H DB 00H ORG $+1 _glfwPollJoystickWin32$rtcName$2 DB 078H DB 069H DB 073H DB 00H ORG $+4 _glfwPollJoystickWin32$rtcName$3 DB 062H DB 075H DB 074H DB 074H DB 06fH DB 06eH DB 073H DB 00H _glfwPollJoystickWin32$rtcVarDesc DD 0288H DD 014H DQ FLAT:_glfwPollJoystickWin32$rtcName$3 DD 0258H DD 010H DQ FLAT:_glfwPollJoystickWin32$rtcName$2 DD 0198H DD 024H DQ FLAT:_glfwPollJoystickWin32$rtcName$1 DD 0d0H DD 050H DQ FLAT:_glfwPollJoystickWin32$rtcName$0 ORG $+192 _glfwPollJoystickWin32$rtcFrameData DD 04H DD 00H DQ FLAT:_glfwPollJoystickWin32$rtcVarDesc CONST ENDS ; COMDAT xdata xdata SEGMENT $unwind$_glfwTerminateJoysticksWin32 DD 025050f01H DD 010a230fH DD 070030021H DD 05002H xdata ENDS ; COMDAT xdata xdata SEGMENT $unwind$_glfwInitJoysticksWin32 DD 035050f01H DD 010a330fH DD 07003001fH DD 05002H xdata ENDS ; Function compile flags: /Odt ; COMDAT __JustMyCode_Default _TEXT SEGMENT __JustMyCode_Default PROC ; COMDAT 00000 c2 00 00 ret 0 __JustMyCode_Default ENDP _TEXT ENDS ; Function compile flags: /Odtp /RTCsu /ZI ; File D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpGraphic\code\glfw\win32_joystick.c ; COMDAT deviceCallback _TEXT SEGMENT jid$ = 4 dc$ = 40 dipd$ = 120 device$ = 168 data$ = 200 js$ = 264 guid$ = 296 name$ = 368 tv279 = 1012 tv350 = 1016 __$ArrayPad$ = 1024 di$ = 1088 user$ = 1096 deviceCallback PROC ; COMDAT ; 349 : { 00000 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx 00005 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx 0000a 55 push rbp 0000b 53 push rbx 0000c 56 push rsi 0000d 57 push rdi 0000e 48 81 ec 88 04 00 00 sub rsp, 1160 ; 00000488H 00015 48 8d 6c 24 70 lea rbp, QWORD PTR [rsp+112] 0001a 48 8d 7c 24 70 lea rdi, QWORD PTR [rsp+112] 0001f b9 a6 00 00 00 mov ecx, 166 ; 000000a6H 00024 b8 cc cc cc cc mov eax, -858993460 ; ccccccccH 00029 f3 ab rep stosd 0002b 48 8b 8c 24 b8 04 00 00 mov rcx, QWORD PTR [rsp+1208] 00033 48 8b 05 00 00 00 00 mov rax, QWORD PTR __security_cookie 0003a 48 33 c5 xor rax, rbp 0003d 48 89 85 00 04 00 00 mov QWORD PTR __$ArrayPad$[rbp], rax 00044 48 8d 0d 00 00 00 00 lea rcx, OFFSET FLAT:__BD81096D_win32_joystick@c 0004b e8 00 00 00 00 call __CheckForDebuggerJustMyCode ; 350 : int jid = 0; 00050 c7 45 04 00 00 00 00 mov DWORD PTR jid$[rbp], 0 ; 351 : DIDEVCAPS dc; ; 352 : DIPROPDWORD dipd; ; 353 : IDirectInputDevice8* device; ; 354 : _GLFWobjenumWin32 data; ; 355 : _GLFWjoystick* js; ; 356 : char guid[33]; ; 357 : char name[256]; ; 358 : ; 359 : for (jid = 0; jid <= GLFW_JOYSTICK_LAST; jid++) 00057 c7 45 04 00 00 00 00 mov DWORD PTR jid$[rbp], 0 0005e eb 08 jmp SHORT $LN4@deviceCall $LN2@deviceCall: 00060 8b 45 04 mov eax, DWORD PTR jid$[rbp] 00063 ff c0 inc eax 00065 89 45 04 mov DWORD PTR jid$[rbp], eax $LN4@deviceCall: 00068 83 7d 04 0f cmp DWORD PTR jid$[rbp], 15 0006c 7f 63 jg SHORT $LN3@deviceCall ; 360 : { ; 361 : js = _glfw.joysticks + jid; 0006e 48 63 45 04 movsxd rax, DWORD PTR jid$[rbp] 00072 48 69 c0 20 01 00 00 imul rax, rax, 288 ; 00000120H 00079 48 8d 0d 90 07 00 00 lea rcx, OFFSET FLAT:_glfw+1936 00080 48 03 c8 add rcx, rax 00083 48 8b c1 mov rax, rcx 00086 48 89 85 08 01 00 00 mov QWORD PTR js$[rbp], rax ; 362 : if (js->connected) 0008d 48 8b 85 08 01 00 00 mov rax, QWORD PTR js$[rbp] 00094 83 78 04 00 cmp DWORD PTR [rax+4], 0 00098 74 35 je SHORT $LN5@deviceCall ; 363 : { ; 364 : if (memcmp(&js->win32.guid, &di->guidInstance, sizeof(GUID)) == 0) 0009a 48 8b 85 40 04 00 00 mov rax, QWORD PTR di$[rbp] 000a1 48 83 c0 04 add rax, 4 000a5 48 8b 8d 08 01 00 00 mov rcx, QWORD PTR js$[rbp] 000ac 48 81 c1 0c 01 00 00 add rcx, 268 ; 0000010cH 000b3 41 b8 10 00 00 00 mov r8d, 16 000b9 48 8b d0 mov rdx, rax 000bc e8 00 00 00 00 call memcmp 000c1 85 c0 test eax, eax 000c3 75 0a jne SHORT $LN6@deviceCall ; 365 : return DIENUM_CONTINUE; 000c5 b8 01 00 00 00 mov eax, 1 000ca e9 7f 05 00 00 jmp $LN1@deviceCall $LN6@deviceCall: $LN5@deviceCall: ; 366 : } ; 367 : } 000cf eb 8f jmp SHORT $LN2@deviceCall $LN3@deviceCall: ; 368 : ; 369 : if (supportsXInput(&di->guidProduct)) 000d1 48 8b 85 40 04 00 00 mov rax, QWORD PTR di$[rbp] 000d8 48 83 c0 14 add rax, 20 000dc 48 8b c8 mov rcx, rax 000df e8 00 00 00 00 call supportsXInput 000e4 85 c0 test eax, eax 000e6 74 0a je SHORT $LN7@deviceCall ; 370 : return DIENUM_CONTINUE; 000e8 b8 01 00 00 00 mov eax, 1 000ed e9 5c 05 00 00 jmp $LN1@deviceCall $LN7@deviceCall: ; 371 : ; 372 : if (FAILED(IDirectInput8_CreateDevice(_glfw.win32.dinput8.api, 000f2 48 8b 85 40 04 00 00 mov rax, QWORD PTR di$[rbp] 000f9 48 83 c0 04 add rax, 4 000fd 48 8b 0d 78 29 00 00 mov rcx, QWORD PTR _glfw+10616 00104 48 8b 09 mov rcx, QWORD PTR [rcx] 00107 48 89 8d f8 03 00 00 mov QWORD PTR tv350[rbp], rcx 0010e 45 33 c9 xor r9d, r9d 00111 4c 8d 85 a8 00 00 00 lea r8, QWORD PTR device$[rbp] 00118 48 8b d0 mov rdx, rax 0011b 48 8b 0d 78 29 00 00 mov rcx, QWORD PTR _glfw+10616 00122 48 8b 85 f8 03 00 00 mov rax, QWORD PTR tv350[rbp] 00129 ff 50 18 call QWORD PTR [rax+24] 0012c 85 c0 test eax, eax 0012e 7d 1b jge SHORT $LN8@deviceCall ; 373 : &di->guidInstance, ; 374 : &device, ; 375 : NULL))) ; 376 : { ; 377 : _glfwInputError(GLFW_PLATFORM_ERROR, "Win32: Failed to create device"); 00130 48 8d 15 00 00 00 00 lea rdx, OFFSET FLAT:??_C@_0BP@OHJGLFIP@Win32?3?5Failed?5to?5create?5device@ 00137 b9 08 00 01 00 mov ecx, 65544 ; 00010008H 0013c e8 00 00 00 00 call _glfwInputError ; 378 : return DIENUM_CONTINUE; 00141 b8 01 00 00 00 mov eax, 1 00146 e9 03 05 00 00 jmp $LN1@deviceCall $LN8@deviceCall: ; 379 : } ; 380 : ; 381 : if (FAILED(IDirectInputDevice8_SetDataFormat(device, &_glfwDataFormat))) 0014b 48 8b 85 a8 00 00 00 mov rax, QWORD PTR device$[rbp] 00152 48 8b 00 mov rax, QWORD PTR [rax] 00155 48 8d 15 00 00 00 00 lea rdx, OFFSET FLAT:_glfwDataFormat 0015c 48 8b 8d a8 00 00 00 mov rcx, QWORD PTR device$[rbp] 00163 ff 50 58 call QWORD PTR [rax+88] 00166 85 c0 test eax, eax 00168 7d 2f jge SHORT $LN9@deviceCall ; 382 : { ; 383 : _glfwInputError(GLFW_PLATFORM_ERROR, 0016a 48 8d 15 00 00 00 00 lea rdx, OFFSET FLAT:??_C@_0CI@MMBFOOEA@Win32?3?5Failed?5to?5set?5device?5dat@ 00171 b9 08 00 01 00 mov ecx, 65544 ; 00010008H 00176 e8 00 00 00 00 call _glfwInputError ; 384 : "Win32: Failed to set device data format"); ; 385 : ; 386 : IDirectInputDevice8_Release(device); 0017b 48 8b 85 a8 00 00 00 mov rax, QWORD PTR device$[rbp] 00182 48 8b 00 mov rax, QWORD PTR [rax] 00185 48 8b 8d a8 00 00 00 mov rcx, QWORD PTR device$[rbp] 0018c ff 50 10 call QWORD PTR [rax+16] ; 387 : return DIENUM_CONTINUE; 0018f b8 01 00 00 00 mov eax, 1 00194 e9 b5 04 00 00 jmp $LN1@deviceCall $LN9@deviceCall: ; 388 : } ; 389 : ; 390 : ZeroMemory(&dc, sizeof(dc)); 00199 41 b8 2c 00 00 00 mov r8d, 44 ; 0000002cH 0019f 33 d2 xor edx, edx 001a1 48 8d 4d 28 lea rcx, QWORD PTR dc$[rbp] 001a5 e8 00 00 00 00 call memset ; 391 : dc.dwSize = sizeof(dc); 001aa c7 45 28 2c 00 00 00 mov DWORD PTR dc$[rbp], 44 ; 0000002cH ; 392 : ; 393 : if (FAILED(IDirectInputDevice8_GetCapabilities(device, &dc))) 001b1 48 8b 85 a8 00 00 00 mov rax, QWORD PTR device$[rbp] 001b8 48 8b 00 mov rax, QWORD PTR [rax] 001bb 48 8d 55 28 lea rdx, QWORD PTR dc$[rbp] 001bf 48 8b 8d a8 00 00 00 mov rcx, QWORD PTR device$[rbp] 001c6 ff 50 18 call QWORD PTR [rax+24] 001c9 85 c0 test eax, eax 001cb 7d 2f jge SHORT $LN10@deviceCall ; 394 : { ; 395 : _glfwInputError(GLFW_PLATFORM_ERROR, 001cd 48 8d 15 00 00 00 00 lea rdx, OFFSET FLAT:??_C@_0CL@JHIPHFAC@Win32?3?5Failed?5to?5query?5device?5c@ 001d4 b9 08 00 01 00 mov ecx, 65544 ; 00010008H 001d9 e8 00 00 00 00 call _glfwInputError ; 396 : "Win32: Failed to query device capabilities"); ; 397 : ; 398 : IDirectInputDevice8_Release(device); 001de 48 8b 85 a8 00 00 00 mov rax, QWORD PTR device$[rbp] 001e5 48 8b 00 mov rax, QWORD PTR [rax] 001e8 48 8b 8d a8 00 00 00 mov rcx, QWORD PTR device$[rbp] 001ef ff 50 10 call QWORD PTR [rax+16] ; 399 : return DIENUM_CONTINUE; 001f2 b8 01 00 00 00 mov eax, 1 001f7 e9 52 04 00 00 jmp $LN1@deviceCall $LN10@deviceCall: ; 400 : } ; 401 : ; 402 : ZeroMemory(&dipd, sizeof(dipd)); 001fc 41 b8 14 00 00 00 mov r8d, 20 00202 33 d2 xor edx, edx 00204 48 8d 4d 78 lea rcx, QWORD PTR dipd$[rbp] 00208 e8 00 00 00 00 call memset ; 403 : dipd.diph.dwSize = sizeof(dipd); 0020d c7 45 78 14 00 00 00 mov DWORD PTR dipd$[rbp], 20 ; 404 : dipd.diph.dwHeaderSize = sizeof(dipd.diph); 00214 c7 45 7c 10 00 00 00 mov DWORD PTR dipd$[rbp+4], 16 ; 405 : dipd.diph.dwHow = DIPH_DEVICE; 0021b c7 85 84 00 00 00 00 00 00 00 mov DWORD PTR dipd$[rbp+12], 0 ; 406 : dipd.dwData = DIPROPAXISMODE_ABS; 00225 c7 85 88 00 00 00 00 00 00 00 mov DWORD PTR dipd$[rbp+16], 0 ; 407 : ; 408 : if (FAILED(IDirectInputDevice8_SetProperty(device, 0022f 48 8b 85 a8 00 00 00 mov rax, QWORD PTR device$[rbp] 00236 48 8b 00 mov rax, QWORD PTR [rax] 00239 4c 8d 45 78 lea r8, QWORD PTR dipd$[rbp] 0023d ba 02 00 00 00 mov edx, 2 00242 48 8b 8d a8 00 00 00 mov rcx, QWORD PTR device$[rbp] 00249 ff 50 30 call QWORD PTR [rax+48] 0024c 85 c0 test eax, eax 0024e 7d 2f jge SHORT $LN11@deviceCall ; 409 : DIPROP_AXISMODE, ; 410 : &dipd.diph))) ; 411 : { ; 412 : _glfwInputError(GLFW_PLATFORM_ERROR, 00250 48 8d 15 00 00 00 00 lea rdx, OFFSET FLAT:??_C@_0CG@JJEBGGIE@Win32?3?5Failed?5to?5set?5device?5axi@ 00257 b9 08 00 01 00 mov ecx, 65544 ; 00010008H 0025c e8 00 00 00 00 call _glfwInputError ; 413 : "Win32: Failed to set device axis mode"); ; 414 : ; 415 : IDirectInputDevice8_Release(device); 00261 48 8b 85 a8 00 00 00 mov rax, QWORD PTR device$[rbp] 00268 48 8b 00 mov rax, QWORD PTR [rax] 0026b 48 8b 8d a8 00 00 00 mov rcx, QWORD PTR device$[rbp] 00272 ff 50 10 call QWORD PTR [rax+16] ; 416 : return DIENUM_CONTINUE; 00275 b8 01 00 00 00 mov eax, 1 0027a e9 cf 03 00 00 jmp $LN1@deviceCall $LN11@deviceCall: ; 417 : } ; 418 : ; 419 : memset(&data, 0, sizeof(data)); 0027f 41 b8 28 00 00 00 mov r8d, 40 ; 00000028H 00285 33 d2 xor edx, edx 00287 48 8d 8d c8 00 00 00 lea rcx, QWORD PTR data$[rbp] 0028e e8 00 00 00 00 call memset ; 420 : data.device = device; 00293 48 8b 85 a8 00 00 00 mov rax, QWORD PTR device$[rbp] 0029a 48 89 85 c8 00 00 00 mov QWORD PTR data$[rbp], rax ; 421 : data.objects = _glfw_calloc(dc.dwAxes + (size_t) dc.dwButtons + dc.dwPOVs, 002a1 8b 45 34 mov eax, DWORD PTR dc$[rbp+12] 002a4 8b 4d 38 mov ecx, DWORD PTR dc$[rbp+16] 002a7 48 03 c1 add rax, rcx 002aa 8b 4d 3c mov ecx, DWORD PTR dc$[rbp+20] 002ad 48 03 c1 add rax, rcx 002b0 ba 08 00 00 00 mov edx, 8 002b5 48 8b c8 mov rcx, rax 002b8 e8 00 00 00 00 call _glfw_calloc 002bd 48 89 85 d0 00 00 00 mov QWORD PTR data$[rbp+8], rax ; 422 : sizeof(_GLFWjoyobjectWin32)); ; 423 : ; 424 : if (FAILED(IDirectInputDevice8_EnumObjects(device, 002c4 48 8b 85 a8 00 00 00 mov rax, QWORD PTR device$[rbp] 002cb 48 8b 00 mov rax, QWORD PTR [rax] 002ce 41 b9 1f 00 00 00 mov r9d, 31 002d4 4c 8d 85 c8 00 00 00 lea r8, QWORD PTR data$[rbp] 002db 48 8d 15 00 00 00 00 lea rdx, OFFSET FLAT:deviceObjectCallback 002e2 48 8b 8d a8 00 00 00 mov rcx, QWORD PTR device$[rbp] 002e9 ff 50 20 call QWORD PTR [rax+32] 002ec 85 c0 test eax, eax 002ee 7d 3b jge SHORT $LN12@deviceCall ; 425 : deviceObjectCallback, ; 426 : &data, ; 427 : DIDFT_AXIS | DIDFT_BUTTON | DIDFT_POV))) ; 428 : { ; 429 : _glfwInputError(GLFW_PLATFORM_ERROR, 002f0 48 8d 15 00 00 00 00 lea rdx, OFFSET FLAT:??_C@_0CK@FKJPIIOF@Win32?3?5Failed?5to?5enumerate?5devi@ 002f7 b9 08 00 01 00 mov ecx, 65544 ; 00010008H 002fc e8 00 00 00 00 call _glfwInputError ; 430 : "Win32: Failed to enumerate device objects"); ; 431 : ; 432 : IDirectInputDevice8_Release(device); 00301 48 8b 85 a8 00 00 00 mov rax, QWORD PTR device$[rbp] 00308 48 8b 00 mov rax, QWORD PTR [rax] 0030b 48 8b 8d a8 00 00 00 mov rcx, QWORD PTR device$[rbp] 00312 ff 50 10 call QWORD PTR [rax+16] ; 433 : _glfw_free(data.objects); 00315 48 8b 8d d0 00 00 00 mov rcx, QWORD PTR data$[rbp+8] 0031c e8 00 00 00 00 call _glfw_free ; 434 : return DIENUM_CONTINUE; 00321 b8 01 00 00 00 mov eax, 1 00326 e9 23 03 00 00 jmp $LN1@deviceCall $LN12@deviceCall: ; 435 : } ; 436 : ; 437 : qsort(data.objects, data.objectCount, 0032b 48 63 85 d8 00 00 00 movsxd rax, DWORD PTR data$[rbp+16] 00332 4c 8d 0d 00 00 00 00 lea r9, OFFSET FLAT:compareJoystickObjects 00339 41 b8 08 00 00 00 mov r8d, 8 0033f 48 8b d0 mov rdx, rax 00342 48 8b 8d d0 00 00 00 mov rcx, QWORD PTR data$[rbp+8] 00349 ff 15 00 00 00 00 call QWORD PTR __imp_qsort ; 438 : sizeof(_GLFWjoyobjectWin32), ; 439 : compareJoystickObjects); ; 440 : ; 441 : if (!WideCharToMultiByte(CP_UTF8, 0, 0034f 48 8b 85 40 04 00 00 mov rax, QWORD PTR di$[rbp] 00356 48 83 c0 28 add rax, 40 ; 00000028H 0035a 48 c7 44 24 38 00 00 00 00 mov QWORD PTR [rsp+56], 0 00363 48 c7 44 24 30 00 00 00 00 mov QWORD PTR [rsp+48], 0 0036c c7 44 24 28 00 01 00 00 mov DWORD PTR [rsp+40], 256 ; 00000100H 00374 48 8d 8d 70 01 00 00 lea rcx, QWORD PTR name$[rbp] 0037b 48 89 4c 24 20 mov QWORD PTR [rsp+32], rcx 00380 41 b9 ff ff ff ff mov r9d, -1 00386 4c 8b c0 mov r8, rax 00389 33 d2 xor edx, edx 0038b b9 e9 fd 00 00 mov ecx, 65001 ; 0000fde9H 00390 ff 15 00 00 00 00 call QWORD PTR __imp_WideCharToMultiByte 00396 85 c0 test eax, eax 00398 75 38 jne SHORT $LN13@deviceCall ; 442 : di->tszInstanceName, -1, ; 443 : name, sizeof(name), ; 444 : NULL, NULL)) ; 445 : { ; 446 : _glfwInputError(GLFW_PLATFORM_ERROR, 0039a 48 8d 15 00 00 00 00 lea rdx, OFFSET FLAT:??_C@_0DA@IIGLKABA@Win32?3?5Failed?5to?5convert?5joysti@ 003a1 b9 08 00 01 00 mov ecx, 65544 ; 00010008H 003a6 e8 00 00 00 00 call _glfwInputError ; 447 : "Win32: Failed to convert joystick name to UTF-8"); ; 448 : ; 449 : IDirectInputDevice8_Release(device); 003ab 48 8b 85 a8 00 00 00 mov rax, QWORD PTR device$[rbp] 003b2 48 8b 00 mov rax, QWORD PTR [rax] 003b5 48 8b 8d a8 00 00 00 mov rcx, QWORD PTR device$[rbp] 003bc ff 50 10 call QWORD PTR [rax+16] ; 450 : _glfw_free(data.objects); 003bf 48 8b 8d d0 00 00 00 mov rcx, QWORD PTR data$[rbp+8] 003c6 e8 00 00 00 00 call _glfw_free ; 451 : return DIENUM_STOP; 003cb 33 c0 xor eax, eax 003cd e9 7c 02 00 00 jmp $LN1@deviceCall $LN13@deviceCall: ; 452 : } ; 453 : ; 454 : // Generate a joystick GUID that matches the SDL 2.0.5+ one ; 455 : if (memcmp(&di->guidProduct.Data4[2], "PIDVID", 6) == 0) 003d2 b8 01 00 00 00 mov eax, 1 003d7 48 6b c0 02 imul rax, rax, 2 003db 48 8b 8d 40 04 00 00 mov rcx, QWORD PTR di$[rbp] 003e2 48 8d 44 01 1c lea rax, QWORD PTR [rcx+rax+28] 003e7 41 b8 06 00 00 00 mov r8d, 6 003ed 48 8d 15 00 00 00 00 lea rdx, OFFSET FLAT:??_C@_06MBFKAACL@PIDVID@ 003f4 48 8b c8 mov rcx, rax 003f7 e8 00 00 00 00 call memcmp 003fc 85 c0 test eax, eax 003fe 75 5f jne SHORT $LN14@deviceCall ; 456 : { ; 457 : sprintf(guid, "03000000%02x%02x0000%02x%02x000000000000", 00400 48 8b 85 40 04 00 00 mov rax, QWORD PTR di$[rbp] 00407 8b 40 14 mov eax, DWORD PTR [rax+20] 0040a c1 e8 18 shr eax, 24 0040d 0f b6 c0 movzx eax, al 00410 48 8b 8d 40 04 00 00 mov rcx, QWORD PTR di$[rbp] 00417 8b 49 14 mov ecx, DWORD PTR [rcx+20] 0041a c1 e9 10 shr ecx, 16 0041d 0f b6 c9 movzx ecx, cl 00420 48 8b 95 40 04 00 00 mov rdx, QWORD PTR di$[rbp] 00427 8b 52 14 mov edx, DWORD PTR [rdx+20] 0042a c1 ea 08 shr edx, 8 0042d 0f b6 d2 movzx edx, dl 00430 4c 8b 85 40 04 00 00 mov r8, QWORD PTR di$[rbp] 00437 45 0f b6 40 14 movzx r8d, BYTE PTR [r8+20] 0043c 89 44 24 28 mov DWORD PTR [rsp+40], eax 00440 89 4c 24 20 mov DWORD PTR [rsp+32], ecx 00444 44 8b ca mov r9d, edx 00447 48 8d 15 00 00 00 00 lea rdx, OFFSET FLAT:??_C@_0CJ@NMCAPCBP@03000000?$CF02x?$CF02x0000?$CF02x?$CF02x000@ 0044e 48 8d 8d 28 01 00 00 lea rcx, QWORD PTR guid$[rbp] 00455 e8 00 00 00 00 call sprintf ; 458 : (uint8_t) di->guidProduct.Data1, ; 459 : (uint8_t) (di->guidProduct.Data1 >> 8), ; 460 : (uint8_t) (di->guidProduct.Data1 >> 16), ; 461 : (uint8_t) (di->guidProduct.Data1 >> 24)); ; 462 : } 0045a e9 10 01 00 00 jmp $LN15@deviceCall $LN14@deviceCall: ; 463 : else ; 464 : { ; 465 : sprintf(guid, "05000000%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x00", 0045f b8 01 00 00 00 mov eax, 1 00464 48 6b c0 0a imul rax, rax, 10 00468 0f be 84 05 70 01 00 00 movsx eax, BYTE PTR name$[rbp+rax] 00470 b9 01 00 00 00 mov ecx, 1 00475 48 6b c9 09 imul rcx, rcx, 9 00479 0f be 8c 0d 70 01 00 00 movsx ecx, BYTE PTR name$[rbp+rcx] 00481 ba 01 00 00 00 mov edx, 1 00486 48 6b d2 08 imul rdx, rdx, 8 0048a 0f be 94 15 70 01 00 00 movsx edx, BYTE PTR name$[rbp+rdx] 00492 41 b8 01 00 00 00 mov r8d, 1 00498 4d 6b c0 07 imul r8, r8, 7 0049c 46 0f be 84 05 70 01 00 00 movsx r8d, BYTE PTR name$[rbp+r8] 004a5 41 b9 01 00 00 00 mov r9d, 1 004ab 4d 6b c9 06 imul r9, r9, 6 004af 46 0f be 8c 0d 70 01 00 00 movsx r9d, BYTE PTR name$[rbp+r9] 004b8 41 ba 01 00 00 00 mov r10d, 1 004be 4d 6b d2 05 imul r10, r10, 5 004c2 46 0f be 94 15 70 01 00 00 movsx r10d, BYTE PTR name$[rbp+r10] 004cb 41 bb 01 00 00 00 mov r11d, 1 004d1 4d 6b db 04 imul r11, r11, 4 004d5 46 0f be 9c 1d 70 01 00 00 movsx r11d, BYTE PTR name$[rbp+r11] 004de bb 01 00 00 00 mov ebx, 1 004e3 48 6b db 03 imul rbx, rbx, 3 004e7 0f be 9c 1d 70 01 00 00 movsx ebx, BYTE PTR name$[rbp+rbx] 004ef bf 01 00 00 00 mov edi, 1 004f4 48 6b ff 02 imul rdi, rdi, 2 004f8 0f be bc 3d 70 01 00 00 movsx edi, BYTE PTR name$[rbp+rdi] 00500 be 01 00 00 00 mov esi, 1 00505 48 6b f6 01 imul rsi, rsi, 1 00509 0f be b4 35 70 01 00 00 movsx esi, BYTE PTR name$[rbp+rsi] 00511 89 b5 f4 03 00 00 mov DWORD PTR tv279[rbp], esi 00517 be 01 00 00 00 mov esi, 1 0051c 48 6b f6 00 imul rsi, rsi, 0 00520 0f be b4 35 70 01 00 00 movsx esi, BYTE PTR name$[rbp+rsi] 00528 89 44 24 60 mov DWORD PTR [rsp+96], eax 0052c 89 4c 24 58 mov DWORD PTR [rsp+88], ecx 00530 89 54 24 50 mov DWORD PTR [rsp+80], edx 00534 44 89 44 24 48 mov DWORD PTR [rsp+72], r8d 00539 44 89 4c 24 40 mov DWORD PTR [rsp+64], r9d 0053e 44 89 54 24 38 mov DWORD PTR [rsp+56], r10d 00543 44 89 5c 24 30 mov DWORD PTR [rsp+48], r11d 00548 89 5c 24 28 mov DWORD PTR [rsp+40], ebx 0054c 89 7c 24 20 mov DWORD PTR [rsp+32], edi 00550 8b 85 f4 03 00 00 mov eax, DWORD PTR tv279[rbp] 00556 44 8b c8 mov r9d, eax 00559 44 8b c6 mov r8d, esi 0055c 48 8d 15 00 00 00 00 lea rdx, OFFSET FLAT:??_C@_0DH@LCNJGHOP@05000000?$CF02x?$CF02x?$CF02x?$CF02x?$CF02x?$CF02@ 00563 48 8d 8d 28 01 00 00 lea rcx, QWORD PTR guid$[rbp] 0056a e8 00 00 00 00 call sprintf $LN15@deviceCall: ; 466 : name[0], name[1], name[2], name[3], ; 467 : name[4], name[5], name[6], name[7], ; 468 : name[8], name[9], name[10]); ; 469 : } ; 470 : ; 471 : js = _glfwAllocJoystick(name, guid, 0056f 8b 85 e0 00 00 00 mov eax, DWORD PTR data$[rbp+24] 00575 8b 8d dc 00 00 00 mov ecx, DWORD PTR data$[rbp+20] 0057b 03 c8 add ecx, eax 0057d 8b c1 mov eax, ecx 0057f 8b 8d e8 00 00 00 mov ecx, DWORD PTR data$[rbp+32] 00585 89 4c 24 20 mov DWORD PTR [rsp+32], ecx 00589 44 8b 8d e4 00 00 00 mov r9d, DWORD PTR data$[rbp+28] 00590 44 8b c0 mov r8d, eax 00593 48 8d 95 28 01 00 00 lea rdx, QWORD PTR guid$[rbp] 0059a 48 8d 8d 70 01 00 00 lea rcx, QWORD PTR name$[rbp] 005a1 e8 00 00 00 00 call _glfwAllocJoystick 005a6 48 89 85 08 01 00 00 mov QWORD PTR js$[rbp], rax ; 472 : data.axisCount + data.sliderCount, ; 473 : data.buttonCount, ; 474 : data.povCount); ; 475 : if (!js) 005ad 48 83 bd 08 01 00 00 00 cmp QWORD PTR js$[rbp], 0 005b5 75 24 jne SHORT $LN16@deviceCall ; 476 : { ; 477 : IDirectInputDevice8_Release(device); 005b7 48 8b 85 a8 00 00 00 mov rax, QWORD PTR device$[rbp] 005be 48 8b 00 mov rax, QWORD PTR [rax] 005c1 48 8b 8d a8 00 00 00 mov rcx, QWORD PTR device$[rbp] 005c8 ff 50 10 call QWORD PTR [rax+16] ; 478 : _glfw_free(data.objects); 005cb 48 8b 8d d0 00 00 00 mov rcx, QWORD PTR data$[rbp+8] 005d2 e8 00 00 00 00 call _glfw_free ; 479 : return DIENUM_STOP; 005d7 33 c0 xor eax, eax 005d9 eb 73 jmp SHORT $LN1@deviceCall $LN16@deviceCall: ; 480 : } ; 481 : ; 482 : js->win32.device = device; 005db 48 8b 85 08 01 00 00 mov rax, QWORD PTR js$[rbp] 005e2 48 8b 8d a8 00 00 00 mov rcx, QWORD PTR device$[rbp] 005e9 48 89 88 00 01 00 00 mov QWORD PTR [rax+256], rcx ; 483 : js->win32.guid = di->guidInstance; 005f0 48 8b 85 08 01 00 00 mov rax, QWORD PTR js$[rbp] 005f7 48 8b 8d 40 04 00 00 mov rcx, QWORD PTR di$[rbp] 005fe 48 8d b8 0c 01 00 00 lea rdi, QWORD PTR [rax+268] 00605 48 8d 71 04 lea rsi, QWORD PTR [rcx+4] 00609 b9 10 00 00 00 mov ecx, 16 0060e f3 a4 rep movsb ; 484 : js->win32.objects = data.objects; 00610 48 8b 85 08 01 00 00 mov rax, QWORD PTR js$[rbp] 00617 48 8b 8d d0 00 00 00 mov rcx, QWORD PTR data$[rbp+8] 0061e 48 89 88 f0 00 00 00 mov QWORD PTR [rax+240], rcx ; 485 : js->win32.objectCount = data.objectCount; 00625 48 8b 85 08 01 00 00 mov rax, QWORD PTR js$[rbp] 0062c 8b 8d d8 00 00 00 mov ecx, DWORD PTR data$[rbp+16] 00632 89 88 f8 00 00 00 mov DWORD PTR [rax+248], ecx ; 486 : ; 487 : _glfwInputJoystick(js, GLFW_CONNECTED); 00638 ba 01 00 04 00 mov edx, 262145 ; 00040001H 0063d 48 8b 8d 08 01 00 00 mov rcx, QWORD PTR js$[rbp] 00644 e8 00 00 00 00 call _glfwInputJoystick ; 488 : return DIENUM_CONTINUE; 00649 b8 01 00 00 00 mov eax, 1 $LN1@deviceCall: ; 489 : } 0064e 48 8b f8 mov rdi, rax 00651 48 8d 4d 90 lea rcx, QWORD PTR [rbp-112] 00655 48 8d 15 00 00 00 00 lea rdx, OFFSET FLAT:deviceCallback$rtcFrameData 0065c e8 00 00 00 00 call _RTC_CheckStackVars 00661 48 8b c7 mov rax, rdi 00664 48 8b 8d 00 04 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp] 0066b 48 33 cd xor rcx, rbp 0066e e8 00 00 00 00 call __security_check_cookie 00673 48 8d a5 18 04 00 00 lea rsp, QWORD PTR [rbp+1048] 0067a 5f pop rdi 0067b 5e pop rsi 0067c 5b pop rbx 0067d 5d pop rbp 0067e c3 ret 0 deviceCallback ENDP _TEXT ENDS ; Function compile flags: /Odtp /RTCsu /ZI ; File D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpGraphic\code\glfw\win32_joystick.c ; COMDAT deviceObjectCallback _TEXT SEGMENT data$ = 8 object$ = 40 dipr$4 = 72 __$ArrayPad$ = 296 doi$ = 336 user$ = 344 deviceObjectCallback PROC ; COMDAT ; 278 : { 00000 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx 00005 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx 0000a 55 push rbp 0000b 57 push rdi 0000c 48 81 ec 58 01 00 00 sub rsp, 344 ; 00000158H 00013 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32] 00018 48 8d 7c 24 20 lea rdi, QWORD PTR [rsp+32] 0001d b9 1e 00 00 00 mov ecx, 30 00022 b8 cc cc cc cc mov eax, -858993460 ; ccccccccH 00027 f3 ab rep stosd 00029 48 8b 8c 24 78 01 00 00 mov rcx, QWORD PTR [rsp+376] 00031 48 8b 05 00 00 00 00 mov rax, QWORD PTR __security_cookie 00038 48 33 c5 xor rax, rbp 0003b 48 89 85 28 01 00 00 mov QWORD PTR __$ArrayPad$[rbp], rax 00042 48 8d 0d 00 00 00 00 lea rcx, OFFSET FLAT:__BD81096D_win32_joystick@c 00049 e8 00 00 00 00 call __CheckForDebuggerJustMyCode ; 279 : _GLFWobjenumWin32* data = user; 0004e 48 8b 85 58 01 00 00 mov rax, QWORD PTR user$[rbp] 00055 48 89 45 08 mov QWORD PTR data$[rbp], rax ; 280 : _GLFWjoyobjectWin32* object = data->objects + data->objectCount; 00059 48 8b 45 08 mov rax, QWORD PTR data$[rbp] 0005d 48 63 40 10 movsxd rax, DWORD PTR [rax+16] 00061 48 8b 4d 08 mov rcx, QWORD PTR data$[rbp] 00065 48 8b 49 08 mov rcx, QWORD PTR [rcx+8] 00069 48 8d 04 c1 lea rax, QWORD PTR [rcx+rax*8] 0006d 48 89 45 28 mov QWORD PTR object$[rbp], rax ; 281 : ; 282 : if (DIDFT_GETTYPE(doi->dwType) & DIDFT_AXIS) 00071 48 8b 85 50 01 00 00 mov rax, QWORD PTR doi$[rbp] 00078 8b 40 18 mov eax, DWORD PTR [rax+24] 0007b 48 25 ff 00 00 00 and rax, 255 ; 000000ffH 00081 0f b6 c0 movzx eax, al 00084 83 e0 03 and eax, 3 00087 85 c0 test eax, eax 00089 0f 84 3f 02 00 00 je $LN2@deviceObje ; 283 : { ; 284 : DIPROPRANGE dipr; ; 285 : ; 286 : if (memcmp(&doi->guidType, &GUID_Slider, sizeof(GUID)) == 0) 0008f 48 8b 85 50 01 00 00 mov rax, QWORD PTR doi$[rbp] 00096 48 83 c0 04 add rax, 4 0009a 41 b8 10 00 00 00 mov r8d, 16 000a0 48 8d 15 00 00 00 00 lea rdx, OFFSET FLAT:_glfw_GUID_Slider 000a7 48 8b c8 mov rcx, rax 000aa e8 00 00 00 00 call memcmp 000af 85 c0 test eax, eax 000b1 75 1b jne SHORT $LN4@deviceObje ; 287 : object->offset = DIJOFS_SLIDER(data->sliderCount); 000b3 48 8b 45 08 mov rax, QWORD PTR data$[rbp] 000b7 48 63 40 18 movsxd rax, DWORD PTR [rax+24] 000bb 48 8d 04 85 18 00 00 00 lea rax, QWORD PTR [rax*4+24] 000c3 48 8b 4d 28 mov rcx, QWORD PTR object$[rbp] 000c7 89 01 mov DWORD PTR [rcx], eax 000c9 e9 33 01 00 00 jmp $LN5@deviceObje $LN4@deviceObje: ; 288 : else if (memcmp(&doi->guidType, &GUID_XAxis, sizeof(GUID)) == 0) 000ce 48 8b 85 50 01 00 00 mov rax, QWORD PTR doi$[rbp] 000d5 48 83 c0 04 add rax, 4 000d9 41 b8 10 00 00 00 mov r8d, 16 000df 48 8d 15 00 00 00 00 lea rdx, OFFSET FLAT:_glfw_GUID_XAxis 000e6 48 8b c8 mov rcx, rax 000e9 e8 00 00 00 00 call memcmp 000ee 85 c0 test eax, eax 000f0 75 0f jne SHORT $LN6@deviceObje ; 289 : object->offset = DIJOFS_X; 000f2 48 8b 45 28 mov rax, QWORD PTR object$[rbp] 000f6 c7 00 00 00 00 00 mov DWORD PTR [rax], 0 000fc e9 00 01 00 00 jmp $LN7@deviceObje $LN6@deviceObje: ; 290 : else if (memcmp(&doi->guidType, &GUID_YAxis, sizeof(GUID)) == 0) 00101 48 8b 85 50 01 00 00 mov rax, QWORD PTR doi$[rbp] 00108 48 83 c0 04 add rax, 4 0010c 41 b8 10 00 00 00 mov r8d, 16 00112 48 8d 15 00 00 00 00 lea rdx, OFFSET FLAT:_glfw_GUID_YAxis 00119 48 8b c8 mov rcx, rax 0011c e8 00 00 00 00 call memcmp 00121 85 c0 test eax, eax 00123 75 0f jne SHORT $LN8@deviceObje ; 291 : object->offset = DIJOFS_Y; 00125 48 8b 45 28 mov rax, QWORD PTR object$[rbp] 00129 c7 00 04 00 00 00 mov DWORD PTR [rax], 4 0012f e9 cd 00 00 00 jmp $LN9@deviceObje $LN8@deviceObje: ; 292 : else if (memcmp(&doi->guidType, &GUID_ZAxis, sizeof(GUID)) == 0) 00134 48 8b 85 50 01 00 00 mov rax, QWORD PTR doi$[rbp] 0013b 48 83 c0 04 add rax, 4 0013f 41 b8 10 00 00 00 mov r8d, 16 00145 48 8d 15 00 00 00 00 lea rdx, OFFSET FLAT:_glfw_GUID_ZAxis 0014c 48 8b c8 mov rcx, rax 0014f e8 00 00 00 00 call memcmp 00154 85 c0 test eax, eax 00156 75 0f jne SHORT $LN10@deviceObje ; 293 : object->offset = DIJOFS_Z; 00158 48 8b 45 28 mov rax, QWORD PTR object$[rbp] 0015c c7 00 08 00 00 00 mov DWORD PTR [rax], 8 00162 e9 9a 00 00 00 jmp $LN11@deviceObje $LN10@deviceObje: ; 294 : else if (memcmp(&doi->guidType, &GUID_RxAxis, sizeof(GUID)) == 0) 00167 48 8b 85 50 01 00 00 mov rax, QWORD PTR doi$[rbp] 0016e 48 83 c0 04 add rax, 4 00172 41 b8 10 00 00 00 mov r8d, 16 00178 48 8d 15 00 00 00 00 lea rdx, OFFSET FLAT:_glfw_GUID_RxAxis 0017f 48 8b c8 mov rcx, rax 00182 e8 00 00 00 00 call memcmp 00187 85 c0 test eax, eax 00189 75 0c jne SHORT $LN12@deviceObje ; 295 : object->offset = DIJOFS_RX; 0018b 48 8b 45 28 mov rax, QWORD PTR object$[rbp] 0018f c7 00 0c 00 00 00 mov DWORD PTR [rax], 12 00195 eb 6a jmp SHORT $LN13@deviceObje $LN12@deviceObje: ; 296 : else if (memcmp(&doi->guidType, &GUID_RyAxis, sizeof(GUID)) == 0) 00197 48 8b 85 50 01 00 00 mov rax, QWORD PTR doi$[rbp] 0019e 48 83 c0 04 add rax, 4 001a2 41 b8 10 00 00 00 mov r8d, 16 001a8 48 8d 15 00 00 00 00 lea rdx, OFFSET FLAT:_glfw_GUID_RyAxis 001af 48 8b c8 mov rcx, rax 001b2 e8 00 00 00 00 call memcmp 001b7 85 c0 test eax, eax 001b9 75 0c jne SHORT $LN14@deviceObje ; 297 : object->offset = DIJOFS_RY; 001bb 48 8b 45 28 mov rax, QWORD PTR object$[rbp] 001bf c7 00 10 00 00 00 mov DWORD PTR [rax], 16 001c5 eb 3a jmp SHORT $LN15@deviceObje $LN14@deviceObje: ; 298 : else if (memcmp(&doi->guidType, &GUID_RzAxis, sizeof(GUID)) == 0) 001c7 48 8b 85 50 01 00 00 mov rax, QWORD PTR doi$[rbp] 001ce 48 83 c0 04 add rax, 4 001d2 41 b8 10 00 00 00 mov r8d, 16 001d8 48 8d 15 00 00 00 00 lea rdx, OFFSET FLAT:_glfw_GUID_RzAxis 001df 48 8b c8 mov rcx, rax 001e2 e8 00 00 00 00 call memcmp 001e7 85 c0 test eax, eax 001e9 75 0c jne SHORT $LN16@deviceObje ; 299 : object->offset = DIJOFS_RZ; 001eb 48 8b 45 28 mov rax, QWORD PTR object$[rbp] 001ef c7 00 14 00 00 00 mov DWORD PTR [rax], 20 001f5 eb 0a jmp SHORT $LN17@deviceObje $LN16@deviceObje: ; 300 : else ; 301 : return DIENUM_CONTINUE; 001f7 b8 01 00 00 00 mov eax, 1 001fc e9 74 01 00 00 jmp $LN1@deviceObje $LN17@deviceObje: $LN15@deviceObje: $LN13@deviceObje: $LN11@deviceObje: $LN9@deviceObje: $LN7@deviceObje: $LN5@deviceObje: ; 302 : ; 303 : ZeroMemory(&dipr, sizeof(dipr)); 00201 41 b8 18 00 00 00 mov r8d, 24 00207 33 d2 xor edx, edx 00209 48 8d 4d 48 lea rcx, QWORD PTR dipr$4[rbp] 0020d e8 00 00 00 00 call memset ; 304 : dipr.diph.dwSize = sizeof(dipr); 00212 c7 45 48 18 00 00 00 mov DWORD PTR dipr$4[rbp], 24 ; 305 : dipr.diph.dwHeaderSize = sizeof(dipr.diph); 00219 c7 45 4c 10 00 00 00 mov DWORD PTR dipr$4[rbp+4], 16 ; 306 : dipr.diph.dwObj = doi->dwType; 00220 48 8b 85 50 01 00 00 mov rax, QWORD PTR doi$[rbp] 00227 8b 40 18 mov eax, DWORD PTR [rax+24] 0022a 89 45 50 mov DWORD PTR dipr$4[rbp+8], eax ; 307 : dipr.diph.dwHow = DIPH_BYID; 0022d c7 45 54 02 00 00 00 mov DWORD PTR dipr$4[rbp+12], 2 ; 308 : dipr.lMin = -32768; 00234 c7 45 58 00 80 ff ff mov DWORD PTR dipr$4[rbp+16], -32768 ; ffffffffffff8000H ; 309 : dipr.lMax = 32767; 0023b c7 45 5c ff 7f 00 00 mov DWORD PTR dipr$4[rbp+20], 32767 ; 00007fffH ; 310 : ; 311 : if (FAILED(IDirectInputDevice8_SetProperty(data->device, 00242 48 8b 45 08 mov rax, QWORD PTR data$[rbp] 00246 48 8b 00 mov rax, QWORD PTR [rax] 00249 48 8b 00 mov rax, QWORD PTR [rax] 0024c 4c 8d 45 48 lea r8, QWORD PTR dipr$4[rbp] 00250 ba 04 00 00 00 mov edx, 4 00255 48 8b 4d 08 mov rcx, QWORD PTR data$[rbp] 00259 48 8b 09 mov rcx, QWORD PTR [rcx] 0025c ff 50 30 call QWORD PTR [rax+48] 0025f 85 c0 test eax, eax 00261 7d 0a jge SHORT $LN18@deviceObje ; 312 : DIPROP_RANGE, ; 313 : &dipr.diph))) ; 314 : { ; 315 : return DIENUM_CONTINUE; 00263 b8 01 00 00 00 mov eax, 1 00268 e9 08 01 00 00 jmp $LN1@deviceObje $LN18@deviceObje: ; 316 : } ; 317 : ; 318 : if (memcmp(&doi->guidType, &GUID_Slider, sizeof(GUID)) == 0) 0026d 48 8b 85 50 01 00 00 mov rax, QWORD PTR doi$[rbp] 00274 48 83 c0 04 add rax, 4 00278 41 b8 10 00 00 00 mov r8d, 16 0027e 48 8d 15 00 00 00 00 lea rdx, OFFSET FLAT:_glfw_GUID_Slider 00285 48 8b c8 mov rcx, rax 00288 e8 00 00 00 00 call memcmp 0028d 85 c0 test eax, eax 0028f 75 1d jne SHORT $LN19@deviceObje ; 319 : { ; 320 : object->type = _GLFW_TYPE_SLIDER; 00291 48 8b 45 28 mov rax, QWORD PTR object$[rbp] 00295 c7 40 04 01 00 00 00 mov DWORD PTR [rax+4], 1 ; 321 : data->sliderCount++; 0029c 48 8b 45 08 mov rax, QWORD PTR data$[rbp] 002a0 8b 40 18 mov eax, DWORD PTR [rax+24] 002a3 ff c0 inc eax 002a5 48 8b 4d 08 mov rcx, QWORD PTR data$[rbp] 002a9 89 41 18 mov DWORD PTR [rcx+24], eax ; 322 : } 002ac eb 1b jmp SHORT $LN20@deviceObje $LN19@deviceObje: ; 323 : else ; 324 : { ; 325 : object->type = _GLFW_TYPE_AXIS; 002ae 48 8b 45 28 mov rax, QWORD PTR object$[rbp] 002b2 c7 40 04 00 00 00 00 mov DWORD PTR [rax+4], 0 ; 326 : data->axisCount++; 002b9 48 8b 45 08 mov rax, QWORD PTR data$[rbp] 002bd 8b 40 14 mov eax, DWORD PTR [rax+20] 002c0 ff c0 inc eax 002c2 48 8b 4d 08 mov rcx, QWORD PTR data$[rbp] 002c6 89 41 14 mov DWORD PTR [rcx+20], eax $LN20@deviceObje: ; 327 : } ; 328 : } 002c9 e9 92 00 00 00 jmp $LN3@deviceObje $LN2@deviceObje: ; 329 : else if (DIDFT_GETTYPE(doi->dwType) & DIDFT_BUTTON) 002ce 48 8b 85 50 01 00 00 mov rax, QWORD PTR doi$[rbp] 002d5 8b 40 18 mov eax, DWORD PTR [rax+24] 002d8 48 25 ff 00 00 00 and rax, 255 ; 000000ffH 002de 0f b6 c0 movzx eax, al 002e1 83 e0 0c and eax, 12 002e4 85 c0 test eax, eax 002e6 74 2d je SHORT $LN21@deviceObje ; 330 : { ; 331 : object->offset = DIJOFS_BUTTON(data->buttonCount); 002e8 48 8b 45 08 mov rax, QWORD PTR data$[rbp] 002ec 8b 40 1c mov eax, DWORD PTR [rax+28] 002ef 83 c0 30 add eax, 48 ; 00000030H 002f2 48 8b 4d 28 mov rcx, QWORD PTR object$[rbp] 002f6 89 01 mov DWORD PTR [rcx], eax ; 332 : object->type = _GLFW_TYPE_BUTTON; 002f8 48 8b 45 28 mov rax, QWORD PTR object$[rbp] 002fc c7 40 04 02 00 00 00 mov DWORD PTR [rax+4], 2 ; 333 : data->buttonCount++; 00303 48 8b 45 08 mov rax, QWORD PTR data$[rbp] 00307 8b 40 1c mov eax, DWORD PTR [rax+28] 0030a ff c0 inc eax 0030c 48 8b 4d 08 mov rcx, QWORD PTR data$[rbp] 00310 89 41 1c mov DWORD PTR [rcx+28], eax ; 334 : } 00313 eb 4b jmp SHORT $LN22@deviceObje $LN21@deviceObje: ; 335 : else if (DIDFT_GETTYPE(doi->dwType) & DIDFT_POV) 00315 48 8b 85 50 01 00 00 mov rax, QWORD PTR doi$[rbp] 0031c 8b 40 18 mov eax, DWORD PTR [rax+24] 0031f 48 25 ff 00 00 00 and rax, 255 ; 000000ffH 00325 0f b6 c0 movzx eax, al 00328 83 e0 10 and eax, 16 0032b 85 c0 test eax, eax 0032d 74 31 je SHORT $LN23@deviceObje ; 336 : { ; 337 : object->offset = DIJOFS_POV(data->povCount); 0032f 48 8b 45 08 mov rax, QWORD PTR data$[rbp] 00333 48 63 40 20 movsxd rax, DWORD PTR [rax+32] 00337 48 8d 04 85 20 00 00 00 lea rax, QWORD PTR [rax*4+32] 0033f 48 8b 4d 28 mov rcx, QWORD PTR object$[rbp] 00343 89 01 mov DWORD PTR [rcx], eax ; 338 : object->type = _GLFW_TYPE_POV; 00345 48 8b 45 28 mov rax, QWORD PTR object$[rbp] 00349 c7 40 04 03 00 00 00 mov DWORD PTR [rax+4], 3 ; 339 : data->povCount++; 00350 48 8b 45 08 mov rax, QWORD PTR data$[rbp] 00354 8b 40 20 mov eax, DWORD PTR [rax+32] 00357 ff c0 inc eax 00359 48 8b 4d 08 mov rcx, QWORD PTR data$[rbp] 0035d 89 41 20 mov DWORD PTR [rcx+32], eax $LN23@deviceObje: $LN22@deviceObje: $LN3@deviceObje: ; 340 : } ; 341 : ; 342 : data->objectCount++; 00360 48 8b 45 08 mov rax, QWORD PTR data$[rbp] 00364 8b 40 10 mov eax, DWORD PTR [rax+16] 00367 ff c0 inc eax 00369 48 8b 4d 08 mov rcx, QWORD PTR data$[rbp] 0036d 89 41 10 mov DWORD PTR [rcx+16], eax ; 343 : return DIENUM_CONTINUE; 00370 b8 01 00 00 00 mov eax, 1 $LN1@deviceObje: ; 344 : } 00375 48 8b f8 mov rdi, rax 00378 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32] 0037c 48 8d 15 00 00 00 00 lea rdx, OFFSET FLAT:deviceObjectCallback$rtcFrameData 00383 e8 00 00 00 00 call _RTC_CheckStackVars 00388 48 8b c7 mov rax, rdi 0038b 48 8b 8d 28 01 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp] 00392 48 33 cd xor rcx, rbp 00395 e8 00 00 00 00 call __security_check_cookie 0039a 48 8d a5 38 01 00 00 lea rsp, QWORD PTR [rbp+312] 003a1 5f pop rdi 003a2 5d pop rbp 003a3 c3 ret 0 deviceObjectCallback ENDP _TEXT ENDS ; Function compile flags: /Odtp /RTCsu /ZI ; File D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpGraphic\code\glfw\win32_joystick.c ; COMDAT closeJoystick _TEXT SEGMENT js$ = 224 closeJoystick PROC ; COMDAT ; 260 : { 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx 00005 55 push rbp 00006 57 push rdi 00007 48 81 ec e8 00 00 00 sub rsp, 232 ; 000000e8H 0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32] 00013 48 8d 0d 00 00 00 00 lea rcx, OFFSET FLAT:__BD81096D_win32_joystick@c 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode ; 261 : _glfwInputJoystick(js, GLFW_DISCONNECTED); 0001f ba 02 00 04 00 mov edx, 262146 ; 00040002H 00024 48 8b 8d e0 00 00 00 mov rcx, QWORD PTR js$[rbp] 0002b e8 00 00 00 00 call _glfwInputJoystick ; 262 : ; 263 : if (js->win32.device) 00030 48 8b 85 e0 00 00 00 mov rax, QWORD PTR js$[rbp] 00037 48 83 b8 00 01 00 00 00 cmp QWORD PTR [rax+256], 0 0003f 74 44 je SHORT $LN2@closeJoyst ; 264 : { ; 265 : IDirectInputDevice8_Unacquire(js->win32.device); 00041 48 8b 85 e0 00 00 00 mov rax, QWORD PTR js$[rbp] 00048 48 8b 80 00 01 00 00 mov rax, QWORD PTR [rax+256] 0004f 48 8b 00 mov rax, QWORD PTR [rax] 00052 48 8b 8d e0 00 00 00 mov rcx, QWORD PTR js$[rbp] 00059 48 8b 89 00 01 00 00 mov rcx, QWORD PTR [rcx+256] 00060 ff 50 40 call QWORD PTR [rax+64] ; 266 : IDirectInputDevice8_Release(js->win32.device); 00063 48 8b 85 e0 00 00 00 mov rax, QWORD PTR js$[rbp] 0006a 48 8b 80 00 01 00 00 mov rax, QWORD PTR [rax+256] 00071 48 8b 00 mov rax, QWORD PTR [rax] 00074 48 8b 8d e0 00 00 00 mov rcx, QWORD PTR js$[rbp] 0007b 48 8b 89 00 01 00 00 mov rcx, QWORD PTR [rcx+256] 00082 ff 50 10 call QWORD PTR [rax+16] $LN2@closeJoyst: ; 267 : } ; 268 : ; 269 : _glfw_free(js->win32.objects); 00085 48 8b 85 e0 00 00 00 mov rax, QWORD PTR js$[rbp] 0008c 48 8b 88 f0 00 00 00 mov rcx, QWORD PTR [rax+240] 00093 e8 00 00 00 00 call _glfw_free ; 270 : _glfwFreeJoystick(js); 00098 48 8b 8d e0 00 00 00 mov rcx, QWORD PTR js$[rbp] 0009f e8 00 00 00 00 call _glfwFreeJoystick ; 271 : } 000a4 48 8d a5 c8 00 00 00 lea rsp, QWORD PTR [rbp+200] 000ab 5f pop rdi 000ac 5d pop rbp 000ad c3 ret 0 closeJoystick ENDP _TEXT ENDS ; Function compile flags: /Odtp /RTCsu /ZI ; File D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpGraphic\code\glfw\win32_joystick.c ; COMDAT supportsXInput _TEXT SEGMENT i$ = 4 count$ = 36 ridl$ = 72 result$ = 100 rdi$7 = 136 name$8 = 208 size$9 = 484 $T10 = 904 __$ArrayPad$ = 920 guid$ = 960 supportsXInput PROC ; COMDAT ; 196 : { 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx 00005 55 push rbp 00006 57 push rdi 00007 48 81 ec c8 03 00 00 sub rsp, 968 ; 000003c8H 0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32] 00013 48 8d 7c 24 20 lea rdi, QWORD PTR [rsp+32] 00018 b9 8a 00 00 00 mov ecx, 138 ; 0000008aH 0001d b8 cc cc cc cc mov eax, -858993460 ; ccccccccH 00022 f3 ab rep stosd 00024 48 8b 8c 24 e8 03 00 00 mov rcx, QWORD PTR [rsp+1000] 0002c 48 8b 05 00 00 00 00 mov rax, QWORD PTR __security_cookie 00033 48 33 c5 xor rax, rbp 00036 48 89 85 98 03 00 00 mov QWORD PTR __$ArrayPad$[rbp], rax 0003d 48 8d 0d 00 00 00 00 lea rcx, OFFSET FLAT:__BD81096D_win32_joystick@c 00044 e8 00 00 00 00 call __CheckForDebuggerJustMyCode ; 197 : UINT i, count = 0; 00049 c7 45 24 00 00 00 00 mov DWORD PTR count$[rbp], 0 ; 198 : RAWINPUTDEVICELIST* ridl; ; 199 : GLFWbool result = GLFW_FALSE; 00050 c7 45 64 00 00 00 00 mov DWORD PTR result$[rbp], 0 ; 200 : ; 201 : if (GetRawInputDeviceList(NULL, &count, sizeof(RAWINPUTDEVICELIST)) != 0) 00057 41 b8 10 00 00 00 mov r8d, 16 0005d 48 8d 55 24 lea rdx, QWORD PTR count$[rbp] 00061 33 c9 xor ecx, ecx 00063 ff 15 00 00 00 00 call QWORD PTR __imp_GetRawInputDeviceList 00069 85 c0 test eax, eax 0006b 74 07 je SHORT $LN5@supportsXI ; 202 : return GLFW_FALSE; 0006d 33 c0 xor eax, eax 0006f e9 ad 01 00 00 jmp $LN1@supportsXI $LN5@supportsXI: ; 203 : ; 204 : ridl = _glfw_calloc(count, sizeof(RAWINPUTDEVICELIST)); 00074 8b 45 24 mov eax, DWORD PTR count$[rbp] 00077 ba 10 00 00 00 mov edx, 16 0007c 8b c8 mov ecx, eax 0007e e8 00 00 00 00 call _glfw_calloc 00083 48 89 45 48 mov QWORD PTR ridl$[rbp], rax ; 205 : ; 206 : if (GetRawInputDeviceList(ridl, &count, sizeof(RAWINPUTDEVICELIST)) == (UINT) -1) 00087 41 b8 10 00 00 00 mov r8d, 16 0008d 48 8d 55 24 lea rdx, QWORD PTR count$[rbp] 00091 48 8b 4d 48 mov rcx, QWORD PTR ridl$[rbp] 00095 ff 15 00 00 00 00 call QWORD PTR __imp_GetRawInputDeviceList 0009b 83 f8 ff cmp eax, -1 ; ffffffffH 0009e 75 10 jne SHORT $LN6@supportsXI ; 207 : { ; 208 : _glfw_free(ridl); 000a0 48 8b 4d 48 mov rcx, QWORD PTR ridl$[rbp] 000a4 e8 00 00 00 00 call _glfw_free ; 209 : return GLFW_FALSE; 000a9 33 c0 xor eax, eax 000ab e9 71 01 00 00 jmp $LN1@supportsXI $LN6@supportsXI: ; 210 : } ; 211 : ; 212 : for (i = 0; i < count; i++) 000b0 c7 45 04 00 00 00 00 mov DWORD PTR i$[rbp], 0 000b7 eb 08 jmp SHORT $LN4@supportsXI $LN2@supportsXI: 000b9 8b 45 04 mov eax, DWORD PTR i$[rbp] 000bc ff c0 inc eax 000be 89 45 04 mov DWORD PTR i$[rbp], eax $LN4@supportsXI: 000c1 8b 45 24 mov eax, DWORD PTR count$[rbp] 000c4 39 45 04 cmp DWORD PTR i$[rbp], eax 000c7 0f 83 48 01 00 00 jae $LN3@supportsXI ; 213 : { ; 214 : RID_DEVICE_INFO rdi; ; 215 : char name[256]; ; 216 : UINT size; ; 217 : ; 218 : if (ridl[i].dwType != RIM_TYPEHID) 000cd 8b 45 04 mov eax, DWORD PTR i$[rbp] 000d0 48 6b c0 10 imul rax, rax, 16 000d4 48 8b 4d 48 mov rcx, QWORD PTR ridl$[rbp] 000d8 83 7c 01 08 02 cmp DWORD PTR [rcx+rax+8], 2 000dd 74 02 je SHORT $LN7@supportsXI ; 219 : continue; 000df eb d8 jmp SHORT $LN2@supportsXI $LN7@supportsXI: ; 220 : ; 221 : ZeroMemory(&rdi, sizeof(rdi)); 000e1 41 b8 20 00 00 00 mov r8d, 32 ; 00000020H 000e7 33 d2 xor edx, edx 000e9 48 8d 8d 88 00 00 00 lea rcx, QWORD PTR rdi$7[rbp] 000f0 e8 00 00 00 00 call memset ; 222 : rdi.cbSize = sizeof(rdi); 000f5 c7 85 88 00 00 00 20 00 00 00 mov DWORD PTR rdi$7[rbp], 32 ; 00000020H ; 223 : size = sizeof(rdi); 000ff c7 85 e4 01 00 00 20 00 00 00 mov DWORD PTR size$9[rbp], 32 ; 00000020H ; 224 : ; 225 : if ((INT) GetRawInputDeviceInfoA(ridl[i].hDevice, ; 226 : RIDI_DEVICEINFO, ; 227 : &rdi, &size) == -1) 00109 8b 45 04 mov eax, DWORD PTR i$[rbp] 0010c 48 6b c0 10 imul rax, rax, 16 00110 4c 8d 8d e4 01 00 00 lea r9, QWORD PTR size$9[rbp] 00117 4c 8d 85 88 00 00 00 lea r8, QWORD PTR rdi$7[rbp] 0011e ba 0b 00 00 20 mov edx, 536870923 ; 2000000bH 00123 48 8b 4d 48 mov rcx, QWORD PTR ridl$[rbp] 00127 48 8b 0c 01 mov rcx, QWORD PTR [rcx+rax] 0012b ff 15 00 00 00 00 call QWORD PTR __imp_GetRawInputDeviceInfoA 00131 83 f8 ff cmp eax, -1 00134 75 02 jne SHORT $LN8@supportsXI ; 228 : { ; 229 : continue; 00136 eb 81 jmp SHORT $LN2@supportsXI $LN8@supportsXI: ; 230 : } ; 231 : ; 232 : if (MAKELONG(rdi.hid.dwVendorId, rdi.hid.dwProductId) != (LONG) guid->Data1) 00138 8b 85 90 00 00 00 mov eax, DWORD PTR rdi$7[rbp+8] 0013e 48 25 ff ff 00 00 and rax, 65535 ; 0000ffffH 00144 0f b7 c0 movzx eax, ax 00147 8b 8d 94 00 00 00 mov ecx, DWORD PTR rdi$7[rbp+12] 0014d 48 81 e1 ff ff 00 00 and rcx, 65535 ; 0000ffffH 00154 0f b7 c9 movzx ecx, cx 00157 c1 e1 10 shl ecx, 16 0015a 0b c1 or eax, ecx 0015c 48 8b 8d c0 03 00 00 mov rcx, QWORD PTR guid$[rbp] 00163 3b 01 cmp eax, DWORD PTR [rcx] 00165 74 05 je SHORT $LN9@supportsXI ; 233 : continue; 00167 e9 4d ff ff ff jmp $LN2@supportsXI $LN9@supportsXI: ; 234 : ; 235 : memset(name, 0, sizeof(name)); 0016c 41 b8 00 01 00 00 mov r8d, 256 ; 00000100H 00172 33 d2 xor edx, edx 00174 48 8d 8d d0 00 00 00 lea rcx, QWORD PTR name$8[rbp] 0017b e8 00 00 00 00 call memset ; 236 : size = sizeof(name); 00180 c7 85 e4 01 00 00 00 01 00 00 mov DWORD PTR size$9[rbp], 256 ; 00000100H ; 237 : ; 238 : if ((INT) GetRawInputDeviceInfoA(ridl[i].hDevice, ; 239 : RIDI_DEVICENAME, ; 240 : name, &size) == -1) 0018a 8b 45 04 mov eax, DWORD PTR i$[rbp] 0018d 48 6b c0 10 imul rax, rax, 16 00191 4c 8d 8d e4 01 00 00 lea r9, QWORD PTR size$9[rbp] 00198 4c 8d 85 d0 00 00 00 lea r8, QWORD PTR name$8[rbp] 0019f ba 07 00 00 20 mov edx, 536870919 ; 20000007H 001a4 48 8b 4d 48 mov rcx, QWORD PTR ridl$[rbp] 001a8 48 8b 0c 01 mov rcx, QWORD PTR [rcx+rax] 001ac ff 15 00 00 00 00 call QWORD PTR __imp_GetRawInputDeviceInfoA 001b2 83 f8 ff cmp eax, -1 001b5 75 02 jne SHORT $LN10@supportsXI ; 241 : { ; 242 : break; 001b7 eb 5c jmp SHORT $LN3@supportsXI $LN10@supportsXI: ; 243 : } ; 244 : ; 245 : name[sizeof(name) - 1] = '\0'; 001b9 b8 01 00 00 00 mov eax, 1 001be 48 69 c0 ff 00 00 00 imul rax, rax, 255 ; 000000ffH 001c5 48 89 85 88 03 00 00 mov QWORD PTR $T10[rbp], rax 001cc 48 81 bd 88 03 00 00 00 01 00 00 cmp QWORD PTR $T10[rbp], 256 ; 00000100H 001d7 73 02 jae SHORT $LN13@supportsXI 001d9 eb 05 jmp SHORT $LN14@supportsXI $LN13@supportsXI: 001db e8 00 00 00 00 call __report_rangecheckfailure $LN14@supportsXI: 001e0 48 8b 85 88 03 00 00 mov rax, QWORD PTR $T10[rbp] 001e7 c6 84 05 d0 00 00 00 00 mov BYTE PTR name$8[rbp+rax], 0 ; 246 : if (strstr(name, "IG_")) 001ef 48 8d 15 00 00 00 00 lea rdx, OFFSET FLAT:??_C@_03HAFBONIK@IG_@ 001f6 48 8d 8d d0 00 00 00 lea rcx, QWORD PTR name$8[rbp] 001fd e8 00 00 00 00 call strstr 00202 48 85 c0 test rax, rax 00205 74 09 je SHORT $LN11@supportsXI ; 247 : { ; 248 : result = GLFW_TRUE; 00207 c7 45 64 01 00 00 00 mov DWORD PTR result$[rbp], 1 ; 249 : break; 0020e eb 05 jmp SHORT $LN3@supportsXI $LN11@supportsXI: ; 250 : } ; 251 : } 00210 e9 a4 fe ff ff jmp $LN2@supportsXI $LN3@supportsXI: ; 252 : ; 253 : _glfw_free(ridl); 00215 48 8b 4d 48 mov rcx, QWORD PTR ridl$[rbp] 00219 e8 00 00 00 00 call _glfw_free ; 254 : return result; 0021e 8b 45 64 mov eax, DWORD PTR result$[rbp] $LN1@supportsXI: $LN12@supportsXI: ; 255 : } 00221 48 8b f8 mov rdi, rax 00224 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32] 00228 48 8d 15 00 00 00 00 lea rdx, OFFSET FLAT:supportsXInput$rtcFrameData 0022f e8 00 00 00 00 call _RTC_CheckStackVars 00234 48 8b c7 mov rax, rdi 00237 48 8b 8d 98 03 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp] 0023e 48 33 cd xor rcx, rbp 00241 e8 00 00 00 00 call __security_check_cookie 00246 48 8d a5 a8 03 00 00 lea rsp, QWORD PTR [rbp+936] 0024d 5f pop rdi 0024e 5d pop rbp 0024f c3 ret 0 supportsXInput ENDP _TEXT ENDS ; Function compile flags: /Odtp /RTCsu /ZI ; File D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpGraphic\code\glfw\win32_joystick.c ; COMDAT compareJoystickObjects _TEXT SEGMENT fo$ = 8 so$ = 40 first$ = 288 second$ = 296 compareJoystickObjects PROC ; COMDAT ; 182 : { 00000 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx 00005 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx 0000a 55 push rbp 0000b 57 push rdi 0000c 48 81 ec 28 01 00 00 sub rsp, 296 ; 00000128H 00013 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32] 00018 48 8d 0d 00 00 00 00 lea rcx, OFFSET FLAT:__BD81096D_win32_joystick@c 0001f e8 00 00 00 00 call __CheckForDebuggerJustMyCode ; 183 : const _GLFWjoyobjectWin32* fo = first; 00024 48 8b 85 20 01 00 00 mov rax, QWORD PTR first$[rbp] 0002b 48 89 45 08 mov QWORD PTR fo$[rbp], rax ; 184 : const _GLFWjoyobjectWin32* so = second; 0002f 48 8b 85 28 01 00 00 mov rax, QWORD PTR second$[rbp] 00036 48 89 45 28 mov QWORD PTR so$[rbp], rax ; 185 : ; 186 : if (fo->type != so->type) 0003a 48 8b 45 08 mov rax, QWORD PTR fo$[rbp] 0003e 48 8b 4d 28 mov rcx, QWORD PTR so$[rbp] 00042 8b 49 04 mov ecx, DWORD PTR [rcx+4] 00045 39 48 04 cmp DWORD PTR [rax+4], ecx 00048 74 12 je SHORT $LN2@compareJoy ; 187 : return fo->type - so->type; 0004a 48 8b 45 08 mov rax, QWORD PTR fo$[rbp] 0004e 48 8b 4d 28 mov rcx, QWORD PTR so$[rbp] 00052 8b 49 04 mov ecx, DWORD PTR [rcx+4] 00055 8b 40 04 mov eax, DWORD PTR [rax+4] 00058 2b c1 sub eax, ecx 0005a eb 0e jmp SHORT $LN1@compareJoy $LN2@compareJoy: ; 188 : ; 189 : return fo->offset - so->offset; 0005c 48 8b 45 08 mov rax, QWORD PTR fo$[rbp] 00060 48 8b 4d 28 mov rcx, QWORD PTR so$[rbp] 00064 8b 09 mov ecx, DWORD PTR [rcx] 00066 8b 00 mov eax, DWORD PTR [rax] 00068 2b c1 sub eax, ecx $LN1@compareJoy: ; 190 : } 0006a 48 8d a5 08 01 00 00 lea rsp, QWORD PTR [rbp+264] 00071 5f pop rdi 00072 5d pop rbp 00073 c3 ret 0 compareJoystickObjects ENDP _TEXT ENDS ; Function compile flags: /Odtp /RTCsu /ZI ; File D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpGraphic\code\glfw\win32_joystick.c ; COMDAT getDeviceDescription _TEXT SEGMENT tv66 = 192 xic$ = 240 getDeviceDescription PROC ; COMDAT ; 152 : { 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx 00005 55 push rbp 00006 57 push rdi 00007 48 81 ec f8 00 00 00 sub rsp, 248 ; 000000f8H 0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32] 00013 48 8d 0d 00 00 00 00 lea rcx, OFFSET FLAT:__BD81096D_win32_joystick@c 0001a e8 00 00 00 00 call __CheckForDebuggerJustMyCode ; 153 : switch (xic->SubType) 0001f 48 8b 85 f0 00 00 00 mov rax, QWORD PTR xic$[rbp] 00026 0f b6 40 01 movzx eax, BYTE PTR [rax+1] 0002a 89 85 c0 00 00 00 mov DWORD PTR tv66[rbp], eax 00030 8b 85 c0 00 00 00 mov eax, DWORD PTR tv66[rbp] 00036 ff c8 dec eax 00038 89 85 c0 00 00 00 mov DWORD PTR tv66[rbp], eax 0003e 83 bd c0 00 00 00 07 cmp DWORD PTR tv66[rbp], 7 00045 77 76 ja SHORT $LN2@getDeviceD 00047 48 63 85 c0 00 00 00 movsxd rax, DWORD PTR tv66[rbp] 0004e 48 8d 0d 00 00 00 00 lea rcx, OFFSET FLAT:__ImageBase 00055 8b 84 81 00 00 00 00 mov eax, DWORD PTR $LN14@getDeviceD[rcx+rax*4] 0005c 48 03 c1 add rax, rcx 0005f ff e0 jmp rax $LN4@getDeviceD: ; 154 : { ; 155 : case XINPUT_DEVSUBTYPE_WHEEL: ; 156 : return "XInput Wheel"; 00061 48 8d 05 00 00 00 00 lea rax, OFFSET FLAT:??_C@_0N@JENFOGFI@XInput?5Wheel@ 00068 eb 5a jmp SHORT $LN1@getDeviceD $LN5@getDeviceD: ; 157 : case XINPUT_DEVSUBTYPE_ARCADE_STICK: ; 158 : return "XInput Arcade Stick"; 0006a 48 8d 05 00 00 00 00 lea rax, OFFSET FLAT:??_C@_0BE@FABDLJKH@XInput?5Arcade?5Stick@ 00071 eb 51 jmp SHORT $LN1@getDeviceD $LN6@getDeviceD: ; 159 : case XINPUT_DEVSUBTYPE_FLIGHT_STICK: ; 160 : return "XInput Flight Stick"; 00073 48 8d 05 00 00 00 00 lea rax, OFFSET FLAT:??_C@_0BE@HBNNGLHP@XInput?5Flight?5Stick@ 0007a eb 48 jmp SHORT $LN1@getDeviceD $LN7@getDeviceD: ; 161 : case XINPUT_DEVSUBTYPE_DANCE_PAD: ; 162 : return "XInput Dance Pad"; 0007c 48 8d 05 00 00 00 00 lea rax, OFFSET FLAT:??_C@_0BB@JDDMDGFO@XInput?5Dance?5Pad@ 00083 eb 3f jmp SHORT $LN1@getDeviceD $LN8@getDeviceD: ; 163 : case XINPUT_DEVSUBTYPE_GUITAR: ; 164 : return "XInput Guitar"; 00085 48 8d 05 00 00 00 00 lea rax, OFFSET FLAT:??_C@_0O@IFDGNEHH@XInput?5Guitar@ 0008c eb 36 jmp SHORT $LN1@getDeviceD $LN9@getDeviceD: ; 165 : case XINPUT_DEVSUBTYPE_DRUM_KIT: ; 166 : return "XInput Drum Kit"; 0008e 48 8d 05 00 00 00 00 lea rax, OFFSET FLAT:??_C@_0BA@LCMKGGHA@XInput?5Drum?5Kit@ 00095 eb 2d jmp SHORT $LN1@getDeviceD $LN10@getDeviceD: ; 167 : case XINPUT_DEVSUBTYPE_GAMEPAD: ; 168 : { ; 169 : if (xic->Flags & XINPUT_CAPS_WIRELESS) 00097 48 8b 85 f0 00 00 00 mov rax, QWORD PTR xic$[rbp] 0009e 0f b7 40 02 movzx eax, WORD PTR [rax+2] 000a2 83 e0 02 and eax, 2 000a5 85 c0 test eax, eax 000a7 74 0b je SHORT $LN11@getDeviceD ; 170 : return "Wireless Xbox Controller"; 000a9 48 8d 05 00 00 00 00 lea rax, OFFSET FLAT:??_C@_0BJ@IIGAEGGE@Wireless?5Xbox?5Controller@ 000b0 eb 12 jmp SHORT $LN1@getDeviceD 000b2 eb 09 jmp SHORT $LN12@getDeviceD $LN11@getDeviceD: ; 171 : else ; 172 : return "Xbox Controller"; 000b4 48 8d 05 00 00 00 00 lea rax, OFFSET FLAT:??_C@_0BA@EPLGABLH@Xbox?5Controller@ 000bb eb 07 jmp SHORT $LN1@getDeviceD $LN12@getDeviceD: $LN2@getDeviceD: ; 173 : } ; 174 : } ; 175 : ; 176 : return "Unknown XInput Device"; 000bd 48 8d 05 00 00 00 00 lea rax, OFFSET FLAT:??_C@_0BG@DGJLFNBN@Unknown?5XInput?5Device@ $LN1@getDeviceD: ; 177 : } 000c4 48 8d a5 d8 00 00 00 lea rsp, QWORD PTR [rbp+216] 000cb 5f pop rdi 000cc 5d pop rbp 000cd c3 ret 0 000ce 66 90 npad 2 $LN14@getDeviceD: 000d0 00 00 00 00 DD $LN10@getDeviceD 000d4 00 00 00 00 DD $LN4@getDeviceD 000d8 00 00 00 00 DD $LN5@getDeviceD 000dc 00 00 00 00 DD $LN6@getDeviceD 000e0 00 00 00 00 DD $LN7@getDeviceD 000e4 00 00 00 00 DD $LN8@getDeviceD 000e8 00 00 00 00 DD $LN2@getDeviceD 000ec 00 00 00 00 DD $LN9@getDeviceD getDeviceDescription ENDP _TEXT ENDS ; Function compile flags: /Odtp /RTCsu /ZI ; File C:\Program Files (x86)\Windows Kits\10\Include\10.0.22621.0\ucrt\stdio.h ; COMDAT sprintf _TEXT SEGMENT _Result$ = 4 _ArgList$ = 40 __$ArrayPad$ = 248 _Buffer$ = 288 _Format$ = 296 sprintf PROC ; COMDAT ; 1771 : { $LN3: 00000 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx 00005 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx 0000a 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8 0000f 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9 00014 55 push rbp 00015 57 push rdi 00016 48 81 ec 28 01 00 00 sub rsp, 296 ; 00000128H 0001d 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32] 00022 48 8d 7c 24 20 lea rdi, QWORD PTR [rsp+32] 00027 b9 12 00 00 00 mov ecx, 18 0002c b8 cc cc cc cc mov eax, -858993460 ; ccccccccH 00031 f3 ab rep stosd 00033 48 8b 8c 24 48 01 00 00 mov rcx, QWORD PTR [rsp+328] 0003b 48 8b 05 00 00 00 00 mov rax, QWORD PTR __security_cookie 00042 48 33 c5 xor rax, rbp 00045 48 89 85 f8 00 00 00 mov QWORD PTR __$ArrayPad$[rbp], rax 0004c 48 8d 0d 00 00 00 00 lea rcx, OFFSET FLAT:__C1EC35D3_stdio@h 00053 e8 00 00 00 00 call __CheckForDebuggerJustMyCode ; 1772 : int _Result; ; 1773 : va_list _ArgList; ; 1774 : __crt_va_start(_ArgList, _Format); 00058 48 8d 85 30 01 00 00 lea rax, QWORD PTR _Format$[rbp+8] 0005f 48 89 45 28 mov QWORD PTR _ArgList$[rbp], rax ; 1775 : ; 1776 : _Result = _vsprintf_l(_Buffer, _Format, NULL, _ArgList); 00063 4c 8b 4d 28 mov r9, QWORD PTR _ArgList$[rbp] 00067 45 33 c0 xor r8d, r8d 0006a 48 8b 95 28 01 00 00 mov rdx, QWORD PTR _Format$[rbp] 00071 48 8b 8d 20 01 00 00 mov rcx, QWORD PTR _Buffer$[rbp] 00078 e8 00 00 00 00 call _vsprintf_l 0007d 89 45 04 mov DWORD PTR _Result$[rbp], eax ; 1777 : ; 1778 : __crt_va_end(_ArgList); 00080 48 c7 45 28 00 00 00 00 mov QWORD PTR _ArgList$[rbp], 0 ; 1779 : return _Result; 00088 8b 45 04 mov eax, DWORD PTR _Result$[rbp] ; 1780 : } 0008b 8b f8 mov edi, eax 0008d 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32] 00091 48 8d 15 00 00 00 00 lea rdx, OFFSET FLAT:sprintf$rtcFrameData 00098 e8 00 00 00 00 call _RTC_CheckStackVars 0009d 8b c7 mov eax, edi 0009f 48 8b 8d f8 00 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp] 000a6 48 33 cd xor rcx, rbp 000a9 e8 00 00 00 00 call __security_check_cookie 000ae 48 8d a5 08 01 00 00 lea rsp, QWORD PTR [rbp+264] 000b5 5f pop rdi 000b6 5d pop rbp 000b7 c3 ret 0 sprintf ENDP _TEXT ENDS ; Function compile flags: /Odtp /RTCsu /ZI ; File C:\Program Files (x86)\Windows Kits\10\Include\10.0.22621.0\ucrt\stdio.h ; COMDAT _vsprintf_l _TEXT SEGMENT _Buffer$ = 224 _Format$ = 232 _Locale$ = 240 _ArgList$ = 248 _vsprintf_l PROC ; COMDAT ; 1458 : { $LN3: 00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9 00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8 0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx 0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx 00014 55 push rbp 00015 57 push rdi 00016 48 81 ec f8 00 00 00 sub rsp, 248 ; 000000f8H 0001d 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48] 00022 48 8d 0d 00 00 00 00 lea rcx, OFFSET FLAT:__C1EC35D3_stdio@h 00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode ; 1459 : return _vsnprintf_l(_Buffer, (size_t)-1, _Format, _Locale, _ArgList); 0002e 48 8b 85 f8 00 00 00 mov rax, QWORD PTR _ArgList$[rbp] 00035 48 89 44 24 20 mov QWORD PTR [rsp+32], rax 0003a 4c 8b 8d f0 00 00 00 mov r9, QWORD PTR _Locale$[rbp] 00041 4c 8b 85 e8 00 00 00 mov r8, QWORD PTR _Format$[rbp] 00048 48 c7 c2 ff ff ff ff mov rdx, -1 0004f 48 8b 8d e0 00 00 00 mov rcx, QWORD PTR _Buffer$[rbp] 00056 e8 00 00 00 00 call _vsnprintf_l ; 1460 : } 0005b 48 8d a5 c8 00 00 00 lea rsp, QWORD PTR [rbp+200] 00062 5f pop rdi 00063 5d pop rbp 00064 c3 ret 0 _vsprintf_l ENDP _TEXT ENDS ; Function compile flags: /Odtp /RTCsu /ZI ; File C:\Program Files (x86)\Windows Kits\10\Include\10.0.22621.0\ucrt\stdio.h ; COMDAT _vsnprintf_l _TEXT SEGMENT _Result$ = 4 tv74 = 212 _Buffer$ = 256 _BufferCount$ = 264 _Format$ = 272 _Locale$ = 280 _ArgList$ = 288 _vsnprintf_l PROC ; COMDAT ; 1391 : { $LN5: 00000 4c 89 4c 24 20 mov QWORD PTR [rsp+32], r9 00005 4c 89 44 24 18 mov QWORD PTR [rsp+24], r8 0000a 48 89 54 24 10 mov QWORD PTR [rsp+16], rdx 0000f 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx 00014 55 push rbp 00015 57 push rdi 00016 48 81 ec 18 01 00 00 sub rsp, 280 ; 00000118H 0001d 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48] 00022 48 8d 0d 00 00 00 00 lea rcx, OFFSET FLAT:__C1EC35D3_stdio@h 00029 e8 00 00 00 00 call __CheckForDebuggerJustMyCode ; 1392 : int const _Result = __stdio_common_vsprintf( 0002e e8 00 00 00 00 call __local_stdio_printf_options 00033 48 8b 00 mov rax, QWORD PTR [rax] 00036 48 83 c8 01 or rax, 1 0003a 48 8b 8d 20 01 00 00 mov rcx, QWORD PTR _ArgList$[rbp] 00041 48 89 4c 24 28 mov QWORD PTR [rsp+40], rcx 00046 48 8b 8d 18 01 00 00 mov rcx, QWORD PTR _Locale$[rbp] 0004d 48 89 4c 24 20 mov QWORD PTR [rsp+32], rcx 00052 4c 8b 8d 10 01 00 00 mov r9, QWORD PTR _Format$[rbp] 00059 4c 8b 85 08 01 00 00 mov r8, QWORD PTR _BufferCount$[rbp] 00060 48 8b 95 00 01 00 00 mov rdx, QWORD PTR _Buffer$[rbp] 00067 48 8b c8 mov rcx, rax 0006a ff 15 00 00 00 00 call QWORD PTR __imp___stdio_common_vsprintf 00070 89 45 04 mov DWORD PTR _Result$[rbp], eax ; 1393 : _CRT_INTERNAL_LOCAL_PRINTF_OPTIONS | _CRT_INTERNAL_PRINTF_LEGACY_VSPRINTF_NULL_TERMINATION, ; 1394 : _Buffer, _BufferCount, _Format, _Locale, _ArgList); ; 1395 : ; 1396 : return _Result < 0 ? -1 : _Result; 00073 83 7d 04 00 cmp DWORD PTR _Result$[rbp], 0 00077 7d 0c jge SHORT $LN3@vsnprintf_ 00079 c7 85 d4 00 00 00 ff ff ff ff mov DWORD PTR tv74[rbp], -1 00083 eb 09 jmp SHORT $LN4@vsnprintf_ $LN3@vsnprintf_: 00085 8b 45 04 mov eax, DWORD PTR _Result$[rbp] 00088 89 85 d4 00 00 00 mov DWORD PTR tv74[rbp], eax $LN4@vsnprintf_: 0008e 8b 85 d4 00 00 00 mov eax, DWORD PTR tv74[rbp] ; 1397 : } 00094 48 8d a5 e8 00 00 00 lea rsp, QWORD PTR [rbp+232] 0009b 5f pop rdi 0009c 5d pop rbp 0009d c3 ret 0 _vsnprintf_l ENDP _TEXT ENDS ; Function compile flags: /Odtp /RTCsu /ZI ; File C:\Program Files (x86)\Windows Kits\10\Include\10.0.22621.0\ucrt\corecrt_stdio_config.h ; COMDAT __local_stdio_printf_options _TEXT SEGMENT __local_stdio_printf_options PROC ; COMDAT ; 90 : { $LN3: 00000 40 55 push rbp 00002 57 push rdi 00003 48 81 ec e8 00 00 00 sub rsp, 232 ; 000000e8H 0000a 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32] 0000f 48 8d 0d 00 00 00 00 lea rcx, OFFSET FLAT:__44420885_corecrt_stdio_config@h 00016 e8 00 00 00 00 call __CheckForDebuggerJustMyCode ; 91 : static unsigned __int64 _OptionsStorage; ; 92 : return &_OptionsStorage; 0001b 48 8d 05 00 00 00 00 lea rax, OFFSET FLAT:?_OptionsStorage@?1??__local_stdio_printf_options@@9@9 ; `__local_stdio_printf_options'::`2'::_OptionsStorage ; 93 : } 00022 48 8d a5 c8 00 00 00 lea rsp, QWORD PTR [rbp+200] 00029 5f pop rdi 0002a 5d pop rbp 0002b c3 ret 0 __local_stdio_printf_options ENDP _TEXT ENDS ; Function compile flags: /Odtp /RTCsu /ZI ; File D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpGraphic\code\glfw\win32_joystick.c ; COMDAT _glfwDetectJoystickDisconnectionWin32 _TEXT SEGMENT jid$ = 4 js$1 = 40 _glfwDetectJoystickDisconnectionWin32 PROC ; COMDAT ; 559 : { $LN7: 00000 40 55 push rbp 00002 57 push rdi 00003 48 81 ec 28 01 00 00 sub rsp, 296 ; 00000128H 0000a 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32] 0000f 48 8d 0d 00 00 00 00 lea rcx, OFFSET FLAT:__BD81096D_win32_joystick@c 00016 e8 00 00 00 00 call __CheckForDebuggerJustMyCode ; 560 : int jid; ; 561 : ; 562 : for (jid = 0; jid <= GLFW_JOYSTICK_LAST; jid++) 0001b c7 45 04 00 00 00 00 mov DWORD PTR jid$[rbp], 0 00022 eb 08 jmp SHORT $LN4@glfwDetect $LN2@glfwDetect: 00024 8b 45 04 mov eax, DWORD PTR jid$[rbp] 00027 ff c0 inc eax 00029 89 45 04 mov DWORD PTR jid$[rbp], eax $LN4@glfwDetect: 0002c 83 7d 04 0f cmp DWORD PTR jid$[rbp], 15 00030 7f 33 jg SHORT $LN3@glfwDetect ; 563 : { ; 564 : _GLFWjoystick* js = _glfw.joysticks + jid; 00032 48 63 45 04 movsxd rax, DWORD PTR jid$[rbp] 00036 48 69 c0 20 01 00 00 imul rax, rax, 288 ; 00000120H 0003d 48 8d 0d 90 07 00 00 lea rcx, OFFSET FLAT:_glfw+1936 00044 48 03 c8 add rcx, rax 00047 48 8b c1 mov rax, rcx 0004a 48 89 45 28 mov QWORD PTR js$1[rbp], rax ; 565 : if (js->connected) 0004e 48 8b 45 28 mov rax, QWORD PTR js$1[rbp] 00052 83 78 04 00 cmp DWORD PTR [rax+4], 0 00056 74 0b je SHORT $LN5@glfwDetect ; 566 : _glfwPollJoystickWin32(js, _GLFW_POLL_PRESENCE); 00058 33 d2 xor edx, edx 0005a 48 8b 4d 28 mov rcx, QWORD PTR js$1[rbp] 0005e e8 00 00 00 00 call _glfwPollJoystickWin32 $LN5@glfwDetect: ; 567 : } 00063 eb bf jmp SHORT $LN2@glfwDetect $LN3@glfwDetect: ; 568 : } 00065 48 8d a5 08 01 00 00 lea rsp, QWORD PTR [rbp+264] 0006c 5f pop rdi 0006d 5d pop rbp 0006e c3 ret 0 _glfwDetectJoystickDisconnectionWin32 ENDP _TEXT ENDS ; Function compile flags: /Odtp /RTCsu /ZI ; File D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpGraphic\code\glfw\win32_joystick.c ; COMDAT _glfwDetectJoystickConnectionWin32 _TEXT SEGMENT index$5 = 4 jid$6 = 36 guid$7 = 72 xic$8 = 136 js$9 = 184 __$ArrayPad$ = 392 _glfwDetectJoystickConnectionWin32 PROC ; COMDAT ; 499 : { $LN16: 00000 40 55 push rbp 00002 57 push rdi 00003 48 81 ec c8 01 00 00 sub rsp, 456 ; 000001c8H 0000a 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48] 0000f 48 8d 7c 24 30 lea rdi, QWORD PTR [rsp+48] 00014 b9 36 00 00 00 mov ecx, 54 ; 00000036H 00019 b8 cc cc cc cc mov eax, -858993460 ; ccccccccH 0001e f3 ab rep stosd 00020 48 8b 05 00 00 00 00 mov rax, QWORD PTR __security_cookie 00027 48 33 c5 xor rax, rbp 0002a 48 89 85 88 01 00 00 mov QWORD PTR __$ArrayPad$[rbp], rax 00031 48 8d 0d 00 00 00 00 lea rcx, OFFSET FLAT:__BD81096D_win32_joystick@c 00038 e8 00 00 00 00 call __CheckForDebuggerJustMyCode ; 500 : if (_glfw.win32.xinput.instance) 0003d 48 83 3d 80 29 00 00 00 cmp QWORD PTR _glfw+10624, 0 00045 0f 84 37 01 00 00 je $LN8@glfwDetect ; 501 : { ; 502 : DWORD index; ; 503 : ; 504 : for (index = 0; index < XUSER_MAX_COUNT; index++) 0004b c7 45 04 00 00 00 00 mov DWORD PTR index$5[rbp], 0 00052 eb 08 jmp SHORT $LN4@glfwDetect $LN2@glfwDetect: 00054 8b 45 04 mov eax, DWORD PTR index$5[rbp] 00057 ff c0 inc eax 00059 89 45 04 mov DWORD PTR index$5[rbp], eax $LN4@glfwDetect: 0005c 83 7d 04 04 cmp DWORD PTR index$5[rbp], 4 00060 0f 83 1c 01 00 00 jae $LN3@glfwDetect ; 505 : { ; 506 : int jid; ; 507 : char guid[33]; ; 508 : XINPUT_CAPABILITIES xic; ; 509 : _GLFWjoystick* js; ; 510 : ; 511 : for (jid = 0; jid <= GLFW_JOYSTICK_LAST; jid++) 00066 c7 45 24 00 00 00 00 mov DWORD PTR jid$6[rbp], 0 0006d eb 08 jmp SHORT $LN7@glfwDetect $LN5@glfwDetect: 0006f 8b 45 24 mov eax, DWORD PTR jid$6[rbp] 00072 ff c0 inc eax 00074 89 45 24 mov DWORD PTR jid$6[rbp], eax $LN7@glfwDetect: 00077 83 7d 24 0f cmp DWORD PTR jid$6[rbp], 15 0007b 7f 58 jg SHORT $LN6@glfwDetect ; 512 : { ; 513 : if (_glfw.joysticks[jid].connected && ; 514 : _glfw.joysticks[jid].win32.device == NULL && 0007d 48 63 45 24 movsxd rax, DWORD PTR jid$6[rbp] 00081 48 69 c0 20 01 00 00 imul rax, rax, 288 ; 00000120H 00088 48 8d 0d 90 07 00 00 lea rcx, OFFSET FLAT:_glfw+1936 0008f 83 7c 01 04 00 cmp DWORD PTR [rcx+rax+4], 0 00094 74 3d je SHORT $LN9@glfwDetect 00096 48 63 45 24 movsxd rax, DWORD PTR jid$6[rbp] 0009a 48 69 c0 20 01 00 00 imul rax, rax, 288 ; 00000120H 000a1 48 8d 0d 90 07 00 00 lea rcx, OFFSET FLAT:_glfw+1936 000a8 48 83 bc 01 00 01 00 00 00 cmp QWORD PTR [rcx+rax+256], 0 000b1 75 20 jne SHORT $LN9@glfwDetect 000b3 48 63 45 24 movsxd rax, DWORD PTR jid$6[rbp] 000b7 48 69 c0 20 01 00 00 imul rax, rax, 288 ; 00000120H 000be 48 8d 0d 90 07 00 00 lea rcx, OFFSET FLAT:_glfw+1936 000c5 8b 55 04 mov edx, DWORD PTR index$5[rbp] 000c8 39 94 01 08 01 00 00 cmp DWORD PTR [rcx+rax+264], edx 000cf 75 02 jne SHORT $LN9@glfwDetect ; 515 : _glfw.joysticks[jid].win32.index == index) ; 516 : { ; 517 : break; 000d1 eb 02 jmp SHORT $LN6@glfwDetect $LN9@glfwDetect: ; 518 : } ; 519 : } 000d3 eb 9a jmp SHORT $LN5@glfwDetect $LN6@glfwDetect: ; 520 : ; 521 : if (jid <= GLFW_JOYSTICK_LAST) 000d5 83 7d 24 0f cmp DWORD PTR jid$6[rbp], 15 000d9 7f 05 jg SHORT $LN10@glfwDetect ; 522 : continue; 000db e9 74 ff ff ff jmp $LN2@glfwDetect $LN10@glfwDetect: ; 523 : ; 524 : if (XInputGetCapabilities(index, 0, &xic) != ERROR_SUCCESS) 000e0 4c 8d 85 88 00 00 00 lea r8, QWORD PTR xic$8[rbp] 000e7 33 d2 xor edx, edx 000e9 8b 4d 04 mov ecx, DWORD PTR index$5[rbp] 000ec ff 15 88 29 00 00 call QWORD PTR _glfw+10632 000f2 85 c0 test eax, eax 000f4 74 05 je SHORT $LN11@glfwDetect ; 525 : continue; 000f6 e9 59 ff ff ff jmp $LN2@glfwDetect $LN11@glfwDetect: ; 526 : ; 527 : // Generate a joystick GUID that matches the SDL 2.0.5+ one ; 528 : sprintf(guid, "78696e707574%02x000000000000000000", 000fb 0f b6 85 89 00 00 00 movzx eax, BYTE PTR xic$8[rbp+1] 00102 25 ff 00 00 00 and eax, 255 ; 000000ffH 00107 44 8b c0 mov r8d, eax 0010a 48 8d 15 00 00 00 00 lea rdx, OFFSET FLAT:??_C@_0CD@CBFNHKPK@78696e707574?$CF02x000000000000000@ 00111 48 8d 4d 48 lea rcx, QWORD PTR guid$7[rbp] 00115 e8 00 00 00 00 call sprintf ; 529 : xic.SubType & 0xff); ; 530 : ; 531 : js = _glfwAllocJoystick(getDeviceDescription(&xic), guid, 6, 10, 1); 0011a 48 8d 8d 88 00 00 00 lea rcx, QWORD PTR xic$8[rbp] 00121 e8 00 00 00 00 call getDeviceDescription 00126 c7 44 24 20 01 00 00 00 mov DWORD PTR [rsp+32], 1 0012e 41 b9 0a 00 00 00 mov r9d, 10 00134 41 b8 06 00 00 00 mov r8d, 6 0013a 48 8d 55 48 lea rdx, QWORD PTR guid$7[rbp] 0013e 48 8b c8 mov rcx, rax 00141 e8 00 00 00 00 call _glfwAllocJoystick 00146 48 89 85 b8 00 00 00 mov QWORD PTR js$9[rbp], rax ; 532 : if (!js) 0014d 48 83 bd b8 00 00 00 00 cmp QWORD PTR js$9[rbp], 0 00155 75 05 jne SHORT $LN12@glfwDetect ; 533 : continue; 00157 e9 f8 fe ff ff jmp $LN2@glfwDetect $LN12@glfwDetect: ; 534 : ; 535 : js->win32.index = index; 0015c 48 8b 85 b8 00 00 00 mov rax, QWORD PTR js$9[rbp] 00163 8b 4d 04 mov ecx, DWORD PTR index$5[rbp] 00166 89 88 08 01 00 00 mov DWORD PTR [rax+264], ecx ; 536 : ; 537 : _glfwInputJoystick(js, GLFW_CONNECTED); 0016c ba 01 00 04 00 mov edx, 262145 ; 00040001H 00171 48 8b 8d b8 00 00 00 mov rcx, QWORD PTR js$9[rbp] 00178 e8 00 00 00 00 call _glfwInputJoystick ; 538 : } 0017d e9 d2 fe ff ff jmp $LN2@glfwDetect $LN3@glfwDetect: $LN8@glfwDetect: ; 539 : } ; 540 : ; 541 : if (_glfw.win32.dinput8.api) 00182 48 83 3d 78 29 00 00 00 cmp QWORD PTR _glfw+10616, 0 0018a 74 40 je SHORT $LN13@glfwDetect ; 542 : { ; 543 : if (FAILED(IDirectInput8_EnumDevices(_glfw.win32.dinput8.api, 0018c 48 8b 05 78 29 00 00 mov rax, QWORD PTR _glfw+10616 00193 48 8b 00 mov rax, QWORD PTR [rax] 00196 c7 44 24 20 00 00 00 00 mov DWORD PTR [rsp+32], 0 0019e 45 33 c9 xor r9d, r9d 001a1 4c 8d 05 00 00 00 00 lea r8, OFFSET FLAT:deviceCallback 001a8 ba 04 00 00 00 mov edx, 4 001ad 48 8b 0d 78 29 00 00 mov rcx, QWORD PTR _glfw+10616 001b4 ff 50 20 call QWORD PTR [rax+32] 001b7 85 c0 test eax, eax 001b9 7d 11 jge SHORT $LN14@glfwDetect ; 544 : DI8DEVCLASS_GAMECTRL, ; 545 : deviceCallback, ; 546 : NULL, ; 547 : DIEDFL_ALLDEVICES))) ; 548 : { ; 549 : _glfwInputError(GLFW_PLATFORM_ERROR, 001bb 48 8d 15 00 00 00 00 lea rdx, OFFSET FLAT:??_C@_0CJ@HDJDHLNO@Failed?5to?5enumerate?5DirectInput@ 001c2 b9 08 00 01 00 mov ecx, 65544 ; 00010008H 001c7 e8 00 00 00 00 call _glfwInputError $LN14@glfwDetect: $LN13@glfwDetect: ; 550 : "Failed to enumerate DirectInput8 devices"); ; 551 : return; ; 552 : } ; 553 : } ; 554 : } 001cc 48 8d 4d d0 lea rcx, QWORD PTR [rbp-48] 001d0 48 8d 15 00 00 00 00 lea rdx, OFFSET FLAT:_glfwDetectJoystickConnectionWin32$rtcFrameData 001d7 e8 00 00 00 00 call _RTC_CheckStackVars 001dc 48 8b 8d 88 01 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp] 001e3 48 33 cd xor rcx, rbp 001e6 e8 00 00 00 00 call __security_check_cookie 001eb 48 8d a5 98 01 00 00 lea rsp, QWORD PTR [rbp+408] 001f2 5f pop rdi 001f3 5d pop rbp 001f4 c3 ret 0 _glfwDetectJoystickConnectionWin32 ENDP _TEXT ENDS ; Function compile flags: /Odtp /RTCsu /ZI ; File D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpGraphic\code\glfw\win32_joystick.c ; COMDAT _glfwUpdateGamepadGUIDWin32 _TEXT SEGMENT original$4 = 8 __$ArrayPad$ = 248 guid$ = 288 _glfwUpdateGamepadGUIDWin32 PROC ; COMDAT ; 751 : { $LN4: 00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx 00005 55 push rbp 00006 57 push rdi 00007 48 81 ec 28 01 00 00 sub rsp, 296 ; 00000128H 0000e 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32] 00013 48 8d 7c 24 20 lea rdi, QWORD PTR [rsp+32] 00018 b9 12 00 00 00 mov ecx, 18 0001d b8 cc cc cc cc mov eax, -858993460 ; ccccccccH 00022 f3 ab rep stosd 00024 48 8b 8c 24 48 01 00 00 mov rcx, QWORD PTR [rsp+328] 0002c 48 8b 05 00 00 00 00 mov rax, QWORD PTR __security_cookie 00033 48 33 c5 xor rax, rbp 00036 48 89 85 f8 00 00 00 mov QWORD PTR __$ArrayPad$[rbp], rax 0003d 48 8d 0d 00 00 00 00 lea rcx, OFFSET FLAT:__BD81096D_win32_joystick@c 00044 e8 00 00 00 00 call __CheckForDebuggerJustMyCode ; 752 : if (strcmp(guid + 20, "504944564944") == 0) 00049 48 8b 85 20 01 00 00 mov rax, QWORD PTR guid$[rbp] 00050 48 83 c0 14 add rax, 20 00054 48 8d 15 00 00 00 00 lea rdx, OFFSET FLAT:??_C@_0N@OJEJPFOD@504944564944@ 0005b 48 8b c8 mov rcx, rax 0005e e8 00 00 00 00 call strcmp 00063 85 c0 test eax, eax 00065 75 35 jne SHORT $LN2@glfwUpdate ; 753 : { ; 754 : char original[33]; ; 755 : strncpy(original, guid, sizeof(original) - 1); 00067 41 b8 20 00 00 00 mov r8d, 32 ; 00000020H 0006d 48 8b 95 20 01 00 00 mov rdx, QWORD PTR guid$[rbp] 00074 48 8d 4d 08 lea rcx, QWORD PTR original$4[rbp] 00078 ff 15 00 00 00 00 call QWORD PTR __imp_strncpy ; 756 : sprintf(guid, "03000000%.4s0000%.4s000000000000", 0007e 48 8d 45 0c lea rax, QWORD PTR original$4[rbp+4] 00082 4c 8b c8 mov r9, rax 00085 4c 8d 45 08 lea r8, QWORD PTR original$4[rbp] 00089 48 8d 15 00 00 00 00 lea rdx, OFFSET FLAT:??_C@_0CB@BIHPPBFK@03000000?$CF?44s0000?$CF?44s00000000000@ 00090 48 8b 8d 20 01 00 00 mov rcx, QWORD PTR guid$[rbp] 00097 e8 00 00 00 00 call sprintf $LN2@glfwUpdate: ; 757 : original, original + 4); ; 758 : } ; 759 : } 0009c 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32] 000a0 48 8d 15 00 00 00 00 lea rdx, OFFSET FLAT:_glfwUpdateGamepadGUIDWin32$rtcFrameData 000a7 e8 00 00 00 00 call _RTC_CheckStackVars 000ac 48 8b 8d f8 00 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp] 000b3 48 33 cd xor rcx, rbp 000b6 e8 00 00 00 00 call __security_check_cookie 000bb 48 8d a5 08 01 00 00 lea rsp, QWORD PTR [rbp+264] 000c2 5f pop rdi 000c3 5d pop rbp 000c4 c3 ret 0 _glfwUpdateGamepadGUIDWin32 ENDP _TEXT ENDS ; Function compile flags: /Odtp /RTCsu /ZI ; File D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpGraphic\code\glfw\win32_joystick.c ; COMDAT _glfwGetMappingNameWin32 _TEXT SEGMENT _glfwGetMappingNameWin32 PROC ; COMDAT ; 746 : { $LN3: 00000 40 55 push rbp 00002 57 push rdi 00003 48 81 ec e8 00 00 00 sub rsp, 232 ; 000000e8H 0000a 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32] 0000f 48 8d 0d 00 00 00 00 lea rcx, OFFSET FLAT:__BD81096D_win32_joystick@c 00016 e8 00 00 00 00 call __CheckForDebuggerJustMyCode ; 747 : return "Windows"; 0001b 48 8d 05 00 00 00 00 lea rax, OFFSET FLAT:??_C@_07LDLFNPGN@Windows@ ; 748 : } 00022 48 8d a5 c8 00 00 00 lea rsp, QWORD PTR [rbp+200] 00029 5f pop rdi 0002a 5d pop rbp 0002b c3 ret 0 _glfwGetMappingNameWin32 ENDP _TEXT ENDS ; Function compile flags: /Odtp /RTCsu /ZI ; File D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpGraphic\code\glfw\win32_joystick.c ; COMDAT _glfwPollJoystickWin32 _TEXT SEGMENT i$7 = 4 ai$8 = 36 bi$9 = 68 pi$10 = 100 result$11 = 132 state$12 = 176 data$13 = 280 value$14 = 308 value$15 = 340 states$16 = 376 stateIndex$17 = 436 i$18 = 468 dpad$19 = 500 result$20 = 532 xis$21 = 568 buttons$22 = 616 value$23 = 660 tv286 = 1060 tv165 = 1060 tv153 = 1060 __$ArrayPad$ = 1064 js$ = 1104 mode$ = 1112 _glfwPollJoystickWin32 PROC ; COMDAT ; 607 : { $LN34: 00000 89 54 24 10 mov DWORD PTR [rsp+16], edx 00004 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx 00009 55 push rbp 0000a 57 push rdi 0000b 48 81 ec 58 04 00 00 sub rsp, 1112 ; 00000458H 00012 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32] 00017 48 8d 7c 24 20 lea rdi, QWORD PTR [rsp+32] 0001c b9 ae 00 00 00 mov ecx, 174 ; 000000aeH 00021 b8 cc cc cc cc mov eax, -858993460 ; ccccccccH 00026 f3 ab rep stosd 00028 48 8b 8c 24 78 04 00 00 mov rcx, QWORD PTR [rsp+1144] 00030 48 8b 05 00 00 00 00 mov rax, QWORD PTR __security_cookie 00037 48 33 c5 xor rax, rbp 0003a 48 89 85 28 04 00 00 mov QWORD PTR __$ArrayPad$[rbp], rax 00041 48 8d 0d 00 00 00 00 lea rcx, OFFSET FLAT:__BD81096D_win32_joystick@c 00048 e8 00 00 00 00 call __CheckForDebuggerJustMyCode ; 608 : if (js->win32.device) 0004d 48 8b 85 50 04 00 00 mov rax, QWORD PTR js$[rbp] 00054 48 83 b8 00 01 00 00 00 cmp QWORD PTR [rax+256], 0 0005c 0f 84 40 03 00 00 je $LN10@glfwPollJo ; 609 : { ; 610 : int i, ai = 0, bi = 0, pi = 0; 00062 c7 45 24 00 00 00 00 mov DWORD PTR ai$8[rbp], 0 00069 c7 45 44 00 00 00 00 mov DWORD PTR bi$9[rbp], 0 00070 c7 45 64 00 00 00 00 mov DWORD PTR pi$10[rbp], 0 ; 611 : HRESULT result; ; 612 : DIJOYSTATE state = {0}; 00077 48 8d 85 b0 00 00 00 lea rax, QWORD PTR state$12[rbp] 0007e 48 8b f8 mov rdi, rax 00081 33 c0 xor eax, eax 00083 b9 50 00 00 00 mov ecx, 80 ; 00000050H 00088 f3 aa rep stosb ; 613 : ; 614 : IDirectInputDevice8_Poll(js->win32.device); 0008a 48 8b 85 50 04 00 00 mov rax, QWORD PTR js$[rbp] 00091 48 8b 80 00 01 00 00 mov rax, QWORD PTR [rax+256] 00098 48 8b 00 mov rax, QWORD PTR [rax] 0009b 48 8b 8d 50 04 00 00 mov rcx, QWORD PTR js$[rbp] 000a2 48 8b 89 00 01 00 00 mov rcx, QWORD PTR [rcx+256] 000a9 ff 90 c8 00 00 00 call QWORD PTR [rax+200] ; 615 : result = IDirectInputDevice8_GetDeviceState(js->win32.device, 000af 48 8b 85 50 04 00 00 mov rax, QWORD PTR js$[rbp] 000b6 48 8b 80 00 01 00 00 mov rax, QWORD PTR [rax+256] 000bd 48 8b 00 mov rax, QWORD PTR [rax] 000c0 4c 8d 85 b0 00 00 00 lea r8, QWORD PTR state$12[rbp] 000c7 ba 50 00 00 00 mov edx, 80 ; 00000050H 000cc 48 8b 8d 50 04 00 00 mov rcx, QWORD PTR js$[rbp] 000d3 48 8b 89 00 01 00 00 mov rcx, QWORD PTR [rcx+256] 000da ff 50 48 call QWORD PTR [rax+72] 000dd 89 85 84 00 00 00 mov DWORD PTR result$11[rbp], eax ; 616 : sizeof(state), ; 617 : &state); ; 618 : if (result == DIERR_NOTACQUIRED || result == DIERR_INPUTLOST) 000e3 81 bd 84 00 00 00 0c 00 07 80 cmp DWORD PTR result$11[rbp], -2147024884 ; ffffffff8007000cH 000ed 74 0c je SHORT $LN13@glfwPollJo 000ef 81 bd 84 00 00 00 1e 00 07 80 cmp DWORD PTR result$11[rbp], -2147024866 ; ffffffff8007001eH 000f9 75 7b jne SHORT $LN12@glfwPollJo $LN13@glfwPollJo: ; 619 : { ; 620 : IDirectInputDevice8_Acquire(js->win32.device); 000fb 48 8b 85 50 04 00 00 mov rax, QWORD PTR js$[rbp] 00102 48 8b 80 00 01 00 00 mov rax, QWORD PTR [rax+256] 00109 48 8b 00 mov rax, QWORD PTR [rax] 0010c 48 8b 8d 50 04 00 00 mov rcx, QWORD PTR js$[rbp] 00113 48 8b 89 00 01 00 00 mov rcx, QWORD PTR [rcx+256] 0011a ff 50 38 call QWORD PTR [rax+56] ; 621 : IDirectInputDevice8_Poll(js->win32.device); 0011d 48 8b 85 50 04 00 00 mov rax, QWORD PTR js$[rbp] 00124 48 8b 80 00 01 00 00 mov rax, QWORD PTR [rax+256] 0012b 48 8b 00 mov rax, QWORD PTR [rax] 0012e 48 8b 8d 50 04 00 00 mov rcx, QWORD PTR js$[rbp] 00135 48 8b 89 00 01 00 00 mov rcx, QWORD PTR [rcx+256] 0013c ff 90 c8 00 00 00 call QWORD PTR [rax+200] ; 622 : result = IDirectInputDevice8_GetDeviceState(js->win32.device, 00142 48 8b 85 50 04 00 00 mov rax, QWORD PTR js$[rbp] 00149 48 8b 80 00 01 00 00 mov rax, QWORD PTR [rax+256] 00150 48 8b 00 mov rax, QWORD PTR [rax] 00153 4c 8d 85 b0 00 00 00 lea r8, QWORD PTR state$12[rbp] 0015a ba 50 00 00 00 mov edx, 80 ; 00000050H 0015f 48 8b 8d 50 04 00 00 mov rcx, QWORD PTR js$[rbp] 00166 48 8b 89 00 01 00 00 mov rcx, QWORD PTR [rcx+256] 0016d ff 50 48 call QWORD PTR [rax+72] 00170 89 85 84 00 00 00 mov DWORD PTR result$11[rbp], eax $LN12@glfwPollJo: ; 623 : sizeof(state), ; 624 : &state); ; 625 : } ; 626 : ; 627 : if (FAILED(result)) 00176 83 bd 84 00 00 00 00 cmp DWORD PTR result$11[rbp], 0 0017d 7d 13 jge SHORT $LN14@glfwPollJo ; 628 : { ; 629 : closeJoystick(js); 0017f 48 8b 8d 50 04 00 00 mov rcx, QWORD PTR js$[rbp] 00186 e8 00 00 00 00 call closeJoystick ; 630 : return GLFW_FALSE; 0018b 33 c0 xor eax, eax 0018d e9 1f 05 00 00 jmp $LN1@glfwPollJo $LN14@glfwPollJo: ; 631 : } ; 632 : ; 633 : if (mode == _GLFW_POLL_PRESENCE) 00192 83 bd 58 04 00 00 00 cmp DWORD PTR mode$[rbp], 0 00199 75 0a jne SHORT $LN15@glfwPollJo ; 634 : return GLFW_TRUE; 0019b b8 01 00 00 00 mov eax, 1 001a0 e9 0c 05 00 00 jmp $LN1@glfwPollJo $LN15@glfwPollJo: ; 635 : ; 636 : for (i = 0; i < js->win32.objectCount; i++) 001a5 c7 45 04 00 00 00 00 mov DWORD PTR i$7[rbp], 0 001ac eb 08 jmp SHORT $LN4@glfwPollJo $LN2@glfwPollJo: 001ae 8b 45 04 mov eax, DWORD PTR i$7[rbp] 001b1 ff c0 inc eax 001b3 89 45 04 mov DWORD PTR i$7[rbp], eax $LN4@glfwPollJo: 001b6 48 8b 85 50 04 00 00 mov rax, QWORD PTR js$[rbp] 001bd 8b 80 f8 00 00 00 mov eax, DWORD PTR [rax+248] 001c3 39 45 04 cmp DWORD PTR i$7[rbp], eax 001c6 0f 8d d1 01 00 00 jge $LN3@glfwPollJo ; 637 : { ; 638 : const void* data = (char*) &state + js->win32.objects[i].offset; 001cc 48 63 45 04 movsxd rax, DWORD PTR i$7[rbp] 001d0 48 8b 8d 50 04 00 00 mov rcx, QWORD PTR js$[rbp] 001d7 48 8b 89 f0 00 00 00 mov rcx, QWORD PTR [rcx+240] 001de 48 63 04 c1 movsxd rax, DWORD PTR [rcx+rax*8] 001e2 48 8d 84 05 b0 00 00 00 lea rax, QWORD PTR state$12[rbp+rax] 001ea 48 89 85 18 01 00 00 mov QWORD PTR data$13[rbp], rax ; 639 : ; 640 : switch (js->win32.objects[i].type) 001f1 48 63 45 04 movsxd rax, DWORD PTR i$7[rbp] 001f5 48 8b 8d 50 04 00 00 mov rcx, QWORD PTR js$[rbp] 001fc 48 8b 89 f0 00 00 00 mov rcx, QWORD PTR [rcx+240] 00203 8b 44 c1 04 mov eax, DWORD PTR [rcx+rax*8+4] 00207 89 85 24 04 00 00 mov DWORD PTR tv153[rbp], eax 0020d 83 bd 24 04 00 00 00 cmp DWORD PTR tv153[rbp], 0 00214 74 24 je SHORT $LN16@glfwPollJo 00216 83 bd 24 04 00 00 01 cmp DWORD PTR tv153[rbp], 1 0021d 74 1b je SHORT $LN17@glfwPollJo 0021f 83 bd 24 04 00 00 02 cmp DWORD PTR tv153[rbp], 2 00226 74 59 je SHORT $LN18@glfwPollJo 00228 83 bd 24 04 00 00 03 cmp DWORD PTR tv153[rbp], 3 0022f 0f 84 a6 00 00 00 je $LN19@glfwPollJo 00235 e9 5e 01 00 00 jmp $LN5@glfwPollJo $LN16@glfwPollJo: $LN17@glfwPollJo: ; 641 : { ; 642 : case _GLFW_TYPE_AXIS: ; 643 : case _GLFW_TYPE_SLIDER: ; 644 : { ; 645 : const float value = (*((LONG*) data) + 0.5f) / 32767.5f; 0023a 48 8b 85 18 01 00 00 mov rax, QWORD PTR data$13[rbp] 00241 f3 0f 2a 00 cvtsi2ss xmm0, DWORD PTR [rax] 00245 f3 0f 58 05 00 00 00 00 addss xmm0, DWORD PTR __real@3f000000 0024d f3 0f 5e 05 00 00 00 00 divss xmm0, DWORD PTR __real@46ffff00 00255 f3 0f 11 85 34 01 00 00 movss DWORD PTR value$14[rbp], xmm0 ; 646 : _glfwInputJoystickAxis(js, ai, value); 0025d f3 0f 10 95 34 01 00 00 movss xmm2, DWORD PTR value$14[rbp] 00265 8b 55 24 mov edx, DWORD PTR ai$8[rbp] 00268 48 8b 8d 50 04 00 00 mov rcx, QWORD PTR js$[rbp] 0026f e8 00 00 00 00 call _glfwInputJoystickAxis ; 647 : ai++; 00274 8b 45 24 mov eax, DWORD PTR ai$8[rbp] 00277 ff c0 inc eax 00279 89 45 24 mov DWORD PTR ai$8[rbp], eax ; 648 : break; 0027c e9 17 01 00 00 jmp $LN5@glfwPollJo $LN18@glfwPollJo: ; 649 : } ; 650 : ; 651 : case _GLFW_TYPE_BUTTON: ; 652 : { ; 653 : const char value = (*((BYTE*) data) & 0x80) != 0; 00281 48 8b 85 18 01 00 00 mov rax, QWORD PTR data$13[rbp] 00288 0f b6 00 movzx eax, BYTE PTR [rax] 0028b 25 80 00 00 00 and eax, 128 ; 00000080H 00290 85 c0 test eax, eax 00292 74 0c je SHORT $LN30@glfwPollJo 00294 c7 85 24 04 00 00 01 00 00 00 mov DWORD PTR tv165[rbp], 1 0029e eb 0a jmp SHORT $LN31@glfwPollJo $LN30@glfwPollJo: 002a0 c7 85 24 04 00 00 00 00 00 00 mov DWORD PTR tv165[rbp], 0 $LN31@glfwPollJo: 002aa 0f b6 85 24 04 00 00 movzx eax, BYTE PTR tv165[rbp] 002b1 88 85 54 01 00 00 mov BYTE PTR value$15[rbp], al ; 654 : _glfwInputJoystickButton(js, bi, value); 002b7 44 0f b6 85 54 01 00 00 movzx r8d, BYTE PTR value$15[rbp] 002bf 8b 55 44 mov edx, DWORD PTR bi$9[rbp] 002c2 48 8b 8d 50 04 00 00 mov rcx, QWORD PTR js$[rbp] 002c9 e8 00 00 00 00 call _glfwInputJoystickButton ; 655 : bi++; 002ce 8b 45 44 mov eax, DWORD PTR bi$9[rbp] 002d1 ff c0 inc eax 002d3 89 45 44 mov DWORD PTR bi$9[rbp], eax ; 656 : break; 002d6 e9 bd 00 00 00 jmp $LN5@glfwPollJo $LN19@glfwPollJo: ; 657 : } ; 658 : ; 659 : case _GLFW_TYPE_POV: ; 660 : { ; 661 : const int states[9] = 002db c7 85 78 01 00 00 01 00 00 00 mov DWORD PTR states$16[rbp], 1 002e5 c7 85 7c 01 00 00 03 00 00 00 mov DWORD PTR states$16[rbp+4], 3 002ef c7 85 80 01 00 00 02 00 00 00 mov DWORD PTR states$16[rbp+8], 2 002f9 c7 85 84 01 00 00 06 00 00 00 mov DWORD PTR states$16[rbp+12], 6 00303 c7 85 88 01 00 00 04 00 00 00 mov DWORD PTR states$16[rbp+16], 4 0030d c7 85 8c 01 00 00 0c 00 00 00 mov DWORD PTR states$16[rbp+20], 12 00317 c7 85 90 01 00 00 08 00 00 00 mov DWORD PTR states$16[rbp+24], 8 00321 c7 85 94 01 00 00 09 00 00 00 mov DWORD PTR states$16[rbp+28], 9 0032b c7 85 98 01 00 00 00 00 00 00 mov DWORD PTR states$16[rbp+32], 0 ; 662 : { ; 663 : GLFW_HAT_UP, ; 664 : GLFW_HAT_RIGHT_UP, ; 665 : GLFW_HAT_RIGHT, ; 666 : GLFW_HAT_RIGHT_DOWN, ; 667 : GLFW_HAT_DOWN, ; 668 : GLFW_HAT_LEFT_DOWN, ; 669 : GLFW_HAT_LEFT, ; 670 : GLFW_HAT_LEFT_UP, ; 671 : GLFW_HAT_CENTERED ; 672 : }; ; 673 : ; 674 : // Screams of horror are appropriate at this point ; 675 : int stateIndex = LOWORD(*(DWORD*) data) / (45 * DI_DEGREES); 00335 48 8b 85 18 01 00 00 mov rax, QWORD PTR data$13[rbp] 0033c 8b 00 mov eax, DWORD PTR [rax] 0033e 48 25 ff ff 00 00 and rax, 65535 ; 0000ffffH 00344 0f b7 c0 movzx eax, ax 00347 99 cdq 00348 b9 94 11 00 00 mov ecx, 4500 ; 00001194H 0034d f7 f9 idiv ecx 0034f 89 85 b4 01 00 00 mov DWORD PTR stateIndex$17[rbp], eax ; 676 : if (stateIndex < 0 || stateIndex > 8) 00355 83 bd b4 01 00 00 00 cmp DWORD PTR stateIndex$17[rbp], 0 0035c 7c 09 jl SHORT $LN21@glfwPollJo 0035e 83 bd b4 01 00 00 08 cmp DWORD PTR stateIndex$17[rbp], 8 00365 7e 0a jle SHORT $LN20@glfwPollJo $LN21@glfwPollJo: ; 677 : stateIndex = 8; 00367 c7 85 b4 01 00 00 08 00 00 00 mov DWORD PTR stateIndex$17[rbp], 8 $LN20@glfwPollJo: ; 678 : ; 679 : _glfwInputJoystickHat(js, pi, states[stateIndex]); 00371 48 63 85 b4 01 00 00 movsxd rax, DWORD PTR stateIndex$17[rbp] 00378 44 0f b6 84 85 78 01 00 00 movzx r8d, BYTE PTR states$16[rbp+rax*4] 00381 8b 55 64 mov edx, DWORD PTR pi$10[rbp] 00384 48 8b 8d 50 04 00 00 mov rcx, QWORD PTR js$[rbp] 0038b e8 00 00 00 00 call _glfwInputJoystickHat ; 680 : pi++; 00390 8b 45 64 mov eax, DWORD PTR pi$10[rbp] 00393 ff c0 inc eax 00395 89 45 64 mov DWORD PTR pi$10[rbp], eax $LN5@glfwPollJo: ; 681 : break; ; 682 : } ; 683 : } ; 684 : } 00398 e9 11 fe ff ff jmp $LN2@glfwPollJo $LN3@glfwPollJo: ; 685 : } 0039d e9 0a 03 00 00 jmp $LN11@glfwPollJo $LN10@glfwPollJo: ; 686 : else ; 687 : { ; 688 : int i, dpad = 0; 003a2 c7 85 f4 01 00 00 00 00 00 00 mov DWORD PTR dpad$19[rbp], 0 ; 689 : DWORD result; ; 690 : XINPUT_STATE xis; ; 691 : const WORD buttons[10] = 003ac b8 00 10 00 00 mov eax, 4096 ; 00001000H 003b1 66 89 85 68 02 00 00 mov WORD PTR buttons$22[rbp], ax 003b8 b8 00 20 00 00 mov eax, 8192 ; 00002000H 003bd 66 89 85 6a 02 00 00 mov WORD PTR buttons$22[rbp+2], ax 003c4 b8 00 40 00 00 mov eax, 16384 ; 00004000H 003c9 66 89 85 6c 02 00 00 mov WORD PTR buttons$22[rbp+4], ax 003d0 b8 00 80 00 00 mov eax, 32768 ; 00008000H 003d5 66 89 85 6e 02 00 00 mov WORD PTR buttons$22[rbp+6], ax 003dc b8 00 01 00 00 mov eax, 256 ; 00000100H 003e1 66 89 85 70 02 00 00 mov WORD PTR buttons$22[rbp+8], ax 003e8 b8 00 02 00 00 mov eax, 512 ; 00000200H 003ed 66 89 85 72 02 00 00 mov WORD PTR buttons$22[rbp+10], ax 003f4 b8 20 00 00 00 mov eax, 32 ; 00000020H 003f9 66 89 85 74 02 00 00 mov WORD PTR buttons$22[rbp+12], ax 00400 b8 10 00 00 00 mov eax, 16 00405 66 89 85 76 02 00 00 mov WORD PTR buttons$22[rbp+14], ax 0040c b8 40 00 00 00 mov eax, 64 ; 00000040H 00411 66 89 85 78 02 00 00 mov WORD PTR buttons$22[rbp+16], ax 00418 b8 80 00 00 00 mov eax, 128 ; 00000080H 0041d 66 89 85 7a 02 00 00 mov WORD PTR buttons$22[rbp+18], ax ; 692 : { ; 693 : XINPUT_GAMEPAD_A, ; 694 : XINPUT_GAMEPAD_B, ; 695 : XINPUT_GAMEPAD_X, ; 696 : XINPUT_GAMEPAD_Y, ; 697 : XINPUT_GAMEPAD_LEFT_SHOULDER, ; 698 : XINPUT_GAMEPAD_RIGHT_SHOULDER, ; 699 : XINPUT_GAMEPAD_BACK, ; 700 : XINPUT_GAMEPAD_START, ; 701 : XINPUT_GAMEPAD_LEFT_THUMB, ; 702 : XINPUT_GAMEPAD_RIGHT_THUMB ; 703 : }; ; 704 : ; 705 : result = XInputGetState(js->win32.index, &xis); 00424 48 8d 95 38 02 00 00 lea rdx, QWORD PTR xis$21[rbp] 0042b 48 8b 85 50 04 00 00 mov rax, QWORD PTR js$[rbp] 00432 8b 88 08 01 00 00 mov ecx, DWORD PTR [rax+264] 00438 ff 15 90 29 00 00 call QWORD PTR _glfw+10640 0043e 89 85 14 02 00 00 mov DWORD PTR result$20[rbp], eax ; 706 : if (result != ERROR_SUCCESS) 00444 83 bd 14 02 00 00 00 cmp DWORD PTR result$20[rbp], 0 0044b 74 1f je SHORT $LN22@glfwPollJo ; 707 : { ; 708 : if (result == ERROR_DEVICE_NOT_CONNECTED) 0044d 81 bd 14 02 00 00 8f 04 00 00 cmp DWORD PTR result$20[rbp], 1167 ; 0000048fH 00457 75 0c jne SHORT $LN23@glfwPollJo ; 709 : closeJoystick(js); 00459 48 8b 8d 50 04 00 00 mov rcx, QWORD PTR js$[rbp] 00460 e8 00 00 00 00 call closeJoystick $LN23@glfwPollJo: ; 710 : ; 711 : return GLFW_FALSE; 00465 33 c0 xor eax, eax 00467 e9 45 02 00 00 jmp $LN1@glfwPollJo $LN22@glfwPollJo: ; 712 : } ; 713 : ; 714 : if (mode == _GLFW_POLL_PRESENCE) 0046c 83 bd 58 04 00 00 00 cmp DWORD PTR mode$[rbp], 0 00473 75 0a jne SHORT $LN24@glfwPollJo ; 715 : return GLFW_TRUE; 00475 b8 01 00 00 00 mov eax, 1 0047a e9 32 02 00 00 jmp $LN1@glfwPollJo $LN24@glfwPollJo: ; 716 : ; 717 : _glfwInputJoystickAxis(js, 0, (xis.Gamepad.sThumbLX + 0.5f) / 32767.5f); 0047f 0f bf 85 40 02 00 00 movsx eax, WORD PTR xis$21[rbp+8] 00486 f3 0f 2a c0 cvtsi2ss xmm0, eax 0048a f3 0f 58 05 00 00 00 00 addss xmm0, DWORD PTR __real@3f000000 00492 f3 0f 5e 05 00 00 00 00 divss xmm0, DWORD PTR __real@46ffff00 0049a 0f 28 d0 movaps xmm2, xmm0 0049d 33 d2 xor edx, edx 0049f 48 8b 8d 50 04 00 00 mov rcx, QWORD PTR js$[rbp] 004a6 e8 00 00 00 00 call _glfwInputJoystickAxis ; 718 : _glfwInputJoystickAxis(js, 1, -(xis.Gamepad.sThumbLY + 0.5f) / 32767.5f); 004ab 0f bf 85 42 02 00 00 movsx eax, WORD PTR xis$21[rbp+10] 004b2 f3 0f 2a c0 cvtsi2ss xmm0, eax 004b6 f3 0f 58 05 00 00 00 00 addss xmm0, DWORD PTR __real@3f000000 004be 0f 57 05 00 00 00 00 xorps xmm0, DWORD PTR __xmm@80000000800000008000000080000000 004c5 f3 0f 5e 05 00 00 00 00 divss xmm0, DWORD PTR __real@46ffff00 004cd 0f 28 d0 movaps xmm2, xmm0 004d0 ba 01 00 00 00 mov edx, 1 004d5 48 8b 8d 50 04 00 00 mov rcx, QWORD PTR js$[rbp] 004dc e8 00 00 00 00 call _glfwInputJoystickAxis ; 719 : _glfwInputJoystickAxis(js, 2, (xis.Gamepad.sThumbRX + 0.5f) / 32767.5f); 004e1 0f bf 85 44 02 00 00 movsx eax, WORD PTR xis$21[rbp+12] 004e8 f3 0f 2a c0 cvtsi2ss xmm0, eax 004ec f3 0f 58 05 00 00 00 00 addss xmm0, DWORD PTR __real@3f000000 004f4 f3 0f 5e 05 00 00 00 00 divss xmm0, DWORD PTR __real@46ffff00 004fc 0f 28 d0 movaps xmm2, xmm0 004ff ba 02 00 00 00 mov edx, 2 00504 48 8b 8d 50 04 00 00 mov rcx, QWORD PTR js$[rbp] 0050b e8 00 00 00 00 call _glfwInputJoystickAxis ; 720 : _glfwInputJoystickAxis(js, 3, -(xis.Gamepad.sThumbRY + 0.5f) / 32767.5f); 00510 0f bf 85 46 02 00 00 movsx eax, WORD PTR xis$21[rbp+14] 00517 f3 0f 2a c0 cvtsi2ss xmm0, eax 0051b f3 0f 58 05 00 00 00 00 addss xmm0, DWORD PTR __real@3f000000 00523 0f 57 05 00 00 00 00 xorps xmm0, DWORD PTR __xmm@80000000800000008000000080000000 0052a f3 0f 5e 05 00 00 00 00 divss xmm0, DWORD PTR __real@46ffff00 00532 0f 28 d0 movaps xmm2, xmm0 00535 ba 03 00 00 00 mov edx, 3 0053a 48 8b 8d 50 04 00 00 mov rcx, QWORD PTR js$[rbp] 00541 e8 00 00 00 00 call _glfwInputJoystickAxis ; 721 : _glfwInputJoystickAxis(js, 4, xis.Gamepad.bLeftTrigger / 127.5f - 1.f); 00546 0f b6 85 3e 02 00 00 movzx eax, BYTE PTR xis$21[rbp+6] 0054d f3 0f 2a c0 cvtsi2ss xmm0, eax 00551 f3 0f 5e 05 00 00 00 00 divss xmm0, DWORD PTR __real@42ff0000 00559 f3 0f 5c 05 00 00 00 00 subss xmm0, DWORD PTR __real@3f800000 00561 0f 28 d0 movaps xmm2, xmm0 00564 ba 04 00 00 00 mov edx, 4 00569 48 8b 8d 50 04 00 00 mov rcx, QWORD PTR js$[rbp] 00570 e8 00 00 00 00 call _glfwInputJoystickAxis ; 722 : _glfwInputJoystickAxis(js, 5, xis.Gamepad.bRightTrigger / 127.5f - 1.f); 00575 0f b6 85 3f 02 00 00 movzx eax, BYTE PTR xis$21[rbp+7] 0057c f3 0f 2a c0 cvtsi2ss xmm0, eax 00580 f3 0f 5e 05 00 00 00 00 divss xmm0, DWORD PTR __real@42ff0000 00588 f3 0f 5c 05 00 00 00 00 subss xmm0, DWORD PTR __real@3f800000 00590 0f 28 d0 movaps xmm2, xmm0 00593 ba 05 00 00 00 mov edx, 5 00598 48 8b 8d 50 04 00 00 mov rcx, QWORD PTR js$[rbp] 0059f e8 00 00 00 00 call _glfwInputJoystickAxis ; 723 : ; 724 : for (i = 0; i < 10; i++) 005a4 c7 85 d4 01 00 00 00 00 00 00 mov DWORD PTR i$18[rbp], 0 005ae eb 0e jmp SHORT $LN9@glfwPollJo $LN7@glfwPollJo: 005b0 8b 85 d4 01 00 00 mov eax, DWORD PTR i$18[rbp] 005b6 ff c0 inc eax 005b8 89 85 d4 01 00 00 mov DWORD PTR i$18[rbp], eax $LN9@glfwPollJo: 005be 83 bd d4 01 00 00 0a cmp DWORD PTR i$18[rbp], 10 005c5 7d 5b jge SHORT $LN8@glfwPollJo ; 725 : { ; 726 : const char value = (xis.Gamepad.wButtons & buttons[i]) ? 1 : 0; 005c7 0f b7 85 3c 02 00 00 movzx eax, WORD PTR xis$21[rbp+4] 005ce 48 63 8d d4 01 00 00 movsxd rcx, DWORD PTR i$18[rbp] 005d5 0f b7 8c 4d 68 02 00 00 movzx ecx, WORD PTR buttons$22[rbp+rcx*2] 005dd 23 c1 and eax, ecx 005df 85 c0 test eax, eax 005e1 74 0c je SHORT $LN32@glfwPollJo 005e3 c7 85 24 04 00 00 01 00 00 00 mov DWORD PTR tv286[rbp], 1 005ed eb 0a jmp SHORT $LN33@glfwPollJo $LN32@glfwPollJo: 005ef c7 85 24 04 00 00 00 00 00 00 mov DWORD PTR tv286[rbp], 0 $LN33@glfwPollJo: 005f9 0f b6 85 24 04 00 00 movzx eax, BYTE PTR tv286[rbp] 00600 88 85 94 02 00 00 mov BYTE PTR value$23[rbp], al ; 727 : _glfwInputJoystickButton(js, i, value); 00606 44 0f b6 85 94 02 00 00 movzx r8d, BYTE PTR value$23[rbp] 0060e 8b 95 d4 01 00 00 mov edx, DWORD PTR i$18[rbp] 00614 48 8b 8d 50 04 00 00 mov rcx, QWORD PTR js$[rbp] 0061b e8 00 00 00 00 call _glfwInputJoystickButton ; 728 : } 00620 eb 8e jmp SHORT $LN7@glfwPollJo $LN8@glfwPollJo: ; 729 : ; 730 : if (xis.Gamepad.wButtons & XINPUT_GAMEPAD_DPAD_UP) 00622 0f b7 85 3c 02 00 00 movzx eax, WORD PTR xis$21[rbp+4] 00629 83 e0 01 and eax, 1 0062c 85 c0 test eax, eax 0062e 74 0f je SHORT $LN25@glfwPollJo ; 731 : dpad |= GLFW_HAT_UP; 00630 8b 85 f4 01 00 00 mov eax, DWORD PTR dpad$19[rbp] 00636 83 c8 01 or eax, 1 00639 89 85 f4 01 00 00 mov DWORD PTR dpad$19[rbp], eax $LN25@glfwPollJo: ; 732 : if (xis.Gamepad.wButtons & XINPUT_GAMEPAD_DPAD_RIGHT) 0063f 0f b7 85 3c 02 00 00 movzx eax, WORD PTR xis$21[rbp+4] 00646 83 e0 08 and eax, 8 00649 85 c0 test eax, eax 0064b 74 0f je SHORT $LN26@glfwPollJo ; 733 : dpad |= GLFW_HAT_RIGHT; 0064d 8b 85 f4 01 00 00 mov eax, DWORD PTR dpad$19[rbp] 00653 83 c8 02 or eax, 2 00656 89 85 f4 01 00 00 mov DWORD PTR dpad$19[rbp], eax $LN26@glfwPollJo: ; 734 : if (xis.Gamepad.wButtons & XINPUT_GAMEPAD_DPAD_DOWN) 0065c 0f b7 85 3c 02 00 00 movzx eax, WORD PTR xis$21[rbp+4] 00663 83 e0 02 and eax, 2 00666 85 c0 test eax, eax 00668 74 0f je SHORT $LN27@glfwPollJo ; 735 : dpad |= GLFW_HAT_DOWN; 0066a 8b 85 f4 01 00 00 mov eax, DWORD PTR dpad$19[rbp] 00670 83 c8 04 or eax, 4 00673 89 85 f4 01 00 00 mov DWORD PTR dpad$19[rbp], eax $LN27@glfwPollJo: ; 736 : if (xis.Gamepad.wButtons & XINPUT_GAMEPAD_DPAD_LEFT) 00679 0f b7 85 3c 02 00 00 movzx eax, WORD PTR xis$21[rbp+4] 00680 83 e0 04 and eax, 4 00683 85 c0 test eax, eax 00685 74 0f je SHORT $LN28@glfwPollJo ; 737 : dpad |= GLFW_HAT_LEFT; 00687 8b 85 f4 01 00 00 mov eax, DWORD PTR dpad$19[rbp] 0068d 83 c8 08 or eax, 8 00690 89 85 f4 01 00 00 mov DWORD PTR dpad$19[rbp], eax $LN28@glfwPollJo: ; 738 : ; 739 : _glfwInputJoystickHat(js, 0, dpad); 00696 44 0f b6 85 f4 01 00 00 movzx r8d, BYTE PTR dpad$19[rbp] 0069e 33 d2 xor edx, edx 006a0 48 8b 8d 50 04 00 00 mov rcx, QWORD PTR js$[rbp] 006a7 e8 00 00 00 00 call _glfwInputJoystickHat $LN11@glfwPollJo: ; 740 : } ; 741 : ; 742 : return GLFW_TRUE; 006ac b8 01 00 00 00 mov eax, 1 $LN1@glfwPollJo: ; 743 : } 006b1 48 8b f8 mov rdi, rax 006b4 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32] 006b8 48 8d 15 00 00 00 00 lea rdx, OFFSET FLAT:_glfwPollJoystickWin32$rtcFrameData 006bf e8 00 00 00 00 call _RTC_CheckStackVars 006c4 48 8b c7 mov rax, rdi 006c7 48 8b 8d 28 04 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp] 006ce 48 33 cd xor rcx, rbp 006d1 e8 00 00 00 00 call __security_check_cookie 006d6 48 8d a5 38 04 00 00 lea rsp, QWORD PTR [rbp+1080] 006dd 5f pop rdi 006de 5d pop rbp 006df c3 ret 0 _glfwPollJoystickWin32 ENDP _TEXT ENDS ; Function compile flags: /Odtp /RTCsu /ZI ; File D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpGraphic\code\glfw\win32_joystick.c ; COMDAT _glfwTerminateJoysticksWin32 _TEXT SEGMENT jid$ = 4 _glfwTerminateJoysticksWin32 PROC ; COMDAT ; 596 : { $LN7: 00000 40 55 push rbp 00002 57 push rdi 00003 48 81 ec 08 01 00 00 sub rsp, 264 ; 00000108H 0000a 48 8d 6c 24 20 lea rbp, QWORD PTR [rsp+32] 0000f 48 8d 0d 00 00 00 00 lea rcx, OFFSET FLAT:__BD81096D_win32_joystick@c 00016 e8 00 00 00 00 call __CheckForDebuggerJustMyCode ; 597 : int jid; ; 598 : ; 599 : for (jid = GLFW_JOYSTICK_1; jid <= GLFW_JOYSTICK_LAST; jid++) 0001b c7 45 04 00 00 00 00 mov DWORD PTR jid$[rbp], 0 00022 eb 08 jmp SHORT $LN4@glfwTermin $LN2@glfwTermin: 00024 8b 45 04 mov eax, DWORD PTR jid$[rbp] 00027 ff c0 inc eax 00029 89 45 04 mov DWORD PTR jid$[rbp], eax $LN4@glfwTermin: 0002c 83 7d 04 0f cmp DWORD PTR jid$[rbp], 15 00030 7f 22 jg SHORT $LN3@glfwTermin ; 600 : closeJoystick(_glfw.joysticks + jid); 00032 48 63 45 04 movsxd rax, DWORD PTR jid$[rbp] 00036 48 69 c0 20 01 00 00 imul rax, rax, 288 ; 00000120H 0003d 48 8d 0d 90 07 00 00 lea rcx, OFFSET FLAT:_glfw+1936 00044 48 03 c8 add rcx, rax 00047 48 8b c1 mov rax, rcx 0004a 48 8b c8 mov rcx, rax 0004d e8 00 00 00 00 call closeJoystick 00052 eb d0 jmp SHORT $LN2@glfwTermin $LN3@glfwTermin: ; 601 : ; 602 : if (_glfw.win32.dinput8.api) 00054 48 83 3d 78 29 00 00 00 cmp QWORD PTR _glfw+10616, 0 0005c 74 14 je SHORT $LN5@glfwTermin ; 603 : IDirectInput8_Release(_glfw.win32.dinput8.api); 0005e 48 8b 05 78 29 00 00 mov rax, QWORD PTR _glfw+10616 00065 48 8b 00 mov rax, QWORD PTR [rax] 00068 48 8b 0d 78 29 00 00 mov rcx, QWORD PTR _glfw+10616 0006f ff 50 10 call QWORD PTR [rax+16] $LN5@glfwTermin: ; 604 : } 00072 48 8d a5 e8 00 00 00 lea rsp, QWORD PTR [rbp+232] 00079 5f pop rdi 0007a 5d pop rbp 0007b c3 ret 0 _glfwTerminateJoysticksWin32 ENDP _TEXT ENDS ; Function compile flags: /Odtp /RTCsu /ZI ; File D:\NitloadIndustry\研究项目\1-Flagship\TH2020\ProjectFile\源代码\StgSharpGraphic\code\glfw\win32_joystick.c ; COMDAT _glfwInitJoysticksWin32 _TEXT SEGMENT _glfwInitJoysticksWin32 PROC ; COMDAT ; 576 : { $LN5: 00000 40 55 push rbp 00002 57 push rdi 00003 48 81 ec f8 00 00 00 sub rsp, 248 ; 000000f8H 0000a 48 8d 6c 24 30 lea rbp, QWORD PTR [rsp+48] 0000f 48 8d 0d 00 00 00 00 lea rcx, OFFSET FLAT:__BD81096D_win32_joystick@c 00016 e8 00 00 00 00 call __CheckForDebuggerJustMyCode ; 577 : if (_glfw.win32.dinput8.instance) 0001b 48 83 3d 68 29 00 00 00 cmp QWORD PTR _glfw+10600, 0 00023 74 42 je SHORT $LN2@glfwInitJo ; 578 : { ; 579 : if (FAILED(DirectInput8Create(_glfw.win32.instance, 00025 48 c7 44 24 20 00 00 00 00 mov QWORD PTR [rsp+32], 0 0002e 4c 8d 0d 78 29 00 00 lea r9, OFFSET FLAT:_glfw+10616 00035 4c 8d 05 00 00 00 00 lea r8, OFFSET FLAT:_glfw_IID_IDirectInput8W 0003c ba 00 08 00 00 mov edx, 2048 ; 00000800H 00041 48 8b 0d 78 1b 00 00 mov rcx, QWORD PTR _glfw+7032 00048 ff 15 70 29 00 00 call QWORD PTR _glfw+10608 0004e 85 c0 test eax, eax 00050 7d 15 jge SHORT $LN3@glfwInitJo ; 580 : DIRECTINPUT_VERSION, ; 581 : &IID_IDirectInput8W, ; 582 : (void**) &_glfw.win32.dinput8.api, ; 583 : NULL))) ; 584 : { ; 585 : _glfwInputError(GLFW_PLATFORM_ERROR, 00052 48 8d 15 00 00 00 00 lea rdx, OFFSET FLAT:??_C@_0CC@MGDCJJKB@Win32?3?5Failed?5to?5create?5interfa@ 00059 b9 08 00 01 00 mov ecx, 65544 ; 00010008H 0005e e8 00 00 00 00 call _glfwInputError ; 586 : "Win32: Failed to create interface"); ; 587 : return GLFW_FALSE; 00063 33 c0 xor eax, eax 00065 eb 0a jmp SHORT $LN1@glfwInitJo $LN3@glfwInitJo: $LN2@glfwInitJo: ; 588 : } ; 589 : } ; 590 : ; 591 : _glfwDetectJoystickConnectionWin32(); 00067 e8 00 00 00 00 call _glfwDetectJoystickConnectionWin32 ; 592 : return GLFW_TRUE; 0006c b8 01 00 00 00 mov eax, 1 $LN1@glfwInitJo: ; 593 : } 00071 48 8d a5 c8 00 00 00 lea rsp, QWORD PTR [rbp+200] 00078 5f pop rdi 00079 5d pop rbp 0007a c3 ret 0 _glfwInitJoysticksWin32 ENDP _TEXT ENDS END