--- /dev/null
+; WARNING: do not edit!\r
+; Generated from openssl/crypto/x86cpuid.pl\r
+;\r
+; Copyright 2004-2020 The OpenSSL Project Authors. All Rights Reserved.\r
+;\r
+; Licensed under the OpenSSL license (the "License"). You may not use\r
+; this file except in compliance with the License. You can obtain a copy\r
+; in the file LICENSE in the source distribution or at\r
+; https://www.openssl.org/source/license.html\r
+\r
+%ifidn __OUTPUT_FORMAT__,obj\r
+section code use32 class=code align=64\r
+%elifidn __OUTPUT_FORMAT__,win32\r
+$@feat.00 equ 1\r
+section .text code align=64\r
+%else\r
+section .text code\r
+%endif\r
+global _OPENSSL_ia32_cpuid\r
+align 16\r
+_OPENSSL_ia32_cpuid:\r
+L$_OPENSSL_ia32_cpuid_begin:\r
+ push ebp\r
+ push ebx\r
+ push esi\r
+ push edi\r
+ xor edx,edx\r
+ pushfd\r
+ pop eax\r
+ mov ecx,eax\r
+ xor eax,2097152\r
+ push eax\r
+ popfd\r
+ pushfd\r
+ pop eax\r
+ xor ecx,eax\r
+ xor eax,eax\r
+ mov esi,DWORD [20+esp]\r
+ mov DWORD [8+esi],eax\r
+ bt ecx,21\r
+ jnc NEAR L$000nocpuid\r
+ cpuid\r
+ mov edi,eax\r
+ xor eax,eax\r
+ cmp ebx,1970169159\r
+ setne al\r
+ mov ebp,eax\r
+ cmp edx,1231384169\r
+ setne al\r
+ or ebp,eax\r
+ cmp ecx,1818588270\r
+ setne al\r
+ or ebp,eax\r
+ jz NEAR L$001intel\r
+ cmp ebx,1752462657\r
+ setne al\r
+ mov esi,eax\r
+ cmp edx,1769238117\r
+ setne al\r
+ or esi,eax\r
+ cmp ecx,1145913699\r
+ setne al\r
+ or esi,eax\r
+ jnz NEAR L$001intel\r
+ mov eax,2147483648\r
+ cpuid\r
+ cmp eax,2147483649\r
+ jb NEAR L$001intel\r
+ mov esi,eax\r
+ mov eax,2147483649\r
+ cpuid\r
+ or ebp,ecx\r
+ and ebp,2049\r
+ cmp esi,2147483656\r
+ jb NEAR L$001intel\r
+ mov eax,2147483656\r
+ cpuid\r
+ movzx esi,cl\r
+ inc esi\r
+ mov eax,1\r
+ xor ecx,ecx\r
+ cpuid\r
+ bt edx,28\r
+ jnc NEAR L$002generic\r
+ shr ebx,16\r
+ and ebx,255\r
+ cmp ebx,esi\r
+ ja NEAR L$002generic\r
+ and edx,4026531839\r
+ jmp NEAR L$002generic\r
+L$001intel:\r
+ cmp edi,4\r
+ mov esi,-1\r
+ jb NEAR L$003nocacheinfo\r
+ mov eax,4\r
+ mov ecx,0\r
+ cpuid\r
+ mov esi,eax\r
+ shr esi,14\r
+ and esi,4095\r
+L$003nocacheinfo:\r
+ mov eax,1\r
+ xor ecx,ecx\r
+ cpuid\r
+ and edx,3220176895\r
+ cmp ebp,0\r
+ jne NEAR L$004notintel\r
+ or edx,1073741824\r
+ and ah,15\r
+ cmp ah,15\r
+ jne NEAR L$004notintel\r
+ or edx,1048576\r
+L$004notintel:\r
+ bt edx,28\r
+ jnc NEAR L$002generic\r
+ and edx,4026531839\r
+ cmp esi,0\r
+ je NEAR L$002generic\r
+ or edx,268435456\r
+ shr ebx,16\r
+ cmp bl,1\r
+ ja NEAR L$002generic\r
+ and edx,4026531839\r
+L$002generic:\r
+ and ebp,2048\r
+ and ecx,4294965247\r
+ mov esi,edx\r
+ or ebp,ecx\r
+ cmp edi,7\r
+ mov edi,DWORD [20+esp]\r
+ jb NEAR L$005no_extended_info\r
+ mov eax,7\r
+ xor ecx,ecx\r
+ cpuid\r
+ mov DWORD [8+edi],ebx\r
+L$005no_extended_info:\r
+ bt ebp,27\r
+ jnc NEAR L$006clear_avx\r
+ xor ecx,ecx\r
+db 15,1,208\r
+ and eax,6\r
+ cmp eax,6\r
+ je NEAR L$007done\r
+ cmp eax,2\r
+ je NEAR L$006clear_avx\r
+L$008clear_xmm:\r
+ and ebp,4261412861\r
+ and esi,4278190079\r
+L$006clear_avx:\r
+ and ebp,4026525695\r
+ and DWORD [8+edi],4294967263\r
+L$007done:\r
+ mov eax,esi\r
+ mov edx,ebp\r
+L$000nocpuid:\r
+ pop edi\r
+ pop esi\r
+ pop ebx\r
+ pop ebp\r
+ ret\r
+;extern _OPENSSL_ia32cap_P\r
+global _OPENSSL_rdtsc\r
+align 16\r
+_OPENSSL_rdtsc:\r
+L$_OPENSSL_rdtsc_begin:\r
+ xor eax,eax\r
+ xor edx,edx\r
+ lea ecx,[_OPENSSL_ia32cap_P]\r
+ bt DWORD [ecx],4\r
+ jnc NEAR L$009notsc\r
+ rdtsc\r
+L$009notsc:\r
+ ret\r
+global _OPENSSL_instrument_halt\r
+align 16\r
+_OPENSSL_instrument_halt:\r
+L$_OPENSSL_instrument_halt_begin:\r
+ lea ecx,[_OPENSSL_ia32cap_P]\r
+ bt DWORD [ecx],4\r
+ jnc NEAR L$010nohalt\r
+dd 2421723150\r
+ and eax,3\r
+ jnz NEAR L$010nohalt\r
+ pushfd\r
+ pop eax\r
+ bt eax,9\r
+ jnc NEAR L$010nohalt\r
+ rdtsc\r
+ push edx\r
+ push eax\r
+ hlt\r
+ rdtsc\r
+ sub eax,DWORD [esp]\r
+ sbb edx,DWORD [4+esp]\r
+ add esp,8\r
+ ret\r
+L$010nohalt:\r
+ xor eax,eax\r
+ xor edx,edx\r
+ ret\r
+global _OPENSSL_far_spin\r
+align 16\r
+_OPENSSL_far_spin:\r
+L$_OPENSSL_far_spin_begin:\r
+ pushfd\r
+ pop eax\r
+ bt eax,9\r
+ jnc NEAR L$011nospin\r
+ mov eax,DWORD [4+esp]\r
+ mov ecx,DWORD [8+esp]\r
+dd 2430111262\r
+ xor eax,eax\r
+ mov edx,DWORD [ecx]\r
+ jmp NEAR L$012spin\r
+align 16\r
+L$012spin:\r
+ inc eax\r
+ cmp edx,DWORD [ecx]\r
+ je NEAR L$012spin\r
+dd 529567888\r
+ ret\r
+L$011nospin:\r
+ xor eax,eax\r
+ xor edx,edx\r
+ ret\r
+global _OPENSSL_wipe_cpu\r
+align 16\r
+_OPENSSL_wipe_cpu:\r
+L$_OPENSSL_wipe_cpu_begin:\r
+ xor eax,eax\r
+ xor edx,edx\r
+ lea ecx,[_OPENSSL_ia32cap_P]\r
+ mov ecx,DWORD [ecx]\r
+ bt DWORD [ecx],1\r
+ jnc NEAR L$013no_x87\r
+dd 4007259865,4007259865,4007259865,4007259865,2430851995\r
+L$013no_x87:\r
+ lea eax,[4+esp]\r
+ ret\r
+global _OPENSSL_atomic_add\r
+align 16\r
+_OPENSSL_atomic_add:\r
+L$_OPENSSL_atomic_add_begin:\r
+ mov edx,DWORD [4+esp]\r
+ mov ecx,DWORD [8+esp]\r
+ push ebx\r
+ nop\r
+ mov eax,DWORD [edx]\r
+L$014spin:\r
+ lea ebx,[ecx*1+eax]\r
+ nop\r
+dd 447811568\r
+ jne NEAR L$014spin\r
+ mov eax,ebx\r
+ pop ebx\r
+ ret\r
+global _OPENSSL_cleanse\r
+align 16\r
+_OPENSSL_cleanse:\r
+L$_OPENSSL_cleanse_begin:\r
+ mov edx,DWORD [4+esp]\r
+ mov ecx,DWORD [8+esp]\r
+ xor eax,eax\r
+ cmp ecx,7\r
+ jae NEAR L$015lot\r
+ cmp ecx,0\r
+ je NEAR L$016ret\r
+L$017little:\r
+ mov BYTE [edx],al\r
+ sub ecx,1\r
+ lea edx,[1+edx]\r
+ jnz NEAR L$017little\r
+L$016ret:\r
+ ret\r
+align 16\r
+L$015lot:\r
+ test edx,3\r
+ jz NEAR L$018aligned\r
+ mov BYTE [edx],al\r
+ lea ecx,[ecx-1]\r
+ lea edx,[1+edx]\r
+ jmp NEAR L$015lot\r
+L$018aligned:\r
+ mov DWORD [edx],eax\r
+ lea ecx,[ecx-4]\r
+ test ecx,-4\r
+ lea edx,[4+edx]\r
+ jnz NEAR L$018aligned\r
+ cmp ecx,0\r
+ jne NEAR L$017little\r
+ ret\r
+global _CRYPTO_memcmp\r
+align 16\r
+_CRYPTO_memcmp:\r
+L$_CRYPTO_memcmp_begin:\r
+ push esi\r
+ push edi\r
+ mov esi,DWORD [12+esp]\r
+ mov edi,DWORD [16+esp]\r
+ mov ecx,DWORD [20+esp]\r
+ xor eax,eax\r
+ xor edx,edx\r
+ cmp ecx,0\r
+ je NEAR L$019no_data\r
+L$020loop:\r
+ mov dl,BYTE [esi]\r
+ lea esi,[1+esi]\r
+ xor dl,BYTE [edi]\r
+ lea edi,[1+edi]\r
+ or al,dl\r
+ dec ecx\r
+ jnz NEAR L$020loop\r
+ neg eax\r
+ shr eax,31\r
+L$019no_data:\r
+ pop edi\r
+ pop esi\r
+ ret\r
+global _OPENSSL_instrument_bus\r
+align 16\r
+_OPENSSL_instrument_bus:\r
+L$_OPENSSL_instrument_bus_begin:\r
+ push ebp\r
+ push ebx\r
+ push esi\r
+ push edi\r
+ mov eax,0\r
+ pop edi\r
+ pop esi\r
+ pop ebx\r
+ pop ebp\r
+ ret\r
+global _OPENSSL_instrument_bus2\r
+align 16\r
+_OPENSSL_instrument_bus2:\r
+L$_OPENSSL_instrument_bus2_begin:\r
+ push ebp\r
+ push ebx\r
+ push esi\r
+ push edi\r
+ mov eax,0\r
+ pop edi\r
+ pop esi\r
+ pop ebx\r
+ pop ebp\r
+ ret\r
+global _OPENSSL_ia32_rdrand_bytes\r
+align 16\r
+_OPENSSL_ia32_rdrand_bytes:\r
+L$_OPENSSL_ia32_rdrand_bytes_begin:\r
+ push edi\r
+ push ebx\r
+ xor eax,eax\r
+ mov edi,DWORD [12+esp]\r
+ mov ebx,DWORD [16+esp]\r
+ cmp ebx,0\r
+ je NEAR L$021done\r
+ mov ecx,8\r
+L$022loop:\r
+db 15,199,242\r
+ jc NEAR L$023break\r
+ loop L$022loop\r
+ jmp NEAR L$021done\r
+align 16\r
+L$023break:\r
+ cmp ebx,4\r
+ jb NEAR L$024tail\r
+ mov DWORD [edi],edx\r
+ lea edi,[4+edi]\r
+ add eax,4\r
+ sub ebx,4\r
+ jz NEAR L$021done\r
+ mov ecx,8\r
+ jmp NEAR L$022loop\r
+align 16\r
+L$024tail:\r
+ mov BYTE [edi],dl\r
+ lea edi,[1+edi]\r
+ inc eax\r
+ shr edx,8\r
+ dec ebx\r
+ jnz NEAR L$024tail\r
+L$021done:\r
+ xor edx,edx\r
+ pop ebx\r
+ pop edi\r
+ ret\r
+global _OPENSSL_ia32_rdseed_bytes\r
+align 16\r
+_OPENSSL_ia32_rdseed_bytes:\r
+L$_OPENSSL_ia32_rdseed_bytes_begin:\r
+ push edi\r
+ push ebx\r
+ xor eax,eax\r
+ mov edi,DWORD [12+esp]\r
+ mov ebx,DWORD [16+esp]\r
+ cmp ebx,0\r
+ je NEAR L$025done\r
+ mov ecx,8\r
+L$026loop:\r
+db 15,199,250\r
+ jc NEAR L$027break\r
+ loop L$026loop\r
+ jmp NEAR L$025done\r
+align 16\r
+L$027break:\r
+ cmp ebx,4\r
+ jb NEAR L$028tail\r
+ mov DWORD [edi],edx\r
+ lea edi,[4+edi]\r
+ add eax,4\r
+ sub ebx,4\r
+ jz NEAR L$025done\r
+ mov ecx,8\r
+ jmp NEAR L$026loop\r
+align 16\r
+L$028tail:\r
+ mov BYTE [edi],dl\r
+ lea edi,[1+edi]\r
+ inc eax\r
+ shr edx,8\r
+ dec ebx\r
+ jnz NEAR L$028tail\r
+L$025done:\r
+ xor edx,edx\r
+ pop ebx\r
+ pop edi\r
+ ret\r
+segment .bss\r
+common _OPENSSL_ia32cap_P 16\r
+segment .CRT$XCU data align=4\r
+extern _OPENSSL_cpuid_setup\r
+dd _OPENSSL_cpuid_setup\r