; Listing generated by Microsoft (R) Optimizing Compiler Version 19.41.34120.0 include listing.inc INCLUDELIB MSVCRTD INCLUDELIB OLDNAMES _DATA SEGMENT COMM infolog:BYTE:0200H _DATA ENDS msvcjmc SEGMENT __E55737E3_ssc_framework@h DB 01H __7583A0D2_mmintrin@h DB 01H __DDA0A690_concurrencysal@h DB 01H __9ECC08BE_sal@h DB 01H __E05D733A_vadefs@h DB 01H __6A355E0E_vcruntime@h DB 01H __1B0272D9_corecrt@h DB 01H __45DED006_corecrt_malloc@h DB 01H __FA77ED4C_malloc@h DB 01H __EAE0325A_xmmintrin@h DB 01H __0ED14FEE_winpackagefamily@h DB 01H __F92EF742_winapifamily@h DB 01H __22E515EB_sdkddkver@h DB 01H __A09A3A7D_excpt@h DB 01H __AC8FA393_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 __74484FB3_corecrt_wctype@h DB 01H __1EC467ED_ctype@h DB 01H __98517906_kernelspecs@h DB 01H __D3497022_basetsd@h DB 01H __61CC25A1_errno@h DB 01H __890838BD_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 __A9371419_ssc_internal@h DB 01H __44420885_corecrt_stdio_config@h DB 01H __AB601D8D_corecrt_wstdio@h DB 01H __C1EC35D3_stdio@h DB 01H __13F5961F_stddef@h DB 01H __FD6DBD68_corecrt_search@h DB 01H __E2E33A61_corecrt_wstdlib@h DB 01H __26263363_limits@h DB 01H __6E5ACABA_stdlib@h DB 01H __C8BE8E53_stb_image@h DB 01H __98501D5C_stdint@h DB 01H __0A6C9B88_khrplatform@h DB 01H __6327F2D5_gl@h DB 01H __D76F496D_wgl@h DB 01H __06782E22_glfw3@h DB 01H __8F82BB96_emmintrin@h DB 01H __5023D31F_pmmintrin@h DB 01H __E0FAA09D_tmmintrin@h DB 01H __C9C1B51E_smmintrin@h DB 01H __ACA33CD2_nmmintrin@h DB 01H __7918C69C_wmmintrin@h DB 01H __B28C8B9B_zmmintrin@h DB 01H __85982951_immintrin@h DB 01H __19139D6C_assert@h DB 01H __54E1226D_StgSharpC@h DB 01H __C7934478_ssc_intrinsic@h DB 01H __49910190_quick_hash@c DB 01H msvcjmc ENDS PUBLIC quick_string_hash PUBLIC __JustMyCode_Default EXTRN memcpy:PROC EXTRN memset: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 __security_cookie:QWORD ; COMDAT pdata pdata SEGMENT $pdata$quick_string_hash DD imagerel $LN5 DD imagerel $LN5+306 DD imagerel $unwind$quick_string_hash pdata 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 _DATA SEGMENT hash_mask DD 0745fH DD 03c1H DD 01fH DD 01H _DATA ENDS ; COMDAT voltbl voltbl SEGMENT _volmd DW 03aH DW 0119H voltbl ENDS ; COMDAT xdata xdata SEGMENT $unwind$quick_string_hash DD 025054119H DD 01122317H DD 0700b0033H DD 0500aH DD imagerel __GSHandlerCheck DD 0188H xdata ENDS ; COMDAT CONST CONST SEGMENT quick_string_hash$rtcName$0 DB 062H DB 075H DB 066H DB 066H DB 065H DB 072H DB 00H ORG $+9 quick_string_hash$rtcVarDesc DD 078H DD 010H DQ FLAT:quick_string_hash$rtcName$0 ORG $+48 quick_string_hash$rtcFrameData DD 01H DD 00H DQ FLAT:quick_string_hash$rtcVarDesc CONST 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\内核源代码\StgSharpC\quick_hash.c ; COMDAT quick_string_hash _TEXT SEGMENT source$ = 16 source_length$ = 52 buffer$4 = 88 ret$ = 144 __$ArrayPad$ = 360 str$ = 400 length$ = 408 quick_string_hash PROC ; COMDAT ; 7 : { $LN5: 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 98 01 00 00 sub rsp, 408 ; 00000198H 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 2e 00 00 00 mov ecx, 46 ; 0000002eH 00021 b8 cc cc cc cc mov eax, -858993460 ; ccccccccH 00026 f3 ab rep stosd 00028 48 8b 8c 24 b8 01 00 00 mov rcx, QWORD PTR [rsp+440] 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 68 01 00 00 mov QWORD PTR __$ArrayPad$[rbp], rax 00041 48 8d 0d 00 00 00 00 lea rcx, OFFSET FLAT:__49910190_quick_hash@c 00048 e8 00 00 00 00 call __CheckForDebuggerJustMyCode 0004d 90 npad 1 ; 8 : __m128i source; ; 9 : int source_length = length * 2; 0004e 8b 85 98 01 00 00 mov eax, DWORD PTR length$[rbp] 00054 d1 e0 shl eax, 1 00056 89 45 34 mov DWORD PTR source_length$[rbp], eax ; 10 : if (source_length > 15) { 00059 83 7d 34 0f cmp DWORD PTR source_length$[rbp], 15 0005d 7e 12 jle SHORT $LN2@quick_stri ; 11 : source = _mm_lddqu_si128((__m128i *)str); 0005f 48 8b 85 90 01 00 00 mov rax, QWORD PTR str$[rbp] 00066 f2 0f f0 00 lddqu xmm0, XMMWORD PTR [rax] 0006a 66 0f 7f 45 10 movdqa XMMWORD PTR source$[rbp], xmm0 ; 12 : } else { 0006f eb 40 jmp SHORT $LN3@quick_stri $LN2@quick_stri: ; 13 : byte buffer[16]; ; 14 : memcpy(buffer, str, source_length); 00071 48 63 45 34 movsxd rax, DWORD PTR source_length$[rbp] 00075 4c 8b c0 mov r8, rax 00078 48 8b 95 90 01 00 00 mov rdx, QWORD PTR str$[rbp] 0007f 48 8d 4d 58 lea rcx, QWORD PTR buffer$4[rbp] 00083 e8 00 00 00 00 call memcpy 00088 90 npad 1 ; 15 : memset(buffer + source_length - 1, 0, 16 - source_length); 00089 b8 10 00 00 00 mov eax, 16 0008e 2b 45 34 sub eax, DWORD PTR source_length$[rbp] 00091 48 98 cdqe 00093 48 63 4d 34 movsxd rcx, DWORD PTR source_length$[rbp] 00097 48 8d 4c 0d 57 lea rcx, QWORD PTR buffer$4[rbp+rcx-1] 0009c 4c 8b c0 mov r8, rax 0009f 33 d2 xor edx, edx 000a1 e8 00 00 00 00 call memset 000a6 90 npad 1 ; 16 : source = _mm_lddqu_si128((__m128i *)buffer); 000a7 f2 0f f0 45 58 lddqu xmm0, XMMWORD PTR buffer$4[rbp] 000ac 66 0f 7f 45 10 movdqa XMMWORD PTR source$[rbp], xmm0 $LN3@quick_stri: ; 17 : } ; 18 : ; 19 : __m128i ret = _mm_mullo_epi32(source, hash_mask); 000b1 66 0f 6f 45 10 movdqa xmm0, XMMWORD PTR source$[rbp] 000b6 66 0f 38 40 05 00 00 00 00 pmulld xmm0, XMMWORD PTR hash_mask 000bf 66 0f 7f 85 90 00 00 00 movdqa XMMWORD PTR ret$[rbp], xmm0 ; 20 : ret = _mm_hadd_epi32(ret, ret); 000c7 66 0f 6f 85 90 00 00 00 movdqa xmm0, XMMWORD PTR ret$[rbp] 000cf 66 0f 38 02 85 90 00 00 00 phaddd xmm0, XMMWORD PTR ret$[rbp] 000d8 66 0f 7f 85 90 00 00 00 movdqa XMMWORD PTR ret$[rbp], xmm0 ; 21 : ret = _mm_hadd_epi32(ret, ret); 000e0 66 0f 6f 85 90 00 00 00 movdqa xmm0, XMMWORD PTR ret$[rbp] 000e8 66 0f 38 02 85 90 00 00 00 phaddd xmm0, XMMWORD PTR ret$[rbp] 000f1 66 0f 7f 85 90 00 00 00 movdqa XMMWORD PTR ret$[rbp], xmm0 ; 22 : ; 23 : return _mm_cvtsi128_si32(ret); 000f9 66 0f 6f 85 90 00 00 00 movdqa xmm0, XMMWORD PTR ret$[rbp] 00101 66 0f 7e c0 movd eax, xmm0 ; 24 : } 00105 8b f8 mov edi, eax 00107 48 8d 4d e0 lea rcx, QWORD PTR [rbp-32] 0010b 48 8d 15 00 00 00 00 lea rdx, OFFSET FLAT:quick_string_hash$rtcFrameData 00112 e8 00 00 00 00 call _RTC_CheckStackVars 00117 8b c7 mov eax, edi 00119 48 8b 8d 68 01 00 00 mov rcx, QWORD PTR __$ArrayPad$[rbp] 00120 48 33 cd xor rcx, rbp 00123 e8 00 00 00 00 call __security_check_cookie 00128 48 8d a5 78 01 00 00 lea rsp, QWORD PTR [rbp+376] 0012f 5f pop rdi 00130 5d pop rbp 00131 c3 ret 0 quick_string_hash ENDP _TEXT ENDS END