| OLD | NEW |
| 1 OPTION» DOTNAME | 1 default»rel |
| 2 .text$» SEGMENT ALIGN(256) 'CODE' | 2 %define XMMWORD |
| 3 EXTERN» OPENSSL_ia32cap_P:NEAR | 3 %define YMMWORD |
| 4 %define ZMMWORD |
| 5 section».text code align=64 |
| 4 | 6 |
| 5 PUBLIC» asm_RC4 | 7 EXTERN» OPENSSL_ia32cap_P |
| 8 |
| 9 global» asm_RC4 |
| 6 | 10 |
| 7 ALIGN 16 | 11 ALIGN 16 |
| 8 asm_RC4»PROC PUBLIC | 12 asm_RC4: |
| 9 » mov» QWORD PTR[8+rsp],rdi» ;WIN64 prologue | 13 » mov» QWORD[8+rsp],rdi» ;WIN64 prologue |
| 10 » mov» QWORD PTR[16+rsp],rsi | 14 » mov» QWORD[16+rsp],rsi |
| 11 mov rax,rsp | 15 mov rax,rsp |
| 12 $L$SEH_begin_asm_RC4:: | 16 $L$SEH_begin_asm_RC4: |
| 13 mov rdi,rcx | 17 mov rdi,rcx |
| 14 mov rsi,rdx | 18 mov rsi,rdx |
| 15 mov rdx,r8 | 19 mov rdx,r8 |
| 16 mov rcx,r9 | 20 mov rcx,r9 |
| 17 | 21 |
| 18 | 22 |
| 19 or rsi,rsi | 23 or rsi,rsi |
| 20 » jne» $L$entry | 24 » jne» NEAR $L$entry |
| 21 » mov» rdi,QWORD PTR[8+rsp]» ;WIN64 epilogue | 25 » mov» rdi,QWORD[8+rsp]» ;WIN64 epilogue |
| 22 » mov» rsi,QWORD PTR[16+rsp] | 26 » mov» rsi,QWORD[16+rsp] |
| 23 DB 0F3h,0C3h ;repret | 27 DB 0F3h,0C3h ;repret |
| 24 $L$entry:: | 28 $L$entry: |
| 25 push rbx | 29 push rbx |
| 26 push r12 | 30 push r12 |
| 27 push r13 | 31 push r13 |
| 28 $L$prologue:: | 32 $L$prologue: |
| 29 mov r11,rsi | 33 mov r11,rsi |
| 30 mov r12,rdx | 34 mov r12,rdx |
| 31 mov r13,rcx | 35 mov r13,rcx |
| 32 xor r10,r10 | 36 xor r10,r10 |
| 33 xor rcx,rcx | 37 xor rcx,rcx |
| 34 | 38 |
| 35 » lea» rdi,QWORD PTR[8+rdi] | 39 » lea» rdi,[8+rdi] |
| 36 » mov» r10b,BYTE PTR[((-8))+rdi] | 40 » mov» r10b,BYTE[((-8))+rdi] |
| 37 » mov» cl,BYTE PTR[((-4))+rdi] | 41 » mov» cl,BYTE[((-4))+rdi] |
| 38 » cmp» DWORD PTR[256+rdi],-1 | 42 » cmp» DWORD[256+rdi],-1 |
| 39 » je» $L$RC4_CHAR | 43 » je» NEAR $L$RC4_CHAR |
| 40 » mov» r8d,DWORD PTR[OPENSSL_ia32cap_P] | 44 » mov» r8d,DWORD[OPENSSL_ia32cap_P] |
| 41 xor rbx,rbx | 45 xor rbx,rbx |
| 42 inc r10b | 46 inc r10b |
| 43 sub rbx,r10 | 47 sub rbx,r10 |
| 44 sub r13,r12 | 48 sub r13,r12 |
| 45 » mov» eax,DWORD PTR[r10*4+rdi] | 49 » mov» eax,DWORD[r10*4+rdi] |
| 46 test r11,-16 | 50 test r11,-16 |
| 47 » jz» $L$loop1 | 51 » jz» NEAR $L$loop1 |
| 48 bt r8d,30 | 52 bt r8d,30 |
| 49 » jc» $L$intel | 53 » jc» NEAR $L$intel |
| 50 and rbx,7 | 54 and rbx,7 |
| 51 » lea» rsi,QWORD PTR[1+r10] | 55 » lea» rsi,[1+r10] |
| 52 » jz» $L$oop8 | 56 » jz» NEAR $L$oop8 |
| 53 sub r11,rbx | 57 sub r11,rbx |
| 54 $L$oop8_warmup:: | 58 $L$oop8_warmup: |
| 55 » add» cl,al | 59 » add» cl,al |
| 56 » mov» edx,DWORD PTR[rcx*4+rdi] | 60 » mov» edx,DWORD[rcx*4+rdi] |
| 57 » mov» DWORD PTR[rcx*4+rdi],eax | 61 » mov» DWORD[rcx*4+rdi],eax |
| 58 » mov» DWORD PTR[r10*4+rdi],edx | 62 » mov» DWORD[r10*4+rdi],edx |
| 59 add al,dl | 63 add al,dl |
| 60 inc r10b | 64 inc r10b |
| 61 » mov» edx,DWORD PTR[rax*4+rdi] | 65 » mov» edx,DWORD[rax*4+rdi] |
| 62 » mov» eax,DWORD PTR[r10*4+rdi] | 66 » mov» eax,DWORD[r10*4+rdi] |
| 63 » xor» dl,BYTE PTR[r12] | 67 » xor» dl,BYTE[r12] |
| 64 » mov» BYTE PTR[r13*1+r12],dl | 68 » mov» BYTE[r13*1+r12],dl |
| 65 » lea» r12,QWORD PTR[1+r12] | 69 » lea» r12,[1+r12] |
| 66 dec rbx | 70 dec rbx |
| 67 » jnz» $L$oop8_warmup | 71 » jnz» NEAR $L$oop8_warmup |
| 68 | 72 |
| 69 » lea» rsi,QWORD PTR[1+r10] | 73 » lea» rsi,[1+r10] |
| 70 » jmp» $L$oop8 | 74 » jmp» NEAR $L$oop8 |
| 71 ALIGN» 16 | 75 ALIGN» 16 |
| 72 $L$oop8:: | 76 $L$oop8: |
| 73 » add» cl,al | 77 » add» cl,al |
| 74 » mov» edx,DWORD PTR[rcx*4+rdi] | 78 » mov» edx,DWORD[rcx*4+rdi] |
| 75 » mov» DWORD PTR[rcx*4+rdi],eax | 79 » mov» DWORD[rcx*4+rdi],eax |
| 76 » mov» ebx,DWORD PTR[rsi*4+rdi] | 80 » mov» ebx,DWORD[rsi*4+rdi] |
| 77 » ror» r8,8 | 81 » ror» r8,8 |
| 78 » mov» DWORD PTR[r10*4+rdi],edx | 82 » mov» DWORD[r10*4+rdi],edx |
| 79 » add» dl,al | 83 » add» dl,al |
| 80 » mov» r8b,BYTE PTR[rdx*4+rdi] | 84 » mov» r8b,BYTE[rdx*4+rdi] |
| 81 » add» cl,bl | 85 » add» cl,bl |
| 82 » mov» edx,DWORD PTR[rcx*4+rdi] | 86 » mov» edx,DWORD[rcx*4+rdi] |
| 83 » mov» DWORD PTR[rcx*4+rdi],ebx | 87 » mov» DWORD[rcx*4+rdi],ebx |
| 84 » mov» eax,DWORD PTR[4+rsi*4+rdi] | 88 » mov» eax,DWORD[4+rsi*4+rdi] |
| 85 » ror» r8,8 | 89 » ror» r8,8 |
| 86 » mov» DWORD PTR[4+r10*4+rdi],edx | 90 » mov» DWORD[4+r10*4+rdi],edx |
| 87 » add» dl,bl | 91 » add» dl,bl |
| 88 » mov» r8b,BYTE PTR[rdx*4+rdi] | 92 » mov» r8b,BYTE[rdx*4+rdi] |
| 89 » add» cl,al | 93 » add» cl,al |
| 90 » mov» edx,DWORD PTR[rcx*4+rdi] | 94 » mov» edx,DWORD[rcx*4+rdi] |
| 91 » mov» DWORD PTR[rcx*4+rdi],eax | 95 » mov» DWORD[rcx*4+rdi],eax |
| 92 » mov» ebx,DWORD PTR[8+rsi*4+rdi] | 96 » mov» ebx,DWORD[8+rsi*4+rdi] |
| 93 » ror» r8,8 | 97 » ror» r8,8 |
| 94 » mov» DWORD PTR[8+r10*4+rdi],edx | 98 » mov» DWORD[8+r10*4+rdi],edx |
| 95 » add» dl,al | 99 » add» dl,al |
| 96 » mov» r8b,BYTE PTR[rdx*4+rdi] | 100 » mov» r8b,BYTE[rdx*4+rdi] |
| 97 » add» cl,bl | 101 » add» cl,bl |
| 98 » mov» edx,DWORD PTR[rcx*4+rdi] | 102 » mov» edx,DWORD[rcx*4+rdi] |
| 99 » mov» DWORD PTR[rcx*4+rdi],ebx | 103 » mov» DWORD[rcx*4+rdi],ebx |
| 100 » mov» eax,DWORD PTR[12+rsi*4+rdi] | 104 » mov» eax,DWORD[12+rsi*4+rdi] |
| 101 » ror» r8,8 | 105 » ror» r8,8 |
| 102 » mov» DWORD PTR[12+r10*4+rdi],edx | 106 » mov» DWORD[12+r10*4+rdi],edx |
| 103 » add» dl,bl | 107 » add» dl,bl |
| 104 » mov» r8b,BYTE PTR[rdx*4+rdi] | 108 » mov» r8b,BYTE[rdx*4+rdi] |
| 105 » add» cl,al | 109 » add» cl,al |
| 106 » mov» edx,DWORD PTR[rcx*4+rdi] | 110 » mov» edx,DWORD[rcx*4+rdi] |
| 107 » mov» DWORD PTR[rcx*4+rdi],eax | 111 » mov» DWORD[rcx*4+rdi],eax |
| 108 » mov» ebx,DWORD PTR[16+rsi*4+rdi] | 112 » mov» ebx,DWORD[16+rsi*4+rdi] |
| 109 » ror» r8,8 | 113 » ror» r8,8 |
| 110 » mov» DWORD PTR[16+r10*4+rdi],edx | 114 » mov» DWORD[16+r10*4+rdi],edx |
| 111 » add» dl,al | 115 » add» dl,al |
| 112 » mov» r8b,BYTE PTR[rdx*4+rdi] | 116 » mov» r8b,BYTE[rdx*4+rdi] |
| 113 » add» cl,bl | 117 » add» cl,bl |
| 114 » mov» edx,DWORD PTR[rcx*4+rdi] | 118 » mov» edx,DWORD[rcx*4+rdi] |
| 115 » mov» DWORD PTR[rcx*4+rdi],ebx | 119 » mov» DWORD[rcx*4+rdi],ebx |
| 116 » mov» eax,DWORD PTR[20+rsi*4+rdi] | 120 » mov» eax,DWORD[20+rsi*4+rdi] |
| 117 » ror» r8,8 | 121 » ror» r8,8 |
| 118 » mov» DWORD PTR[20+r10*4+rdi],edx | 122 » mov» DWORD[20+r10*4+rdi],edx |
| 119 » add» dl,bl | 123 » add» dl,bl |
| 120 » mov» r8b,BYTE PTR[rdx*4+rdi] | 124 » mov» r8b,BYTE[rdx*4+rdi] |
| 121 » add» cl,al | 125 » add» cl,al |
| 122 » mov» edx,DWORD PTR[rcx*4+rdi] | 126 » mov» edx,DWORD[rcx*4+rdi] |
| 123 » mov» DWORD PTR[rcx*4+rdi],eax | 127 » mov» DWORD[rcx*4+rdi],eax |
| 124 » mov» ebx,DWORD PTR[24+rsi*4+rdi] | 128 » mov» ebx,DWORD[24+rsi*4+rdi] |
| 125 » ror» r8,8 | 129 » ror» r8,8 |
| 126 » mov» DWORD PTR[24+r10*4+rdi],edx | 130 » mov» DWORD[24+r10*4+rdi],edx |
| 127 » add» dl,al | 131 » add» dl,al |
| 128 » mov» r8b,BYTE PTR[rdx*4+rdi] | 132 » mov» r8b,BYTE[rdx*4+rdi] |
| 129 add sil,8 | 133 add sil,8 |
| 130 add cl,bl | 134 add cl,bl |
| 131 » mov» edx,DWORD PTR[rcx*4+rdi] | 135 » mov» edx,DWORD[rcx*4+rdi] |
| 132 » mov» DWORD PTR[rcx*4+rdi],ebx | 136 » mov» DWORD[rcx*4+rdi],ebx |
| 133 » mov» eax,DWORD PTR[((-4))+rsi*4+rdi] | 137 » mov» eax,DWORD[((-4))+rsi*4+rdi] |
| 134 » ror» r8,8 | 138 » ror» r8,8 |
| 135 » mov» DWORD PTR[28+r10*4+rdi],edx | 139 » mov» DWORD[28+r10*4+rdi],edx |
| 136 » add» dl,bl | 140 » add» dl,bl |
| 137 » mov» r8b,BYTE PTR[rdx*4+rdi] | 141 » mov» r8b,BYTE[rdx*4+rdi] |
| 138 add r10b,8 | 142 add r10b,8 |
| 139 ror r8,8 | 143 ror r8,8 |
| 140 sub r11,8 | 144 sub r11,8 |
| 141 | 145 |
| 142 » xor» r8,QWORD PTR[r12] | 146 » xor» r8,QWORD[r12] |
| 143 » mov» QWORD PTR[r13*1+r12],r8 | 147 » mov» QWORD[r13*1+r12],r8 |
| 144 » lea» r12,QWORD PTR[8+r12] | 148 » lea» r12,[8+r12] |
| 145 | 149 |
| 146 test r11,-8 | 150 test r11,-8 |
| 147 » jnz» $L$oop8 | 151 » jnz» NEAR $L$oop8 |
| 148 cmp r11,0 | 152 cmp r11,0 |
| 149 » jne» $L$loop1 | 153 » jne» NEAR $L$loop1 |
| 150 » jmp» $L$exit | 154 » jmp» NEAR $L$exit |
| 151 | 155 |
| 152 ALIGN» 16 | 156 ALIGN» 16 |
| 153 $L$intel:: | 157 $L$intel: |
| 154 test r11,-32 | 158 test r11,-32 |
| 155 » jz» $L$loop1 | 159 » jz» NEAR $L$loop1 |
| 156 and rbx,15 | 160 and rbx,15 |
| 157 » jz» $L$oop16_is_hot | 161 » jz» NEAR $L$oop16_is_hot |
| 158 sub r11,rbx | 162 sub r11,rbx |
| 159 $L$oop16_warmup:: | 163 $L$oop16_warmup: |
| 160 » add» cl,al | 164 » add» cl,al |
| 161 » mov» edx,DWORD PTR[rcx*4+rdi] | 165 » mov» edx,DWORD[rcx*4+rdi] |
| 162 » mov» DWORD PTR[rcx*4+rdi],eax | 166 » mov» DWORD[rcx*4+rdi],eax |
| 163 » mov» DWORD PTR[r10*4+rdi],edx | 167 » mov» DWORD[r10*4+rdi],edx |
| 164 add al,dl | 168 add al,dl |
| 165 inc r10b | 169 inc r10b |
| 166 » mov» edx,DWORD PTR[rax*4+rdi] | 170 » mov» edx,DWORD[rax*4+rdi] |
| 167 » mov» eax,DWORD PTR[r10*4+rdi] | 171 » mov» eax,DWORD[r10*4+rdi] |
| 168 » xor» dl,BYTE PTR[r12] | 172 » xor» dl,BYTE[r12] |
| 169 » mov» BYTE PTR[r13*1+r12],dl | 173 » mov» BYTE[r13*1+r12],dl |
| 170 » lea» r12,QWORD PTR[1+r12] | 174 » lea» r12,[1+r12] |
| 171 dec rbx | 175 dec rbx |
| 172 » jnz» $L$oop16_warmup | 176 » jnz» NEAR $L$oop16_warmup |
| 173 | 177 |
| 174 mov rbx,rcx | 178 mov rbx,rcx |
| 175 xor rcx,rcx | 179 xor rcx,rcx |
| 176 mov cl,bl | 180 mov cl,bl |
| 177 | 181 |
| 178 $L$oop16_is_hot:: | 182 $L$oop16_is_hot: |
| 179 » lea» rsi,QWORD PTR[r10*4+rdi] | 183 » lea» rsi,[r10*4+rdi] |
| 180 » add» cl,al | 184 » add» cl,al |
| 181 » mov» edx,DWORD PTR[rcx*4+rdi] | 185 » mov» edx,DWORD[rcx*4+rdi] |
| 182 pxor xmm0,xmm0 | 186 pxor xmm0,xmm0 |
| 183 » mov» DWORD PTR[rcx*4+rdi],eax | 187 » mov» DWORD[rcx*4+rdi],eax |
| 184 » add» al,dl | 188 » add» al,dl |
| 185 » mov» ebx,DWORD PTR[4+rsi] | 189 » mov» ebx,DWORD[4+rsi] |
| 186 » movzx» eax,al | 190 » movzx» eax,al |
| 187 » mov» DWORD PTR[rsi],edx | 191 » mov» DWORD[rsi],edx |
| 188 » add» cl,bl | 192 » add» cl,bl |
| 189 » pinsrw» xmm0,WORD PTR[rax*4+rdi],0 | 193 » pinsrw» xmm0,WORD[rax*4+rdi],0 |
| 190 » jmp» $L$oop16_enter | 194 » jmp» NEAR $L$oop16_enter |
| 191 ALIGN» 16 | 195 ALIGN» 16 |
| 192 $L$oop16:: | 196 $L$oop16: |
| 193 » add» cl,al | 197 » add» cl,al |
| 194 » mov» edx,DWORD PTR[rcx*4+rdi] | 198 » mov» edx,DWORD[rcx*4+rdi] |
| 195 pxor xmm2,xmm0 | 199 pxor xmm2,xmm0 |
| 196 psllq xmm1,8 | 200 psllq xmm1,8 |
| 197 pxor xmm0,xmm0 | 201 pxor xmm0,xmm0 |
| 198 » mov» DWORD PTR[rcx*4+rdi],eax | 202 » mov» DWORD[rcx*4+rdi],eax |
| 199 » add» al,dl | 203 » add» al,dl |
| 200 » mov» ebx,DWORD PTR[4+rsi] | 204 » mov» ebx,DWORD[4+rsi] |
| 201 » movzx» eax,al | 205 » movzx» eax,al |
| 202 » mov» DWORD PTR[rsi],edx | 206 » mov» DWORD[rsi],edx |
| 203 pxor xmm2,xmm1 | 207 pxor xmm2,xmm1 |
| 204 add cl,bl | 208 add cl,bl |
| 205 » pinsrw» xmm0,WORD PTR[rax*4+rdi],0 | 209 » pinsrw» xmm0,WORD[rax*4+rdi],0 |
| 206 » movdqu» XMMWORD PTR[r13*1+r12],xmm2 | 210 » movdqu» XMMWORD[r13*1+r12],xmm2 |
| 207 » lea» r12,QWORD PTR[16+r12] | 211 » lea» r12,[16+r12] |
| 208 $L$oop16_enter:: | 212 $L$oop16_enter: |
| 209 » mov» edx,DWORD PTR[rcx*4+rdi] | 213 » mov» edx,DWORD[rcx*4+rdi] |
| 210 pxor xmm1,xmm1 | 214 pxor xmm1,xmm1 |
| 211 » mov» DWORD PTR[rcx*4+rdi],ebx | 215 » mov» DWORD[rcx*4+rdi],ebx |
| 212 » add» bl,dl | 216 » add» bl,dl |
| 213 » mov» eax,DWORD PTR[8+rsi] | 217 » mov» eax,DWORD[8+rsi] |
| 214 » movzx» ebx,bl | 218 » movzx» ebx,bl |
| 215 » mov» DWORD PTR[4+rsi],edx | 219 » mov» DWORD[4+rsi],edx |
| 216 » add» cl,al | 220 » add» cl,al |
| 217 » pinsrw» xmm1,WORD PTR[rbx*4+rdi],0 | 221 » pinsrw» xmm1,WORD[rbx*4+rdi],0 |
| 218 » mov» edx,DWORD PTR[rcx*4+rdi] | 222 » mov» edx,DWORD[rcx*4+rdi] |
| 219 » mov» DWORD PTR[rcx*4+rdi],eax | 223 » mov» DWORD[rcx*4+rdi],eax |
| 220 » add» al,dl | 224 » add» al,dl |
| 221 » mov» ebx,DWORD PTR[12+rsi] | 225 » mov» ebx,DWORD[12+rsi] |
| 222 » movzx» eax,al | 226 » movzx» eax,al |
| 223 » mov» DWORD PTR[8+rsi],edx | 227 » mov» DWORD[8+rsi],edx |
| 224 » add» cl,bl | 228 » add» cl,bl |
| 225 » pinsrw» xmm0,WORD PTR[rax*4+rdi],1 | 229 » pinsrw» xmm0,WORD[rax*4+rdi],1 |
| 226 » mov» edx,DWORD PTR[rcx*4+rdi] | 230 » mov» edx,DWORD[rcx*4+rdi] |
| 227 » mov» DWORD PTR[rcx*4+rdi],ebx | 231 » mov» DWORD[rcx*4+rdi],ebx |
| 228 » add» bl,dl | 232 » add» bl,dl |
| 229 » mov» eax,DWORD PTR[16+rsi] | 233 » mov» eax,DWORD[16+rsi] |
| 230 » movzx» ebx,bl | 234 » movzx» ebx,bl |
| 231 » mov» DWORD PTR[12+rsi],edx | 235 » mov» DWORD[12+rsi],edx |
| 232 » add» cl,al | 236 » add» cl,al |
| 233 » pinsrw» xmm1,WORD PTR[rbx*4+rdi],1 | 237 » pinsrw» xmm1,WORD[rbx*4+rdi],1 |
| 234 » mov» edx,DWORD PTR[rcx*4+rdi] | 238 » mov» edx,DWORD[rcx*4+rdi] |
| 235 » mov» DWORD PTR[rcx*4+rdi],eax | 239 » mov» DWORD[rcx*4+rdi],eax |
| 236 » add» al,dl | 240 » add» al,dl |
| 237 » mov» ebx,DWORD PTR[20+rsi] | 241 » mov» ebx,DWORD[20+rsi] |
| 238 » movzx» eax,al | 242 » movzx» eax,al |
| 239 » mov» DWORD PTR[16+rsi],edx | 243 » mov» DWORD[16+rsi],edx |
| 240 » add» cl,bl | 244 » add» cl,bl |
| 241 » pinsrw» xmm0,WORD PTR[rax*4+rdi],2 | 245 » pinsrw» xmm0,WORD[rax*4+rdi],2 |
| 242 » mov» edx,DWORD PTR[rcx*4+rdi] | 246 » mov» edx,DWORD[rcx*4+rdi] |
| 243 » mov» DWORD PTR[rcx*4+rdi],ebx | 247 » mov» DWORD[rcx*4+rdi],ebx |
| 244 » add» bl,dl | 248 » add» bl,dl |
| 245 » mov» eax,DWORD PTR[24+rsi] | 249 » mov» eax,DWORD[24+rsi] |
| 246 » movzx» ebx,bl | 250 » movzx» ebx,bl |
| 247 » mov» DWORD PTR[20+rsi],edx | 251 » mov» DWORD[20+rsi],edx |
| 248 » add» cl,al | 252 » add» cl,al |
| 249 » pinsrw» xmm1,WORD PTR[rbx*4+rdi],2 | 253 » pinsrw» xmm1,WORD[rbx*4+rdi],2 |
| 250 » mov» edx,DWORD PTR[rcx*4+rdi] | 254 » mov» edx,DWORD[rcx*4+rdi] |
| 251 » mov» DWORD PTR[rcx*4+rdi],eax | 255 » mov» DWORD[rcx*4+rdi],eax |
| 252 » add» al,dl | 256 » add» al,dl |
| 253 » mov» ebx,DWORD PTR[28+rsi] | 257 » mov» ebx,DWORD[28+rsi] |
| 254 » movzx» eax,al | 258 » movzx» eax,al |
| 255 » mov» DWORD PTR[24+rsi],edx | 259 » mov» DWORD[24+rsi],edx |
| 256 » add» cl,bl | 260 » add» cl,bl |
| 257 » pinsrw» xmm0,WORD PTR[rax*4+rdi],3 | 261 » pinsrw» xmm0,WORD[rax*4+rdi],3 |
| 258 » mov» edx,DWORD PTR[rcx*4+rdi] | 262 » mov» edx,DWORD[rcx*4+rdi] |
| 259 » mov» DWORD PTR[rcx*4+rdi],ebx | 263 » mov» DWORD[rcx*4+rdi],ebx |
| 260 » add» bl,dl | 264 » add» bl,dl |
| 261 » mov» eax,DWORD PTR[32+rsi] | 265 » mov» eax,DWORD[32+rsi] |
| 262 » movzx» ebx,bl | 266 » movzx» ebx,bl |
| 263 » mov» DWORD PTR[28+rsi],edx | 267 » mov» DWORD[28+rsi],edx |
| 264 » add» cl,al | 268 » add» cl,al |
| 265 » pinsrw» xmm1,WORD PTR[rbx*4+rdi],3 | 269 » pinsrw» xmm1,WORD[rbx*4+rdi],3 |
| 266 » mov» edx,DWORD PTR[rcx*4+rdi] | 270 » mov» edx,DWORD[rcx*4+rdi] |
| 267 » mov» DWORD PTR[rcx*4+rdi],eax | 271 » mov» DWORD[rcx*4+rdi],eax |
| 268 » add» al,dl | 272 » add» al,dl |
| 269 » mov» ebx,DWORD PTR[36+rsi] | 273 » mov» ebx,DWORD[36+rsi] |
| 270 » movzx» eax,al | 274 » movzx» eax,al |
| 271 » mov» DWORD PTR[32+rsi],edx | 275 » mov» DWORD[32+rsi],edx |
| 272 » add» cl,bl | 276 » add» cl,bl |
| 273 » pinsrw» xmm0,WORD PTR[rax*4+rdi],4 | 277 » pinsrw» xmm0,WORD[rax*4+rdi],4 |
| 274 » mov» edx,DWORD PTR[rcx*4+rdi] | 278 » mov» edx,DWORD[rcx*4+rdi] |
| 275 » mov» DWORD PTR[rcx*4+rdi],ebx | 279 » mov» DWORD[rcx*4+rdi],ebx |
| 276 » add» bl,dl | 280 » add» bl,dl |
| 277 » mov» eax,DWORD PTR[40+rsi] | 281 » mov» eax,DWORD[40+rsi] |
| 278 » movzx» ebx,bl | 282 » movzx» ebx,bl |
| 279 » mov» DWORD PTR[36+rsi],edx | 283 » mov» DWORD[36+rsi],edx |
| 280 » add» cl,al | 284 » add» cl,al |
| 281 » pinsrw» xmm1,WORD PTR[rbx*4+rdi],4 | 285 » pinsrw» xmm1,WORD[rbx*4+rdi],4 |
| 282 » mov» edx,DWORD PTR[rcx*4+rdi] | 286 » mov» edx,DWORD[rcx*4+rdi] |
| 283 » mov» DWORD PTR[rcx*4+rdi],eax | 287 » mov» DWORD[rcx*4+rdi],eax |
| 284 » add» al,dl | 288 » add» al,dl |
| 285 » mov» ebx,DWORD PTR[44+rsi] | 289 » mov» ebx,DWORD[44+rsi] |
| 286 » movzx» eax,al | 290 » movzx» eax,al |
| 287 » mov» DWORD PTR[40+rsi],edx | 291 » mov» DWORD[40+rsi],edx |
| 288 » add» cl,bl | 292 » add» cl,bl |
| 289 » pinsrw» xmm0,WORD PTR[rax*4+rdi],5 | 293 » pinsrw» xmm0,WORD[rax*4+rdi],5 |
| 290 » mov» edx,DWORD PTR[rcx*4+rdi] | 294 » mov» edx,DWORD[rcx*4+rdi] |
| 291 » mov» DWORD PTR[rcx*4+rdi],ebx | 295 » mov» DWORD[rcx*4+rdi],ebx |
| 292 » add» bl,dl | 296 » add» bl,dl |
| 293 » mov» eax,DWORD PTR[48+rsi] | 297 » mov» eax,DWORD[48+rsi] |
| 294 » movzx» ebx,bl | 298 » movzx» ebx,bl |
| 295 » mov» DWORD PTR[44+rsi],edx | 299 » mov» DWORD[44+rsi],edx |
| 296 » add» cl,al | 300 » add» cl,al |
| 297 » pinsrw» xmm1,WORD PTR[rbx*4+rdi],5 | 301 » pinsrw» xmm1,WORD[rbx*4+rdi],5 |
| 298 » mov» edx,DWORD PTR[rcx*4+rdi] | 302 » mov» edx,DWORD[rcx*4+rdi] |
| 299 » mov» DWORD PTR[rcx*4+rdi],eax | 303 » mov» DWORD[rcx*4+rdi],eax |
| 300 » add» al,dl | 304 » add» al,dl |
| 301 » mov» ebx,DWORD PTR[52+rsi] | 305 » mov» ebx,DWORD[52+rsi] |
| 302 » movzx» eax,al | 306 » movzx» eax,al |
| 303 » mov» DWORD PTR[48+rsi],edx | 307 » mov» DWORD[48+rsi],edx |
| 304 » add» cl,bl | 308 » add» cl,bl |
| 305 » pinsrw» xmm0,WORD PTR[rax*4+rdi],6 | 309 » pinsrw» xmm0,WORD[rax*4+rdi],6 |
| 306 » mov» edx,DWORD PTR[rcx*4+rdi] | 310 » mov» edx,DWORD[rcx*4+rdi] |
| 307 » mov» DWORD PTR[rcx*4+rdi],ebx | 311 » mov» DWORD[rcx*4+rdi],ebx |
| 308 » add» bl,dl | 312 » add» bl,dl |
| 309 » mov» eax,DWORD PTR[56+rsi] | 313 » mov» eax,DWORD[56+rsi] |
| 310 » movzx» ebx,bl | 314 » movzx» ebx,bl |
| 311 » mov» DWORD PTR[52+rsi],edx | 315 » mov» DWORD[52+rsi],edx |
| 312 » add» cl,al | 316 » add» cl,al |
| 313 » pinsrw» xmm1,WORD PTR[rbx*4+rdi],6 | 317 » pinsrw» xmm1,WORD[rbx*4+rdi],6 |
| 314 » mov» edx,DWORD PTR[rcx*4+rdi] | 318 » mov» edx,DWORD[rcx*4+rdi] |
| 315 » mov» DWORD PTR[rcx*4+rdi],eax | 319 » mov» DWORD[rcx*4+rdi],eax |
| 316 » add» al,dl | 320 » add» al,dl |
| 317 » mov» ebx,DWORD PTR[60+rsi] | 321 » mov» ebx,DWORD[60+rsi] |
| 318 » movzx» eax,al | 322 » movzx» eax,al |
| 319 » mov» DWORD PTR[56+rsi],edx | 323 » mov» DWORD[56+rsi],edx |
| 320 » add» cl,bl | 324 » add» cl,bl |
| 321 » pinsrw» xmm0,WORD PTR[rax*4+rdi],7 | 325 » pinsrw» xmm0,WORD[rax*4+rdi],7 |
| 322 add r10b,16 | 326 add r10b,16 |
| 323 » movdqu» xmm2,XMMWORD PTR[r12] | 327 » movdqu» xmm2,XMMWORD[r12] |
| 324 » mov» edx,DWORD PTR[rcx*4+rdi] | 328 » mov» edx,DWORD[rcx*4+rdi] |
| 325 » mov» DWORD PTR[rcx*4+rdi],ebx | 329 » mov» DWORD[rcx*4+rdi],ebx |
| 326 » add» bl,dl | 330 » add» bl,dl |
| 327 » movzx» ebx,bl | 331 » movzx» ebx,bl |
| 328 » mov» DWORD PTR[60+rsi],edx | 332 » mov» DWORD[60+rsi],edx |
| 329 » lea» rsi,QWORD PTR[r10*4+rdi] | 333 » lea» rsi,[r10*4+rdi] |
| 330 » pinsrw» xmm1,WORD PTR[rbx*4+rdi],7 | 334 » pinsrw» xmm1,WORD[rbx*4+rdi],7 |
| 331 » mov» eax,DWORD PTR[rsi] | 335 » mov» eax,DWORD[rsi] |
| 332 mov rbx,rcx | 336 mov rbx,rcx |
| 333 xor rcx,rcx | 337 xor rcx,rcx |
| 334 sub r11,16 | 338 sub r11,16 |
| 335 mov cl,bl | 339 mov cl,bl |
| 336 test r11,-16 | 340 test r11,-16 |
| 337 » jnz» $L$oop16 | 341 » jnz» NEAR $L$oop16 |
| 338 | 342 |
| 339 psllq xmm1,8 | 343 psllq xmm1,8 |
| 340 pxor xmm2,xmm0 | 344 pxor xmm2,xmm0 |
| 341 pxor xmm2,xmm1 | 345 pxor xmm2,xmm1 |
| 342 » movdqu» XMMWORD PTR[r13*1+r12],xmm2 | 346 » movdqu» XMMWORD[r13*1+r12],xmm2 |
| 343 » lea» r12,QWORD PTR[16+r12] | 347 » lea» r12,[16+r12] |
| 344 | 348 |
| 345 cmp r11,0 | 349 cmp r11,0 |
| 346 » jne» $L$loop1 | 350 » jne» NEAR $L$loop1 |
| 347 » jmp» $L$exit | 351 » jmp» NEAR $L$exit |
| 348 | 352 |
| 349 ALIGN» 16 | 353 ALIGN» 16 |
| 350 $L$loop1:: | 354 $L$loop1: |
| 351 » add» cl,al | 355 » add» cl,al |
| 352 » mov» edx,DWORD PTR[rcx*4+rdi] | 356 » mov» edx,DWORD[rcx*4+rdi] |
| 353 » mov» DWORD PTR[rcx*4+rdi],eax | 357 » mov» DWORD[rcx*4+rdi],eax |
| 354 » mov» DWORD PTR[r10*4+rdi],edx | 358 » mov» DWORD[r10*4+rdi],edx |
| 355 add al,dl | 359 add al,dl |
| 356 inc r10b | 360 inc r10b |
| 357 » mov» edx,DWORD PTR[rax*4+rdi] | 361 » mov» edx,DWORD[rax*4+rdi] |
| 358 » mov» eax,DWORD PTR[r10*4+rdi] | 362 » mov» eax,DWORD[r10*4+rdi] |
| 359 » xor» dl,BYTE PTR[r12] | 363 » xor» dl,BYTE[r12] |
| 360 » mov» BYTE PTR[r13*1+r12],dl | 364 » mov» BYTE[r13*1+r12],dl |
| 361 » lea» r12,QWORD PTR[1+r12] | 365 » lea» r12,[1+r12] |
| 362 dec r11 | 366 dec r11 |
| 363 » jnz» $L$loop1 | 367 » jnz» NEAR $L$loop1 |
| 364 » jmp» $L$exit | 368 » jmp» NEAR $L$exit |
| 365 | 369 |
| 366 ALIGN» 16 | 370 ALIGN» 16 |
| 367 $L$RC4_CHAR:: | 371 $L$RC4_CHAR: |
| 368 add r10b,1 | 372 add r10b,1 |
| 369 » movzx» eax,BYTE PTR[r10*1+rdi] | 373 » movzx» eax,BYTE[r10*1+rdi] |
| 370 test r11,-8 | 374 test r11,-8 |
| 371 » jz» $L$cloop1 | 375 » jz» NEAR $L$cloop1 |
| 372 » jmp» $L$cloop8 | 376 » jmp» NEAR $L$cloop8 |
| 373 ALIGN» 16 | 377 ALIGN» 16 |
| 374 $L$cloop8:: | 378 $L$cloop8: |
| 375 » mov» r8d,DWORD PTR[r12] | 379 » mov» r8d,DWORD[r12] |
| 376 » mov» r9d,DWORD PTR[4+r12] | 380 » mov» r9d,DWORD[4+r12] |
| 377 » add» cl,al | 381 » add» cl,al |
| 378 » lea» rsi,QWORD PTR[1+r10] | 382 » lea» rsi,[1+r10] |
| 379 » movzx» edx,BYTE PTR[rcx*1+rdi] | 383 » movzx» edx,BYTE[rcx*1+rdi] |
| 380 movzx esi,sil | 384 movzx esi,sil |
| 381 » movzx» ebx,BYTE PTR[rsi*1+rdi] | 385 » movzx» ebx,BYTE[rsi*1+rdi] |
| 382 » mov» BYTE PTR[rcx*1+rdi],al | 386 » mov» BYTE[rcx*1+rdi],al |
| 383 cmp rcx,rsi | 387 cmp rcx,rsi |
| 384 » mov» BYTE PTR[r10*1+rdi],dl | 388 » mov» BYTE[r10*1+rdi],dl |
| 385 » jne» $L$cmov0 | 389 » jne» NEAR $L$cmov0 |
| 386 mov rbx,rax | 390 mov rbx,rax |
| 387 $L$cmov0:: | 391 $L$cmov0: |
| 388 » add» dl,al | 392 » add» dl,al |
| 389 » xor» r8b,BYTE PTR[rdx*1+rdi] | 393 » xor» r8b,BYTE[rdx*1+rdi] |
| 390 ror r8d,8 | 394 ror r8d,8 |
| 391 add cl,bl | 395 add cl,bl |
| 392 » lea» r10,QWORD PTR[1+rsi] | 396 » lea» r10,[1+rsi] |
| 393 » movzx» edx,BYTE PTR[rcx*1+rdi] | 397 » movzx» edx,BYTE[rcx*1+rdi] |
| 394 movzx r10d,r10b | 398 movzx r10d,r10b |
| 395 » movzx» eax,BYTE PTR[r10*1+rdi] | 399 » movzx» eax,BYTE[r10*1+rdi] |
| 396 » mov» BYTE PTR[rcx*1+rdi],bl | 400 » mov» BYTE[rcx*1+rdi],bl |
| 397 cmp rcx,r10 | 401 cmp rcx,r10 |
| 398 » mov» BYTE PTR[rsi*1+rdi],dl | 402 » mov» BYTE[rsi*1+rdi],dl |
| 399 » jne» $L$cmov1 | 403 » jne» NEAR $L$cmov1 |
| 400 mov rax,rbx | 404 mov rax,rbx |
| 401 $L$cmov1:: | 405 $L$cmov1: |
| 402 » add» dl,bl | 406 » add» dl,bl |
| 403 » xor» r8b,BYTE PTR[rdx*1+rdi] | 407 » xor» r8b,BYTE[rdx*1+rdi] |
| 404 ror r8d,8 | 408 ror r8d,8 |
| 405 add cl,al | 409 add cl,al |
| 406 » lea» rsi,QWORD PTR[1+r10] | 410 » lea» rsi,[1+r10] |
| 407 » movzx» edx,BYTE PTR[rcx*1+rdi] | 411 » movzx» edx,BYTE[rcx*1+rdi] |
| 408 movzx esi,sil | 412 movzx esi,sil |
| 409 » movzx» ebx,BYTE PTR[rsi*1+rdi] | 413 » movzx» ebx,BYTE[rsi*1+rdi] |
| 410 » mov» BYTE PTR[rcx*1+rdi],al | 414 » mov» BYTE[rcx*1+rdi],al |
| 411 cmp rcx,rsi | 415 cmp rcx,rsi |
| 412 » mov» BYTE PTR[r10*1+rdi],dl | 416 » mov» BYTE[r10*1+rdi],dl |
| 413 » jne» $L$cmov2 | 417 » jne» NEAR $L$cmov2 |
| 414 mov rbx,rax | 418 mov rbx,rax |
| 415 $L$cmov2:: | 419 $L$cmov2: |
| 416 » add» dl,al | 420 » add» dl,al |
| 417 » xor» r8b,BYTE PTR[rdx*1+rdi] | 421 » xor» r8b,BYTE[rdx*1+rdi] |
| 418 ror r8d,8 | 422 ror r8d,8 |
| 419 add cl,bl | 423 add cl,bl |
| 420 » lea» r10,QWORD PTR[1+rsi] | 424 » lea» r10,[1+rsi] |
| 421 » movzx» edx,BYTE PTR[rcx*1+rdi] | 425 » movzx» edx,BYTE[rcx*1+rdi] |
| 422 movzx r10d,r10b | 426 movzx r10d,r10b |
| 423 » movzx» eax,BYTE PTR[r10*1+rdi] | 427 » movzx» eax,BYTE[r10*1+rdi] |
| 424 » mov» BYTE PTR[rcx*1+rdi],bl | 428 » mov» BYTE[rcx*1+rdi],bl |
| 425 cmp rcx,r10 | 429 cmp rcx,r10 |
| 426 » mov» BYTE PTR[rsi*1+rdi],dl | 430 » mov» BYTE[rsi*1+rdi],dl |
| 427 » jne» $L$cmov3 | 431 » jne» NEAR $L$cmov3 |
| 428 mov rax,rbx | 432 mov rax,rbx |
| 429 $L$cmov3:: | 433 $L$cmov3: |
| 430 » add» dl,bl | 434 » add» dl,bl |
| 431 » xor» r8b,BYTE PTR[rdx*1+rdi] | 435 » xor» r8b,BYTE[rdx*1+rdi] |
| 432 ror r8d,8 | 436 ror r8d,8 |
| 433 add cl,al | 437 add cl,al |
| 434 » lea» rsi,QWORD PTR[1+r10] | 438 » lea» rsi,[1+r10] |
| 435 » movzx» edx,BYTE PTR[rcx*1+rdi] | 439 » movzx» edx,BYTE[rcx*1+rdi] |
| 436 movzx esi,sil | 440 movzx esi,sil |
| 437 » movzx» ebx,BYTE PTR[rsi*1+rdi] | 441 » movzx» ebx,BYTE[rsi*1+rdi] |
| 438 » mov» BYTE PTR[rcx*1+rdi],al | 442 » mov» BYTE[rcx*1+rdi],al |
| 439 cmp rcx,rsi | 443 cmp rcx,rsi |
| 440 » mov» BYTE PTR[r10*1+rdi],dl | 444 » mov» BYTE[r10*1+rdi],dl |
| 441 » jne» $L$cmov4 | 445 » jne» NEAR $L$cmov4 |
| 442 mov rbx,rax | 446 mov rbx,rax |
| 443 $L$cmov4:: | 447 $L$cmov4: |
| 444 » add» dl,al | 448 » add» dl,al |
| 445 » xor» r9b,BYTE PTR[rdx*1+rdi] | 449 » xor» r9b,BYTE[rdx*1+rdi] |
| 446 ror r9d,8 | 450 ror r9d,8 |
| 447 add cl,bl | 451 add cl,bl |
| 448 » lea» r10,QWORD PTR[1+rsi] | 452 » lea» r10,[1+rsi] |
| 449 » movzx» edx,BYTE PTR[rcx*1+rdi] | 453 » movzx» edx,BYTE[rcx*1+rdi] |
| 450 movzx r10d,r10b | 454 movzx r10d,r10b |
| 451 » movzx» eax,BYTE PTR[r10*1+rdi] | 455 » movzx» eax,BYTE[r10*1+rdi] |
| 452 » mov» BYTE PTR[rcx*1+rdi],bl | 456 » mov» BYTE[rcx*1+rdi],bl |
| 453 cmp rcx,r10 | 457 cmp rcx,r10 |
| 454 » mov» BYTE PTR[rsi*1+rdi],dl | 458 » mov» BYTE[rsi*1+rdi],dl |
| 455 » jne» $L$cmov5 | 459 » jne» NEAR $L$cmov5 |
| 456 mov rax,rbx | 460 mov rax,rbx |
| 457 $L$cmov5:: | 461 $L$cmov5: |
| 458 » add» dl,bl | 462 » add» dl,bl |
| 459 » xor» r9b,BYTE PTR[rdx*1+rdi] | 463 » xor» r9b,BYTE[rdx*1+rdi] |
| 460 ror r9d,8 | 464 ror r9d,8 |
| 461 add cl,al | 465 add cl,al |
| 462 » lea» rsi,QWORD PTR[1+r10] | 466 » lea» rsi,[1+r10] |
| 463 » movzx» edx,BYTE PTR[rcx*1+rdi] | 467 » movzx» edx,BYTE[rcx*1+rdi] |
| 464 movzx esi,sil | 468 movzx esi,sil |
| 465 » movzx» ebx,BYTE PTR[rsi*1+rdi] | 469 » movzx» ebx,BYTE[rsi*1+rdi] |
| 466 » mov» BYTE PTR[rcx*1+rdi],al | 470 » mov» BYTE[rcx*1+rdi],al |
| 467 cmp rcx,rsi | 471 cmp rcx,rsi |
| 468 » mov» BYTE PTR[r10*1+rdi],dl | 472 » mov» BYTE[r10*1+rdi],dl |
| 469 » jne» $L$cmov6 | 473 » jne» NEAR $L$cmov6 |
| 470 mov rbx,rax | 474 mov rbx,rax |
| 471 $L$cmov6:: | 475 $L$cmov6: |
| 472 » add» dl,al | 476 » add» dl,al |
| 473 » xor» r9b,BYTE PTR[rdx*1+rdi] | 477 » xor» r9b,BYTE[rdx*1+rdi] |
| 474 ror r9d,8 | 478 ror r9d,8 |
| 475 add cl,bl | 479 add cl,bl |
| 476 » lea» r10,QWORD PTR[1+rsi] | 480 » lea» r10,[1+rsi] |
| 477 » movzx» edx,BYTE PTR[rcx*1+rdi] | 481 » movzx» edx,BYTE[rcx*1+rdi] |
| 478 movzx r10d,r10b | 482 movzx r10d,r10b |
| 479 » movzx» eax,BYTE PTR[r10*1+rdi] | 483 » movzx» eax,BYTE[r10*1+rdi] |
| 480 » mov» BYTE PTR[rcx*1+rdi],bl | 484 » mov» BYTE[rcx*1+rdi],bl |
| 481 cmp rcx,r10 | 485 cmp rcx,r10 |
| 482 » mov» BYTE PTR[rsi*1+rdi],dl | 486 » mov» BYTE[rsi*1+rdi],dl |
| 483 » jne» $L$cmov7 | 487 » jne» NEAR $L$cmov7 |
| 484 mov rax,rbx | 488 mov rax,rbx |
| 485 $L$cmov7:: | 489 $L$cmov7: |
| 486 » add» dl,bl | 490 » add» dl,bl |
| 487 » xor» r9b,BYTE PTR[rdx*1+rdi] | 491 » xor» r9b,BYTE[rdx*1+rdi] |
| 488 ror r9d,8 | 492 ror r9d,8 |
| 489 » lea» r11,QWORD PTR[((-8))+r11] | 493 » lea» r11,[((-8))+r11] |
| 490 » mov» DWORD PTR[r13],r8d | 494 » mov» DWORD[r13],r8d |
| 491 » lea» r12,QWORD PTR[8+r12] | 495 » lea» r12,[8+r12] |
| 492 » mov» DWORD PTR[4+r13],r9d | 496 » mov» DWORD[4+r13],r9d |
| 493 » lea» r13,QWORD PTR[8+r13] | 497 » lea» r13,[8+r13] |
| 494 | 498 |
| 495 test r11,-8 | 499 test r11,-8 |
| 496 » jnz» $L$cloop8 | 500 » jnz» NEAR $L$cloop8 |
| 497 cmp r11,0 | 501 cmp r11,0 |
| 498 » jne» $L$cloop1 | 502 » jne» NEAR $L$cloop1 |
| 499 » jmp» $L$exit | 503 » jmp» NEAR $L$exit |
| 500 ALIGN» 16 | 504 ALIGN» 16 |
| 501 $L$cloop1:: | 505 $L$cloop1: |
| 502 add cl,al | 506 add cl,al |
| 503 movzx ecx,cl | 507 movzx ecx,cl |
| 504 » movzx» edx,BYTE PTR[rcx*1+rdi] | 508 » movzx» edx,BYTE[rcx*1+rdi] |
| 505 » mov» BYTE PTR[rcx*1+rdi],al | 509 » mov» BYTE[rcx*1+rdi],al |
| 506 » mov» BYTE PTR[r10*1+rdi],dl | 510 » mov» BYTE[r10*1+rdi],dl |
| 507 add dl,al | 511 add dl,al |
| 508 add r10b,1 | 512 add r10b,1 |
| 509 movzx edx,dl | 513 movzx edx,dl |
| 510 movzx r10d,r10b | 514 movzx r10d,r10b |
| 511 » movzx» edx,BYTE PTR[rdx*1+rdi] | 515 » movzx» edx,BYTE[rdx*1+rdi] |
| 512 » movzx» eax,BYTE PTR[r10*1+rdi] | 516 » movzx» eax,BYTE[r10*1+rdi] |
| 513 » xor» dl,BYTE PTR[r12] | 517 » xor» dl,BYTE[r12] |
| 514 » lea» r12,QWORD PTR[1+r12] | 518 » lea» r12,[1+r12] |
| 515 » mov» BYTE PTR[r13],dl | 519 » mov» BYTE[r13],dl |
| 516 » lea» r13,QWORD PTR[1+r13] | 520 » lea» r13,[1+r13] |
| 517 sub r11,1 | 521 sub r11,1 |
| 518 » jnz» $L$cloop1 | 522 » jnz» NEAR $L$cloop1 |
| 519 » jmp» $L$exit | 523 » jmp» NEAR $L$exit |
| 520 | 524 |
| 521 ALIGN» 16 | 525 ALIGN» 16 |
| 522 $L$exit:: | 526 $L$exit: |
| 523 sub r10b,1 | 527 sub r10b,1 |
| 524 » mov» DWORD PTR[((-8))+rdi],r10d | 528 » mov» DWORD[((-8))+rdi],r10d |
| 525 » mov» DWORD PTR[((-4))+rdi],ecx | 529 » mov» DWORD[((-4))+rdi],ecx |
| 526 | 530 |
| 527 » mov» r13,QWORD PTR[rsp] | 531 » mov» r13,QWORD[rsp] |
| 528 » mov» r12,QWORD PTR[8+rsp] | 532 » mov» r12,QWORD[8+rsp] |
| 529 » mov» rbx,QWORD PTR[16+rsp] | 533 » mov» rbx,QWORD[16+rsp] |
| 530 add rsp,24 | 534 add rsp,24 |
| 531 $L$epilogue:: | 535 $L$epilogue: |
| 532 » mov» rdi,QWORD PTR[8+rsp]» ;WIN64 epilogue | 536 » mov» rdi,QWORD[8+rsp]» ;WIN64 epilogue |
| 533 » mov» rsi,QWORD PTR[16+rsp] | 537 » mov» rsi,QWORD[16+rsp] |
| 534 DB 0F3h,0C3h ;repret | 538 DB 0F3h,0C3h ;repret |
| 535 $L$SEH_end_asm_RC4:: | 539 $L$SEH_end_asm_RC4: |
| 536 asm_RC4»ENDP | 540 global» asm_RC4_set_key |
| 537 PUBLIC» asm_RC4_set_key | 541 |
| 538 | 542 ALIGN» 16 |
| 539 ALIGN» 16 | 543 asm_RC4_set_key: |
| 540 asm_RC4_set_key»PROC PUBLIC | 544 » mov» QWORD[8+rsp],rdi» ;WIN64 prologue |
| 541 » mov» QWORD PTR[8+rsp],rdi» ;WIN64 prologue | 545 » mov» QWORD[16+rsp],rsi |
| 542 » mov» QWORD PTR[16+rsp],rsi | |
| 543 mov rax,rsp | 546 mov rax,rsp |
| 544 $L$SEH_begin_asm_RC4_set_key:: | 547 $L$SEH_begin_asm_RC4_set_key: |
| 545 mov rdi,rcx | 548 mov rdi,rcx |
| 546 mov rsi,rdx | 549 mov rsi,rdx |
| 547 mov rdx,r8 | 550 mov rdx,r8 |
| 548 | 551 |
| 549 | 552 |
| 550 » lea» rdi,QWORD PTR[8+rdi] | 553 » lea» rdi,[8+rdi] |
| 551 » lea» rdx,QWORD PTR[rsi*1+rdx] | 554 » lea» rdx,[rsi*1+rdx] |
| 552 neg rsi | 555 neg rsi |
| 553 mov rcx,rsi | 556 mov rcx,rsi |
| 554 xor eax,eax | 557 xor eax,eax |
| 555 xor r9,r9 | 558 xor r9,r9 |
| 556 xor r10,r10 | 559 xor r10,r10 |
| 557 xor r11,r11 | 560 xor r11,r11 |
| 558 | 561 |
| 559 » mov» r8d,DWORD PTR[OPENSSL_ia32cap_P] | 562 » mov» r8d,DWORD[OPENSSL_ia32cap_P] |
| 560 bt r8d,20 | 563 bt r8d,20 |
| 561 » jc» $L$c1stloop | 564 » jc» NEAR $L$c1stloop |
| 562 » jmp» $L$w1stloop | 565 » jmp» NEAR $L$w1stloop |
| 563 | 566 |
| 564 ALIGN 16 | 567 ALIGN 16 |
| 565 $L$w1stloop:: | 568 $L$w1stloop: |
| 566 » mov» DWORD PTR[rax*4+rdi],eax | 569 » mov» DWORD[rax*4+rdi],eax |
| 567 add al,1 | 570 add al,1 |
| 568 » jnc» $L$w1stloop | 571 » jnc» NEAR $L$w1stloop |
| 569 | 572 |
| 570 xor r9,r9 | 573 xor r9,r9 |
| 571 xor r8,r8 | 574 xor r8,r8 |
| 572 ALIGN 16 | 575 ALIGN 16 |
| 573 $L$w2ndloop:: | 576 $L$w2ndloop: |
| 574 » mov» r10d,DWORD PTR[r9*4+rdi] | 577 » mov» r10d,DWORD[r9*4+rdi] |
| 575 » add» r8b,BYTE PTR[rsi*1+rdx] | 578 » add» r8b,BYTE[rsi*1+rdx] |
| 576 add r8b,r10b | 579 add r8b,r10b |
| 577 add rsi,1 | 580 add rsi,1 |
| 578 » mov» r11d,DWORD PTR[r8*4+rdi] | 581 » mov» r11d,DWORD[r8*4+rdi] |
| 579 cmovz rsi,rcx | 582 cmovz rsi,rcx |
| 580 » mov» DWORD PTR[r8*4+rdi],r10d | 583 » mov» DWORD[r8*4+rdi],r10d |
| 581 » mov» DWORD PTR[r9*4+rdi],r11d | 584 » mov» DWORD[r9*4+rdi],r11d |
| 582 add r9b,1 | 585 add r9b,1 |
| 583 » jnc» $L$w2ndloop | 586 » jnc» NEAR $L$w2ndloop |
| 584 » jmp» $L$exit_key | 587 » jmp» NEAR $L$exit_key |
| 585 | 588 |
| 586 ALIGN 16 | 589 ALIGN 16 |
| 587 $L$c1stloop:: | 590 $L$c1stloop: |
| 588 » mov» BYTE PTR[rax*1+rdi],al | 591 » mov» BYTE[rax*1+rdi],al |
| 589 add al,1 | 592 add al,1 |
| 590 » jnc» $L$c1stloop | 593 » jnc» NEAR $L$c1stloop |
| 591 | 594 |
| 592 xor r9,r9 | 595 xor r9,r9 |
| 593 xor r8,r8 | 596 xor r8,r8 |
| 594 ALIGN 16 | 597 ALIGN 16 |
| 595 $L$c2ndloop:: | 598 $L$c2ndloop: |
| 596 » mov» r10b,BYTE PTR[r9*1+rdi] | 599 » mov» r10b,BYTE[r9*1+rdi] |
| 597 » add» r8b,BYTE PTR[rsi*1+rdx] | 600 » add» r8b,BYTE[rsi*1+rdx] |
| 598 add r8b,r10b | 601 add r8b,r10b |
| 599 add rsi,1 | 602 add rsi,1 |
| 600 » mov» r11b,BYTE PTR[r8*1+rdi] | 603 » mov» r11b,BYTE[r8*1+rdi] |
| 601 » jnz» $L$cnowrap | 604 » jnz» NEAR $L$cnowrap |
| 602 mov rsi,rcx | 605 mov rsi,rcx |
| 603 $L$cnowrap:: | 606 $L$cnowrap: |
| 604 » mov» BYTE PTR[r8*1+rdi],r10b | 607 » mov» BYTE[r8*1+rdi],r10b |
| 605 » mov» BYTE PTR[r9*1+rdi],r11b | 608 » mov» BYTE[r9*1+rdi],r11b |
| 606 add r9b,1 | 609 add r9b,1 |
| 607 » jnc» $L$c2ndloop | 610 » jnc» NEAR $L$c2ndloop |
| 608 » mov» DWORD PTR[256+rdi],-1 | 611 » mov» DWORD[256+rdi],-1 |
| 609 | 612 |
| 610 ALIGN 16 | 613 ALIGN 16 |
| 611 $L$exit_key:: | 614 $L$exit_key: |
| 612 xor eax,eax | 615 xor eax,eax |
| 613 » mov» DWORD PTR[((-8))+rdi],eax | 616 » mov» DWORD[((-8))+rdi],eax |
| 614 » mov» DWORD PTR[((-4))+rdi],eax | 617 » mov» DWORD[((-4))+rdi],eax |
| 615 » mov» rdi,QWORD PTR[8+rsp]» ;WIN64 epilogue | 618 » mov» rdi,QWORD[8+rsp]» ;WIN64 epilogue |
| 616 » mov» rsi,QWORD PTR[16+rsp] | 619 » mov» rsi,QWORD[16+rsp] |
| 617 DB 0F3h,0C3h ;repret | 620 DB 0F3h,0C3h ;repret |
| 618 $L$SEH_end_asm_RC4_set_key:: | 621 $L$SEH_end_asm_RC4_set_key: |
| 619 asm_RC4_set_key»ENDP | |
| 620 | 622 |
| 621 PUBLIC» RC4_options | 623 global» RC4_options |
| 622 | 624 |
| 623 ALIGN 16 | 625 ALIGN 16 |
| 624 RC4_options» PROC PUBLIC | 626 RC4_options: |
| 625 » lea» rax,QWORD PTR[$L$opts] | 627 » lea» rax,[$L$opts] |
| 626 » mov» rdx,QWORD PTR[OPENSSL_ia32cap_P] | 628 » mov» rdx,QWORD[OPENSSL_ia32cap_P] |
| 627 » mov» edx,DWORD PTR[rdx] | 629 » mov» edx,DWORD[rdx] |
| 628 bt edx,20 | 630 bt edx,20 |
| 629 » jc» $L$8xchar | 631 » jc» NEAR $L$8xchar |
| 630 bt edx,30 | 632 bt edx,30 |
| 631 » jnc» $L$done | 633 » jnc» NEAR $L$done |
| 632 add rax,25 | 634 add rax,25 |
| 633 DB 0F3h,0C3h ;repret | 635 DB 0F3h,0C3h ;repret |
| 634 $L$8xchar:: | 636 $L$8xchar: |
| 635 add rax,12 | 637 add rax,12 |
| 636 $L$done:: | 638 $L$done: |
| 637 DB 0F3h,0C3h ;repret | 639 DB 0F3h,0C3h ;repret |
| 638 ALIGN 64 | 640 ALIGN 64 |
| 639 $L$opts:: | 641 $L$opts: |
| 640 DB 114,99,52,40,56,120,44,105,110,116,41,0 | 642 DB 114,99,52,40,56,120,44,105,110,116,41,0 |
| 641 DB 114,99,52,40,56,120,44,99,104,97,114,41,0 | 643 DB 114,99,52,40,56,120,44,99,104,97,114,41,0 |
| 642 DB 114,99,52,40,49,54,120,44,105,110,116,41,0 | 644 DB 114,99,52,40,49,54,120,44,105,110,116,41,0 |
| 643 DB 82,67,52,32,102,111,114,32,120,56,54,95,54,52,44,32 | 645 DB 82,67,52,32,102,111,114,32,120,56,54,95,54,52,44,32 |
| 644 DB 67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97 | 646 DB 67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97 |
| 645 DB 112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103 | 647 DB 112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103 |
| 646 DB 62,0 | 648 DB 62,0 |
| 647 ALIGN 64 | 649 ALIGN 64 |
| 648 RC4_options» ENDP | 650 |
| 649 EXTERN» __imp_RtlVirtualUnwind:NEAR | 651 EXTERN» __imp_RtlVirtualUnwind |
| 650 | 652 |
| 651 ALIGN 16 | 653 ALIGN 16 |
| 652 stream_se_handler» PROC PRIVATE | 654 stream_se_handler: |
| 653 push rsi | 655 push rsi |
| 654 push rdi | 656 push rdi |
| 655 push rbx | 657 push rbx |
| 656 push rbp | 658 push rbp |
| 657 push r12 | 659 push r12 |
| 658 push r13 | 660 push r13 |
| 659 push r14 | 661 push r14 |
| 660 push r15 | 662 push r15 |
| 661 pushfq | 663 pushfq |
| 662 sub rsp,64 | 664 sub rsp,64 |
| 663 | 665 |
| 664 » mov» rax,QWORD PTR[120+r8] | 666 » mov» rax,QWORD[120+r8] |
| 665 » mov» rbx,QWORD PTR[248+r8] | 667 » mov» rbx,QWORD[248+r8] |
| 666 | 668 |
| 667 » lea» r10,QWORD PTR[$L$prologue] | 669 » lea» r10,[$L$prologue] |
| 668 cmp rbx,r10 | 670 cmp rbx,r10 |
| 669 » jb» $L$in_prologue | 671 » jb» NEAR $L$in_prologue |
| 670 | 672 |
| 671 » mov» rax,QWORD PTR[152+r8] | 673 » mov» rax,QWORD[152+r8] |
| 672 | 674 |
| 673 » lea» r10,QWORD PTR[$L$epilogue] | 675 » lea» r10,[$L$epilogue] |
| 674 cmp rbx,r10 | 676 cmp rbx,r10 |
| 675 » jae» $L$in_prologue | 677 » jae» NEAR $L$in_prologue |
| 676 | 678 |
| 677 » lea» rax,QWORD PTR[24+rax] | 679 » lea» rax,[24+rax] |
| 678 | 680 |
| 679 » mov» rbx,QWORD PTR[((-8))+rax] | 681 » mov» rbx,QWORD[((-8))+rax] |
| 680 » mov» r12,QWORD PTR[((-16))+rax] | 682 » mov» r12,QWORD[((-16))+rax] |
| 681 » mov» r13,QWORD PTR[((-24))+rax] | 683 » mov» r13,QWORD[((-24))+rax] |
| 682 » mov» QWORD PTR[144+r8],rbx | 684 » mov» QWORD[144+r8],rbx |
| 683 » mov» QWORD PTR[216+r8],r12 | 685 » mov» QWORD[216+r8],r12 |
| 684 » mov» QWORD PTR[224+r8],r13 | 686 » mov» QWORD[224+r8],r13 |
| 685 | 687 |
| 686 $L$in_prologue:: | 688 $L$in_prologue: |
| 687 » mov» rdi,QWORD PTR[8+rax] | 689 » mov» rdi,QWORD[8+rax] |
| 688 » mov» rsi,QWORD PTR[16+rax] | 690 » mov» rsi,QWORD[16+rax] |
| 689 » mov» QWORD PTR[152+r8],rax | 691 » mov» QWORD[152+r8],rax |
| 690 » mov» QWORD PTR[168+r8],rsi | 692 » mov» QWORD[168+r8],rsi |
| 691 » mov» QWORD PTR[176+r8],rdi | 693 » mov» QWORD[176+r8],rdi |
| 692 | 694 |
| 693 » jmp» $L$common_seh_exit | 695 » jmp» NEAR $L$common_seh_exit |
| 694 stream_se_handler» ENDP | 696 |
| 695 | 697 |
| 696 | 698 |
| 697 ALIGN 16 | 699 ALIGN 16 |
| 698 key_se_handler» PROC PRIVATE | 700 key_se_handler: |
| 699 push rsi | 701 push rsi |
| 700 push rdi | 702 push rdi |
| 701 push rbx | 703 push rbx |
| 702 push rbp | 704 push rbp |
| 703 push r12 | 705 push r12 |
| 704 push r13 | 706 push r13 |
| 705 push r14 | 707 push r14 |
| 706 push r15 | 708 push r15 |
| 707 pushfq | 709 pushfq |
| 708 sub rsp,64 | 710 sub rsp,64 |
| 709 | 711 |
| 710 » mov» rax,QWORD PTR[152+r8] | 712 » mov» rax,QWORD[152+r8] |
| 711 » mov» rdi,QWORD PTR[8+rax] | 713 » mov» rdi,QWORD[8+rax] |
| 712 » mov» rsi,QWORD PTR[16+rax] | 714 » mov» rsi,QWORD[16+rax] |
| 713 » mov» QWORD PTR[168+r8],rsi | 715 » mov» QWORD[168+r8],rsi |
| 714 » mov» QWORD PTR[176+r8],rdi | 716 » mov» QWORD[176+r8],rdi |
| 715 | 717 |
| 716 $L$common_seh_exit:: | 718 $L$common_seh_exit: |
| 717 | 719 |
| 718 » mov» rdi,QWORD PTR[40+r9] | 720 » mov» rdi,QWORD[40+r9] |
| 719 mov rsi,r8 | 721 mov rsi,r8 |
| 720 mov ecx,154 | 722 mov ecx,154 |
| 721 » DD» 0a548f3fch | 723 » DD» 0xa548f3fc |
| 722 | 724 |
| 723 mov rsi,r9 | 725 mov rsi,r9 |
| 724 xor rcx,rcx | 726 xor rcx,rcx |
| 725 » mov» rdx,QWORD PTR[8+rsi] | 727 » mov» rdx,QWORD[8+rsi] |
| 726 » mov» r8,QWORD PTR[rsi] | 728 » mov» r8,QWORD[rsi] |
| 727 » mov» r9,QWORD PTR[16+rsi] | 729 » mov» r9,QWORD[16+rsi] |
| 728 » mov» r10,QWORD PTR[40+rsi] | 730 » mov» r10,QWORD[40+rsi] |
| 729 » lea» r11,QWORD PTR[56+rsi] | 731 » lea» r11,[56+rsi] |
| 730 » lea» r12,QWORD PTR[24+rsi] | 732 » lea» r12,[24+rsi] |
| 731 » mov» QWORD PTR[32+rsp],r10 | 733 » mov» QWORD[32+rsp],r10 |
| 732 » mov» QWORD PTR[40+rsp],r11 | 734 » mov» QWORD[40+rsp],r11 |
| 733 » mov» QWORD PTR[48+rsp],r12 | 735 » mov» QWORD[48+rsp],r12 |
| 734 » mov» QWORD PTR[56+rsp],rcx | 736 » mov» QWORD[56+rsp],rcx |
| 735 » call» QWORD PTR[__imp_RtlVirtualUnwind] | 737 » call» QWORD[__imp_RtlVirtualUnwind] |
| 736 | 738 |
| 737 mov eax,1 | 739 mov eax,1 |
| 738 add rsp,64 | 740 add rsp,64 |
| 739 popfq | 741 popfq |
| 740 pop r15 | 742 pop r15 |
| 741 pop r14 | 743 pop r14 |
| 742 pop r13 | 744 pop r13 |
| 743 pop r12 | 745 pop r12 |
| 744 pop rbp | 746 pop rbp |
| 745 pop rbx | 747 pop rbx |
| 746 pop rdi | 748 pop rdi |
| 747 pop rsi | 749 pop rsi |
| 748 DB 0F3h,0C3h ;repret | 750 DB 0F3h,0C3h ;repret |
| 749 key_se_handler ENDP | |
| 750 | 751 |
| 751 .text$» ENDS | 752 |
| 752 .pdata» SEGMENT READONLY ALIGN(4) | 753 section».pdata rdata align=4 |
| 753 ALIGN 4 | 754 ALIGN 4 |
| 754 » DD» imagerel $L$SEH_begin_asm_RC4 | 755 » DD» $L$SEH_begin_asm_RC4 wrt ..imagebase |
| 755 » DD» imagerel $L$SEH_end_asm_RC4 | 756 » DD» $L$SEH_end_asm_RC4 wrt ..imagebase |
| 756 » DD» imagerel $L$SEH_info_asm_RC4 | 757 » DD» $L$SEH_info_asm_RC4 wrt ..imagebase |
| 757 | 758 |
| 758 » DD» imagerel $L$SEH_begin_asm_RC4_set_key | 759 » DD» $L$SEH_begin_asm_RC4_set_key wrt ..imagebase |
| 759 » DD» imagerel $L$SEH_end_asm_RC4_set_key | 760 » DD» $L$SEH_end_asm_RC4_set_key wrt ..imagebase |
| 760 » DD» imagerel $L$SEH_info_asm_RC4_set_key | 761 » DD» $L$SEH_info_asm_RC4_set_key wrt ..imagebase |
| 761 | 762 |
| 762 .pdata» ENDS | 763 section».xdata rdata align=8 |
| 763 .xdata» SEGMENT READONLY ALIGN(8) | |
| 764 ALIGN 8 | 764 ALIGN 8 |
| 765 $L$SEH_info_asm_RC4:: | 765 $L$SEH_info_asm_RC4: |
| 766 DB 9,0,0,0 | 766 DB 9,0,0,0 |
| 767 » DD» imagerel stream_se_handler | 767 » DD» stream_se_handler wrt ..imagebase |
| 768 $L$SEH_info_asm_RC4_set_key:: | 768 $L$SEH_info_asm_RC4_set_key: |
| 769 DB 9,0,0,0 | 769 DB 9,0,0,0 |
| 770 » DD» imagerel key_se_handler | 770 » DD» key_se_handler wrt ..imagebase |
| 771 | |
| 772 .xdata» ENDS | |
| 773 END | |
| OLD | NEW |