123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074 |
- OPTION DOTNAME
- .text$ SEGMENT ALIGN(256) 'CODE'
- PUBLIC x25519_fe51_mul
- ALIGN 32
- x25519_fe51_mul PROC PUBLIC
- mov QWORD PTR[8+rsp],rdi ;WIN64 prologue
- mov QWORD PTR[16+rsp],rsi
- mov rax,rsp
- $L$SEH_begin_x25519_fe51_mul::
- mov rdi,rcx
- mov rsi,rdx
- mov rdx,r8
- push rbp
- push rbx
- push r12
- push r13
- push r14
- push r15
- lea rsp,QWORD PTR[((-40))+rsp]
- $L$fe51_mul_body::
- mov rax,QWORD PTR[rsi]
- mov r11,QWORD PTR[rdx]
- mov r12,QWORD PTR[8+rdx]
- mov r13,QWORD PTR[16+rdx]
- mov rbp,QWORD PTR[24+rdx]
- mov r14,QWORD PTR[32+rdx]
- mov QWORD PTR[32+rsp],rdi
- mov rdi,rax
- mul r11
- mov QWORD PTR[rsp],r11
- mov rbx,rax
- mov rax,rdi
- mov rcx,rdx
- mul r12
- mov QWORD PTR[8+rsp],r12
- mov r8,rax
- mov rax,rdi
- lea r15,QWORD PTR[r14*8+r14]
- mov r9,rdx
- mul r13
- mov QWORD PTR[16+rsp],r13
- mov r10,rax
- mov rax,rdi
- lea rdi,QWORD PTR[r15*2+r14]
- mov r11,rdx
- mul rbp
- mov r12,rax
- mov rax,QWORD PTR[rsi]
- mov r13,rdx
- mul r14
- mov r14,rax
- mov rax,QWORD PTR[8+rsi]
- mov r15,rdx
- mul rdi
- add rbx,rax
- mov rax,QWORD PTR[16+rsi]
- adc rcx,rdx
- mul rdi
- add r8,rax
- mov rax,QWORD PTR[24+rsi]
- adc r9,rdx
- mul rdi
- add r10,rax
- mov rax,QWORD PTR[32+rsi]
- adc r11,rdx
- mul rdi
- imul rdi,rbp,19
- add r12,rax
- mov rax,QWORD PTR[8+rsi]
- adc r13,rdx
- mul rbp
- mov rbp,QWORD PTR[16+rsp]
- add r14,rax
- mov rax,QWORD PTR[16+rsi]
- adc r15,rdx
- mul rdi
- add rbx,rax
- mov rax,QWORD PTR[24+rsi]
- adc rcx,rdx
- mul rdi
- add r8,rax
- mov rax,QWORD PTR[32+rsi]
- adc r9,rdx
- mul rdi
- imul rdi,rbp,19
- add r10,rax
- mov rax,QWORD PTR[8+rsi]
- adc r11,rdx
- mul rbp
- add r12,rax
- mov rax,QWORD PTR[16+rsi]
- adc r13,rdx
- mul rbp
- mov rbp,QWORD PTR[8+rsp]
- add r14,rax
- mov rax,QWORD PTR[24+rsi]
- adc r15,rdx
- mul rdi
- add rbx,rax
- mov rax,QWORD PTR[32+rsi]
- adc rcx,rdx
- mul rdi
- add r8,rax
- mov rax,QWORD PTR[8+rsi]
- adc r9,rdx
- mul rbp
- imul rdi,rbp,19
- add r10,rax
- mov rax,QWORD PTR[16+rsi]
- adc r11,rdx
- mul rbp
- add r12,rax
- mov rax,QWORD PTR[24+rsi]
- adc r13,rdx
- mul rbp
- mov rbp,QWORD PTR[rsp]
- add r14,rax
- mov rax,QWORD PTR[32+rsi]
- adc r15,rdx
- mul rdi
- add rbx,rax
- mov rax,QWORD PTR[8+rsi]
- adc rcx,rdx
- mul rbp
- add r8,rax
- mov rax,QWORD PTR[16+rsi]
- adc r9,rdx
- mul rbp
- add r10,rax
- mov rax,QWORD PTR[24+rsi]
- adc r11,rdx
- mul rbp
- add r12,rax
- mov rax,QWORD PTR[32+rsi]
- adc r13,rdx
- mul rbp
- add r14,rax
- adc r15,rdx
- mov rdi,QWORD PTR[32+rsp]
- jmp $L$reduce51
- $L$fe51_mul_epilogue::
- $L$SEH_end_x25519_fe51_mul::
- x25519_fe51_mul ENDP
- PUBLIC x25519_fe51_sqr
- ALIGN 32
- x25519_fe51_sqr PROC PUBLIC
- mov QWORD PTR[8+rsp],rdi ;WIN64 prologue
- mov QWORD PTR[16+rsp],rsi
- mov rax,rsp
- $L$SEH_begin_x25519_fe51_sqr::
- mov rdi,rcx
- mov rsi,rdx
- push rbp
- push rbx
- push r12
- push r13
- push r14
- push r15
- lea rsp,QWORD PTR[((-40))+rsp]
- $L$fe51_sqr_body::
- mov rax,QWORD PTR[rsi]
- mov r15,QWORD PTR[16+rsi]
- mov rbp,QWORD PTR[32+rsi]
- mov QWORD PTR[32+rsp],rdi
- lea r14,QWORD PTR[rax*1+rax]
- mul rax
- mov rbx,rax
- mov rax,QWORD PTR[8+rsi]
- mov rcx,rdx
- mul r14
- mov r8,rax
- mov rax,r15
- mov QWORD PTR[rsp],r15
- mov r9,rdx
- mul r14
- mov r10,rax
- mov rax,QWORD PTR[24+rsi]
- mov r11,rdx
- imul rdi,rbp,19
- mul r14
- mov r12,rax
- mov rax,rbp
- mov r13,rdx
- mul r14
- mov r14,rax
- mov rax,rbp
- mov r15,rdx
- mul rdi
- add r12,rax
- mov rax,QWORD PTR[8+rsi]
- adc r13,rdx
- mov rsi,QWORD PTR[24+rsi]
- lea rbp,QWORD PTR[rax*1+rax]
- mul rax
- add r10,rax
- mov rax,QWORD PTR[rsp]
- adc r11,rdx
- mul rbp
- add r12,rax
- mov rax,rbp
- adc r13,rdx
- mul rsi
- add r14,rax
- mov rax,rbp
- adc r15,rdx
- imul rbp,rsi,19
- mul rdi
- add rbx,rax
- lea rax,QWORD PTR[rsi*1+rsi]
- adc rcx,rdx
- mul rdi
- add r10,rax
- mov rax,rsi
- adc r11,rdx
- mul rbp
- add r8,rax
- mov rax,QWORD PTR[rsp]
- adc r9,rdx
- lea rsi,QWORD PTR[rax*1+rax]
- mul rax
- add r14,rax
- mov rax,rbp
- adc r15,rdx
- mul rsi
- add rbx,rax
- mov rax,rsi
- adc rcx,rdx
- mul rdi
- add r8,rax
- adc r9,rdx
- mov rdi,QWORD PTR[32+rsp]
- jmp $L$reduce51
- ALIGN 32
- $L$reduce51::
- mov rbp,07ffffffffffffh
- mov rdx,r10
- shr r10,51
- shl r11,13
- and rdx,rbp
- or r11,r10
- add r12,r11
- adc r13,0
- mov rax,rbx
- shr rbx,51
- shl rcx,13
- and rax,rbp
- or rcx,rbx
- add r8,rcx
- adc r9,0
- mov rbx,r12
- shr r12,51
- shl r13,13
- and rbx,rbp
- or r13,r12
- add r14,r13
- adc r15,0
- mov rcx,r8
- shr r8,51
- shl r9,13
- and rcx,rbp
- or r9,r8
- add rdx,r9
- mov r10,r14
- shr r14,51
- shl r15,13
- and r10,rbp
- or r15,r14
- lea r14,QWORD PTR[r15*8+r15]
- lea r15,QWORD PTR[r14*2+r15]
- add rax,r15
- mov r8,rdx
- and rdx,rbp
- shr r8,51
- add rbx,r8
- mov r9,rax
- and rax,rbp
- shr r9,51
- add rcx,r9
- mov QWORD PTR[rdi],rax
- mov QWORD PTR[8+rdi],rcx
- mov QWORD PTR[16+rdi],rdx
- mov QWORD PTR[24+rdi],rbx
- mov QWORD PTR[32+rdi],r10
- mov r15,QWORD PTR[40+rsp]
- mov r14,QWORD PTR[48+rsp]
- mov r13,QWORD PTR[56+rsp]
- mov r12,QWORD PTR[64+rsp]
- mov rbx,QWORD PTR[72+rsp]
- mov rbp,QWORD PTR[80+rsp]
- lea rsp,QWORD PTR[88+rsp]
- $L$fe51_sqr_epilogue::
- mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue
- mov rsi,QWORD PTR[16+rsp]
- DB 0F3h,0C3h ;repret
- $L$SEH_end_x25519_fe51_sqr::
- x25519_fe51_sqr ENDP
- PUBLIC x25519_fe51_mul121666
- ALIGN 32
- x25519_fe51_mul121666 PROC PUBLIC
- mov QWORD PTR[8+rsp],rdi ;WIN64 prologue
- mov QWORD PTR[16+rsp],rsi
- mov rax,rsp
- $L$SEH_begin_x25519_fe51_mul121666::
- mov rdi,rcx
- mov rsi,rdx
- push rbp
- push rbx
- push r12
- push r13
- push r14
- push r15
- lea rsp,QWORD PTR[((-40))+rsp]
- $L$fe51_mul121666_body::
- mov eax,121666
- mul QWORD PTR[rsi]
- mov rbx,rax
- mov eax,121666
- mov rcx,rdx
- mul QWORD PTR[8+rsi]
- mov r8,rax
- mov eax,121666
- mov r9,rdx
- mul QWORD PTR[16+rsi]
- mov r10,rax
- mov eax,121666
- mov r11,rdx
- mul QWORD PTR[24+rsi]
- mov r12,rax
- mov eax,121666
- mov r13,rdx
- mul QWORD PTR[32+rsi]
- mov r14,rax
- mov r15,rdx
- jmp $L$reduce51
- $L$fe51_mul121666_epilogue::
- $L$SEH_end_x25519_fe51_mul121666::
- x25519_fe51_mul121666 ENDP
- EXTERN OPENSSL_ia32cap_P:NEAR
- PUBLIC x25519_fe64_eligible
- ALIGN 32
- x25519_fe64_eligible PROC PUBLIC
- mov ecx,DWORD PTR[((OPENSSL_ia32cap_P+8))]
- xor eax,eax
- and ecx,080100h
- cmp ecx,080100h
- cmove eax,ecx
- DB 0F3h,0C3h ;repret
- x25519_fe64_eligible ENDP
- PUBLIC x25519_fe64_mul
- ALIGN 32
- x25519_fe64_mul PROC PUBLIC
- mov QWORD PTR[8+rsp],rdi ;WIN64 prologue
- mov QWORD PTR[16+rsp],rsi
- mov rax,rsp
- $L$SEH_begin_x25519_fe64_mul::
- mov rdi,rcx
- mov rsi,rdx
- mov rdx,r8
- push rbp
- push rbx
- push r12
- push r13
- push r14
- push r15
- push rdi
- lea rsp,QWORD PTR[((-16))+rsp]
- $L$fe64_mul_body::
- mov rax,rdx
- mov rbp,QWORD PTR[rdx]
- mov rdx,QWORD PTR[rsi]
- mov rcx,QWORD PTR[8+rax]
- mov r14,QWORD PTR[16+rax]
- mov r15,QWORD PTR[24+rax]
- mulx rax,r8,rbp
- xor edi,edi
- mulx rbx,r9,rcx
- adcx r9,rax
- mulx rax,r10,r14
- adcx r10,rbx
- mulx r12,r11,r15
- mov rdx,QWORD PTR[8+rsi]
- adcx r11,rax
- mov QWORD PTR[rsp],r14
- adcx r12,rdi
- mulx rbx,rax,rbp
- adox r9,rax
- adcx r10,rbx
- mulx rbx,rax,rcx
- adox r10,rax
- adcx r11,rbx
- mulx rbx,rax,r14
- adox r11,rax
- adcx r12,rbx
- mulx r13,rax,r15
- mov rdx,QWORD PTR[16+rsi]
- adox r12,rax
- adcx r13,rdi
- adox r13,rdi
- mulx rbx,rax,rbp
- adcx r10,rax
- adox r11,rbx
- mulx rbx,rax,rcx
- adcx r11,rax
- adox r12,rbx
- mulx rbx,rax,r14
- adcx r12,rax
- adox r13,rbx
- mulx r14,rax,r15
- mov rdx,QWORD PTR[24+rsi]
- adcx r13,rax
- adox r14,rdi
- adcx r14,rdi
- mulx rbx,rax,rbp
- adox r11,rax
- adcx r12,rbx
- mulx rbx,rax,rcx
- adox r12,rax
- adcx r13,rbx
- mulx rbx,rax,QWORD PTR[rsp]
- adox r13,rax
- adcx r14,rbx
- mulx r15,rax,r15
- mov edx,38
- adox r14,rax
- adcx r15,rdi
- adox r15,rdi
- jmp $L$reduce64
- $L$fe64_mul_epilogue::
- $L$SEH_end_x25519_fe64_mul::
- x25519_fe64_mul ENDP
- PUBLIC x25519_fe64_sqr
- ALIGN 32
- x25519_fe64_sqr PROC PUBLIC
- mov QWORD PTR[8+rsp],rdi ;WIN64 prologue
- mov QWORD PTR[16+rsp],rsi
- mov rax,rsp
- $L$SEH_begin_x25519_fe64_sqr::
- mov rdi,rcx
- mov rsi,rdx
- push rbp
- push rbx
- push r12
- push r13
- push r14
- push r15
- push rdi
- lea rsp,QWORD PTR[((-16))+rsp]
- $L$fe64_sqr_body::
- mov rdx,QWORD PTR[rsi]
- mov rcx,QWORD PTR[8+rsi]
- mov rbp,QWORD PTR[16+rsi]
- mov rsi,QWORD PTR[24+rsi]
- mulx r15,r8,rdx
- mulx rax,r9,rcx
- xor edi,edi
- mulx rbx,r10,rbp
- adcx r10,rax
- mulx r12,r11,rsi
- mov rdx,rcx
- adcx r11,rbx
- adcx r12,rdi
- mulx rbx,rax,rbp
- adox r11,rax
- adcx r12,rbx
- mulx r13,rax,rsi
- mov rdx,rbp
- adox r12,rax
- adcx r13,rdi
- mulx r14,rax,rsi
- mov rdx,rcx
- adox r13,rax
- adcx r14,rdi
- adox r14,rdi
- adcx r9,r9
- adox r9,r15
- adcx r10,r10
- mulx rbx,rax,rdx
- mov rdx,rbp
- adcx r11,r11
- adox r10,rax
- adcx r12,r12
- adox r11,rbx
- mulx rbx,rax,rdx
- mov rdx,rsi
- adcx r13,r13
- adox r12,rax
- adcx r14,r14
- adox r13,rbx
- mulx r15,rax,rdx
- mov edx,38
- adox r14,rax
- adcx r15,rdi
- adox r15,rdi
- jmp $L$reduce64
- ALIGN 32
- $L$reduce64::
- mulx rbx,rax,r12
- adcx r8,rax
- adox r9,rbx
- mulx rbx,rax,r13
- adcx r9,rax
- adox r10,rbx
- mulx rbx,rax,r14
- adcx r10,rax
- adox r11,rbx
- mulx r12,rax,r15
- adcx r11,rax
- adox r12,rdi
- adcx r12,rdi
- mov rdi,QWORD PTR[16+rsp]
- imul r12,rdx
- add r8,r12
- adc r9,0
- adc r10,0
- adc r11,0
- sbb rax,rax
- and rax,38
- add r8,rax
- mov QWORD PTR[8+rdi],r9
- mov QWORD PTR[16+rdi],r10
- mov QWORD PTR[24+rdi],r11
- mov QWORD PTR[rdi],r8
- mov r15,QWORD PTR[24+rsp]
- mov r14,QWORD PTR[32+rsp]
- mov r13,QWORD PTR[40+rsp]
- mov r12,QWORD PTR[48+rsp]
- mov rbx,QWORD PTR[56+rsp]
- mov rbp,QWORD PTR[64+rsp]
- lea rsp,QWORD PTR[72+rsp]
- $L$fe64_sqr_epilogue::
- mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue
- mov rsi,QWORD PTR[16+rsp]
- DB 0F3h,0C3h ;repret
- $L$SEH_end_x25519_fe64_sqr::
- x25519_fe64_sqr ENDP
- PUBLIC x25519_fe64_mul121666
- ALIGN 32
- x25519_fe64_mul121666 PROC PUBLIC
- mov QWORD PTR[8+rsp],rdi ;WIN64 prologue
- mov QWORD PTR[16+rsp],rsi
- mov rax,rsp
- $L$SEH_begin_x25519_fe64_mul121666::
- mov rdi,rcx
- mov rsi,rdx
- $L$fe64_mul121666_body::
- mov edx,121666
- mulx rcx,r8,QWORD PTR[rsi]
- mulx rax,r9,QWORD PTR[8+rsi]
- add r9,rcx
- mulx rcx,r10,QWORD PTR[16+rsi]
- adc r10,rax
- mulx rax,r11,QWORD PTR[24+rsi]
- adc r11,rcx
- adc rax,0
- imul rax,rax,38
- add r8,rax
- adc r9,0
- adc r10,0
- adc r11,0
- sbb rax,rax
- and rax,38
- add r8,rax
- mov QWORD PTR[8+rdi],r9
- mov QWORD PTR[16+rdi],r10
- mov QWORD PTR[24+rdi],r11
- mov QWORD PTR[rdi],r8
- $L$fe64_mul121666_epilogue::
- mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue
- mov rsi,QWORD PTR[16+rsp]
- DB 0F3h,0C3h ;repret
- $L$SEH_end_x25519_fe64_mul121666::
- x25519_fe64_mul121666 ENDP
- PUBLIC x25519_fe64_add
- ALIGN 32
- x25519_fe64_add PROC PUBLIC
- mov QWORD PTR[8+rsp],rdi ;WIN64 prologue
- mov QWORD PTR[16+rsp],rsi
- mov rax,rsp
- $L$SEH_begin_x25519_fe64_add::
- mov rdi,rcx
- mov rsi,rdx
- mov rdx,r8
- $L$fe64_add_body::
- mov r8,QWORD PTR[rsi]
- mov r9,QWORD PTR[8+rsi]
- mov r10,QWORD PTR[16+rsi]
- mov r11,QWORD PTR[24+rsi]
- add r8,QWORD PTR[rdx]
- adc r9,QWORD PTR[8+rdx]
- adc r10,QWORD PTR[16+rdx]
- adc r11,QWORD PTR[24+rdx]
- sbb rax,rax
- and rax,38
- add r8,rax
- adc r9,0
- adc r10,0
- mov QWORD PTR[8+rdi],r9
- adc r11,0
- mov QWORD PTR[16+rdi],r10
- sbb rax,rax
- mov QWORD PTR[24+rdi],r11
- and rax,38
- add r8,rax
- mov QWORD PTR[rdi],r8
- $L$fe64_add_epilogue::
- mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue
- mov rsi,QWORD PTR[16+rsp]
- DB 0F3h,0C3h ;repret
- $L$SEH_end_x25519_fe64_add::
- x25519_fe64_add ENDP
- PUBLIC x25519_fe64_sub
- ALIGN 32
- x25519_fe64_sub PROC PUBLIC
- mov QWORD PTR[8+rsp],rdi ;WIN64 prologue
- mov QWORD PTR[16+rsp],rsi
- mov rax,rsp
- $L$SEH_begin_x25519_fe64_sub::
- mov rdi,rcx
- mov rsi,rdx
- mov rdx,r8
- $L$fe64_sub_body::
- mov r8,QWORD PTR[rsi]
- mov r9,QWORD PTR[8+rsi]
- mov r10,QWORD PTR[16+rsi]
- mov r11,QWORD PTR[24+rsi]
- sub r8,QWORD PTR[rdx]
- sbb r9,QWORD PTR[8+rdx]
- sbb r10,QWORD PTR[16+rdx]
- sbb r11,QWORD PTR[24+rdx]
- sbb rax,rax
- and rax,38
- sub r8,rax
- sbb r9,0
- sbb r10,0
- mov QWORD PTR[8+rdi],r9
- sbb r11,0
- mov QWORD PTR[16+rdi],r10
- sbb rax,rax
- mov QWORD PTR[24+rdi],r11
- and rax,38
- sub r8,rax
- mov QWORD PTR[rdi],r8
- $L$fe64_sub_epilogue::
- mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue
- mov rsi,QWORD PTR[16+rsp]
- DB 0F3h,0C3h ;repret
- $L$SEH_end_x25519_fe64_sub::
- x25519_fe64_sub ENDP
- PUBLIC x25519_fe64_tobytes
- ALIGN 32
- x25519_fe64_tobytes PROC PUBLIC
- mov QWORD PTR[8+rsp],rdi ;WIN64 prologue
- mov QWORD PTR[16+rsp],rsi
- mov rax,rsp
- $L$SEH_begin_x25519_fe64_tobytes::
- mov rdi,rcx
- mov rsi,rdx
- $L$fe64_to_body::
- mov r8,QWORD PTR[rsi]
- mov r9,QWORD PTR[8+rsi]
- mov r10,QWORD PTR[16+rsi]
- mov r11,QWORD PTR[24+rsi]
- lea rax,QWORD PTR[r11*1+r11]
- sar r11,63
- shr rax,1
- and r11,19
- add r11,19
- add r8,r11
- adc r9,0
- adc r10,0
- adc rax,0
- lea r11,QWORD PTR[rax*1+rax]
- sar rax,63
- shr r11,1
- not rax
- and rax,19
- sub r8,rax
- sbb r9,0
- sbb r10,0
- sbb r11,0
- mov QWORD PTR[rdi],r8
- mov QWORD PTR[8+rdi],r9
- mov QWORD PTR[16+rdi],r10
- mov QWORD PTR[24+rdi],r11
- $L$fe64_to_epilogue::
- mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue
- mov rsi,QWORD PTR[16+rsp]
- DB 0F3h,0C3h ;repret
- $L$SEH_end_x25519_fe64_tobytes::
- x25519_fe64_tobytes ENDP
- DB 88,50,53,53,49,57,32,112,114,105,109,105,116,105,118,101
- DB 115,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82
- DB 89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112
- DB 114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0
- EXTERN __imp_RtlVirtualUnwind:NEAR
- ALIGN 16
- short_handler PROC PRIVATE
- push rsi
- push rdi
- push rbx
- push rbp
- push r12
- push r13
- push r14
- push r15
- pushfq
- sub rsp,64
- mov rax,QWORD PTR[120+r8]
- mov rbx,QWORD PTR[248+r8]
- mov rsi,QWORD PTR[8+r9]
- mov r11,QWORD PTR[56+r9]
- mov r10d,DWORD PTR[r11]
- lea r10,QWORD PTR[r10*1+rsi]
- cmp rbx,r10
- jb $L$common_seh_tail
- mov rax,QWORD PTR[152+r8]
- jmp $L$common_seh_tail
- short_handler ENDP
- ALIGN 16
- full_handler PROC PRIVATE
- push rsi
- push rdi
- push rbx
- push rbp
- push r12
- push r13
- push r14
- push r15
- pushfq
- sub rsp,64
- mov rax,QWORD PTR[120+r8]
- mov rbx,QWORD PTR[248+r8]
- mov rsi,QWORD PTR[8+r9]
- mov r11,QWORD PTR[56+r9]
- mov r10d,DWORD PTR[r11]
- lea r10,QWORD PTR[r10*1+rsi]
- cmp rbx,r10
- jb $L$common_seh_tail
- mov rax,QWORD PTR[152+r8]
- mov r10d,DWORD PTR[4+r11]
- lea r10,QWORD PTR[r10*1+rsi]
- cmp rbx,r10
- jae $L$common_seh_tail
- mov r10d,DWORD PTR[8+r11]
- lea rax,QWORD PTR[r10*1+rax]
- mov rbp,QWORD PTR[((-8))+rax]
- mov rbx,QWORD PTR[((-16))+rax]
- mov r12,QWORD PTR[((-24))+rax]
- mov r13,QWORD PTR[((-32))+rax]
- mov r14,QWORD PTR[((-40))+rax]
- mov r15,QWORD PTR[((-48))+rax]
- mov QWORD PTR[144+r8],rbx
- mov QWORD PTR[160+r8],rbp
- mov QWORD PTR[216+r8],r12
- mov QWORD PTR[224+r8],r13
- mov QWORD PTR[232+r8],r14
- mov QWORD PTR[240+r8],r15
- $L$common_seh_tail::
- mov rdi,QWORD PTR[8+rax]
- mov rsi,QWORD PTR[16+rax]
- mov QWORD PTR[152+r8],rax
- mov QWORD PTR[168+r8],rsi
- mov QWORD PTR[176+r8],rdi
- mov rdi,QWORD PTR[40+r9]
- mov rsi,r8
- mov ecx,154
- DD 0a548f3fch
- mov rsi,r9
- xor rcx,rcx
- mov rdx,QWORD PTR[8+rsi]
- mov r8,QWORD PTR[rsi]
- mov r9,QWORD PTR[16+rsi]
- mov r10,QWORD PTR[40+rsi]
- lea r11,QWORD PTR[56+rsi]
- lea r12,QWORD PTR[24+rsi]
- mov QWORD PTR[32+rsp],r10
- mov QWORD PTR[40+rsp],r11
- mov QWORD PTR[48+rsp],r12
- mov QWORD PTR[56+rsp],rcx
- call QWORD PTR[__imp_RtlVirtualUnwind]
- mov eax,1
- add rsp,64
- popfq
- pop r15
- pop r14
- pop r13
- pop r12
- pop rbp
- pop rbx
- pop rdi
- pop rsi
- DB 0F3h,0C3h ;repret
- full_handler ENDP
- .text$ ENDS
- .pdata SEGMENT READONLY ALIGN(4)
- ALIGN 4
- DD imagerel $L$SEH_begin_x25519_fe51_mul
- DD imagerel $L$SEH_end_x25519_fe51_mul
- DD imagerel $L$SEH_info_x25519_fe51_mul
- DD imagerel $L$SEH_begin_x25519_fe51_sqr
- DD imagerel $L$SEH_end_x25519_fe51_sqr
- DD imagerel $L$SEH_info_x25519_fe51_sqr
- DD imagerel $L$SEH_begin_x25519_fe51_mul121666
- DD imagerel $L$SEH_end_x25519_fe51_mul121666
- DD imagerel $L$SEH_info_x25519_fe51_mul121666
- DD imagerel $L$SEH_begin_x25519_fe64_mul
- DD imagerel $L$SEH_end_x25519_fe64_mul
- DD imagerel $L$SEH_info_x25519_fe64_mul
- DD imagerel $L$SEH_begin_x25519_fe64_sqr
- DD imagerel $L$SEH_end_x25519_fe64_sqr
- DD imagerel $L$SEH_info_x25519_fe64_sqr
- DD imagerel $L$SEH_begin_x25519_fe64_mul121666
- DD imagerel $L$SEH_end_x25519_fe64_mul121666
- DD imagerel $L$SEH_info_x25519_fe64_mul121666
- DD imagerel $L$SEH_begin_x25519_fe64_add
- DD imagerel $L$SEH_end_x25519_fe64_add
- DD imagerel $L$SEH_info_x25519_fe64_add
- DD imagerel $L$SEH_begin_x25519_fe64_sub
- DD imagerel $L$SEH_end_x25519_fe64_sub
- DD imagerel $L$SEH_info_x25519_fe64_sub
- DD imagerel $L$SEH_begin_x25519_fe64_tobytes
- DD imagerel $L$SEH_end_x25519_fe64_tobytes
- DD imagerel $L$SEH_info_x25519_fe64_tobytes
- .pdata ENDS
- .xdata SEGMENT READONLY ALIGN(8)
- ALIGN 8
- $L$SEH_info_x25519_fe51_mul::
- DB 9,0,0,0
- DD imagerel full_handler
- DD imagerel $L$fe51_mul_body,imagerel $L$fe51_mul_epilogue
- DD 88,0
- $L$SEH_info_x25519_fe51_sqr::
- DB 9,0,0,0
- DD imagerel full_handler
- DD imagerel $L$fe51_sqr_body,imagerel $L$fe51_sqr_epilogue
- DD 88,0
- $L$SEH_info_x25519_fe51_mul121666::
- DB 9,0,0,0
- DD imagerel full_handler
- DD imagerel $L$fe51_mul121666_body,imagerel $L$fe51_mul121666_epilogue
- DD 88,0
- $L$SEH_info_x25519_fe64_mul::
- DB 9,0,0,0
- DD imagerel full_handler
- DD imagerel $L$fe64_mul_body,imagerel $L$fe64_mul_epilogue
- DD 72,0
- $L$SEH_info_x25519_fe64_sqr::
- DB 9,0,0,0
- DD imagerel full_handler
- DD imagerel $L$fe64_sqr_body,imagerel $L$fe64_sqr_epilogue
- DD 72,0
- $L$SEH_info_x25519_fe64_mul121666::
- DB 9,0,0,0
- DD imagerel short_handler
- DD imagerel $L$fe64_mul121666_body,imagerel $L$fe64_mul121666_epilogue
- $L$SEH_info_x25519_fe64_add::
- DB 9,0,0,0
- DD imagerel short_handler
- DD imagerel $L$fe64_add_body,imagerel $L$fe64_add_epilogue
- $L$SEH_info_x25519_fe64_sub::
- DB 9,0,0,0
- DD imagerel short_handler
- DD imagerel $L$fe64_sub_body,imagerel $L$fe64_sub_epilogue
- $L$SEH_info_x25519_fe64_tobytes::
- DB 9,0,0,0
- DD imagerel short_handler
- DD imagerel $L$fe64_to_body,imagerel $L$fe64_to_epilogue
- .xdata ENDS
- END
|