Based on Nekogram. Key additions: - Rebrand to FoxiGram (app name, APK name, applicationId com.foxigram.app) - Embedded Xray (VLESS+Reality) proxy client via JNI libxray.so - Bundled hidden one-tap proxies (LTE + WiFi), read-only in UI - Auto-restore proxy on restart, rebind to active network (LTE/WiFi) - Server credentials externalized to git-ignored XrayServers.java (+ template) - libxray Go source included; compiled .so, keystore, google-services.json ignored
502 lines
6.7 KiB
NASM
502 lines
6.7 KiB
NASM
; This file is generated from a similarly-named Perl script in the BoringSSL
|
|
; source tree. Do not edit by hand.
|
|
|
|
%ifidn __OUTPUT_FORMAT__, win64
|
|
default rel
|
|
%define XMMWORD
|
|
%define YMMWORD
|
|
%define ZMMWORD
|
|
%define _CET_ENDBR
|
|
|
|
%ifdef BORINGSSL_PREFIX
|
|
%include "boringssl_prefix_symbols_nasm.inc"
|
|
%endif
|
|
section .text code align=64
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
global gcm_gmult_ssse3
|
|
ALIGN 16
|
|
gcm_gmult_ssse3:
|
|
|
|
$L$SEH_begin_gcm_gmult_ssse3_1:
|
|
_CET_ENDBR
|
|
sub rsp,40
|
|
$L$SEH_prologue_gcm_gmult_ssse3_2:
|
|
movdqa XMMWORD[rsp],xmm6
|
|
$L$SEH_prologue_gcm_gmult_ssse3_3:
|
|
movdqa XMMWORD[16+rsp],xmm10
|
|
$L$SEH_prologue_gcm_gmult_ssse3_4:
|
|
$L$SEH_endprologue_gcm_gmult_ssse3_5:
|
|
movdqu xmm0,XMMWORD[rcx]
|
|
movdqa xmm10,XMMWORD[$L$reverse_bytes]
|
|
movdqa xmm2,XMMWORD[$L$low4_mask]
|
|
|
|
|
|
pshufb xmm0,xmm10
|
|
|
|
|
|
movdqa xmm1,xmm2
|
|
pandn xmm1,xmm0
|
|
psrld xmm1,4
|
|
pand xmm0,xmm2
|
|
|
|
|
|
|
|
|
|
pxor xmm2,xmm2
|
|
pxor xmm3,xmm3
|
|
mov rax,5
|
|
$L$oop_row_1:
|
|
movdqu xmm4,XMMWORD[rdx]
|
|
lea rdx,[16+rdx]
|
|
|
|
|
|
movdqa xmm6,xmm2
|
|
palignr xmm6,xmm3,1
|
|
movdqa xmm3,xmm6
|
|
psrldq xmm2,1
|
|
|
|
|
|
|
|
|
|
movdqa xmm5,xmm4
|
|
pshufb xmm4,xmm0
|
|
pshufb xmm5,xmm1
|
|
|
|
|
|
pxor xmm2,xmm5
|
|
|
|
|
|
|
|
movdqa xmm5,xmm4
|
|
psllq xmm5,60
|
|
movdqa xmm6,xmm5
|
|
pslldq xmm6,8
|
|
pxor xmm3,xmm6
|
|
|
|
|
|
psrldq xmm5,8
|
|
pxor xmm2,xmm5
|
|
psrlq xmm4,4
|
|
pxor xmm2,xmm4
|
|
|
|
sub rax,1
|
|
jnz NEAR $L$oop_row_1
|
|
|
|
|
|
|
|
pxor xmm2,xmm3
|
|
psrlq xmm3,1
|
|
pxor xmm2,xmm3
|
|
psrlq xmm3,1
|
|
pxor xmm2,xmm3
|
|
psrlq xmm3,5
|
|
pxor xmm2,xmm3
|
|
pxor xmm3,xmm3
|
|
mov rax,5
|
|
$L$oop_row_2:
|
|
movdqu xmm4,XMMWORD[rdx]
|
|
lea rdx,[16+rdx]
|
|
|
|
|
|
movdqa xmm6,xmm2
|
|
palignr xmm6,xmm3,1
|
|
movdqa xmm3,xmm6
|
|
psrldq xmm2,1
|
|
|
|
|
|
|
|
|
|
movdqa xmm5,xmm4
|
|
pshufb xmm4,xmm0
|
|
pshufb xmm5,xmm1
|
|
|
|
|
|
pxor xmm2,xmm5
|
|
|
|
|
|
|
|
movdqa xmm5,xmm4
|
|
psllq xmm5,60
|
|
movdqa xmm6,xmm5
|
|
pslldq xmm6,8
|
|
pxor xmm3,xmm6
|
|
|
|
|
|
psrldq xmm5,8
|
|
pxor xmm2,xmm5
|
|
psrlq xmm4,4
|
|
pxor xmm2,xmm4
|
|
|
|
sub rax,1
|
|
jnz NEAR $L$oop_row_2
|
|
|
|
|
|
|
|
pxor xmm2,xmm3
|
|
psrlq xmm3,1
|
|
pxor xmm2,xmm3
|
|
psrlq xmm3,1
|
|
pxor xmm2,xmm3
|
|
psrlq xmm3,5
|
|
pxor xmm2,xmm3
|
|
pxor xmm3,xmm3
|
|
mov rax,6
|
|
$L$oop_row_3:
|
|
movdqu xmm4,XMMWORD[rdx]
|
|
lea rdx,[16+rdx]
|
|
|
|
|
|
movdqa xmm6,xmm2
|
|
palignr xmm6,xmm3,1
|
|
movdqa xmm3,xmm6
|
|
psrldq xmm2,1
|
|
|
|
|
|
|
|
|
|
movdqa xmm5,xmm4
|
|
pshufb xmm4,xmm0
|
|
pshufb xmm5,xmm1
|
|
|
|
|
|
pxor xmm2,xmm5
|
|
|
|
|
|
|
|
movdqa xmm5,xmm4
|
|
psllq xmm5,60
|
|
movdqa xmm6,xmm5
|
|
pslldq xmm6,8
|
|
pxor xmm3,xmm6
|
|
|
|
|
|
psrldq xmm5,8
|
|
pxor xmm2,xmm5
|
|
psrlq xmm4,4
|
|
pxor xmm2,xmm4
|
|
|
|
sub rax,1
|
|
jnz NEAR $L$oop_row_3
|
|
|
|
|
|
|
|
pxor xmm2,xmm3
|
|
psrlq xmm3,1
|
|
pxor xmm2,xmm3
|
|
psrlq xmm3,1
|
|
pxor xmm2,xmm3
|
|
psrlq xmm3,5
|
|
pxor xmm2,xmm3
|
|
pxor xmm3,xmm3
|
|
|
|
pshufb xmm2,xmm10
|
|
movdqu XMMWORD[rcx],xmm2
|
|
|
|
|
|
pxor xmm0,xmm0
|
|
pxor xmm1,xmm1
|
|
pxor xmm2,xmm2
|
|
pxor xmm3,xmm3
|
|
pxor xmm4,xmm4
|
|
pxor xmm5,xmm5
|
|
pxor xmm6,xmm6
|
|
movdqa xmm6,XMMWORD[rsp]
|
|
movdqa xmm10,XMMWORD[16+rsp]
|
|
add rsp,40
|
|
ret
|
|
|
|
$L$SEH_end_gcm_gmult_ssse3_6:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
global gcm_ghash_ssse3
|
|
ALIGN 16
|
|
gcm_ghash_ssse3:
|
|
|
|
$L$SEH_begin_gcm_ghash_ssse3_1:
|
|
_CET_ENDBR
|
|
sub rsp,56
|
|
$L$SEH_prologue_gcm_ghash_ssse3_2:
|
|
movdqa XMMWORD[rsp],xmm6
|
|
$L$SEH_prologue_gcm_ghash_ssse3_3:
|
|
movdqa XMMWORD[16+rsp],xmm10
|
|
$L$SEH_prologue_gcm_ghash_ssse3_4:
|
|
movdqa XMMWORD[32+rsp],xmm11
|
|
$L$SEH_prologue_gcm_ghash_ssse3_5:
|
|
$L$SEH_endprologue_gcm_ghash_ssse3_6:
|
|
movdqu xmm0,XMMWORD[rcx]
|
|
movdqa xmm10,XMMWORD[$L$reverse_bytes]
|
|
movdqa xmm11,XMMWORD[$L$low4_mask]
|
|
|
|
|
|
and r9,-16
|
|
|
|
|
|
|
|
pshufb xmm0,xmm10
|
|
|
|
|
|
pxor xmm3,xmm3
|
|
$L$oop_ghash:
|
|
|
|
movdqu xmm1,XMMWORD[r8]
|
|
pshufb xmm1,xmm10
|
|
pxor xmm0,xmm1
|
|
|
|
|
|
movdqa xmm1,xmm11
|
|
pandn xmm1,xmm0
|
|
psrld xmm1,4
|
|
pand xmm0,xmm11
|
|
|
|
|
|
|
|
|
|
pxor xmm2,xmm2
|
|
|
|
mov rax,5
|
|
$L$oop_row_4:
|
|
movdqu xmm4,XMMWORD[rdx]
|
|
lea rdx,[16+rdx]
|
|
|
|
|
|
movdqa xmm6,xmm2
|
|
palignr xmm6,xmm3,1
|
|
movdqa xmm3,xmm6
|
|
psrldq xmm2,1
|
|
|
|
|
|
|
|
|
|
movdqa xmm5,xmm4
|
|
pshufb xmm4,xmm0
|
|
pshufb xmm5,xmm1
|
|
|
|
|
|
pxor xmm2,xmm5
|
|
|
|
|
|
|
|
movdqa xmm5,xmm4
|
|
psllq xmm5,60
|
|
movdqa xmm6,xmm5
|
|
pslldq xmm6,8
|
|
pxor xmm3,xmm6
|
|
|
|
|
|
psrldq xmm5,8
|
|
pxor xmm2,xmm5
|
|
psrlq xmm4,4
|
|
pxor xmm2,xmm4
|
|
|
|
sub rax,1
|
|
jnz NEAR $L$oop_row_4
|
|
|
|
|
|
|
|
pxor xmm2,xmm3
|
|
psrlq xmm3,1
|
|
pxor xmm2,xmm3
|
|
psrlq xmm3,1
|
|
pxor xmm2,xmm3
|
|
psrlq xmm3,5
|
|
pxor xmm2,xmm3
|
|
pxor xmm3,xmm3
|
|
mov rax,5
|
|
$L$oop_row_5:
|
|
movdqu xmm4,XMMWORD[rdx]
|
|
lea rdx,[16+rdx]
|
|
|
|
|
|
movdqa xmm6,xmm2
|
|
palignr xmm6,xmm3,1
|
|
movdqa xmm3,xmm6
|
|
psrldq xmm2,1
|
|
|
|
|
|
|
|
|
|
movdqa xmm5,xmm4
|
|
pshufb xmm4,xmm0
|
|
pshufb xmm5,xmm1
|
|
|
|
|
|
pxor xmm2,xmm5
|
|
|
|
|
|
|
|
movdqa xmm5,xmm4
|
|
psllq xmm5,60
|
|
movdqa xmm6,xmm5
|
|
pslldq xmm6,8
|
|
pxor xmm3,xmm6
|
|
|
|
|
|
psrldq xmm5,8
|
|
pxor xmm2,xmm5
|
|
psrlq xmm4,4
|
|
pxor xmm2,xmm4
|
|
|
|
sub rax,1
|
|
jnz NEAR $L$oop_row_5
|
|
|
|
|
|
|
|
pxor xmm2,xmm3
|
|
psrlq xmm3,1
|
|
pxor xmm2,xmm3
|
|
psrlq xmm3,1
|
|
pxor xmm2,xmm3
|
|
psrlq xmm3,5
|
|
pxor xmm2,xmm3
|
|
pxor xmm3,xmm3
|
|
mov rax,6
|
|
$L$oop_row_6:
|
|
movdqu xmm4,XMMWORD[rdx]
|
|
lea rdx,[16+rdx]
|
|
|
|
|
|
movdqa xmm6,xmm2
|
|
palignr xmm6,xmm3,1
|
|
movdqa xmm3,xmm6
|
|
psrldq xmm2,1
|
|
|
|
|
|
|
|
|
|
movdqa xmm5,xmm4
|
|
pshufb xmm4,xmm0
|
|
pshufb xmm5,xmm1
|
|
|
|
|
|
pxor xmm2,xmm5
|
|
|
|
|
|
|
|
movdqa xmm5,xmm4
|
|
psllq xmm5,60
|
|
movdqa xmm6,xmm5
|
|
pslldq xmm6,8
|
|
pxor xmm3,xmm6
|
|
|
|
|
|
psrldq xmm5,8
|
|
pxor xmm2,xmm5
|
|
psrlq xmm4,4
|
|
pxor xmm2,xmm4
|
|
|
|
sub rax,1
|
|
jnz NEAR $L$oop_row_6
|
|
|
|
|
|
|
|
pxor xmm2,xmm3
|
|
psrlq xmm3,1
|
|
pxor xmm2,xmm3
|
|
psrlq xmm3,1
|
|
pxor xmm2,xmm3
|
|
psrlq xmm3,5
|
|
pxor xmm2,xmm3
|
|
pxor xmm3,xmm3
|
|
movdqa xmm0,xmm2
|
|
|
|
|
|
lea rdx,[((-256))+rdx]
|
|
|
|
|
|
lea r8,[16+r8]
|
|
sub r9,16
|
|
jnz NEAR $L$oop_ghash
|
|
|
|
|
|
pshufb xmm0,xmm10
|
|
movdqu XMMWORD[rcx],xmm0
|
|
|
|
|
|
pxor xmm0,xmm0
|
|
pxor xmm1,xmm1
|
|
pxor xmm2,xmm2
|
|
pxor xmm3,xmm3
|
|
pxor xmm4,xmm4
|
|
pxor xmm5,xmm5
|
|
pxor xmm6,xmm6
|
|
movdqa xmm6,XMMWORD[rsp]
|
|
movdqa xmm10,XMMWORD[16+rsp]
|
|
movdqa xmm11,XMMWORD[32+rsp]
|
|
add rsp,56
|
|
ret
|
|
|
|
$L$SEH_end_gcm_ghash_ssse3_7:
|
|
|
|
|
|
section .rdata rdata align=8
|
|
ALIGN 16
|
|
|
|
|
|
$L$reverse_bytes:
|
|
DB 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0
|
|
|
|
$L$low4_mask:
|
|
DQ 0x0f0f0f0f0f0f0f0f,0x0f0f0f0f0f0f0f0f
|
|
section .text
|
|
|
|
section .pdata rdata align=4
|
|
ALIGN 4
|
|
DD $L$SEH_begin_gcm_gmult_ssse3_1 wrt ..imagebase
|
|
DD $L$SEH_end_gcm_gmult_ssse3_6 wrt ..imagebase
|
|
DD $L$SEH_info_gcm_gmult_ssse3_0 wrt ..imagebase
|
|
|
|
DD $L$SEH_begin_gcm_ghash_ssse3_1 wrt ..imagebase
|
|
DD $L$SEH_end_gcm_ghash_ssse3_7 wrt ..imagebase
|
|
DD $L$SEH_info_gcm_ghash_ssse3_0 wrt ..imagebase
|
|
|
|
|
|
section .xdata rdata align=8
|
|
ALIGN 4
|
|
$L$SEH_info_gcm_gmult_ssse3_0:
|
|
DB 1
|
|
DB $L$SEH_endprologue_gcm_gmult_ssse3_5-$L$SEH_begin_gcm_gmult_ssse3_1
|
|
DB 5
|
|
DB 0
|
|
DB $L$SEH_prologue_gcm_gmult_ssse3_4-$L$SEH_begin_gcm_gmult_ssse3_1
|
|
DB 168
|
|
DW 1
|
|
DB $L$SEH_prologue_gcm_gmult_ssse3_3-$L$SEH_begin_gcm_gmult_ssse3_1
|
|
DB 104
|
|
DW 0
|
|
DB $L$SEH_prologue_gcm_gmult_ssse3_2-$L$SEH_begin_gcm_gmult_ssse3_1
|
|
DB 66
|
|
|
|
DW 0
|
|
$L$SEH_info_gcm_ghash_ssse3_0:
|
|
DB 1
|
|
DB $L$SEH_endprologue_gcm_ghash_ssse3_6-$L$SEH_begin_gcm_ghash_ssse3_1
|
|
DB 7
|
|
DB 0
|
|
DB $L$SEH_prologue_gcm_ghash_ssse3_5-$L$SEH_begin_gcm_ghash_ssse3_1
|
|
DB 184
|
|
DW 2
|
|
DB $L$SEH_prologue_gcm_ghash_ssse3_4-$L$SEH_begin_gcm_ghash_ssse3_1
|
|
DB 168
|
|
DW 1
|
|
DB $L$SEH_prologue_gcm_ghash_ssse3_3-$L$SEH_begin_gcm_ghash_ssse3_1
|
|
DB 104
|
|
DW 0
|
|
DB $L$SEH_prologue_gcm_ghash_ssse3_2-$L$SEH_begin_gcm_ghash_ssse3_1
|
|
DB 98
|
|
|
|
DW 0
|
|
%else
|
|
; Work around https://bugzilla.nasm.us/show_bug.cgi?id=3392738
|
|
ret
|
|
%endif
|