Created
May 29, 2021 17:51
-
-
Save danlark1/62390556e36f6c1cb227734034cfcf33 to your computer and use it in GitHub Desktop.
clang_objdump
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| zstd_clang.o: file format elf64-x86-64 | |
| Disassembly of section .text: | |
| 0000000000000000 <ZSTD_getcBlockSize>: | |
| /*! ZSTD_getcBlockSize() : | |
| * Provides the size of compressed block from block header `src` */ | |
| size_t ZSTD_getcBlockSize(const void* src, size_t srcSize, | |
| blockProperties_t* bpPtr) | |
| { | |
| 0: 48 c7 c0 b8 ff ff ff mov $0xffffffffffffffb8,%rax | |
| RETURN_ERROR_IF(srcSize < ZSTD_blockHeaderSize, srcSize_wrong, ""); | |
| 7: 48 83 fe 03 cmp $0x3,%rsi | |
| b: 72 35 jb 42 <ZSTD_getcBlockSize+0x42> | |
| typedef struct { U32 v; } __attribute__((packed)) unalign32; | |
| typedef struct { U64 v; } __attribute__((packed)) unalign64; | |
| typedef struct { size_t v; } __attribute__((packed)) unalignArch; | |
| #endif | |
| MEM_STATIC U16 MEM_read16(const void* ptr) { return ((const unalign16*)ptr)->v; } | |
| d: 0f b7 0f movzwl (%rdi),%ecx | |
| } | |
| } | |
| MEM_STATIC U32 MEM_readLE24(const void* memPtr) | |
| { | |
| return (U32)MEM_readLE16(memPtr) + ((U32)(((const BYTE*)memPtr)[2]) << 16); | |
| 10: 0f b6 47 02 movzbl 0x2(%rdi),%eax | |
| 14: 48 c1 e0 10 shl $0x10,%rax | |
| 18: 48 09 c8 or %rcx,%rax | |
| { U32 const cBlockHeader = MEM_readLE24(src); | |
| U32 const cSize = cBlockHeader >> 3; | |
| 1b: 48 c1 e8 03 shr $0x3,%rax | |
| bpPtr->lastBlock = cBlockHeader & 1; | |
| 1f: 89 ce mov %ecx,%esi | |
| 21: 83 e6 01 and $0x1,%esi | |
| 24: 89 72 04 mov %esi,0x4(%rdx) | |
| bpPtr->blockType = (blockType_e)((cBlockHeader >> 1) & 3); | |
| 27: d1 e9 shr %ecx | |
| 29: 83 e1 03 and $0x3,%ecx | |
| 2c: 89 0a mov %ecx,(%rdx) | |
| bpPtr->origSize = cSize; /* only useful for RLE */ | |
| 2e: 89 42 08 mov %eax,0x8(%rdx) | |
| if (bpPtr->blockType == bt_rle) return 1; | |
| 31: 83 f9 01 cmp $0x1,%ecx | |
| 34: 74 0d je 43 <ZSTD_getcBlockSize+0x43> | |
| 36: 83 f9 03 cmp $0x3,%ecx | |
| 39: 75 07 jne 42 <ZSTD_getcBlockSize+0x42> | |
| 3b: 48 c7 c0 ec ff ff ff mov $0xffffffffffffffec,%rax | |
| RETURN_ERROR_IF(bpPtr->blockType == bt_reserved, corruption_detected, ""); | |
| return cSize; | |
| } | |
| } | |
| 42: c3 retq | |
| 43: b8 01 00 00 00 mov $0x1,%eax | |
| 48: c3 retq | |
| 49: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) | |
| 50: 00 00 00 | |
| 53: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) | |
| 5a: 00 00 00 | |
| 5d: 0f 1f 00 nopl (%rax) | |
| 0000000000000060 <ZSTD_decodeLiteralsBlock>: | |
| /*! ZSTD_decodeLiteralsBlock() : | |
| * @return : nb of bytes read from src (< srcSize ) | |
| * note : symbol not declared but exposed for fullbench */ | |
| size_t ZSTD_decodeLiteralsBlock(ZSTD_DCtx* dctx, | |
| const void* src, size_t srcSize) /* note : srcSize < BLOCKSIZE */ | |
| { | |
| 60: 55 push %rbp | |
| 61: 41 57 push %r15 | |
| 63: 41 56 push %r14 | |
| 65: 41 55 push %r13 | |
| 67: 41 54 push %r12 | |
| 69: 53 push %rbx | |
| 6a: 50 push %rax | |
| 6b: 49 c7 c7 ec ff ff ff mov $0xffffffffffffffec,%r15 | |
| DEBUGLOG(5, "ZSTD_decodeLiteralsBlock"); | |
| RETURN_ERROR_IF(srcSize < MIN_CBLOCK_SIZE, corruption_detected, ""); | |
| 72: 48 83 fa 03 cmp $0x3,%rdx | |
| 76: 73 12 jae 8a <ZSTD_decodeLiteralsBlock+0x2a> | |
| } | |
| default: | |
| RETURN_ERROR(corruption_detected, "impossible"); | |
| } | |
| } | |
| } | |
| 78: 4c 89 f8 mov %r15,%rax | |
| 7b: 48 83 c4 08 add $0x8,%rsp | |
| 7f: 5b pop %rbx | |
| 80: 41 5c pop %r12 | |
| 82: 41 5d pop %r13 | |
| 84: 41 5e pop %r14 | |
| 86: 41 5f pop %r15 | |
| 88: 5d pop %rbp | |
| 89: c3 retq | |
| 8a: 48 89 f1 mov %rsi,%rcx | |
| 8d: 49 89 fe mov %rdi,%r14 | |
| symbolEncodingType_e const litEncType = (symbolEncodingType_e)(istart[0] & 3); | |
| 90: 0f b6 1e movzbl (%rsi),%ebx | |
| 93: 41 89 dc mov %ebx,%r12d | |
| 96: 41 83 e4 03 and $0x3,%r12d | |
| 9a: 42 ff 24 e5 00 00 00 jmpq *0x0(,%r12,8) | |
| a1: 00 | |
| U32 const lhlCode = ((istart[0]) >> 2) & 3; | |
| a2: 89 d8 mov %ebx,%eax | |
| a4: c1 e8 02 shr $0x2,%eax | |
| a7: 83 e0 03 and $0x3,%eax | |
| switch(lhlCode) | |
| aa: 83 f8 01 cmp $0x1,%eax | |
| ad: 0f 84 3a 01 00 00 je 1ed <ZSTD_decodeLiteralsBlock+0x18d> | |
| b3: 83 f8 03 cmp $0x3,%eax | |
| b6: 0f 85 54 01 00 00 jne 210 <ZSTD_decodeLiteralsBlock+0x1b0> | |
| MEM_STATIC U16 MEM_read16(const void* ptr) { return ((const unalign16*)ptr)->v; } | |
| bc: 0f b7 01 movzwl (%rcx),%eax | |
| return (U32)MEM_readLE16(memPtr) + ((U32)(((const BYTE*)memPtr)[2]) << 16); | |
| bf: 0f b6 59 02 movzbl 0x2(%rcx),%ebx | |
| c3: 48 c1 e3 10 shl $0x10,%rbx | |
| c7: 48 09 c3 or %rax,%rbx | |
| litSize = MEM_readLE24(istart) >> 4; | |
| ca: 48 c1 eb 04 shr $0x4,%rbx | |
| ce: b8 03 00 00 00 mov $0x3,%eax | |
| if (lhSize+litSize+WILDCOPY_OVERLENGTH > srcSize) { /* risk reading beyond src buffer with wildcopy */ | |
| d3: 48 8d 2c 18 lea (%rax,%rbx,1),%rbp | |
| d7: 48 8d 34 18 lea (%rax,%rbx,1),%rsi | |
| db: 48 83 c6 20 add $0x20,%rsi | |
| df: 48 39 d6 cmp %rdx,%rsi | |
| e2: 0f 86 46 01 00 00 jbe 22e <ZSTD_decodeLiteralsBlock+0x1ce> | |
| RETURN_ERROR_IF(litSize+lhSize > srcSize, corruption_detected, ""); | |
| e8: 48 39 d5 cmp %rdx,%rbp | |
| eb: 77 8b ja 78 <ZSTD_decodeLiteralsBlock+0x18> | |
| ZSTD_memcpy(dctx->litBuffer, istart+lhSize, litSize); | |
| ed: 4d 8d be 90 76 00 00 lea 0x7690(%r14),%r15 | |
| f4: 48 01 c1 add %rax,%rcx | |
| f7: 4c 89 ff mov %r15,%rdi | |
| fa: 48 89 ce mov %rcx,%rsi | |
| fd: 48 89 da mov %rbx,%rdx | |
| 100: e8 00 00 00 00 callq 105 <ZSTD_decodeLiteralsBlock+0xa5> | |
| dctx->litPtr = dctx->litBuffer; | |
| 105: 4d 89 be a0 75 00 00 mov %r15,0x75a0(%r14) | |
| dctx->litSize = litSize; | |
| 10c: 49 89 9e c0 75 00 00 mov %rbx,0x75c0(%r14) | |
| ZSTD_memset(dctx->litBuffer + dctx->litSize, 0, WILDCOPY_OVERLENGTH); | |
| 113: 0f 57 c0 xorps %xmm0,%xmm0 | |
| 116: 41 0f 11 84 1e 90 76 movups %xmm0,0x7690(%r14,%rbx,1) | |
| 11d: 00 00 | |
| 11f: 41 0f 11 84 1e a0 76 movups %xmm0,0x76a0(%r14,%rbx,1) | |
| 126: 00 00 | |
| 128: 49 89 ef mov %rbp,%r15 | |
| 12b: e9 48 ff ff ff jmpq 78 <ZSTD_decodeLiteralsBlock+0x18> | |
| { U32 const lhlCode = ((istart[0]) >> 2) & 3; | |
| 130: 89 d8 mov %ebx,%eax | |
| 132: c1 e8 02 shr $0x2,%eax | |
| 135: 83 e0 03 and $0x3,%eax | |
| switch(lhlCode) | |
| 138: 83 f8 01 cmp $0x1,%eax | |
| 13b: 0f 84 06 01 00 00 je 247 <ZSTD_decodeLiteralsBlock+0x1e7> | |
| 141: 83 f8 03 cmp $0x3,%eax | |
| 144: 0f 85 0c 01 00 00 jne 256 <ZSTD_decodeLiteralsBlock+0x1f6> | |
| RETURN_ERROR_IF(srcSize<4, corruption_detected, "srcSize >= MIN_CBLOCK_SIZE == 3; here we need lhSize+1 = 4"); | |
| 14a: 48 83 fa 04 cmp $0x4,%rdx | |
| 14e: 0f 82 24 ff ff ff jb 78 <ZSTD_decodeLiteralsBlock+0x18> | |
| 154: 0f b7 01 movzwl (%rcx),%eax | |
| 157: 0f b6 59 02 movzbl 0x2(%rcx),%ebx | |
| 15b: 48 c1 e3 10 shl $0x10,%rbx | |
| 15f: 48 09 c3 or %rax,%rbx | |
| 162: 81 fb 0f 00 20 00 cmp $0x20000f,%ebx | |
| 168: 0f 87 0a ff ff ff ja 78 <ZSTD_decodeLiteralsBlock+0x18> | |
| 16e: 48 c1 eb 04 shr $0x4,%rbx | |
| 172: 41 bf 03 00 00 00 mov $0x3,%r15d | |
| 178: e9 e3 00 00 00 jmpq 260 <ZSTD_decodeLiteralsBlock+0x200> | |
| RETURN_ERROR_IF(dctx->litEntropy==0, dictionary_corrupted, ""); | |
| 17d: 41 83 be 28 75 00 00 cmpl $0x0,0x7528(%r14) | |
| 184: 00 | |
| 185: 74 5a je 1e1 <ZSTD_decodeLiteralsBlock+0x181> | |
| RETURN_ERROR_IF(srcSize < 5, corruption_detected, "srcSize >= MIN_CBLOCK_SIZE == 3; here we need up to 5 for case 3"); | |
| 187: 48 83 fa 05 cmp $0x5,%rdx | |
| 18b: 0f 82 e7 fe ff ff jb 78 <ZSTD_decodeLiteralsBlock+0x18> | |
| U32 const lhlCode = (istart[0] >> 2) & 3; | |
| 191: c0 eb 02 shr $0x2,%bl | |
| 194: 80 e3 03 and $0x3,%bl | |
| MEM_STATIC U32 MEM_read32(const void* ptr) { return ((const unalign32*)ptr)->v; } | |
| 197: 8b 39 mov (%rcx),%edi | |
| switch(lhlCode) | |
| 199: 80 fb 02 cmp $0x2,%bl | |
| 19c: 0f 84 ed 00 00 00 je 28f <ZSTD_decodeLiteralsBlock+0x22f> | |
| 1a2: 0f b6 c3 movzbl %bl,%eax | |
| 1a5: 83 f8 03 cmp $0x3,%eax | |
| 1a8: 0f 85 f9 00 00 00 jne 2a7 <ZSTD_decodeLiteralsBlock+0x247> | |
| litSize = (lhc >> 4) & 0x3FFFF; | |
| 1ae: 89 fe mov %edi,%esi | |
| 1b0: c1 ee 04 shr $0x4,%esi | |
| 1b3: 81 e6 ff ff 03 00 and $0x3ffff,%esi | |
| RETURN_ERROR_IF(litSize > ZSTD_BLOCKSIZE_MAX, corruption_detected, ""); | |
| 1b9: 81 fe 00 00 02 00 cmp $0x20000,%esi | |
| 1bf: 0f 87 b3 fe ff ff ja 78 <ZSTD_decodeLiteralsBlock+0x18> | |
| 1c5: 48 c1 ef 16 shr $0x16,%rdi | |
| 1c9: 0f b6 41 04 movzbl 0x4(%rcx),%eax | |
| 1cd: 48 c1 e0 0a shl $0xa,%rax | |
| 1d1: 48 09 f8 or %rdi,%rax | |
| 1d4: 45 31 d2 xor %r10d,%r10d | |
| 1d7: bb 05 00 00 00 mov $0x5,%ebx | |
| 1dc: e9 ea 00 00 00 jmpq 2cb <ZSTD_decodeLiteralsBlock+0x26b> | |
| 1e1: 49 c7 c7 e2 ff ff ff mov $0xffffffffffffffe2,%r15 | |
| 1e8: e9 8b fe ff ff jmpq 78 <ZSTD_decodeLiteralsBlock+0x18> | |
| MEM_STATIC U16 MEM_read16(const void* ptr) { return ((const unalign16*)ptr)->v; } | |
| 1ed: 0f b7 19 movzwl (%rcx),%ebx | |
| litSize = MEM_readLE16(istart) >> 4; | |
| 1f0: 48 c1 eb 04 shr $0x4,%rbx | |
| 1f4: b8 02 00 00 00 mov $0x2,%eax | |
| if (lhSize+litSize+WILDCOPY_OVERLENGTH > srcSize) { /* risk reading beyond src buffer with wildcopy */ | |
| 1f9: 48 8d 2c 18 lea (%rax,%rbx,1),%rbp | |
| 1fd: 48 8d 34 18 lea (%rax,%rbx,1),%rsi | |
| 201: 48 83 c6 20 add $0x20,%rsi | |
| 205: 48 39 d6 cmp %rdx,%rsi | |
| 208: 0f 87 da fe ff ff ja e8 <ZSTD_decodeLiteralsBlock+0x88> | |
| 20e: eb 1e jmp 22e <ZSTD_decodeLiteralsBlock+0x1ce> | |
| litSize = istart[0] >> 3; | |
| 210: 48 c1 eb 03 shr $0x3,%rbx | |
| 214: b8 01 00 00 00 mov $0x1,%eax | |
| if (lhSize+litSize+WILDCOPY_OVERLENGTH > srcSize) { /* risk reading beyond src buffer with wildcopy */ | |
| 219: 48 8d 2c 18 lea (%rax,%rbx,1),%rbp | |
| 21d: 48 8d 34 18 lea (%rax,%rbx,1),%rsi | |
| 221: 48 83 c6 20 add $0x20,%rsi | |
| 225: 48 39 d6 cmp %rdx,%rsi | |
| 228: 0f 87 ba fe ff ff ja e8 <ZSTD_decodeLiteralsBlock+0x88> | |
| dctx->litPtr = istart+lhSize; | |
| 22e: 48 01 c1 add %rax,%rcx | |
| 231: 49 89 8e a0 75 00 00 mov %rcx,0x75a0(%r14) | |
| dctx->litSize = litSize; | |
| 238: 49 89 9e c0 75 00 00 mov %rbx,0x75c0(%r14) | |
| 23f: 49 89 ef mov %rbp,%r15 | |
| 242: e9 31 fe ff ff jmpq 78 <ZSTD_decodeLiteralsBlock+0x18> | |
| 247: 0f b7 19 movzwl (%rcx),%ebx | |
| litSize = MEM_readLE16(istart) >> 4; | |
| 24a: 48 c1 eb 04 shr $0x4,%rbx | |
| 24e: 41 bf 02 00 00 00 mov $0x2,%r15d | |
| 254: eb 0a jmp 260 <ZSTD_decodeLiteralsBlock+0x200> | |
| litSize = istart[0] >> 3; | |
| 256: 48 c1 eb 03 shr $0x3,%rbx | |
| 25a: 41 bf 01 00 00 00 mov $0x1,%r15d | |
| ZSTD_memset(dctx->litBuffer, istart[lhSize], litSize + WILDCOPY_OVERLENGTH); | |
| 260: 4d 8d a6 90 76 00 00 lea 0x7690(%r14),%r12 | |
| 267: 48 8d 53 20 lea 0x20(%rbx),%rdx | |
| 26b: 42 0f b6 34 39 movzbl (%rcx,%r15,1),%esi | |
| 270: 4c 89 e7 mov %r12,%rdi | |
| 273: e8 00 00 00 00 callq 278 <ZSTD_decodeLiteralsBlock+0x218> | |
| dctx->litPtr = dctx->litBuffer; | |
| 278: 4d 89 a6 a0 75 00 00 mov %r12,0x75a0(%r14) | |
| dctx->litSize = litSize; | |
| 27f: 49 89 9e c0 75 00 00 mov %rbx,0x75c0(%r14) | |
| return lhSize+1; | |
| 286: 49 83 c7 01 add $0x1,%r15 | |
| 28a: e9 e9 fd ff ff jmpq 78 <ZSTD_decodeLiteralsBlock+0x18> | |
| litSize = (lhc >> 4) & 0x3FFF; | |
| 28f: 89 fe mov %edi,%esi | |
| 291: c1 ee 04 shr $0x4,%esi | |
| 294: 81 e6 ff 3f 00 00 and $0x3fff,%esi | |
| litCSize = lhc >> 18; | |
| 29a: c1 ef 12 shr $0x12,%edi | |
| 29d: bb 04 00 00 00 mov $0x4,%ebx | |
| 2a2: 45 31 d2 xor %r10d,%r10d | |
| 2a5: eb 22 jmp 2c9 <ZSTD_decodeLiteralsBlock+0x269> | |
| singleStream = !lhlCode; | |
| 2a7: 45 31 d2 xor %r10d,%r10d | |
| 2aa: 84 db test %bl,%bl | |
| 2ac: 41 0f 94 c2 sete %r10b | |
| litSize = (lhc >> 4) & 0x3FF; | |
| 2b0: 89 fe mov %edi,%esi | |
| 2b2: c1 ee 04 shr $0x4,%esi | |
| 2b5: 81 e6 ff 03 00 00 and $0x3ff,%esi | |
| litCSize = (lhc >> 14) & 0x3FF; | |
| 2bb: c1 ef 0e shr $0xe,%edi | |
| 2be: 81 e7 ff 03 00 00 and $0x3ff,%edi | |
| 2c4: bb 03 00 00 00 mov $0x3,%ebx | |
| 2c9: 89 f8 mov %edi,%eax | |
| RETURN_ERROR_IF(litCSize + lhSize > srcSize, corruption_detected, ""); | |
| 2cb: 4c 8d 2c 18 lea (%rax,%rbx,1),%r13 | |
| 2cf: 49 39 d5 cmp %rdx,%r13 | |
| 2d2: 0f 87 a0 fd ff ff ja 78 <ZSTD_decodeLiteralsBlock+0x18> | |
| 2d8: 89 f5 mov %esi,%ebp | |
| 2da: 81 fd 01 03 00 00 cmp $0x301,%ebp | |
| if (dctx->ddictIsCold && (litSize > 768 /* heuristic */)) { | |
| 2e0: 72 74 jb 356 <ZSTD_decodeLiteralsBlock+0x2f6> | |
| 2e2: 41 83 be f4 75 00 00 cmpl $0x0,0x75f4(%r14) | |
| 2e9: 00 | |
| 2ea: 74 6a je 356 <ZSTD_decodeLiteralsBlock+0x2f6> | |
| 2ec: ba c0 01 00 00 mov $0x1c0,%edx | |
| PREFETCH_AREA(dctx->HUFptr, sizeof(dctx->entropy.hufTable)); | |
| 2f1: 49 03 56 18 add 0x18(%r14),%rdx | |
| 2f5: 31 f6 xor %esi,%esi | |
| 2f7: 0f 18 94 32 40 fe ff prefetcht1 -0x1c0(%rdx,%rsi,1) | |
| 2fe: ff | |
| 2ff: 48 81 fe c4 3f 00 00 cmp $0x3fc4,%rsi | |
| 306: 73 4e jae 356 <ZSTD_decodeLiteralsBlock+0x2f6> | |
| 308: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) | |
| 30f: 00 | |
| 310: 0f 18 94 32 80 fe ff prefetcht1 -0x180(%rdx,%rsi,1) | |
| 317: ff | |
| 318: 0f 18 94 32 c0 fe ff prefetcht1 -0x140(%rdx,%rsi,1) | |
| 31f: ff | |
| 320: 0f 18 94 32 00 ff ff prefetcht1 -0x100(%rdx,%rsi,1) | |
| 327: ff | |
| 328: 0f 18 94 32 40 ff ff prefetcht1 -0xc0(%rdx,%rsi,1) | |
| 32f: ff | |
| 330: 0f 18 54 32 80 prefetcht1 -0x80(%rdx,%rsi,1) | |
| 335: 0f 18 54 32 c0 prefetcht1 -0x40(%rdx,%rsi,1) | |
| 33a: 0f 18 14 32 prefetcht1 (%rdx,%rsi,1) | |
| 33e: 48 81 c6 00 02 00 00 add $0x200,%rsi | |
| 345: 0f 18 94 32 40 fe ff prefetcht1 -0x1c0(%rdx,%rsi,1) | |
| 34c: ff | |
| 34d: 48 81 fe c4 3f 00 00 cmp $0x3fc4,%rsi | |
| 354: 72 ba jb 310 <ZSTD_decodeLiteralsBlock+0x2b0> | |
| if (litEncType==set_repeat) { | |
| 356: 41 83 fc 03 cmp $0x3,%r12d | |
| 35a: 75 2a jne 386 <ZSTD_decodeLiteralsBlock+0x326> | |
| 35c: 49 8d be 90 76 00 00 lea 0x7690(%r14),%rdi | |
| 363: 48 01 d9 add %rbx,%rcx | |
| 366: 4d 8b 46 18 mov 0x18(%r14),%r8 | |
| 36a: 45 8b 8e d8 75 00 00 mov 0x75d8(%r14),%r9d | |
| hufSuccess = HUF_decompress4X_usingDTable_bmi2( | |
| 371: 48 89 ee mov %rbp,%rsi | |
| 374: 48 89 ca mov %rcx,%rdx | |
| 377: 48 89 c1 mov %rax,%rcx | |
| 37a: 45 85 d2 test %r10d,%r10d | |
| if (singleStream) { | |
| 37d: 74 3e je 3bd <ZSTD_decodeLiteralsBlock+0x35d> | |
| hufSuccess = HUF_decompress1X_usingDTable_bmi2( | |
| 37f: e8 00 00 00 00 callq 384 <ZSTD_decodeLiteralsBlock+0x324> | |
| 384: eb 4d jmp 3d3 <ZSTD_decodeLiteralsBlock+0x373> | |
| 386: 49 8d be 38 28 00 00 lea 0x2838(%r14),%rdi | |
| 38d: 49 8d b6 90 76 00 00 lea 0x7690(%r14),%rsi | |
| 394: 48 01 d9 add %rbx,%rcx | |
| 397: 4d 8d 8e bc 6a 00 00 lea 0x6abc(%r14),%r9 | |
| 39e: 41 8b 9e d8 75 00 00 mov 0x75d8(%r14),%ebx | |
| hufSuccess = HUF_decompress4X_hufOnly_wksp_bmi2( | |
| 3a5: 48 89 ea mov %rbp,%rdx | |
| 3a8: 49 89 c0 mov %rax,%r8 | |
| 3ab: 45 85 d2 test %r10d,%r10d | |
| if (singleStream) { | |
| 3ae: 74 14 je 3c4 <ZSTD_decodeLiteralsBlock+0x364> | |
| hufSuccess = HUF_decompress1X1_DCtx_wksp_bmi2( | |
| 3b0: 53 push %rbx | |
| 3b1: 68 00 0a 00 00 pushq $0xa00 | |
| 3b6: e8 00 00 00 00 callq 3bb <ZSTD_decodeLiteralsBlock+0x35b> | |
| 3bb: eb 12 jmp 3cf <ZSTD_decodeLiteralsBlock+0x36f> | |
| hufSuccess = HUF_decompress4X_usingDTable_bmi2( | |
| 3bd: e8 00 00 00 00 callq 3c2 <ZSTD_decodeLiteralsBlock+0x362> | |
| 3c2: eb 0f jmp 3d3 <ZSTD_decodeLiteralsBlock+0x373> | |
| hufSuccess = HUF_decompress4X_hufOnly_wksp_bmi2( | |
| 3c4: 53 push %rbx | |
| 3c5: 68 00 0a 00 00 pushq $0xa00 | |
| 3ca: e8 00 00 00 00 callq 3cf <ZSTD_decodeLiteralsBlock+0x36f> | |
| 3cf: 48 83 c4 10 add $0x10,%rsp | |
| ******************************************/ | |
| #undef ERROR /* already defined on Visual Studio */ | |
| #define ERROR(name) ZSTD_ERROR(name) | |
| #define ZSTD_ERROR(name) ((size_t)-PREFIX(name)) | |
| ERR_STATIC unsigned ERR_isError(size_t code) { return (code > ERROR(maxCode)); } | |
| 3d3: 48 83 f8 88 cmp $0xffffffffffffff88,%rax | |
| RETURN_ERROR_IF(HUF_isError(hufSuccess), corruption_detected, ""); | |
| 3d7: 0f 87 9b fc ff ff ja 78 <ZSTD_decodeLiteralsBlock+0x18> | |
| dctx->litPtr = dctx->litBuffer; | |
| 3dd: 49 8d 86 90 76 00 00 lea 0x7690(%r14),%rax | |
| 3e4: 49 89 86 a0 75 00 00 mov %rax,0x75a0(%r14) | |
| dctx->litSize = litSize; | |
| 3eb: 49 89 ae c0 75 00 00 mov %rbp,0x75c0(%r14) | |
| dctx->litEntropy = 1; | |
| 3f2: 41 c7 86 28 75 00 00 movl $0x1,0x7528(%r14) | |
| 3f9: 01 00 00 00 | |
| if (litEncType==set_compressed) dctx->HUFptr = dctx->entropy.hufTable; | |
| 3fd: 41 83 fc 02 cmp $0x2,%r12d | |
| 401: 75 0b jne 40e <ZSTD_decodeLiteralsBlock+0x3ae> | |
| 403: 49 8d 86 38 28 00 00 lea 0x2838(%r14),%rax | |
| 40a: 49 89 46 18 mov %rax,0x18(%r14) | |
| ZSTD_memset(dctx->litBuffer + dctx->litSize, 0, WILDCOPY_OVERLENGTH); | |
| 40e: 0f 57 c0 xorps %xmm0,%xmm0 | |
| 411: 41 0f 11 84 2e a0 76 movups %xmm0,0x76a0(%r14,%rbp,1) | |
| 418: 00 00 | |
| 41a: 41 0f 11 84 2e 90 76 movups %xmm0,0x7690(%r14,%rbp,1) | |
| 421: 00 00 | |
| 423: 4d 89 ef mov %r13,%r15 | |
| 426: e9 4d fc ff ff jmpq 78 <ZSTD_decodeLiteralsBlock+0x18> | |
| 42b: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) | |
| 432: 00 00 00 | |
| 435: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) | |
| 43c: 00 00 00 | |
| 43f: 90 nop | |
| 0000000000000440 <ZSTD_buildFSETable>: | |
| void ZSTD_buildFSETable(ZSTD_seqSymbol* dt, | |
| const short* normalizedCounter, unsigned maxSymbolValue, | |
| const U32* baseValue, const U32* nbAdditionalBits, | |
| unsigned tableLog, void* wksp, size_t wkspSize, int bmi2) | |
| { | |
| 440: 55 push %rbp | |
| 441: 41 57 push %r15 | |
| 443: 41 56 push %r14 | |
| 445: 41 55 push %r13 | |
| 447: 41 54 push %r12 | |
| 449: 53 push %rbx | |
| 44a: 49 89 cc mov %rcx,%r12 | |
| #if DYNAMIC_BMI2 | |
| if (bmi2) { | |
| 44d: 83 7c 24 48 00 cmpl $0x0,0x48(%rsp) | |
| 452: 74 12 je 466 <ZSTD_buildFSETable+0x26> | |
| ZSTD_buildFSETable_body_bmi2(dt, normalizedCounter, maxSymbolValue, | |
| 454: 4c 89 e1 mov %r12,%rcx | |
| 457: 5b pop %rbx | |
| 458: 41 5c pop %r12 | |
| 45a: 41 5d pop %r13 | |
| 45c: 41 5e pop %r14 | |
| 45e: 41 5f pop %r15 | |
| 460: 5d pop %rbp | |
| 461: e9 5a 04 00 00 jmpq 8c0 <ZSTD_buildFSETable_body_bmi2> | |
| U32 const tableSize = 1 << tableLog; | |
| 466: 41 be 01 00 00 00 mov $0x1,%r14d | |
| 46c: 44 89 c9 mov %r9d,%ecx | |
| 46f: 41 d3 e6 shl %cl,%r14d | |
| 472: 4c 8b 6c 24 38 mov 0x38(%rsp),%r13 | |
| 477: 41 bb 01 00 00 00 mov $0x1,%r11d | |
| U32 highThreshold = tableSize - 1; | |
| 47d: 41 8d 5e ff lea -0x1(%r14),%ebx | |
| U32 const maxSV1 = maxSymbolValue + 1; | |
| 481: 89 d0 mov %edx,%eax | |
| 483: ff c0 inc %eax | |
| for (s=0; s<maxSV1; s++) { | |
| 485: 75 1f jne 4a6 <ZSTD_buildFSETable+0x66> | |
| ZSTD_memcpy(dt, &DTableH, sizeof(DTableH)); | |
| 487: c7 07 01 00 00 00 movl $0x1,(%rdi) | |
| 48d: 44 89 4f 04 mov %r9d,0x4(%rdi) | |
| size_t const step = FSE_TABLESTEP(tableSize); | |
| 491: 44 89 f0 mov %r14d,%eax | |
| 494: d1 e8 shr %eax | |
| 496: 44 89 f1 mov %r14d,%ecx | |
| 499: c1 e9 03 shr $0x3,%ecx | |
| 49c: 01 c1 add %eax,%ecx | |
| 49e: 83 c1 03 add $0x3,%ecx | |
| 4a1: e9 57 03 00 00 jmpq 7fd <ZSTD_buildFSETable+0x3bd> | |
| 4a6: 4c 89 74 24 c0 mov %r14,-0x40(%rsp) | |
| 4ab: 41 8d 49 ff lea -0x1(%r9),%ecx | |
| 4af: 41 be 00 00 01 00 mov $0x10000,%r14d | |
| 4b5: 41 d3 e6 shl %cl,%r14d | |
| 4b8: 41 c1 fe 10 sar $0x10,%r14d | |
| for (s=0; s<maxSV1; s++) { | |
| 4bc: 41 89 c2 mov %eax,%r10d | |
| 4bf: 45 31 ff xor %r15d,%r15d | |
| 4c2: 85 d2 test %edx,%edx | |
| 4c4: 4c 89 54 24 c8 mov %r10,-0x38(%rsp) | |
| 4c9: 0f 84 87 00 00 00 je 556 <ZSTD_buildFSETable+0x116> | |
| 4cf: 41 83 e2 fe and $0xfffffffe,%r10d | |
| 4d3: 41 bb 01 00 00 00 mov $0x1,%r11d | |
| 4d9: 31 c9 xor %ecx,%ecx | |
| 4db: 89 da mov %ebx,%edx | |
| 4dd: eb 20 jmp 4ff <ZSTD_buildFSETable+0xbf> | |
| 4df: 90 nop | |
| tableDecode[highThreshold--].baseValue = s; | |
| 4e0: 89 d0 mov %edx,%eax | |
| 4e2: 83 c2 ff add $0xffffffff,%edx | |
| 4e5: 8d 69 01 lea 0x1(%rcx),%ebp | |
| 4e8: 89 6c c7 0c mov %ebp,0xc(%rdi,%rax,8) | |
| 4ec: 66 b8 01 00 mov $0x1,%ax | |
| symbolNext[s] = 1; | |
| 4f0: 66 41 89 44 4d 02 mov %ax,0x2(%r13,%rcx,2) | |
| for (s=0; s<maxSV1; s++) { | |
| 4f6: 48 83 c1 02 add $0x2,%rcx | |
| 4fa: 49 39 ca cmp %rcx,%r10 | |
| 4fd: 74 5b je 55a <ZSTD_buildFSETable+0x11a> | |
| if (normalizedCounter[s]==-1) { | |
| 4ff: 0f bf 04 4e movswl (%rsi,%rcx,2),%eax | |
| 503: 83 f8 ff cmp $0xffffffff,%eax | |
| 506: 74 28 je 530 <ZSTD_buildFSETable+0xf0> | |
| if (normalizedCounter[s] >= largeLimit) DTableH.fastMode=0; | |
| 508: 41 39 c6 cmp %eax,%r14d | |
| 50b: 45 0f 4e df cmovle %r15d,%r11d | |
| symbolNext[s] = 1; | |
| 50f: 66 41 89 44 4d 00 mov %ax,0x0(%r13,%rcx,2) | |
| if (normalizedCounter[s]==-1) { | |
| 515: 0f bf 44 4e 02 movswl 0x2(%rsi,%rcx,2),%eax | |
| 51a: 83 f8 ff cmp $0xffffffff,%eax | |
| 51d: 75 2e jne 54d <ZSTD_buildFSETable+0x10d> | |
| 51f: eb bf jmp 4e0 <ZSTD_buildFSETable+0xa0> | |
| 521: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) | |
| 528: 00 00 00 | |
| 52b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) | |
| tableDecode[highThreshold--].baseValue = s; | |
| 530: 89 d0 mov %edx,%eax | |
| 532: 83 c2 ff add $0xffffffff,%edx | |
| 535: 89 4c c7 0c mov %ecx,0xc(%rdi,%rax,8) | |
| 539: 66 b8 01 00 mov $0x1,%ax | |
| symbolNext[s] = 1; | |
| 53d: 66 41 89 44 4d 00 mov %ax,0x0(%r13,%rcx,2) | |
| if (normalizedCounter[s]==-1) { | |
| 543: 0f bf 44 4e 02 movswl 0x2(%rsi,%rcx,2),%eax | |
| 548: 83 f8 ff cmp $0xffffffff,%eax | |
| 54b: 74 93 je 4e0 <ZSTD_buildFSETable+0xa0> | |
| if (normalizedCounter[s] >= largeLimit) DTableH.fastMode=0; | |
| 54d: 41 39 c6 cmp %eax,%r14d | |
| 550: 45 0f 4e df cmovle %r15d,%r11d | |
| 554: eb 9a jmp 4f0 <ZSTD_buildFSETable+0xb0> | |
| 556: 31 c9 xor %ecx,%ecx | |
| 558: 89 da mov %ebx,%edx | |
| 55a: 4c 8b 7c 24 c8 mov -0x38(%rsp),%r15 | |
| if (normalizedCounter[s]==-1) { | |
| 55f: 41 f6 c7 01 test $0x1,%r15b | |
| 563: 74 28 je 58d <ZSTD_buildFSETable+0x14d> | |
| 565: 0f bf 04 4e movswl (%rsi,%rcx,2),%eax | |
| 569: 83 f8 ff cmp $0xffffffff,%eax | |
| 56c: 74 0c je 57a <ZSTD_buildFSETable+0x13a> | |
| 56e: 45 31 d2 xor %r10d,%r10d | |
| if (normalizedCounter[s] >= largeLimit) DTableH.fastMode=0; | |
| 571: 41 39 c6 cmp %eax,%r14d | |
| 574: 45 0f 4e da cmovle %r10d,%r11d | |
| 578: eb 0d jmp 587 <ZSTD_buildFSETable+0x147> | |
| tableDecode[highThreshold--].baseValue = s; | |
| 57a: 89 d0 mov %edx,%eax | |
| 57c: 83 c2 ff add $0xffffffff,%edx | |
| 57f: 89 4c c7 0c mov %ecx,0xc(%rdi,%rax,8) | |
| 583: 66 b8 01 00 mov $0x1,%ax | |
| symbolNext[s] = 1; | |
| 587: 66 41 89 44 4d 00 mov %ax,0x0(%r13,%rcx,2) | |
| ZSTD_memcpy(dt, &DTableH, sizeof(DTableH)); | |
| 58d: 44 89 1f mov %r11d,(%rdi) | |
| 590: 44 89 4f 04 mov %r9d,0x4(%rdi) | |
| 594: 4c 8b 74 24 c0 mov -0x40(%rsp),%r14 | |
| 599: 44 89 f1 mov %r14d,%ecx | |
| 59c: c1 e9 03 shr $0x3,%ecx | |
| if (highThreshold == tableSize - 1) { | |
| 59f: 39 da cmp %ebx,%edx | |
| 5a1: 48 89 74 24 b8 mov %rsi,-0x48(%rsp) | |
| 5a6: 0f 85 96 01 00 00 jne 742 <ZSTD_buildFSETable+0x302> | |
| 5ac: 48 89 4c 24 d0 mov %rcx,-0x30(%rsp) | |
| 5b1: 4c 89 64 24 d8 mov %r12,-0x28(%rsp) | |
| 5b6: 4c 89 44 24 e0 mov %r8,-0x20(%rsp) | |
| 5bb: 4c 89 4c 24 e8 mov %r9,-0x18(%rsp) | |
| 5c0: 4d 8d 45 6a lea 0x6a(%r13),%r8 | |
| for (s=0; s<maxSV1; ++s, sv += add) { | |
| 5c4: 49 8d 85 e2 00 00 00 lea 0xe2(%r13),%rax | |
| 5cb: 48 89 44 24 f0 mov %rax,-0x10(%rsp) | |
| 5d0: 31 ed xor %ebp,%ebp | |
| 5d2: 49 b9 01 01 01 01 01 movabs $0x101010101010101,%r9 | |
| 5d9: 01 01 01 | |
| 5dc: 31 c9 xor %ecx,%ecx | |
| 5de: 45 31 ff xor %r15d,%r15d | |
| 5e1: 4c 89 44 24 f8 mov %r8,-0x8(%rsp) | |
| 5e6: eb 21 jmp 609 <ZSTD_buildFSETable+0x1c9> | |
| 5e8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) | |
| 5ef: 00 | |
| pos += n; | |
| 5f0: 49 0f bf c6 movswq %r14w,%rax | |
| 5f4: 48 01 c1 add %rax,%rcx | |
| for (s=0; s<maxSV1; ++s, sv += add) { | |
| 5f7: 48 83 c5 01 add $0x1,%rbp | |
| 5fb: 4d 01 cf add %r9,%r15 | |
| 5fe: 48 3b 6c 24 c8 cmp -0x38(%rsp),%rbp | |
| 603: 0f 84 d1 01 00 00 je 7da <ZSTD_buildFSETable+0x39a> | |
| int const n = normalizedCounter[s]; | |
| 609: 44 0f b7 34 6e movzwl (%rsi,%rbp,2),%r14d | |
| MEM_STATIC void MEM_write64(void* memPtr, U64 value) { ((unalign64*)memPtr)->v = value; } | |
| 60e: 4d 89 3c 08 mov %r15,(%r8,%rcx,1) | |
| for (i = 8; i < n; i += 8) { | |
| 612: 66 41 83 fe 09 cmp $0x9,%r14w | |
| 617: 7c d7 jl 5f0 <ZSTD_buildFSETable+0x1b0> | |
| 619: 66 41 83 fe 10 cmp $0x10,%r14w | |
| 61e: 41 ba 10 00 00 00 mov $0x10,%r10d | |
| 624: 4d 0f 47 d6 cmova %r14,%r10 | |
| 628: 4d 8d 24 08 lea (%r8,%rcx,1),%r12 | |
| 62c: 49 83 c2 f7 add $0xfffffffffffffff7,%r10 | |
| 630: ba 08 00 00 00 mov $0x8,%edx | |
| 635: 49 83 fa 18 cmp $0x18,%r10 | |
| 639: 0f 82 f1 00 00 00 jb 730 <ZSTD_buildFSETable+0x2f0> | |
| 63f: 49 c1 ea 03 shr $0x3,%r10 | |
| 643: 49 83 c2 01 add $0x1,%r10 | |
| 647: 4c 89 d6 mov %r10,%rsi | |
| 64a: 48 83 e6 fc and $0xfffffffffffffffc,%rsi | |
| 64e: 66 49 0f 6e c7 movq %r15,%xmm0 | |
| 653: 66 0f 70 c0 44 pshufd $0x44,%xmm0,%xmm0 | |
| 658: 48 8d 56 fc lea -0x4(%rsi),%rdx | |
| 65c: 49 89 d0 mov %rdx,%r8 | |
| 65f: 49 c1 e8 02 shr $0x2,%r8 | |
| 663: 49 83 c0 01 add $0x1,%r8 | |
| 667: 45 89 c1 mov %r8d,%r9d | |
| 66a: 41 83 e1 03 and $0x3,%r9d | |
| 66e: 48 83 fa 0c cmp $0xc,%rdx | |
| 672: 73 04 jae 678 <ZSTD_buildFSETable+0x238> | |
| 674: 31 d2 xor %edx,%edx | |
| 676: eb 59 jmp 6d1 <ZSTD_buildFSETable+0x291> | |
| 678: 48 8b 44 24 f0 mov -0x10(%rsp),%rax | |
| 67d: 4c 8d 1c 08 lea (%rax,%rcx,1),%r11 | |
| 681: 49 83 e0 fc and $0xfffffffffffffffc,%r8 | |
| 685: 49 f7 d8 neg %r8 | |
| 688: 31 d2 xor %edx,%edx | |
| 68a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) | |
| 690: f3 41 0f 7f 44 d3 90 movdqu %xmm0,-0x70(%r11,%rdx,8) | |
| 697: f3 41 0f 7f 44 d3 a0 movdqu %xmm0,-0x60(%r11,%rdx,8) | |
| 69e: f3 41 0f 7f 44 d3 b0 movdqu %xmm0,-0x50(%r11,%rdx,8) | |
| 6a5: f3 41 0f 7f 44 d3 c0 movdqu %xmm0,-0x40(%r11,%rdx,8) | |
| 6ac: f3 41 0f 7f 44 d3 d0 movdqu %xmm0,-0x30(%r11,%rdx,8) | |
| 6b3: f3 41 0f 7f 44 d3 e0 movdqu %xmm0,-0x20(%r11,%rdx,8) | |
| 6ba: f3 41 0f 7f 44 d3 f0 movdqu %xmm0,-0x10(%r11,%rdx,8) | |
| 6c1: f3 41 0f 7f 04 d3 movdqu %xmm0,(%r11,%rdx,8) | |
| 6c7: 48 83 c2 10 add $0x10,%rdx | |
| 6cb: 49 83 c0 04 add $0x4,%r8 | |
| 6cf: 75 bf jne 690 <ZSTD_buildFSETable+0x250> | |
| 6d1: 4d 85 c9 test %r9,%r9 | |
| 6d4: 74 27 je 6fd <ZSTD_buildFSETable+0x2bd> | |
| 6d6: 48 c1 e2 03 shl $0x3,%rdx | |
| 6da: 49 f7 d9 neg %r9 | |
| 6dd: 0f 1f 00 nopl (%rax) | |
| 6e0: 48 89 d0 mov %rdx,%rax | |
| 6e3: 48 83 c8 08 or $0x8,%rax | |
| 6e7: f3 41 0f 7f 04 04 movdqu %xmm0,(%r12,%rax,1) | |
| 6ed: f3 41 0f 7f 44 04 10 movdqu %xmm0,0x10(%r12,%rax,1) | |
| 6f4: 48 83 c2 20 add $0x20,%rdx | |
| 6f8: 49 ff c1 inc %r9 | |
| 6fb: 75 e3 jne 6e0 <ZSTD_buildFSETable+0x2a0> | |
| 6fd: 49 39 f2 cmp %rsi,%r10 | |
| 700: 48 89 f0 mov %rsi,%rax | |
| 703: 48 8b 74 24 b8 mov -0x48(%rsp),%rsi | |
| 708: 4c 8b 44 24 f8 mov -0x8(%rsp),%r8 | |
| 70d: 49 b9 01 01 01 01 01 movabs $0x101010101010101,%r9 | |
| 714: 01 01 01 | |
| 717: 0f 84 d3 fe ff ff je 5f0 <ZSTD_buildFSETable+0x1b0> | |
| 71d: 48 8d 14 c5 08 00 00 lea 0x8(,%rax,8),%rdx | |
| 724: 00 | |
| 725: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) | |
| 72c: 00 00 00 | |
| 72f: 90 nop | |
| 730: 4d 89 3c 14 mov %r15,(%r12,%rdx,1) | |
| 734: 48 83 c2 08 add $0x8,%rdx | |
| 738: 4c 39 f2 cmp %r14,%rdx | |
| 73b: 72 f3 jb 730 <ZSTD_buildFSETable+0x2f0> | |
| 73d: e9 ae fe ff ff jmpq 5f0 <ZSTD_buildFSETable+0x1b0> | |
| U32 const step = FSE_TABLESTEP(tableSize); | |
| 742: 44 89 f0 mov %r14d,%eax | |
| 745: d1 e8 shr %eax | |
| 747: 01 c1 add %eax,%ecx | |
| 749: 83 c1 03 add $0x3,%ecx | |
| 74c: 45 31 d2 xor %r10d,%r10d | |
| 74f: 31 c0 xor %eax,%eax | |
| 751: eb 1f jmp 772 <ZSTD_buildFSETable+0x332> | |
| 753: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) | |
| 75a: 00 00 00 | |
| 75d: 0f 1f 00 nopl (%rax) | |
| 760: 48 8b 74 24 b8 mov -0x48(%rsp),%rsi | |
| for (s=0; s<maxSV1; s++) { | |
| 765: 49 83 c2 01 add $0x1,%r10 | |
| 769: 4d 39 fa cmp %r15,%r10 | |
| 76c: 0f 84 c9 00 00 00 je 83b <ZSTD_buildFSETable+0x3fb> | |
| int const n = normalizedCounter[s]; | |
| 772: 46 0f bf 1c 56 movswl (%rsi,%r10,2),%r11d | |
| 777: 45 85 db test %r11d,%r11d | |
| for (i=0; i<n; i++) { | |
| 77a: 7e e4 jle 760 <ZSTD_buildFSETable+0x320> | |
| 77c: 66 41 83 fb 01 cmp $0x1,%r11w | |
| 781: 74 3a je 7bd <ZSTD_buildFSETable+0x37d> | |
| 783: 44 89 dd mov %r11d,%ebp | |
| 786: 83 e5 fe and $0xfffffffe,%ebp | |
| 789: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) | |
| tableDecode[position].baseValue = s; | |
| 790: 89 c6 mov %eax,%esi | |
| 792: 44 89 54 f7 0c mov %r10d,0xc(%rdi,%rsi,8) | |
| 797: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) | |
| 79e: 00 00 | |
| 7a0: 01 c8 add %ecx,%eax | |
| 7a2: 21 d8 and %ebx,%eax | |
| while (position > highThreshold) position = (position + step) & tableMask; /* lowprob area */ | |
| 7a4: 39 d0 cmp %edx,%eax | |
| 7a6: 77 f8 ja 7a0 <ZSTD_buildFSETable+0x360> | |
| tableDecode[position].baseValue = s; | |
| 7a8: 89 c6 mov %eax,%esi | |
| 7aa: 44 89 54 f7 0c mov %r10d,0xc(%rdi,%rsi,8) | |
| 7af: 90 nop | |
| 7b0: 01 c8 add %ecx,%eax | |
| 7b2: 21 d8 and %ebx,%eax | |
| while (position > highThreshold) position = (position + step) & tableMask; /* lowprob area */ | |
| 7b4: 39 d0 cmp %edx,%eax | |
| 7b6: 77 f8 ja 7b0 <ZSTD_buildFSETable+0x370> | |
| for (i=0; i<n; i++) { | |
| 7b8: 83 c5 fe add $0xfffffffe,%ebp | |
| 7bb: 75 d3 jne 790 <ZSTD_buildFSETable+0x350> | |
| while (position > highThreshold) position = (position + step) & tableMask; /* lowprob area */ | |
| 7bd: 41 f6 c3 01 test $0x1,%r11b | |
| 7c1: 48 8b 74 24 b8 mov -0x48(%rsp),%rsi | |
| 7c6: 74 9d je 765 <ZSTD_buildFSETable+0x325> | |
| tableDecode[position].baseValue = s; | |
| 7c8: 89 c5 mov %eax,%ebp | |
| 7ca: 44 89 54 ef 0c mov %r10d,0xc(%rdi,%rbp,8) | |
| 7cf: 90 nop | |
| 7d0: 01 c8 add %ecx,%eax | |
| 7d2: 21 d8 and %ebx,%eax | |
| while (position > highThreshold) position = (position + step) & tableMask; /* lowprob area */ | |
| 7d4: 39 d0 cmp %edx,%eax | |
| 7d6: 77 f8 ja 7d0 <ZSTD_buildFSETable+0x390> | |
| 7d8: eb 8b jmp 765 <ZSTD_buildFSETable+0x325> | |
| 7da: 4c 8b 74 24 c0 mov -0x40(%rsp),%r14 | |
| size_t const step = FSE_TABLESTEP(tableSize); | |
| 7df: 44 89 f0 mov %r14d,%eax | |
| 7e2: d1 e8 shr %eax | |
| 7e4: 48 8b 4c 24 d0 mov -0x30(%rsp),%rcx | |
| 7e9: 01 c1 add %eax,%ecx | |
| 7eb: 83 c1 03 add $0x3,%ecx | |
| 7ee: 4c 8b 4c 24 e8 mov -0x18(%rsp),%r9 | |
| 7f3: 4c 8b 44 24 e0 mov -0x20(%rsp),%r8 | |
| 7f8: 4c 8b 64 24 d8 mov -0x28(%rsp),%r12 | |
| size_t const tableMask = tableSize-1; | |
| 7fd: 89 d8 mov %ebx,%eax | |
| size_t const step = FSE_TABLESTEP(tableSize); | |
| 7ff: 41 89 cb mov %ecx,%r11d | |
| for (s = 0; s < (size_t)tableSize; s += unroll) { | |
| 802: 45 89 f2 mov %r14d,%r10d | |
| 805: 4b 8d 34 1b lea (%r11,%r11,1),%rsi | |
| 809: 31 ed xor %ebp,%ebp | |
| 80b: 31 db xor %ebx,%ebx | |
| 80d: 0f 1f 00 nopl (%rax) | |
| size_t const uPosition = (position + (u * step)) & tableMask; | |
| 810: 89 d9 mov %ebx,%ecx | |
| 812: 21 c1 and %eax,%ecx | |
| tableDecode[uPosition].baseValue = spread[s + u]; | |
| 814: 41 0f b6 54 2d 6a movzbl 0x6a(%r13,%rbp,1),%edx | |
| 81a: 89 54 cf 0c mov %edx,0xc(%rdi,%rcx,8) | |
| size_t const uPosition = (position + (u * step)) & tableMask; | |
| 81e: 41 8d 0c 1b lea (%r11,%rbx,1),%ecx | |
| 822: 21 c1 and %eax,%ecx | |
| tableDecode[uPosition].baseValue = spread[s + u]; | |
| 824: 41 0f b6 54 2d 6b movzbl 0x6b(%r13,%rbp,1),%edx | |
| 82a: 89 54 cf 0c mov %edx,0xc(%rdi,%rcx,8) | |
| position = (position + (unroll * step)) & tableMask; | |
| 82e: 01 f3 add %esi,%ebx | |
| 830: 21 c3 and %eax,%ebx | |
| for (s = 0; s < (size_t)tableSize; s += unroll) { | |
| 832: 48 83 c5 02 add $0x2,%rbp | |
| 836: 4c 39 d5 cmp %r10,%rbp | |
| 839: 72 d5 jb 810 <ZSTD_buildFSETable+0x3d0> | |
| 83b: 41 83 c1 01 add $0x1,%r9d | |
| for (u=0; u<tableSize; u++) { | |
| 83f: 41 83 fe 01 cmp $0x1,%r14d | |
| 843: b8 01 00 00 00 mov $0x1,%eax | |
| 848: 41 0f 47 c6 cmova %r14d,%eax | |
| 84c: 31 d2 xor %edx,%edx | |
| 84e: 66 90 xchg %ax,%ax | |
| U32 const symbol = tableDecode[u].baseValue; | |
| 850: 8b 74 d7 0c mov 0xc(%rdi,%rdx,8),%esi | |
| U32 const nextState = symbolNext[symbol]++; | |
| 854: 41 0f b7 6c 75 00 movzwl 0x0(%r13,%rsi,2),%ebp | |
| 85a: 8d 4d 01 lea 0x1(%rbp),%ecx | |
| 85d: 66 41 89 4c 75 00 mov %cx,0x0(%r13,%rsi,2) | |
| # else | |
| unsigned long r = 0; | |
| return _BitScanReverse(&r, val) ? (unsigned)r : 0; | |
| # endif | |
| # elif defined(__GNUC__) && (__GNUC__ >= 3) /* Use GCC Intrinsic */ | |
| return __builtin_clz (val) ^ 31; | |
| 863: 0f bd cd bsr %ebp,%ecx | |
| 866: f7 d1 not %ecx | |
| 868: 81 c9 e0 00 00 00 or $0xe0,%ecx | |
| tableDecode[u].nbBits = (BYTE) (tableLog - BIT_highbit32(nextState) ); | |
| 86e: 44 01 c9 add %r9d,%ecx | |
| 871: 88 4c d7 0b mov %cl,0xb(%rdi,%rdx,8) | |
| tableDecode[u].nextState = (U16) ( (nextState << tableDecode[u].nbBits) - tableSize); | |
| 875: d3 e5 shl %cl,%ebp | |
| 877: 44 29 f5 sub %r14d,%ebp | |
| 87a: 66 89 6c d7 08 mov %bp,0x8(%rdi,%rdx,8) | |
| tableDecode[u].nbAdditionalBits = (BYTE)nbAdditionalBits[symbol]; | |
| 87f: 41 0f b6 0c b0 movzbl (%r8,%rsi,4),%ecx | |
| 884: 88 4c d7 0a mov %cl,0xa(%rdi,%rdx,8) | |
| tableDecode[u].baseValue = baseValue[symbol]; | |
| 888: 41 8b 0c b4 mov (%r12,%rsi,4),%ecx | |
| 88c: 89 4c d7 0c mov %ecx,0xc(%rdi,%rdx,8) | |
| for (u=0; u<tableSize; u++) { | |
| 890: 48 83 c2 01 add $0x1,%rdx | |
| 894: 48 39 d0 cmp %rdx,%rax | |
| 897: 75 b7 jne 850 <ZSTD_buildFSETable+0x410> | |
| } | |
| #endif | |
| (void)bmi2; | |
| ZSTD_buildFSETable_body_default(dt, normalizedCounter, maxSymbolValue, | |
| baseValue, nbAdditionalBits, tableLog, wksp, wkspSize); | |
| } | |
| 899: 5b pop %rbx | |
| 89a: 41 5c pop %r12 | |
| 89c: 41 5d pop %r13 | |
| 89e: 41 5e pop %r14 | |
| 8a0: 41 5f pop %r15 | |
| 8a2: 5d pop %rbp | |
| 8a3: c3 retq | |
| 8a4: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) | |
| 8ab: 00 00 00 | |
| 8ae: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) | |
| 8b5: 00 00 00 | |
| 8b8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) | |
| 8bf: 00 | |
| 00000000000008c0 <ZSTD_buildFSETable_body_bmi2>: | |
| { | |
| 8c0: 55 push %rbp | |
| 8c1: 41 57 push %r15 | |
| 8c3: 41 56 push %r14 | |
| 8c5: 41 55 push %r13 | |
| 8c7: 41 54 push %r12 | |
| 8c9: 53 push %rbx | |
| 8ca: 49 89 cc mov %rcx,%r12 | |
| 8cd: 4c 8b 5c 24 38 mov 0x38(%rsp),%r11 | |
| 8d2: 41 ba 01 00 00 00 mov $0x1,%r10d | |
| U32 const tableSize = 1 << tableLog; | |
| 8d8: c4 c2 31 f7 da shlx %r9d,%r10d,%ebx | |
| U32 highThreshold = tableSize - 1; | |
| 8dd: 8d 43 ff lea -0x1(%rbx),%eax | |
| U32 const maxSV1 = maxSymbolValue + 1; | |
| 8e0: 89 d1 mov %edx,%ecx | |
| 8e2: ff c1 inc %ecx | |
| 8e4: 48 89 5c 24 c0 mov %rbx,-0x40(%rsp) | |
| for (s=0; s<maxSV1; s++) { | |
| 8e9: 75 1d jne 908 <ZSTD_buildFSETable_body_bmi2+0x48> | |
| ZSTD_memcpy(dt, &DTableH, sizeof(DTableH)); | |
| 8eb: c7 07 01 00 00 00 movl $0x1,(%rdi) | |
| 8f1: 44 89 4f 04 mov %r9d,0x4(%rdi) | |
| size_t const step = FSE_TABLESTEP(tableSize); | |
| 8f5: 89 d9 mov %ebx,%ecx | |
| 8f7: d1 e9 shr %ecx | |
| 8f9: 89 da mov %ebx,%edx | |
| 8fb: c1 ea 03 shr $0x3,%edx | |
| 8fe: 01 ca add %ecx,%edx | |
| 900: 83 c2 03 add $0x3,%edx | |
| 903: e9 51 03 00 00 jmpq c59 <ZSTD_buildFSETable_body_bmi2+0x399> | |
| 908: 41 8d 69 ff lea -0x1(%r9),%ebp | |
| 90c: bb 00 00 01 00 mov $0x10000,%ebx | |
| 911: c4 62 51 f7 f3 shlx %ebp,%ebx,%r14d | |
| 916: 41 c1 fe 10 sar $0x10,%r14d | |
| for (s=0; s<maxSV1; s++) { | |
| 91a: 41 89 cd mov %ecx,%r13d | |
| 91d: 45 31 ff xor %r15d,%r15d | |
| 920: 85 d2 test %edx,%edx | |
| 922: 4c 89 44 24 d0 mov %r8,-0x30(%rsp) | |
| 927: 4c 89 64 24 c8 mov %r12,-0x38(%rsp) | |
| 92c: 0f 84 83 00 00 00 je 9b5 <ZSTD_buildFSETable_body_bmi2+0xf5> | |
| 932: 45 89 ec mov %r13d,%r12d | |
| 935: 41 83 e4 fe and $0xfffffffe,%r12d | |
| 939: 41 ba 01 00 00 00 mov $0x1,%r10d | |
| 93f: 31 db xor %ebx,%ebx | |
| 941: 89 c2 mov %eax,%edx | |
| 943: eb 2a jmp 96f <ZSTD_buildFSETable_body_bmi2+0xaf> | |
| 945: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) | |
| 94c: 00 00 00 | |
| 94f: 90 nop | |
| tableDecode[highThreshold--].baseValue = s; | |
| 950: 89 d1 mov %edx,%ecx | |
| 952: 83 c2 ff add $0xffffffff,%edx | |
| 955: 8d 6b 01 lea 0x1(%rbx),%ebp | |
| 958: 89 6c cf 0c mov %ebp,0xc(%rdi,%rcx,8) | |
| 95c: 66 b9 01 00 mov $0x1,%cx | |
| symbolNext[s] = 1; | |
| 960: 66 41 89 4c 5b 02 mov %cx,0x2(%r11,%rbx,2) | |
| for (s=0; s<maxSV1; s++) { | |
| 966: 48 83 c3 02 add $0x2,%rbx | |
| 96a: 49 39 dc cmp %rbx,%r12 | |
| 96d: 74 4a je 9b9 <ZSTD_buildFSETable_body_bmi2+0xf9> | |
| if (normalizedCounter[s]==-1) { | |
| 96f: 0f bf 0c 5e movswl (%rsi,%rbx,2),%ecx | |
| 973: 83 f9 ff cmp $0xffffffff,%ecx | |
| 976: 74 18 je 990 <ZSTD_buildFSETable_body_bmi2+0xd0> | |
| if (normalizedCounter[s] >= largeLimit) DTableH.fastMode=0; | |
| 978: 41 39 ce cmp %ecx,%r14d | |
| 97b: 45 0f 4e d7 cmovle %r15d,%r10d | |
| symbolNext[s] = 1; | |
| 97f: 66 41 89 0c 5b mov %cx,(%r11,%rbx,2) | |
| if (normalizedCounter[s]==-1) { | |
| 984: 0f bf 4c 5e 02 movswl 0x2(%rsi,%rbx,2),%ecx | |
| 989: 83 f9 ff cmp $0xffffffff,%ecx | |
| 98c: 75 1e jne 9ac <ZSTD_buildFSETable_body_bmi2+0xec> | |
| 98e: eb c0 jmp 950 <ZSTD_buildFSETable_body_bmi2+0x90> | |
| tableDecode[highThreshold--].baseValue = s; | |
| 990: 89 d1 mov %edx,%ecx | |
| 992: 83 c2 ff add $0xffffffff,%edx | |
| 995: 89 5c cf 0c mov %ebx,0xc(%rdi,%rcx,8) | |
| 999: 66 b9 01 00 mov $0x1,%cx | |
| symbolNext[s] = 1; | |
| 99d: 66 41 89 0c 5b mov %cx,(%r11,%rbx,2) | |
| if (normalizedCounter[s]==-1) { | |
| 9a2: 0f bf 4c 5e 02 movswl 0x2(%rsi,%rbx,2),%ecx | |
| 9a7: 83 f9 ff cmp $0xffffffff,%ecx | |
| 9aa: 74 a4 je 950 <ZSTD_buildFSETable_body_bmi2+0x90> | |
| if (normalizedCounter[s] >= largeLimit) DTableH.fastMode=0; | |
| 9ac: 41 39 ce cmp %ecx,%r14d | |
| 9af: 45 0f 4e d7 cmovle %r15d,%r10d | |
| 9b3: eb ab jmp 960 <ZSTD_buildFSETable_body_bmi2+0xa0> | |
| 9b5: 31 db xor %ebx,%ebx | |
| 9b7: 89 c2 mov %eax,%edx | |
| if (normalizedCounter[s]==-1) { | |
| 9b9: 41 f6 c5 01 test $0x1,%r13b | |
| 9bd: 4c 8b 44 24 d0 mov -0x30(%rsp),%r8 | |
| 9c2: 4c 8b 64 24 c8 mov -0x38(%rsp),%r12 | |
| 9c7: 74 26 je 9ef <ZSTD_buildFSETable_body_bmi2+0x12f> | |
| 9c9: 0f bf 0c 5e movswl (%rsi,%rbx,2),%ecx | |
| 9cd: 83 f9 ff cmp $0xffffffff,%ecx | |
| 9d0: 74 0b je 9dd <ZSTD_buildFSETable_body_bmi2+0x11d> | |
| 9d2: 31 ed xor %ebp,%ebp | |
| if (normalizedCounter[s] >= largeLimit) DTableH.fastMode=0; | |
| 9d4: 41 39 ce cmp %ecx,%r14d | |
| 9d7: 44 0f 4e d5 cmovle %ebp,%r10d | |
| 9db: eb 0d jmp 9ea <ZSTD_buildFSETable_body_bmi2+0x12a> | |
| tableDecode[highThreshold--].baseValue = s; | |
| 9dd: 89 d1 mov %edx,%ecx | |
| 9df: 83 c2 ff add $0xffffffff,%edx | |
| 9e2: 89 5c cf 0c mov %ebx,0xc(%rdi,%rcx,8) | |
| 9e6: 66 b9 01 00 mov $0x1,%cx | |
| symbolNext[s] = 1; | |
| 9ea: 66 41 89 0c 5b mov %cx,(%r11,%rbx,2) | |
| ZSTD_memcpy(dt, &DTableH, sizeof(DTableH)); | |
| 9ef: 44 89 17 mov %r10d,(%rdi) | |
| 9f2: 44 89 4f 04 mov %r9d,0x4(%rdi) | |
| 9f6: 48 8b 4c 24 c0 mov -0x40(%rsp),%rcx | |
| 9fb: 89 cd mov %ecx,%ebp | |
| 9fd: c1 ed 03 shr $0x3,%ebp | |
| if (highThreshold == tableSize - 1) { | |
| a00: 39 c2 cmp %eax,%edx | |
| a02: 0f 85 9a 01 00 00 jne ba2 <ZSTD_buildFSETable_body_bmi2+0x2e2> | |
| a08: 4c 89 4c 24 e8 mov %r9,-0x18(%rsp) | |
| a0d: 49 8d 53 6a lea 0x6a(%r11),%rdx | |
| size_t const step = FSE_TABLESTEP(tableSize); | |
| a11: 83 c5 03 add $0x3,%ebp | |
| a14: 48 89 6c 24 e0 mov %rbp,-0x20(%rsp) | |
| for (s=0; s<maxSV1; ++s, sv += add) { | |
| a19: 49 8d 8b e2 00 00 00 lea 0xe2(%r11),%rcx | |
| a20: 48 89 4c 24 f0 mov %rcx,-0x10(%rsp) | |
| a25: 31 ed xor %ebp,%ebp | |
| a27: 49 b8 01 01 01 01 01 movabs $0x101010101010101,%r8 | |
| a2e: 01 01 01 | |
| a31: 31 db xor %ebx,%ebx | |
| a33: 45 31 ff xor %r15d,%r15d | |
| a36: 4c 89 6c 24 d8 mov %r13,-0x28(%rsp) | |
| a3b: 48 89 54 24 f8 mov %rdx,-0x8(%rsp) | |
| a40: eb 25 jmp a67 <ZSTD_buildFSETable_body_bmi2+0x1a7> | |
| a42: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) | |
| a49: 00 00 00 | |
| a4c: 0f 1f 40 00 nopl 0x0(%rax) | |
| pos += n; | |
| a50: 49 0f bf ce movswq %r14w,%rcx | |
| a54: 48 01 cb add %rcx,%rbx | |
| for (s=0; s<maxSV1; ++s, sv += add) { | |
| a57: 48 83 c5 01 add $0x1,%rbp | |
| a5b: 4d 01 c7 add %r8,%r15 | |
| a5e: 4c 39 ed cmp %r13,%rbp | |
| a61: 0f 84 d3 01 00 00 je c3a <ZSTD_buildFSETable_body_bmi2+0x37a> | |
| int const n = normalizedCounter[s]; | |
| a67: 44 0f b7 34 6e movzwl (%rsi,%rbp,2),%r14d | |
| a6c: 4c 89 3c 1a mov %r15,(%rdx,%rbx,1) | |
| for (i = 8; i < n; i += 8) { | |
| a70: 66 41 83 fe 09 cmp $0x9,%r14w | |
| a75: 7c d9 jl a50 <ZSTD_buildFSETable_body_bmi2+0x190> | |
| a77: 66 41 83 fe 10 cmp $0x10,%r14w | |
| a7c: 41 bd 10 00 00 00 mov $0x10,%r13d | |
| a82: 4d 0f 47 ee cmova %r14,%r13 | |
| a86: 4c 8d 24 1a lea (%rdx,%rbx,1),%r12 | |
| a8a: 49 83 c5 f7 add $0xfffffffffffffff7,%r13 | |
| a8e: b9 08 00 00 00 mov $0x8,%ecx | |
| a93: 49 83 fd 18 cmp $0x18,%r13 | |
| a97: 0f 82 e5 00 00 00 jb b82 <ZSTD_buildFSETable_body_bmi2+0x2c2> | |
| a9d: 49 c1 ed 03 shr $0x3,%r13 | |
| aa1: 49 83 c5 01 add $0x1,%r13 | |
| aa5: 4d 89 ea mov %r13,%r10 | |
| aa8: 49 83 e2 fc and $0xfffffffffffffffc,%r10 | |
| aac: 66 49 0f 6e c7 movq %r15,%xmm0 | |
| ab1: 66 0f 70 c0 44 pshufd $0x44,%xmm0,%xmm0 | |
| ab6: 49 8d 4a fc lea -0x4(%r10),%rcx | |
| aba: 49 89 c8 mov %rcx,%r8 | |
| abd: 49 c1 e8 02 shr $0x2,%r8 | |
| ac1: 49 83 c0 01 add $0x1,%r8 | |
| ac5: 45 89 c1 mov %r8d,%r9d | |
| ac8: 41 83 e1 03 and $0x3,%r9d | |
| acc: 48 83 f9 0c cmp $0xc,%rcx | |
| ad0: 73 04 jae ad6 <ZSTD_buildFSETable_body_bmi2+0x216> | |
| ad2: 31 c9 xor %ecx,%ecx | |
| ad4: eb 53 jmp b29 <ZSTD_buildFSETable_body_bmi2+0x269> | |
| ad6: 48 8b 4c 24 f0 mov -0x10(%rsp),%rcx | |
| adb: 48 8d 14 19 lea (%rcx,%rbx,1),%rdx | |
| adf: 49 83 e0 fc and $0xfffffffffffffffc,%r8 | |
| ae3: 49 f7 d8 neg %r8 | |
| ae6: 31 c9 xor %ecx,%ecx | |
| ae8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) | |
| aef: 00 | |
| af0: f3 0f 7f 44 ca 90 movdqu %xmm0,-0x70(%rdx,%rcx,8) | |
| af6: f3 0f 7f 44 ca a0 movdqu %xmm0,-0x60(%rdx,%rcx,8) | |
| afc: f3 0f 7f 44 ca b0 movdqu %xmm0,-0x50(%rdx,%rcx,8) | |
| b02: f3 0f 7f 44 ca c0 movdqu %xmm0,-0x40(%rdx,%rcx,8) | |
| b08: f3 0f 7f 44 ca d0 movdqu %xmm0,-0x30(%rdx,%rcx,8) | |
| b0e: f3 0f 7f 44 ca e0 movdqu %xmm0,-0x20(%rdx,%rcx,8) | |
| b14: f3 0f 7f 44 ca f0 movdqu %xmm0,-0x10(%rdx,%rcx,8) | |
| b1a: f3 0f 7f 04 ca movdqu %xmm0,(%rdx,%rcx,8) | |
| b1f: 48 83 c1 10 add $0x10,%rcx | |
| b23: 49 83 c0 04 add $0x4,%r8 | |
| b27: 75 c7 jne af0 <ZSTD_buildFSETable_body_bmi2+0x230> | |
| b29: 4d 85 c9 test %r9,%r9 | |
| b2c: 74 2f je b5d <ZSTD_buildFSETable_body_bmi2+0x29d> | |
| b2e: 48 c1 e1 03 shl $0x3,%rcx | |
| b32: 49 f7 d9 neg %r9 | |
| b35: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) | |
| b3c: 00 00 00 | |
| b3f: 90 nop | |
| b40: 48 89 ca mov %rcx,%rdx | |
| b43: 48 83 ca 08 or $0x8,%rdx | |
| b47: f3 41 0f 7f 04 14 movdqu %xmm0,(%r12,%rdx,1) | |
| b4d: f3 41 0f 7f 44 14 10 movdqu %xmm0,0x10(%r12,%rdx,1) | |
| b54: 48 83 c1 20 add $0x20,%rcx | |
| b58: 49 ff c1 inc %r9 | |
| b5b: 75 e3 jne b40 <ZSTD_buildFSETable_body_bmi2+0x280> | |
| b5d: 4d 39 d5 cmp %r10,%r13 | |
| b60: 4c 8b 6c 24 d8 mov -0x28(%rsp),%r13 | |
| b65: 48 8b 54 24 f8 mov -0x8(%rsp),%rdx | |
| b6a: 49 b8 01 01 01 01 01 movabs $0x101010101010101,%r8 | |
| b71: 01 01 01 | |
| b74: 0f 84 d6 fe ff ff je a50 <ZSTD_buildFSETable_body_bmi2+0x190> | |
| b7a: 4a 8d 0c d5 08 00 00 lea 0x8(,%r10,8),%rcx | |
| b81: 00 | |
| b82: 4c 8b 6c 24 d8 mov -0x28(%rsp),%r13 | |
| b87: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) | |
| b8e: 00 00 | |
| b90: 4d 89 3c 0c mov %r15,(%r12,%rcx,1) | |
| b94: 48 83 c1 08 add $0x8,%rcx | |
| b98: 4c 39 f1 cmp %r14,%rcx | |
| b9b: 72 f3 jb b90 <ZSTD_buildFSETable_body_bmi2+0x2d0> | |
| b9d: e9 ae fe ff ff jmpq a50 <ZSTD_buildFSETable_body_bmi2+0x190> | |
| U32 const step = FSE_TABLESTEP(tableSize); | |
| ba2: d1 e9 shr %ecx | |
| ba4: 8d 1c 29 lea (%rcx,%rbp,1),%ebx | |
| ba7: 83 c3 03 add $0x3,%ebx | |
| baa: 45 31 f6 xor %r14d,%r14d | |
| bad: 31 ed xor %ebp,%ebp | |
| baf: eb 1c jmp bcd <ZSTD_buildFSETable_body_bmi2+0x30d> | |
| bb1: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) | |
| bb8: 00 00 00 | |
| bbb: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) | |
| for (s=0; s<maxSV1; s++) { | |
| bc0: 49 83 c6 01 add $0x1,%r14 | |
| bc4: 4d 39 ee cmp %r13,%r14 | |
| bc7: 0f 84 ce 00 00 00 je c9b <ZSTD_buildFSETable_body_bmi2+0x3db> | |
| int const n = normalizedCounter[s]; | |
| bcd: 46 0f bf 3c 76 movswl (%rsi,%r14,2),%r15d | |
| bd2: 45 85 ff test %r15d,%r15d | |
| for (i=0; i<n; i++) { | |
| bd5: 7e e9 jle bc0 <ZSTD_buildFSETable_body_bmi2+0x300> | |
| bd7: 66 41 83 ff 01 cmp $0x1,%r15w | |
| bdc: 74 40 je c1e <ZSTD_buildFSETable_body_bmi2+0x35e> | |
| bde: 45 89 fa mov %r15d,%r10d | |
| be1: 41 83 e2 fe and $0xfffffffe,%r10d | |
| be5: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) | |
| bec: 00 00 00 | |
| bef: 90 nop | |
| tableDecode[position].baseValue = s; | |
| bf0: 89 e9 mov %ebp,%ecx | |
| bf2: 44 89 74 cf 0c mov %r14d,0xc(%rdi,%rcx,8) | |
| bf7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) | |
| bfe: 00 00 | |
| c00: 01 dd add %ebx,%ebp | |
| c02: 21 c5 and %eax,%ebp | |
| while (position > highThreshold) position = (position + step) & tableMask; /* lowprob area */ | |
| c04: 39 d5 cmp %edx,%ebp | |
| c06: 77 f8 ja c00 <ZSTD_buildFSETable_body_bmi2+0x340> | |
| tableDecode[position].baseValue = s; | |
| c08: 89 e9 mov %ebp,%ecx | |
| c0a: 44 89 74 cf 0c mov %r14d,0xc(%rdi,%rcx,8) | |
| c0f: 90 nop | |
| c10: 01 dd add %ebx,%ebp | |
| c12: 21 c5 and %eax,%ebp | |
| while (position > highThreshold) position = (position + step) & tableMask; /* lowprob area */ | |
| c14: 39 d5 cmp %edx,%ebp | |
| c16: 77 f8 ja c10 <ZSTD_buildFSETable_body_bmi2+0x350> | |
| for (i=0; i<n; i++) { | |
| c18: 41 83 c2 fe add $0xfffffffe,%r10d | |
| c1c: 75 d2 jne bf0 <ZSTD_buildFSETable_body_bmi2+0x330> | |
| while (position > highThreshold) position = (position + step) & tableMask; /* lowprob area */ | |
| c1e: 41 f6 c7 01 test $0x1,%r15b | |
| c22: 74 9c je bc0 <ZSTD_buildFSETable_body_bmi2+0x300> | |
| tableDecode[position].baseValue = s; | |
| c24: 89 e9 mov %ebp,%ecx | |
| c26: 44 89 74 cf 0c mov %r14d,0xc(%rdi,%rcx,8) | |
| c2b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) | |
| c30: 01 dd add %ebx,%ebp | |
| c32: 21 c5 and %eax,%ebp | |
| while (position > highThreshold) position = (position + step) & tableMask; /* lowprob area */ | |
| c34: 39 d5 cmp %edx,%ebp | |
| c36: 77 f8 ja c30 <ZSTD_buildFSETable_body_bmi2+0x370> | |
| c38: eb 86 jmp bc0 <ZSTD_buildFSETable_body_bmi2+0x300> | |
| c3a: 48 8b 5c 24 c0 mov -0x40(%rsp),%rbx | |
| size_t const step = FSE_TABLESTEP(tableSize); | |
| c3f: 89 d9 mov %ebx,%ecx | |
| c41: d1 e9 shr %ecx | |
| c43: 48 8b 54 24 e0 mov -0x20(%rsp),%rdx | |
| c48: 01 ca add %ecx,%edx | |
| c4a: 4c 8b 4c 24 e8 mov -0x18(%rsp),%r9 | |
| c4f: 4c 8b 44 24 d0 mov -0x30(%rsp),%r8 | |
| c54: 4c 8b 64 24 c8 mov -0x38(%rsp),%r12 | |
| size_t const tableMask = tableSize-1; | |
| c59: 89 c0 mov %eax,%eax | |
| size_t const step = FSE_TABLESTEP(tableSize); | |
| c5b: 41 89 d6 mov %edx,%r14d | |
| for (s = 0; s < (size_t)tableSize; s += unroll) { | |
| c5e: 41 89 da mov %ebx,%r10d | |
| c61: 4b 8d 34 36 lea (%r14,%r14,1),%rsi | |
| c65: 31 ed xor %ebp,%ebp | |
| c67: 31 db xor %ebx,%ebx | |
| c69: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) | |
| size_t const uPosition = (position + (u * step)) & tableMask; | |
| c70: 89 d9 mov %ebx,%ecx | |
| c72: 21 c1 and %eax,%ecx | |
| tableDecode[uPosition].baseValue = spread[s + u]; | |
| c74: 41 0f b6 54 2b 6a movzbl 0x6a(%r11,%rbp,1),%edx | |
| c7a: 89 54 cf 0c mov %edx,0xc(%rdi,%rcx,8) | |
| size_t const uPosition = (position + (u * step)) & tableMask; | |
| c7e: 41 8d 0c 1e lea (%r14,%rbx,1),%ecx | |
| c82: 21 c1 and %eax,%ecx | |
| tableDecode[uPosition].baseValue = spread[s + u]; | |
| c84: 41 0f b6 54 2b 6b movzbl 0x6b(%r11,%rbp,1),%edx | |
| c8a: 89 54 cf 0c mov %edx,0xc(%rdi,%rcx,8) | |
| position = (position + (unroll * step)) & tableMask; | |
| c8e: 01 f3 add %esi,%ebx | |
| c90: 21 c3 and %eax,%ebx | |
| for (s = 0; s < (size_t)tableSize; s += unroll) { | |
| c92: 48 83 c5 02 add $0x2,%rbp | |
| c96: 4c 39 d5 cmp %r10,%rbp | |
| c99: 72 d5 jb c70 <ZSTD_buildFSETable_body_bmi2+0x3b0> | |
| c9b: 41 83 c1 01 add $0x1,%r9d | |
| c9f: 4c 8b 54 24 c0 mov -0x40(%rsp),%r10 | |
| for (u=0; u<tableSize; u++) { | |
| ca4: 41 83 fa 01 cmp $0x1,%r10d | |
| ca8: b8 01 00 00 00 mov $0x1,%eax | |
| cad: 41 0f 47 c2 cmova %r10d,%eax | |
| cb1: 31 c9 xor %ecx,%ecx | |
| cb3: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) | |
| cba: 00 00 00 | |
| cbd: 0f 1f 00 nopl (%rax) | |
| U32 const symbol = tableDecode[u].baseValue; | |
| cc0: 8b 54 cf 0c mov 0xc(%rdi,%rcx,8),%edx | |
| U32 const nextState = symbolNext[symbol]++; | |
| cc4: 41 0f b7 34 53 movzwl (%r11,%rdx,2),%esi | |
| cc9: 8d 6e 01 lea 0x1(%rsi),%ebp | |
| ccc: 66 41 89 2c 53 mov %bp,(%r11,%rdx,2) | |
| cd1: 0f bd ee bsr %esi,%ebp | |
| cd4: f7 d5 not %ebp | |
| cd6: 81 cd e0 00 00 00 or $0xe0,%ebp | |
| tableDecode[u].nbBits = (BYTE) (tableLog - BIT_highbit32(nextState) ); | |
| cdc: 44 01 cd add %r9d,%ebp | |
| cdf: 40 88 6c cf 0b mov %bpl,0xb(%rdi,%rcx,8) | |
| tableDecode[u].nextState = (U16) ( (nextState << tableDecode[u].nbBits) - tableSize); | |
| ce4: c4 e2 51 f7 f6 shlx %ebp,%esi,%esi | |
| ce9: 44 29 d6 sub %r10d,%esi | |
| cec: 66 89 74 cf 08 mov %si,0x8(%rdi,%rcx,8) | |
| tableDecode[u].nbAdditionalBits = (BYTE)nbAdditionalBits[symbol]; | |
| cf1: 41 0f b6 1c 90 movzbl (%r8,%rdx,4),%ebx | |
| cf6: 88 5c cf 0a mov %bl,0xa(%rdi,%rcx,8) | |
| tableDecode[u].baseValue = baseValue[symbol]; | |
| cfa: 41 8b 14 94 mov (%r12,%rdx,4),%edx | |
| cfe: 89 54 cf 0c mov %edx,0xc(%rdi,%rcx,8) | |
| for (u=0; u<tableSize; u++) { | |
| d02: 48 83 c1 01 add $0x1,%rcx | |
| d06: 48 39 c8 cmp %rcx,%rax | |
| d09: 75 b5 jne cc0 <ZSTD_buildFSETable_body_bmi2+0x400> | |
| } | |
| d0b: 5b pop %rbx | |
| d0c: 41 5c pop %r12 | |
| d0e: 41 5d pop %r13 | |
| d10: 41 5e pop %r14 | |
| d12: 41 5f pop %r15 | |
| d14: 5d pop %rbp | |
| d15: c3 retq | |
| d16: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) | |
| d1d: 00 00 00 | |
| 0000000000000d20 <ZSTD_decodeSeqHeaders>: | |
| } | |
| } | |
| size_t ZSTD_decodeSeqHeaders(ZSTD_DCtx* dctx, int* nbSeqPtr, | |
| const void* src, size_t srcSize) | |
| { | |
| d20: 55 push %rbp | |
| d21: 41 57 push %r15 | |
| d23: 41 56 push %r14 | |
| d25: 41 55 push %r13 | |
| d27: 41 54 push %r12 | |
| d29: 53 push %rbx | |
| d2a: 48 83 ec 18 sub $0x18,%rsp | |
| d2e: 49 c7 c7 b8 ff ff ff mov $0xffffffffffffffb8,%r15 | |
| const BYTE* ip = istart; | |
| int nbSeq; | |
| DEBUGLOG(5, "ZSTD_decodeSeqHeaders"); | |
| /* check */ | |
| RETURN_ERROR_IF(srcSize < MIN_SEQUENCES_SIZE, srcSize_wrong, ""); | |
| d35: 48 85 c9 test %rcx,%rcx | |
| d38: 0f 84 e3 01 00 00 je f21 <ZSTD_decodeSeqHeaders+0x201> | |
| d3e: 48 89 cb mov %rcx,%rbx | |
| d41: 49 89 d6 mov %rdx,%r14 | |
| /* SeqHead */ | |
| nbSeq = *ip++; | |
| d44: 44 0f b6 2a movzbl (%rdx),%r13d | |
| d48: 45 85 ed test %r13d,%r13d | |
| if (!nbSeq) { | |
| d4b: 0f 84 bb 01 00 00 je f0c <ZSTD_decodeSeqHeaders+0x1ec> | |
| d51: 49 89 fc mov %rdi,%r12 | |
| *nbSeqPtr=0; | |
| RETURN_ERROR_IF(srcSize != 1, srcSize_wrong, ""); | |
| return 1; | |
| } | |
| if (nbSeq > 0x7F) { | |
| d54: 45 84 ed test %r13b,%r13b | |
| d57: 0f 88 d6 01 00 00 js f33 <ZSTD_decodeSeqHeaders+0x213> | |
| d5d: 49 8d 46 01 lea 0x1(%r14),%rax | |
| d61: 4c 01 f3 add %r14,%rbx | |
| } else { | |
| RETURN_ERROR_IF(ip >= iend, srcSize_wrong, ""); | |
| nbSeq = ((nbSeq-0x80)<<8) + *ip++; | |
| } | |
| } | |
| *nbSeqPtr = nbSeq; | |
| d64: 44 89 2e mov %r13d,(%rsi) | |
| /* FSE table descriptors */ | |
| RETURN_ERROR_IF(ip+1 > iend, srcSize_wrong, ""); /* minimum possible size: 1 byte for symbol encoding types */ | |
| d67: 48 8d 68 01 lea 0x1(%rax),%rbp | |
| d6b: 48 39 dd cmp %rbx,%rbp | |
| d6e: 0f 87 ad 01 00 00 ja f21 <ZSTD_decodeSeqHeaders+0x201> | |
| { symbolEncodingType_e const LLtype = (symbolEncodingType_e)(*ip >> 6); | |
| d74: 0f b6 10 movzbl (%rax),%edx | |
| d77: 89 54 24 04 mov %edx,0x4(%rsp) | |
| d7b: c1 ea 06 shr $0x6,%edx | |
| symbolEncodingType_e const OFtype = (symbolEncodingType_e)((*ip >> 4) & 3); | |
| symbolEncodingType_e const MLtype = (symbolEncodingType_e)((*ip >> 2) & 3); | |
| ip++; | |
| /* Build DTables */ | |
| { size_t const llhSize = ZSTD_buildSeqTable(dctx->entropy.LLTable, &dctx->LLTptr, | |
| d7e: 49 8d 7c 24 20 lea 0x20(%r12),%rdi | |
| LLtype, MaxLL, LLFSELog, | |
| ip, iend-ip, | |
| d83: 48 89 d8 mov %rbx,%rax | |
| d86: 48 29 e8 sub %rbp,%rax | |
| LL_base, LL_bits, | |
| LL_defaultDTable, dctx->fseEntropy, | |
| dctx->ddictIsCold, nbSeq, | |
| d89: 45 8b 94 24 f4 75 00 mov 0x75f4(%r12),%r10d | |
| d90: 00 | |
| dctx->workspace, sizeof(dctx->workspace), | |
| d91: 4d 8d 9c 24 bc 6a 00 lea 0x6abc(%r12),%r11 | |
| d98: 00 | |
| LL_defaultDTable, dctx->fseEntropy, | |
| d99: 41 8b 8c 24 2c 75 00 mov 0x752c(%r12),%ecx | |
| da0: 00 | |
| da1: 48 89 4c 24 08 mov %rcx,0x8(%rsp) | |
| dctx->bmi2); | |
| da6: 45 8b bc 24 d8 75 00 mov 0x75d8(%r12),%r15d | |
| dad: 00 | |
| { size_t const llhSize = ZSTD_buildSeqTable(dctx->entropy.LLTable, &dctx->LLTptr, | |
| dae: 48 83 ec 08 sub $0x8,%rsp | |
| db2: 4c 89 e6 mov %r12,%rsi | |
| db5: b9 23 00 00 00 mov $0x23,%ecx | |
| dba: 41 b8 09 00 00 00 mov $0x9,%r8d | |
| dc0: 49 89 e9 mov %rbp,%r9 | |
| dc3: 41 57 push %r15 | |
| dc5: 4c 89 5c 24 20 mov %r11,0x20(%rsp) | |
| dca: 41 53 push %r11 | |
| dcc: 41 55 push %r13 | |
| dce: 41 52 push %r10 | |
| dd0: ff 74 24 30 pushq 0x30(%rsp) | |
| dd4: 68 00 00 00 00 pushq $0x0 | |
| dd9: 68 00 00 00 00 pushq $0x0 | |
| dde: 68 00 00 00 00 pushq $0x0 | |
| de3: 50 push %rax | |
| de4: e8 97 01 00 00 callq f80 <ZSTD_buildSeqTable> | |
| de9: 48 83 c4 50 add $0x50,%rsp | |
| RETURN_ERROR_IF(ZSTD_isError(llhSize), corruption_detected, "ZSTD_buildSeqTable failed"); | |
| ded: 4c 8d 0c 28 lea (%rax,%rbp,1),%r9 | |
| df1: 48 83 f8 89 cmp $0xffffffffffffff89,%rax | |
| df5: 4c 0f 43 cd cmovae %rbp,%r9 | |
| df9: 49 c7 c7 ec ff ff ff mov $0xffffffffffffffec,%r15 | |
| e00: 48 83 f8 88 cmp $0xffffffffffffff88,%rax | |
| e04: 0f 87 17 01 00 00 ja f21 <ZSTD_decodeSeqHeaders+0x201> | |
| e0a: 8b 54 24 04 mov 0x4(%rsp),%edx | |
| symbolEncodingType_e const OFtype = (symbolEncodingType_e)((*ip >> 4) & 3); | |
| e0e: c1 ea 04 shr $0x4,%edx | |
| e11: 83 e2 03 and $0x3,%edx | |
| ip += llhSize; | |
| } | |
| { size_t const ofhSize = ZSTD_buildSeqTable(dctx->entropy.OFTable, &dctx->OFTptr, | |
| e14: 49 8d bc 24 28 10 00 lea 0x1028(%r12),%rdi | |
| e1b: 00 | |
| e1c: 49 8d 74 24 10 lea 0x10(%r12),%rsi | |
| OFtype, MaxOff, OffFSELog, | |
| ip, iend-ip, | |
| e21: 48 89 d8 mov %rbx,%rax | |
| e24: 4c 29 c8 sub %r9,%rax | |
| OF_base, OF_bits, | |
| OF_defaultDTable, dctx->fseEntropy, | |
| dctx->ddictIsCold, nbSeq, | |
| e27: 45 8b 9c 24 f4 75 00 mov 0x75f4(%r12),%r11d | |
| e2e: 00 | |
| OF_defaultDTable, dctx->fseEntropy, | |
| e2f: 41 8b 8c 24 2c 75 00 mov 0x752c(%r12),%ecx | |
| e36: 00 | |
| e37: 48 89 4c 24 08 mov %rcx,0x8(%rsp) | |
| dctx->workspace, sizeof(dctx->workspace), | |
| dctx->bmi2); | |
| e3c: 45 8b 94 24 d8 75 00 mov 0x75d8(%r12),%r10d | |
| e43: 00 | |
| { size_t const ofhSize = ZSTD_buildSeqTable(dctx->entropy.OFTable, &dctx->OFTptr, | |
| e44: 48 83 ec 08 sub $0x8,%rsp | |
| e48: b9 1f 00 00 00 mov $0x1f,%ecx | |
| e4d: 41 b8 08 00 00 00 mov $0x8,%r8d | |
| e53: 4c 89 cd mov %r9,%rbp | |
| e56: 41 52 push %r10 | |
| e58: ff 74 24 20 pushq 0x20(%rsp) | |
| e5c: 41 55 push %r13 | |
| e5e: 41 53 push %r11 | |
| e60: ff 74 24 30 pushq 0x30(%rsp) | |
| e64: 68 00 00 00 00 pushq $0x0 | |
| e69: 68 00 00 00 00 pushq $0x0 | |
| e6e: 68 00 00 00 00 pushq $0x0 | |
| e73: 50 push %rax | |
| e74: e8 07 01 00 00 callq f80 <ZSTD_buildSeqTable> | |
| e79: 48 83 c4 50 add $0x50,%rsp | |
| RETURN_ERROR_IF(ZSTD_isError(ofhSize), corruption_detected, "ZSTD_buildSeqTable failed"); | |
| e7d: 4c 8d 0c 28 lea (%rax,%rbp,1),%r9 | |
| e81: 48 83 f8 89 cmp $0xffffffffffffff89,%rax | |
| e85: 4c 0f 43 cd cmovae %rbp,%r9 | |
| e89: 48 83 f8 88 cmp $0xffffffffffffff88,%rax | |
| e8d: 0f 87 8e 00 00 00 ja f21 <ZSTD_decodeSeqHeaders+0x201> | |
| e93: 8b 54 24 04 mov 0x4(%rsp),%edx | |
| e97: c1 ea 02 shr $0x2,%edx | |
| e9a: 83 e2 03 and $0x3,%edx | |
| ip += ofhSize; | |
| } | |
| { size_t const mlhSize = ZSTD_buildSeqTable(dctx->entropy.MLTable, &dctx->MLTptr, | |
| e9d: 49 8d bc 24 30 18 00 lea 0x1830(%r12),%rdi | |
| ea4: 00 | |
| ea5: 49 8d 74 24 08 lea 0x8(%r12),%rsi | |
| MLtype, MaxML, MLFSELog, | |
| ip, iend-ip, | |
| eaa: 4c 29 cb sub %r9,%rbx | |
| ML_base, ML_bits, | |
| ML_defaultDTable, dctx->fseEntropy, | |
| dctx->ddictIsCold, nbSeq, | |
| ead: 45 8b 9c 24 f4 75 00 mov 0x75f4(%r12),%r11d | |
| eb4: 00 | |
| ML_defaultDTable, dctx->fseEntropy, | |
| eb5: 45 8b 94 24 2c 75 00 mov 0x752c(%r12),%r10d | |
| ebc: 00 | |
| dctx->workspace, sizeof(dctx->workspace), | |
| dctx->bmi2); | |
| ebd: 41 8b 84 24 d8 75 00 mov 0x75d8(%r12),%eax | |
| ec4: 00 | |
| { size_t const mlhSize = ZSTD_buildSeqTable(dctx->entropy.MLTable, &dctx->MLTptr, | |
| ec5: 48 83 ec 08 sub $0x8,%rsp | |
| ec9: b9 34 00 00 00 mov $0x34,%ecx | |
| ece: 41 b8 09 00 00 00 mov $0x9,%r8d | |
| ed4: 4c 89 cd mov %r9,%rbp | |
| ed7: 50 push %rax | |
| ed8: ff 74 24 20 pushq 0x20(%rsp) | |
| edc: 41 55 push %r13 | |
| ede: 41 53 push %r11 | |
| ee0: 41 52 push %r10 | |
| ee2: 68 00 00 00 00 pushq $0x0 | |
| ee7: 68 00 00 00 00 pushq $0x0 | |
| eec: 68 00 00 00 00 pushq $0x0 | |
| ef1: 53 push %rbx | |
| ef2: e8 89 00 00 00 callq f80 <ZSTD_buildSeqTable> | |
| ef7: 48 83 c4 50 add $0x50,%rsp | |
| efb: 48 83 f8 88 cmp $0xffffffffffffff88,%rax | |
| eff: 77 20 ja f21 <ZSTD_decodeSeqHeaders+0x201> | |
| f01: 49 89 ef mov %rbp,%r15 | |
| RETURN_ERROR_IF(ZSTD_isError(mlhSize), corruption_detected, "ZSTD_buildSeqTable failed"); | |
| f04: 49 01 c7 add %rax,%r15 | |
| ip += mlhSize; | |
| } | |
| } | |
| return ip-istart; | |
| f07: 4d 29 f7 sub %r14,%r15 | |
| f0a: eb 15 jmp f21 <ZSTD_decodeSeqHeaders+0x201> | |
| *nbSeqPtr=0; | |
| f0c: c7 06 00 00 00 00 movl $0x0,(%rsi) | |
| RETURN_ERROR_IF(srcSize != 1, srcSize_wrong, ""); | |
| f12: 48 83 fb 01 cmp $0x1,%rbx | |
| f16: 49 c7 c7 b8 ff ff ff mov $0xffffffffffffffb8,%r15 | |
| f1d: 4c 0f 44 fb cmove %rbx,%r15 | |
| } | |
| f21: 4c 89 f8 mov %r15,%rax | |
| f24: 48 83 c4 18 add $0x18,%rsp | |
| f28: 5b pop %rbx | |
| f29: 41 5c pop %r12 | |
| f2b: 41 5d pop %r13 | |
| f2d: 41 5e pop %r14 | |
| f2f: 41 5f pop %r15 | |
| f31: 5d pop %rbp | |
| f32: c3 retq | |
| if (nbSeq == 0xFF) { | |
| f33: 41 80 fd ff cmp $0xff,%r13b | |
| f37: 74 22 je f5b <ZSTD_decodeSeqHeaders+0x23b> | |
| RETURN_ERROR_IF(ip >= iend, srcSize_wrong, ""); | |
| f39: 48 83 fb 02 cmp $0x2,%rbx | |
| f3d: 7c e2 jl f21 <ZSTD_decodeSeqHeaders+0x201> | |
| nbSeq = ((nbSeq-0x80)<<8) + *ip++; | |
| f3f: 41 c1 e5 08 shl $0x8,%r13d | |
| f43: 49 8d 46 02 lea 0x2(%r14),%rax | |
| f47: 41 0f b6 4e 01 movzbl 0x1(%r14),%ecx | |
| f4c: 41 01 cd add %ecx,%r13d | |
| f4f: 41 81 c5 00 80 ff ff add $0xffff8000,%r13d | |
| f56: e9 06 fe ff ff jmpq d61 <ZSTD_decodeSeqHeaders+0x41> | |
| RETURN_ERROR_IF(ip+2 > iend, srcSize_wrong, ""); | |
| f5b: 48 83 fb 03 cmp $0x3,%rbx | |
| f5f: 7c c0 jl f21 <ZSTD_decodeSeqHeaders+0x201> | |
| f61: 49 8d 46 03 lea 0x3(%r14),%rax | |
| MEM_STATIC U16 MEM_read16(const void* ptr) { return ((const unalign16*)ptr)->v; } | |
| f65: 45 0f b7 6e 01 movzwl 0x1(%r14),%r13d | |
| nbSeq = MEM_readLE16(ip) + LONGNBSEQ; | |
| f6a: 41 81 c5 00 7f 00 00 add $0x7f00,%r13d | |
| f71: e9 eb fd ff ff jmpq d61 <ZSTD_decodeSeqHeaders+0x41> | |
| f76: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) | |
| f7d: 00 00 00 | |
| 0000000000000f80 <ZSTD_buildSeqTable>: | |
| { | |
| f80: 55 push %rbp | |
| f81: 41 57 push %r15 | |
| f83: 41 56 push %r14 | |
| f85: 41 55 push %r13 | |
| f87: 41 54 push %r12 | |
| f89: 53 push %rbx | |
| f8a: 48 81 ec 98 00 00 00 sub $0x98,%rsp | |
| f91: 89 4c 24 18 mov %ecx,0x18(%rsp) | |
| switch(type) | |
| f95: 83 fa 03 cmp $0x3,%edx | |
| f98: 77 3c ja fd6 <ZSTD_buildSeqTable+0x56> | |
| f9a: 44 89 c5 mov %r8d,%ebp | |
| f9d: 49 89 f6 mov %rsi,%r14 | |
| fa0: 48 89 fb mov %rdi,%rbx | |
| fa3: 4c 8b bc 24 e0 00 00 mov 0xe0(%rsp),%r15 | |
| faa: 00 | |
| fab: 4c 8b a4 24 d8 00 00 mov 0xd8(%rsp),%r12 | |
| fb2: 00 | |
| fb3: 4c 8b 84 24 d0 00 00 mov 0xd0(%rsp),%r8 | |
| fba: 00 | |
| fbb: 89 d0 mov %edx,%eax | |
| fbd: ff 24 c5 00 00 00 00 jmpq *0x0(,%rax,8) | |
| fc4: 48 8b 84 24 e8 00 00 mov 0xe8(%rsp),%rax | |
| fcb: 00 | |
| *DTablePtr = defaultTable; | |
| fcc: 49 89 06 mov %rax,(%r14) | |
| fcf: 31 c0 xor %eax,%eax | |
| fd1: e9 29 01 00 00 jmpq 10ff <ZSTD_buildSeqTable+0x17f> | |
| fd6: 48 c7 c0 ff ff ff ff mov $0xffffffffffffffff,%rax | |
| fdd: e9 1d 01 00 00 jmpq 10ff <ZSTD_buildSeqTable+0x17f> | |
| RETURN_ERROR_IF(!srcSize, srcSize_wrong, ""); | |
| fe2: 4d 85 c0 test %r8,%r8 | |
| fe5: 0f 84 04 01 00 00 je 10ef <ZSTD_buildSeqTable+0x16f> | |
| RETURN_ERROR_IF((*(const BYTE*)src) > max, corruption_detected, ""); | |
| feb: 41 0f b6 11 movzbl (%r9),%edx | |
| fef: 48 c7 c0 ec ff ff ff mov $0xffffffffffffffec,%rax | |
| ff6: 39 ca cmp %ecx,%edx | |
| ff8: 0f 87 01 01 00 00 ja 10ff <ZSTD_buildSeqTable+0x17f> | |
| U32 const baseline = baseValue[symbol]; | |
| ffe: 41 8b 04 94 mov (%r12,%rdx,4),%eax | |
| U32 const nbBits = nbAdditionalBits[symbol]; | |
| 1002: 41 8a 0c 97 mov (%r15,%rdx,4),%cl | |
| DTableH->fastMode = 0; | |
| 1006: 48 c7 03 00 00 00 00 movq $0x0,(%rbx) | |
| cell->nbBits = 0; | |
| 100d: c6 43 0b 00 movb $0x0,0xb(%rbx) | |
| cell->nextState = 0; | |
| 1011: 66 c7 43 08 00 00 movw $0x0,0x8(%rbx) | |
| cell->nbAdditionalBits = (BYTE)nbAddBits; | |
| 1017: 88 4b 0a mov %cl,0xa(%rbx) | |
| cell->baseValue = baseValue; | |
| 101a: 89 43 0c mov %eax,0xc(%rbx) | |
| *DTablePtr = DTableSpace; | |
| 101d: 49 89 1e mov %rbx,(%r14) | |
| 1020: b8 01 00 00 00 mov $0x1,%eax | |
| 1025: e9 d5 00 00 00 jmpq 10ff <ZSTD_buildSeqTable+0x17f> | |
| 102a: 48 8d 7c 24 20 lea 0x20(%rsp),%rdi | |
| 102f: 48 8d 74 24 18 lea 0x18(%rsp),%rsi | |
| 1034: 48 8d 54 24 1c lea 0x1c(%rsp),%rdx | |
| size_t const headerSize = FSE_readNCount(norm, &max, &tableLog, src, srcSize); | |
| 1039: 4c 89 c9 mov %r9,%rcx | |
| 103c: e8 00 00 00 00 callq 1041 <ZSTD_buildSeqTable+0xc1> | |
| 1041: 49 89 c5 mov %rax,%r13 | |
| 1044: 48 c7 c0 ec ff ff ff mov $0xffffffffffffffec,%rax | |
| 104b: 49 83 fd 88 cmp $0xffffffffffffff88,%r13 | |
| RETURN_ERROR_IF(FSE_isError(headerSize), corruption_detected, ""); | |
| 104f: 0f 87 aa 00 00 00 ja 10ff <ZSTD_buildSeqTable+0x17f> | |
| RETURN_ERROR_IF(tableLog > maxLog, corruption_detected, ""); | |
| 1055: 44 8b 4c 24 1c mov 0x1c(%rsp),%r9d | |
| 105a: 41 39 e9 cmp %ebp,%r9d | |
| 105d: 0f 87 9c 00 00 00 ja 10ff <ZSTD_buildSeqTable+0x17f> | |
| 1063: 8b 84 24 10 01 00 00 mov 0x110(%rsp),%eax | |
| 106a: 48 8b 8c 24 08 01 00 mov 0x108(%rsp),%rcx | |
| 1071: 00 | |
| ZSTD_buildFSETable(DTableSpace, norm, max, baseValue, nbAdditionalBits, tableLog, wksp, wkspSize, bmi2); | |
| 1072: 8b 54 24 18 mov 0x18(%rsp),%edx | |
| 1076: 89 44 24 10 mov %eax,0x10(%rsp) | |
| 107a: 48 89 0c 24 mov %rcx,(%rsp) | |
| 107e: 48 8d 74 24 20 lea 0x20(%rsp),%rsi | |
| 1083: 48 89 df mov %rbx,%rdi | |
| 1086: 4c 89 e1 mov %r12,%rcx | |
| 1089: 4d 89 f8 mov %r15,%r8 | |
| 108c: e8 00 00 00 00 callq 1091 <ZSTD_buildSeqTable+0x111> | |
| *DTablePtr = DTableSpace; | |
| 1091: 49 89 1e mov %rbx,(%r14) | |
| 1094: 4c 89 e8 mov %r13,%rax | |
| 1097: eb 66 jmp 10ff <ZSTD_buildSeqTable+0x17f> | |
| RETURN_ERROR_IF(!flagRepeatTable, corruption_detected, ""); | |
| 1099: 83 bc 24 f0 00 00 00 cmpl $0x0,0xf0(%rsp) | |
| 10a0: 00 | |
| 10a1: 74 55 je 10f8 <ZSTD_buildSeqTable+0x178> | |
| 10a3: 31 c0 xor %eax,%eax | |
| if (ddictIsCold && (nbSeq > 24 /* heuristic */)) { | |
| 10a5: 83 bc 24 f8 00 00 00 cmpl $0x0,0xf8(%rsp) | |
| 10ac: 00 | |
| 10ad: 74 50 je 10ff <ZSTD_buildSeqTable+0x17f> | |
| 10af: 83 bc 24 00 01 00 00 cmpl $0x19,0x100(%rsp) | |
| 10b6: 19 | |
| 10b7: 7c 46 jl 10ff <ZSTD_buildSeqTable+0x17f> | |
| 10b9: b8 01 00 00 00 mov $0x1,%eax | |
| size_t const pSize = sizeof(ZSTD_seqSymbol) * (SEQSYMBOL_TABLE_SIZE(maxLog)); | |
| 10be: 89 e9 mov %ebp,%ecx | |
| 10c0: d3 e0 shl %cl,%eax | |
| const void* const pStart = *DTablePtr; | |
| 10c2: 49 8b 0e mov (%r14),%rcx | |
| size_t const pSize = sizeof(ZSTD_seqSymbol) * (SEQSYMBOL_TABLE_SIZE(maxLog)); | |
| 10c5: 48 8d 14 c5 08 00 00 lea 0x8(,%rax,8),%rdx | |
| 10cc: 00 | |
| 10cd: 31 c0 xor %eax,%eax | |
| 10cf: 31 f6 xor %esi,%esi | |
| 10d1: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) | |
| 10d8: 00 00 00 | |
| 10db: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) | |
| PREFETCH_AREA(pStart, pSize); | |
| 10e0: 0f 18 14 31 prefetcht1 (%rcx,%rsi,1) | |
| 10e4: 48 83 c6 40 add $0x40,%rsi | |
| 10e8: 48 39 d6 cmp %rdx,%rsi | |
| 10eb: 72 f3 jb 10e0 <ZSTD_buildSeqTable+0x160> | |
| 10ed: eb 10 jmp 10ff <ZSTD_buildSeqTable+0x17f> | |
| 10ef: 48 c7 c0 b8 ff ff ff mov $0xffffffffffffffb8,%rax | |
| 10f6: eb 07 jmp 10ff <ZSTD_buildSeqTable+0x17f> | |
| 10f8: 48 c7 c0 ec ff ff ff mov $0xffffffffffffffec,%rax | |
| } | |
| 10ff: 48 81 c4 98 00 00 00 add $0x98,%rsp | |
| 1106: 5b pop %rbx | |
| 1107: 41 5c pop %r12 | |
| 1109: 41 5d pop %r13 | |
| 110b: 41 5e pop %r14 | |
| 110d: 41 5f pop %r15 | |
| 110f: 5d pop %rbp | |
| 1110: c3 retq | |
| 1111: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) | |
| 1118: 00 00 00 | |
| 111b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) | |
| 0000000000001120 <ZSTD_decompressBlock_internal>: | |
| size_t | |
| ZSTD_decompressBlock_internal(ZSTD_DCtx* dctx, | |
| void* dst, size_t dstCapacity, | |
| const void* src, size_t srcSize, const int frame) | |
| { /* blockType == blockCompressed */ | |
| 1120: 55 push %rbp | |
| 1121: 41 57 push %r15 | |
| 1123: 41 56 push %r14 | |
| 1125: 41 55 push %r13 | |
| 1127: 41 54 push %r12 | |
| 1129: 53 push %rbx | |
| 112a: 48 81 ec 28 02 00 00 sub $0x228,%rsp | |
| 1131: 49 c7 c3 b8 ff ff ff mov $0xffffffffffffffb8,%r11 | |
| * (note: but it could be evaluated from current-lowLimit) | |
| */ | |
| ZSTD_longOffset_e const isLongOffset = (ZSTD_longOffset_e)(MEM_32bits() && (!frame || (dctx->fParams.windowSize > (1ULL << STREAM_ACCUMULATOR_MIN)))); | |
| DEBUGLOG(5, "ZSTD_decompressBlock_internal (size : %u)", (U32)srcSize); | |
| RETURN_ERROR_IF(srcSize >= ZSTD_BLOCKSIZE_MAX, srcSize_wrong, ""); | |
| 1138: 49 81 f8 ff ff 01 00 cmp $0x1ffff,%r8 | |
| 113f: 0f 87 e3 23 00 00 ja 3528 <ZSTD_decompressBlock_internal+0x2408> | |
| 1145: 44 89 cb mov %r9d,%ebx | |
| 1148: 4d 89 c4 mov %r8,%r12 | |
| 114b: 48 89 cd mov %rcx,%rbp | |
| 114e: 49 89 d7 mov %rdx,%r15 | |
| 1151: 49 89 f6 mov %rsi,%r14 | |
| /* Decode literals section */ | |
| { size_t const litCSize = ZSTD_decodeLiteralsBlock(dctx, src, srcSize); | |
| 1154: 48 89 ce mov %rcx,%rsi | |
| 1157: 4c 89 c2 mov %r8,%rdx | |
| 115a: 48 89 7c 24 20 mov %rdi,0x20(%rsp) | |
| 115f: e8 00 00 00 00 callq 1164 <ZSTD_decompressBlock_internal+0x44> | |
| 1164: 48 8b 7c 24 20 mov 0x20(%rsp),%rdi | |
| 1169: 49 89 c3 mov %rax,%r11 | |
| DEBUGLOG(5, "ZSTD_decodeLiteralsBlock : %u", (U32)litCSize); | |
| if (ZSTD_isError(litCSize)) return litCSize; | |
| 116c: 4c 8d 2c 28 lea (%rax,%rbp,1),%r13 | |
| 1170: 31 c0 xor %eax,%eax | |
| 1172: 49 83 fb 89 cmp $0xffffffffffffff89,%r11 | |
| 1176: 4c 0f 43 ed cmovae %rbp,%r13 | |
| 117a: 49 0f 42 c3 cmovb %r11,%rax | |
| 117e: 49 83 fb 88 cmp $0xffffffffffffff88,%r11 | |
| 1182: 0f 87 a0 23 00 00 ja 3528 <ZSTD_decompressBlock_internal+0x2408> | |
| 1188: 49 29 c4 sub %rax,%r12 | |
| * we use. If neither is defined, we do some inspection and dispatch at | |
| * runtime. | |
| */ | |
| #if !defined(ZSTD_FORCE_DECOMPRESS_SEQUENCES_SHORT) && \ | |
| !defined(ZSTD_FORCE_DECOMPRESS_SEQUENCES_LONG) | |
| int usePrefetchDecoder = dctx->ddictIsCold; | |
| 118b: 8b af f4 75 00 00 mov 0x75f4(%rdi),%ebp | |
| 1191: 48 8d b4 24 fc 01 00 lea 0x1fc(%rsp),%rsi | |
| 1198: 00 | |
| #endif | |
| int nbSeq; | |
| size_t const seqHSize = ZSTD_decodeSeqHeaders(dctx, &nbSeq, ip, srcSize); | |
| 1199: 4c 89 ea mov %r13,%rdx | |
| 119c: 4c 89 e1 mov %r12,%rcx | |
| 119f: e8 00 00 00 00 callq 11a4 <ZSTD_decompressBlock_internal+0x84> | |
| 11a4: 49 89 c3 mov %rax,%r11 | |
| 11a7: 48 83 f8 88 cmp $0xffffffffffffff88,%rax | |
| if (ZSTD_isError(seqHSize)) return seqHSize; | |
| 11ab: 0f 87 77 23 00 00 ja 3528 <ZSTD_decompressBlock_internal+0x2408> | |
| 11b1: 44 8b 8c 24 fc 01 00 mov 0x1fc(%rsp),%r9d | |
| 11b8: 00 | |
| ip += seqHSize; | |
| srcSize -= seqHSize; | |
| RETURN_ERROR_IF(dst == NULL && nbSeq > 0, dstSize_tooSmall, "NULL not handled"); | |
| 11b9: 4d 85 f6 test %r14,%r14 | |
| 11bc: 75 10 jne 11ce <ZSTD_decompressBlock_internal+0xae> | |
| 11be: 49 c7 c3 ba ff ff ff mov $0xffffffffffffffba,%r11 | |
| 11c5: 45 85 c9 test %r9d,%r9d | |
| 11c8: 0f 8f 5a 23 00 00 jg 3528 <ZSTD_decompressBlock_internal+0x2408> | |
| 11ce: 49 01 c5 add %rax,%r13 | |
| 11d1: 49 29 c4 sub %rax,%r12 | |
| #if !defined(ZSTD_FORCE_DECOMPRESS_SEQUENCES_SHORT) && \ | |
| !defined(ZSTD_FORCE_DECOMPRESS_SEQUENCES_LONG) | |
| if ( !usePrefetchDecoder | |
| 11d4: 85 ed test %ebp,%ebp | |
| && (!frame || (dctx->fParams.windowSize > (1<<24))) | |
| 11d6: 74 3a je 1212 <ZSTD_decompressBlock_internal+0xf2> | |
| 11d8: 4c 8b 54 24 20 mov 0x20(%rsp),%r10 | |
| U32 const minShare = MEM_64bits() ? 7 : 20; /* heuristic values, correspond to 2.73% and 7.81% */ | |
| usePrefetchDecoder = (shareLongOffsets >= minShare); | |
| } | |
| #endif | |
| dctx->ddictIsCold = 0; | |
| 11dd: 41 c7 82 f4 75 00 00 movl $0x0,0x75f4(%r10) | |
| 11e4: 00 00 00 00 | |
| 11e8: 4c 89 fa mov %r15,%rdx | |
| if (dctx->bmi2) { | |
| 11eb: 41 83 ba d8 75 00 00 cmpl $0x0,0x75d8(%r10) | |
| 11f2: 00 | |
| 11f3: 0f 84 96 00 00 00 je 128f <ZSTD_decompressBlock_internal+0x16f> | |
| return ZSTD_decompressSequencesLong_bmi2(dctx, dst, maxDstSize, seqStart, seqSize, nbSeq, isLongOffset, frame); | |
| 11f9: 4c 89 d7 mov %r10,%rdi | |
| 11fc: 4c 89 f6 mov %r14,%rsi | |
| 11ff: 4c 89 e9 mov %r13,%rcx | |
| 1202: 4d 89 e0 mov %r12,%r8 | |
| 1205: e8 56 24 00 00 callq 3660 <ZSTD_decompressSequencesLong_bmi2> | |
| 120a: 49 89 c3 mov %rax,%r11 | |
| 120d: e9 16 23 00 00 jmpq 3528 <ZSTD_decompressBlock_internal+0x2408> | |
| && (!frame || (dctx->fParams.windowSize > (1<<24))) | |
| 1212: 85 db test %ebx,%ebx | |
| 1214: 4c 8b 54 24 20 mov 0x20(%rsp),%r10 | |
| 1219: 0f 84 7e 01 00 00 je 139d <ZSTD_decompressBlock_internal+0x27d> | |
| 121f: 41 83 f9 09 cmp $0x9,%r9d | |
| && (nbSeq>ADVANCED_SEQS) ) { /* could probably use a larger nbSeq limit */ | |
| 1223: 0f 8c 7e 01 00 00 jl 13a7 <ZSTD_decompressBlock_internal+0x287> | |
| 1229: 49 81 ba f0 74 00 00 cmpq $0x1000000,0x74f0(%r10) | |
| 1230: 00 00 00 01 | |
| 1234: 0f 86 6d 01 00 00 jbe 13a7 <ZSTD_decompressBlock_internal+0x287> | |
| U32 const shareLongOffsets = ZSTD_getLongOffsetsShare(dctx->OFTptr); | |
| 123a: 49 8b 42 10 mov 0x10(%r10),%rax | |
| U32 const tableLog = ((const ZSTD_seqSymbol_header*)ptr)[0].tableLog; | |
| 123e: 8b 48 04 mov 0x4(%rax),%ecx | |
| 1241: 31 d2 xor %edx,%edx | |
| 1243: be 01 00 00 00 mov $0x1,%esi | |
| 1248: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) | |
| 124f: 00 | |
| if (table[u].nbAdditionalBits > 22) total += 1; | |
| 1250: 8d 7e ff lea -0x1(%rsi),%edi | |
| 1253: 31 ed xor %ebp,%ebp | |
| 1255: 80 7c f8 0a 16 cmpb $0x16,0xa(%rax,%rdi,8) | |
| 125a: 40 0f 97 c5 seta %bpl | |
| for (u=0; u<max; u++) { | |
| 125e: 89 f7 mov %esi,%edi | |
| 1260: d3 ef shr %cl,%edi | |
| if (table[u].nbAdditionalBits > 22) total += 1; | |
| 1262: 01 ea add %ebp,%edx | |
| for (u=0; u<max; u++) { | |
| 1264: 83 c6 01 add $0x1,%esi | |
| 1267: 85 ff test %edi,%edi | |
| 1269: 74 e5 je 1250 <ZSTD_decompressBlock_internal+0x130> | |
| 126b: b0 08 mov $0x8,%al | |
| total <<= (OffFSELog - tableLog); /* scale to OffFSELog */ | |
| 126d: 28 c8 sub %cl,%al | |
| 126f: 89 c1 mov %eax,%ecx | |
| 1271: d3 e2 shl %cl,%edx | |
| dctx->ddictIsCold = 0; | |
| 1273: 41 c7 82 f4 75 00 00 movl $0x0,0x75f4(%r10) | |
| 127a: 00 00 00 00 | |
| usePrefetchDecoder = (shareLongOffsets >= minShare); | |
| 127e: 83 fa 07 cmp $0x7,%edx | |
| 1281: 4c 89 fa mov %r15,%rdx | |
| #if !defined(ZSTD_FORCE_DECOMPRESS_SEQUENCES_SHORT) && \ | |
| !defined(ZSTD_FORCE_DECOMPRESS_SEQUENCES_LONG) | |
| if (usePrefetchDecoder) | |
| 1284: 0f 83 61 ff ff ff jae 11eb <ZSTD_decompressBlock_internal+0xcb> | |
| 128a: e9 26 01 00 00 jmpq 13b5 <ZSTD_decompressBlock_internal+0x295> | |
| BYTE* const oend = ostart + maxDstSize; | |
| 128f: 4c 01 f2 add %r14,%rdx | |
| const BYTE* litPtr = dctx->litPtr; | |
| 1292: 49 8b b2 a0 75 00 00 mov 0x75a0(%r10),%rsi | |
| 1299: 48 89 b4 24 e0 00 00 mov %rsi,0xe0(%rsp) | |
| 12a0: 00 | |
| 12a1: 49 8b 82 c0 75 00 00 mov 0x75c0(%r10),%rax | |
| const BYTE* const litEnd = litPtr + dctx->litSize; | |
| 12a8: 48 01 f0 add %rsi,%rax | |
| BYTE* op = ostart; | |
| 12ab: 4c 89 f7 mov %r14,%rdi | |
| if (nbSeq) { | |
| 12ae: 45 85 c9 test %r9d,%r9d | |
| 12b1: 0f 84 c0 21 00 00 je 3477 <ZSTD_decompressBlock_internal+0x2357> | |
| 12b7: 49 8b ba c8 74 00 00 mov 0x74c8(%r10),%rdi | |
| 12be: 49 8b 8a d0 74 00 00 mov 0x74d0(%r10),%rcx | |
| 12c5: 48 89 8c 24 d0 01 00 mov %rcx,0x1d0(%rsp) | |
| 12cc: 00 | |
| 12cd: 49 8b 8a d8 74 00 00 mov 0x74d8(%r10),%rcx | |
| 12d4: 48 89 4c 24 38 mov %rcx,0x38(%rsp) | |
| int const seqAdvance = MIN(nbSeq, ADVANCED_SEQS); | |
| 12d9: 41 83 f9 09 cmp $0x9,%r9d | |
| dctx->fseEntropy = 1; | |
| 12dd: 41 c7 82 2c 75 00 00 movl $0x1,0x752c(%r10) | |
| 12e4: 01 00 00 00 | |
| { int i; for (i=0; i<ZSTD_REP_NUM; i++) seqState.prevOffset[i] = dctx->entropy.rep[i]; } | |
| 12e8: 45 8b ba 3c 68 00 00 mov 0x683c(%r10),%r15d | |
| 12ef: 4c 89 bc 24 b8 00 00 mov %r15,0xb8(%rsp) | |
| 12f6: 00 | |
| 12f7: f2 41 0f 10 82 40 68 movsd 0x6840(%r10),%xmm0 | |
| 12fe: 00 00 | |
| 1300: 0f 57 c9 xorps %xmm1,%xmm1 | |
| 1303: 0f 14 c1 unpcklps %xmm1,%xmm0 | |
| 1306: 0f 11 84 24 c0 00 00 movups %xmm0,0xc0(%rsp) | |
| 130d: 00 | |
| 130e: b9 08 00 00 00 mov $0x8,%ecx | |
| int const seqAdvance = MIN(nbSeq, ADVANCED_SEQS); | |
| 1313: 41 0f 4c c9 cmovl %r9d,%ecx | |
| 1317: 89 8c 24 ec 00 00 00 mov %ecx,0xec(%rsp) | |
| * `srcSize` must be the *exact* size of the bitStream, in bytes. | |
| * @return : size of stream (== srcSize), or an errorCode if a problem is detected | |
| */ | |
| MEM_STATIC size_t BIT_initDStream(BIT_DStream_t* bitD, const void* srcBuffer, size_t srcSize) | |
| { | |
| if (srcSize < 1) { ZSTD_memset(bitD, 0, sizeof(*bitD)); return ERROR(srcSize_wrong); } | |
| 131e: 4d 85 e4 test %r12,%r12 | |
| 1321: 0f 84 c0 01 00 00 je 14e7 <ZSTD_decompressBlock_internal+0x3c7> | |
| 1327: 48 89 84 24 f8 00 00 mov %rax,0xf8(%rsp) | |
| 132e: 00 | |
| bitD->start = (const char*)srcBuffer; | |
| 132f: 4c 89 6c 24 78 mov %r13,0x78(%rsp) | |
| bitD->limitPtr = bitD->start + sizeof(bitD->bitContainer); | |
| 1334: 49 8d 45 08 lea 0x8(%r13),%rax | |
| 1338: 48 89 84 24 80 00 00 mov %rax,0x80(%rsp) | |
| 133f: 00 | |
| if (srcSize >= sizeof(bitD->bitContainer)) { /* normal case */ | |
| 1340: 49 83 fc 08 cmp $0x8,%r12 | |
| 1344: 48 89 54 24 18 mov %rdx,0x18(%rsp) | |
| 1349: 0f 82 b3 01 00 00 jb 1502 <ZSTD_decompressBlock_internal+0x3e2> | |
| bitD->ptr = (const char*)srcBuffer + srcSize - sizeof(bitD->bitContainer); | |
| 134f: 4b 8d 04 2c lea (%r12,%r13,1),%rax | |
| 1353: 48 83 c0 f8 add $0xfffffffffffffff8,%rax | |
| 1357: 48 89 44 24 70 mov %rax,0x70(%rsp) | |
| MEM_STATIC U64 MEM_read64(const void* ptr) { return ((const unalign64*)ptr)->v; } | |
| 135c: 4b 8b 5c 25 f8 mov -0x8(%r13,%r12,1),%rbx | |
| bitD->bitContainer = MEM_readLEST(bitD->ptr); | |
| 1361: 48 89 5c 24 60 mov %rbx,0x60(%rsp) | |
| { BYTE const lastByte = ((const BYTE*)srcBuffer)[srcSize-1]; | |
| 1366: 43 0f b6 44 2c ff movzbl -0x1(%r12,%r13,1),%eax | |
| 136c: 85 c0 test %eax,%eax | |
| bitD->bitsConsumed = lastByte ? 8 - BIT_highbit32(lastByte) : 0; /* ensures bitsConsumed is always set */ | |
| 136e: 0f 84 b0 02 00 00 je 1624 <ZSTD_decompressBlock_internal+0x504> | |
| return __builtin_clz (val) ^ 31; | |
| 1374: 0f bd c0 bsr %eax,%eax | |
| 1377: f7 d0 not %eax | |
| 1379: 83 c8 e0 or $0xffffffe0,%eax | |
| bitD->bitsConsumed = lastByte ? 8 - BIT_highbit32(lastByte) : 0; /* ensures bitsConsumed is always set */ | |
| 137c: 83 c0 09 add $0x9,%eax | |
| 137f: 89 44 24 68 mov %eax,0x68(%rsp) | |
| 1383: 49 c7 c3 ec ff ff ff mov $0xffffffffffffffec,%r11 | |
| 138a: 49 83 fc 88 cmp $0xffffffffffffff88,%r12 | |
| RETURN_ERROR_IF( | |
| 138e: 0f 87 94 21 00 00 ja 3528 <ZSTD_decompressBlock_internal+0x2408> | |
| 1394: 49 83 c4 f8 add $0xfffffffffffffff8,%r12 | |
| 1398: e9 13 02 00 00 jmpq 15b0 <ZSTD_decompressBlock_internal+0x490> | |
| && (nbSeq>ADVANCED_SEQS) ) { /* could probably use a larger nbSeq limit */ | |
| 139d: 41 83 f9 09 cmp $0x9,%r9d | |
| if ( !usePrefetchDecoder | |
| 13a1: 0f 8d 93 fe ff ff jge 123a <ZSTD_decompressBlock_internal+0x11a> | |
| dctx->ddictIsCold = 0; | |
| 13a7: 41 c7 82 f4 75 00 00 movl $0x0,0x75f4(%r10) | |
| 13ae: 00 00 00 00 | |
| 13b2: 4c 89 fa mov %r15,%rdx | |
| if (dctx->bmi2) { | |
| 13b5: 41 83 ba d8 75 00 00 cmpl $0x0,0x75d8(%r10) | |
| 13bc: 00 | |
| 13bd: 74 19 je 13d8 <ZSTD_decompressBlock_internal+0x2b8> | |
| return ZSTD_decompressSequences_bmi2(dctx, dst, maxDstSize, seqStart, seqSize, nbSeq, isLongOffset, frame); | |
| 13bf: 4c 89 d7 mov %r10,%rdi | |
| 13c2: 4c 89 f6 mov %r14,%rsi | |
| 13c5: 4c 89 e9 mov %r13,%rcx | |
| 13c8: 4d 89 e0 mov %r12,%r8 | |
| 13cb: e8 b0 42 00 00 callq 5680 <ZSTD_decompressSequences_bmi2> | |
| 13d0: 49 89 c3 mov %rax,%r11 | |
| 13d3: e9 50 21 00 00 jmpq 3528 <ZSTD_decompressBlock_internal+0x2408> | |
| BYTE* const oend = ostart + maxDstSize; | |
| 13d8: 4c 01 f2 add %r14,%rdx | |
| const BYTE* litPtr = dctx->litPtr; | |
| 13db: 49 8b b2 a0 75 00 00 mov 0x75a0(%r10),%rsi | |
| 13e2: 48 89 74 24 60 mov %rsi,0x60(%rsp) | |
| 13e7: 49 8b 9a c0 75 00 00 mov 0x75c0(%r10),%rbx | |
| const BYTE* const litEnd = litPtr + dctx->litSize; | |
| 13ee: 48 01 f3 add %rsi,%rbx | |
| 13f1: 4c 89 74 24 40 mov %r14,0x40(%rsp) | |
| if (nbSeq) { | |
| 13f6: 45 85 c9 test %r9d,%r9d | |
| 13f9: 0f 84 1b 0f 00 00 je 231a <ZSTD_decompressBlock_internal+0x11fa> | |
| 13ff: 49 8b 8a c8 74 00 00 mov 0x74c8(%r10),%rcx | |
| 1406: 49 8b 82 d0 74 00 00 mov 0x74d0(%r10),%rax | |
| 140d: 48 89 44 24 50 mov %rax,0x50(%rsp) | |
| 1412: 49 8b 82 d8 74 00 00 mov 0x74d8(%r10),%rax | |
| 1419: 48 89 84 24 f0 00 00 mov %rax,0xf0(%rsp) | |
| 1420: 00 | |
| dctx->fseEntropy = 1; | |
| 1421: 41 c7 82 2c 75 00 00 movl $0x1,0x752c(%r10) | |
| 1428: 01 00 00 00 | |
| { U32 i; for (i=0; i<ZSTD_REP_NUM; i++) seqState.prevOffset[i] = dctx->entropy.rep[i]; } | |
| 142c: f2 41 0f 10 8a 3c 68 movsd 0x683c(%r10),%xmm1 | |
| 1433: 00 00 | |
| 1435: 0f 57 c0 xorps %xmm0,%xmm0 | |
| 1438: 0f 14 c8 unpcklps %xmm0,%xmm1 | |
| 143b: 0f 11 8c 24 58 01 00 movups %xmm1,0x158(%rsp) | |
| 1442: 00 | |
| 1443: 41 8b 82 44 68 00 00 mov 0x6844(%r10),%eax | |
| 144a: 48 89 84 24 68 01 00 mov %rax,0x168(%rsp) | |
| 1451: 00 | |
| if (srcSize < 1) { ZSTD_memset(bitD, 0, sizeof(*bitD)); return ERROR(srcSize_wrong); } | |
| 1452: 4d 85 e4 test %r12,%r12 | |
| 1455: 0f 84 d6 01 00 00 je 1631 <ZSTD_decompressBlock_internal+0x511> | |
| bitD->start = (const char*)srcBuffer; | |
| 145b: 4c 89 ac 24 18 01 00 mov %r13,0x118(%rsp) | |
| 1462: 00 | |
| bitD->limitPtr = bitD->start + sizeof(bitD->bitContainer); | |
| 1463: 49 8d 45 08 lea 0x8(%r13),%rax | |
| 1467: 48 89 84 24 20 01 00 mov %rax,0x120(%rsp) | |
| 146e: 00 | |
| if (srcSize >= sizeof(bitD->bitContainer)) { /* normal case */ | |
| 146f: 49 83 fc 08 cmp $0x8,%r12 | |
| 1473: 48 89 5c 24 58 mov %rbx,0x58(%rsp) | |
| 1478: 0f 82 d4 01 00 00 jb 1652 <ZSTD_decompressBlock_internal+0x532> | |
| bitD->ptr = (const char*)srcBuffer + srcSize - sizeof(bitD->bitContainer); | |
| 147e: 4b 8d 04 2c lea (%r12,%r13,1),%rax | |
| 1482: 48 83 c0 f8 add $0xfffffffffffffff8,%rax | |
| 1486: 48 89 84 24 10 01 00 mov %rax,0x110(%rsp) | |
| 148d: 00 | |
| 148e: 4f 8b 54 25 f8 mov -0x8(%r13,%r12,1),%r10 | |
| bitD->bitContainer = MEM_readLEST(bitD->ptr); | |
| 1493: 4c 89 94 24 00 01 00 mov %r10,0x100(%rsp) | |
| 149a: 00 | |
| { BYTE const lastByte = ((const BYTE*)srcBuffer)[srcSize-1]; | |
| 149b: 43 0f b6 44 2c ff movzbl -0x1(%r12,%r13,1),%eax | |
| 14a1: 85 c0 test %eax,%eax | |
| bitD->bitsConsumed = lastByte ? 8 - BIT_highbit32(lastByte) : 0; /* ensures bitsConsumed is always set */ | |
| 14a3: 0f 84 6d 20 00 00 je 3516 <ZSTD_decompressBlock_internal+0x23f6> | |
| return __builtin_clz (val) ^ 31; | |
| 14a9: 44 0f bd f8 bsr %eax,%r15d | |
| 14ad: 41 f7 d7 not %r15d | |
| 14b0: 41 83 cf e0 or $0xffffffe0,%r15d | |
| bitD->bitsConsumed = lastByte ? 8 - BIT_highbit32(lastByte) : 0; /* ensures bitsConsumed is always set */ | |
| 14b4: 41 83 c7 09 add $0x9,%r15d | |
| 14b8: 44 89 bc 24 08 01 00 mov %r15d,0x108(%rsp) | |
| 14bf: 00 | |
| 14c0: 49 c7 c3 ec ff ff ff mov $0xffffffffffffffec,%r11 | |
| 14c7: 49 83 fc 88 cmp $0xffffffffffffff88,%r12 | |
| RETURN_ERROR_IF( | |
| 14cb: 0f 87 57 20 00 00 ja 3528 <ZSTD_decompressBlock_internal+0x2408> | |
| 14d1: 49 89 cb mov %rcx,%r11 | |
| 14d4: 48 89 54 24 18 mov %rdx,0x18(%rsp) | |
| 14d9: 49 83 c4 f8 add $0xfffffffffffffff8,%r12 | |
| 14dd: 4c 8b 74 24 40 mov 0x40(%rsp),%r14 | |
| 14e2: e9 4a 02 00 00 jmpq 1731 <ZSTD_decompressBlock_internal+0x611> | |
| if (srcSize < 1) { ZSTD_memset(bitD, 0, sizeof(*bitD)); return ERROR(srcSize_wrong); } | |
| 14e7: 0f 29 4c 24 70 movaps %xmm1,0x70(%rsp) | |
| 14ec: 0f 29 4c 24 60 movaps %xmm1,0x60(%rsp) | |
| 14f1: 48 c7 84 24 80 00 00 movq $0x0,0x80(%rsp) | |
| 14f8: 00 00 00 00 00 | |
| 14fd: e9 1f 20 00 00 jmpq 3521 <ZSTD_decompressBlock_internal+0x2401> | |
| if (lastByte == 0) return ERROR(GENERIC); /* endMark not present */ } | |
| } else { | |
| bitD->ptr = bitD->start; | |
| 1502: 4c 89 6c 24 70 mov %r13,0x70(%rsp) | |
| bitD->bitContainer = *(const BYTE*)(bitD->start); | |
| 1507: 41 0f b6 5d 00 movzbl 0x0(%r13),%ebx | |
| 150c: 48 89 5c 24 60 mov %rbx,0x60(%rsp) | |
| switch(srcSize) | |
| 1511: 49 8d 44 24 fe lea -0x2(%r12),%rax | |
| 1516: 48 83 f8 05 cmp $0x5,%rax | |
| 151a: 77 6d ja 1589 <ZSTD_decompressBlock_internal+0x469> | |
| 151c: ff 24 c5 00 00 00 00 jmpq *0x0(,%rax,8) | |
| { | |
| case 7: bitD->bitContainer += (size_t)(((const BYTE*)(srcBuffer))[6]) << (sizeof(bitD->bitContainer)*8 - 16); | |
| 1523: 41 0f b6 45 06 movzbl 0x6(%r13),%eax | |
| 1528: 48 c1 e0 30 shl $0x30,%rax | |
| 152c: 48 09 c3 or %rax,%rbx | |
| 152f: 48 89 5c 24 60 mov %rbx,0x60(%rsp) | |
| /* fall-through */ | |
| case 6: bitD->bitContainer += (size_t)(((const BYTE*)(srcBuffer))[5]) << (sizeof(bitD->bitContainer)*8 - 24); | |
| 1534: 41 0f b6 45 05 movzbl 0x5(%r13),%eax | |
| 1539: 48 c1 e0 28 shl $0x28,%rax | |
| 153d: 48 01 c3 add %rax,%rbx | |
| 1540: 48 89 5c 24 60 mov %rbx,0x60(%rsp) | |
| /* fall-through */ | |
| case 5: bitD->bitContainer += (size_t)(((const BYTE*)(srcBuffer))[4]) << (sizeof(bitD->bitContainer)*8 - 32); | |
| 1545: 41 0f b6 45 04 movzbl 0x4(%r13),%eax | |
| 154a: 48 c1 e0 20 shl $0x20,%rax | |
| 154e: 48 01 c3 add %rax,%rbx | |
| 1551: 48 89 5c 24 60 mov %rbx,0x60(%rsp) | |
| /* fall-through */ | |
| case 4: bitD->bitContainer += (size_t)(((const BYTE*)(srcBuffer))[3]) << 24; | |
| 1556: 41 0f b6 45 03 movzbl 0x3(%r13),%eax | |
| 155b: 48 c1 e0 18 shl $0x18,%rax | |
| 155f: 48 01 c3 add %rax,%rbx | |
| 1562: 48 89 5c 24 60 mov %rbx,0x60(%rsp) | |
| /* fall-through */ | |
| case 3: bitD->bitContainer += (size_t)(((const BYTE*)(srcBuffer))[2]) << 16; | |
| 1567: 41 0f b6 45 02 movzbl 0x2(%r13),%eax | |
| 156c: 48 c1 e0 10 shl $0x10,%rax | |
| 1570: 48 01 c3 add %rax,%rbx | |
| 1573: 48 89 5c 24 60 mov %rbx,0x60(%rsp) | |
| /* fall-through */ | |
| case 2: bitD->bitContainer += (size_t)(((const BYTE*)(srcBuffer))[1]) << 8; | |
| 1578: 41 0f b6 45 01 movzbl 0x1(%r13),%eax | |
| 157d: 48 c1 e0 08 shl $0x8,%rax | |
| 1581: 48 01 c3 add %rax,%rbx | |
| 1584: 48 89 5c 24 60 mov %rbx,0x60(%rsp) | |
| /* fall-through */ | |
| default: break; | |
| } | |
| { BYTE const lastByte = ((const BYTE*)srcBuffer)[srcSize-1]; | |
| 1589: 43 0f b6 44 2c ff movzbl -0x1(%r12,%r13,1),%eax | |
| 158f: 85 c0 test %eax,%eax | |
| bitD->bitsConsumed = lastByte ? 8 - BIT_highbit32(lastByte) : 0; | |
| 1591: 0f 84 8d 00 00 00 je 1624 <ZSTD_decompressBlock_internal+0x504> | |
| return __builtin_clz (val) ^ 31; | |
| 1597: 0f bd c0 bsr %eax,%eax | |
| 159a: f7 d0 not %eax | |
| 159c: 83 c8 e0 or $0xffffffe0,%eax | |
| if (lastByte == 0) return ERROR(corruption_detected); /* endMark not present */ | |
| } | |
| bitD->bitsConsumed += (U32)(sizeof(bitD->bitContainer) - srcSize)*8; | |
| 159f: 41 c1 e4 03 shl $0x3,%r12d | |
| 15a3: 44 29 e0 sub %r12d,%eax | |
| 15a6: 83 c0 49 add $0x49,%eax | |
| 15a9: 89 44 24 68 mov %eax,0x68(%rsp) | |
| 15ad: 45 31 e4 xor %r12d,%r12d | |
| ZSTD_initFseState(&seqState.stateLL, &seqState.DStream, dctx->LLTptr); | |
| 15b0: 49 8b 0a mov (%r10),%rcx | |
| 15b3: 48 89 cd mov %rcx,%rbp | |
| DStatePtr->state = BIT_readBits(bitD, DTableH->tableLog); | |
| 15b6: 8b 51 04 mov 0x4(%rcx),%edx | |
| { | |
| /* arbitrate between double-shift and shift+mask */ | |
| #if 1 | |
| /* if bitD->bitsConsumed + nbBits > sizeof(bitD->bitContainer)*8, | |
| * bitstream is likely corrupted, and result is undefined */ | |
| return BIT_getMiddleBits(bitD->bitContainer, (sizeof(bitD->bitContainer)*8) - bitD->bitsConsumed - nbBits, nbBits); | |
| 15b9: 01 d0 add %edx,%eax | |
| return (bitContainer >> (start & regMask)) & BIT_mask[nbBits]; | |
| 15bb: 89 c1 mov %eax,%ecx | |
| 15bd: f6 d9 neg %cl | |
| 15bf: 48 89 de mov %rbx,%rsi | |
| 15c2: 48 d3 ee shr %cl,%rsi | |
| 15c5: 23 34 95 00 00 00 00 and 0x0(,%rdx,4),%esi | |
| return (bitD->bitContainer << (bitD->bitsConsumed & regMask)) >> (((regMask+1)-nbBits) & regMask); | |
| } | |
| MEM_STATIC FORCE_INLINE_ATTR void BIT_skipBits(BIT_DStream_t* bitD, U32 nbBits) | |
| { | |
| bitD->bitsConsumed += nbBits; | |
| 15cc: 89 44 24 68 mov %eax,0x68(%rsp) | |
| 15d0: 48 89 b4 24 88 00 00 mov %rsi,0x88(%rsp) | |
| 15d7: 00 | |
| * This function is safe, it guarantees it will not read beyond src buffer. | |
| * @return : status of `BIT_DStream_t` internal register. | |
| * when status == BIT_DStream_unfinished, internal register is filled with at least 25 or 57 bits */ | |
| MEM_STATIC BIT_DStream_status BIT_reloadDStream(BIT_DStream_t* bitD) | |
| { | |
| if (bitD->bitsConsumed > (sizeof(bitD->bitContainer)*8)) /* overflow detected, like end of stream */ | |
| 15d8: 83 f8 40 cmp $0x40,%eax | |
| 15db: 48 89 7c 24 08 mov %rdi,0x8(%rsp) | |
| 15e0: 0f 87 b4 01 00 00 ja 179a <ZSTD_decompressBlock_internal+0x67a> | |
| return BIT_DStream_overflow; | |
| if (bitD->ptr >= bitD->limitPtr) { | |
| 15e6: 49 83 fc 08 cmp $0x8,%r12 | |
| 15ea: 0f 8d 88 01 00 00 jge 1778 <ZSTD_decompressBlock_internal+0x658> | |
| return BIT_reloadDStreamFast(bitD); | |
| } | |
| if (bitD->ptr == bitD->start) { | |
| 15f0: 4d 85 e4 test %r12,%r12 | |
| 15f3: 0f 84 5c 0d 00 00 je 2355 <ZSTD_decompressBlock_internal+0x1235> | |
| 15f9: 4b 8d 0c 2c lea (%r12,%r13,1),%rcx | |
| if (bitD->bitsConsumed < sizeof(bitD->bitContainer)*8) return BIT_DStream_endOfBuffer; | |
| return BIT_DStream_completed; | |
| } | |
| /* start < ptr < limitPtr */ | |
| { U32 nbBytes = bitD->bitsConsumed >> 3; | |
| 15fd: 89 c2 mov %eax,%edx | |
| 15ff: c1 ea 03 shr $0x3,%edx | |
| BIT_DStream_status result = BIT_DStream_unfinished; | |
| if (bitD->ptr - nbBytes < bitD->start) { | |
| 1602: 48 29 d1 sub %rdx,%rcx | |
| 1605: 4c 39 e9 cmp %r13,%rcx | |
| 1608: 44 89 e1 mov %r12d,%ecx | |
| 160b: 0f 43 ca cmovae %edx,%ecx | |
| nbBytes = (U32)(bitD->ptr - bitD->start); /* ptr > start */ | |
| result = BIT_DStream_endOfBuffer; | |
| } | |
| bitD->ptr -= nbBytes; | |
| 160e: 49 29 cc sub %rcx,%r12 | |
| 1611: 4b 8d 14 2c lea (%r12,%r13,1),%rdx | |
| 1615: 48 89 54 24 70 mov %rdx,0x70(%rsp) | |
| bitD->bitsConsumed -= nbBytes*8; | |
| 161a: c1 e1 03 shl $0x3,%ecx | |
| 161d: 29 c8 sub %ecx,%eax | |
| 161f: e9 68 01 00 00 jmpq 178c <ZSTD_decompressBlock_internal+0x66c> | |
| 1624: c7 44 24 68 00 00 00 movl $0x0,0x68(%rsp) | |
| 162b: 00 | |
| 162c: e9 f0 1e 00 00 jmpq 3521 <ZSTD_decompressBlock_internal+0x2401> | |
| if (srcSize < 1) { ZSTD_memset(bitD, 0, sizeof(*bitD)); return ERROR(srcSize_wrong); } | |
| 1631: 0f 29 84 24 10 01 00 movaps %xmm0,0x110(%rsp) | |
| 1638: 00 | |
| 1639: 0f 29 84 24 00 01 00 movaps %xmm0,0x100(%rsp) | |
| 1640: 00 | |
| 1641: 48 c7 84 24 20 01 00 movq $0x0,0x120(%rsp) | |
| 1648: 00 00 00 00 00 | |
| 164d: e9 cf 1e 00 00 jmpq 3521 <ZSTD_decompressBlock_internal+0x2401> | |
| 1652: 49 89 cb mov %rcx,%r11 | |
| bitD->ptr = bitD->start; | |
| 1655: 4c 89 ac 24 10 01 00 mov %r13,0x110(%rsp) | |
| 165c: 00 | |
| bitD->bitContainer = *(const BYTE*)(bitD->start); | |
| 165d: 45 0f b6 55 00 movzbl 0x0(%r13),%r10d | |
| 1662: 4c 89 94 24 00 01 00 mov %r10,0x100(%rsp) | |
| 1669: 00 | |
| switch(srcSize) | |
| 166a: 49 8d 44 24 fe lea -0x2(%r12),%rax | |
| 166f: 48 83 f8 05 cmp $0x5,%rax | |
| 1673: 0f 87 8a 1e 00 00 ja 3503 <ZSTD_decompressBlock_internal+0x23e3> | |
| 1679: 4c 8b 74 24 40 mov 0x40(%rsp),%r14 | |
| 167e: ff 24 c5 00 00 00 00 jmpq *0x0(,%rax,8) | |
| case 7: bitD->bitContainer += (size_t)(((const BYTE*)(srcBuffer))[6]) << (sizeof(bitD->bitContainer)*8 - 16); | |
| 1685: 41 0f b6 45 06 movzbl 0x6(%r13),%eax | |
| 168a: 48 c1 e0 30 shl $0x30,%rax | |
| 168e: 49 09 c2 or %rax,%r10 | |
| 1691: 4c 89 94 24 00 01 00 mov %r10,0x100(%rsp) | |
| 1698: 00 | |
| case 6: bitD->bitContainer += (size_t)(((const BYTE*)(srcBuffer))[5]) << (sizeof(bitD->bitContainer)*8 - 24); | |
| 1699: 41 0f b6 45 05 movzbl 0x5(%r13),%eax | |
| 169e: 48 c1 e0 28 shl $0x28,%rax | |
| 16a2: 49 01 c2 add %rax,%r10 | |
| 16a5: 4c 89 94 24 00 01 00 mov %r10,0x100(%rsp) | |
| 16ac: 00 | |
| case 5: bitD->bitContainer += (size_t)(((const BYTE*)(srcBuffer))[4]) << (sizeof(bitD->bitContainer)*8 - 32); | |
| 16ad: 41 0f b6 45 04 movzbl 0x4(%r13),%eax | |
| 16b2: 48 c1 e0 20 shl $0x20,%rax | |
| 16b6: 49 01 c2 add %rax,%r10 | |
| 16b9: 4c 89 94 24 00 01 00 mov %r10,0x100(%rsp) | |
| 16c0: 00 | |
| case 4: bitD->bitContainer += (size_t)(((const BYTE*)(srcBuffer))[3]) << 24; | |
| 16c1: 41 0f b6 45 03 movzbl 0x3(%r13),%eax | |
| 16c6: 48 c1 e0 18 shl $0x18,%rax | |
| 16ca: 49 01 c2 add %rax,%r10 | |
| 16cd: 4c 89 94 24 00 01 00 mov %r10,0x100(%rsp) | |
| 16d4: 00 | |
| case 3: bitD->bitContainer += (size_t)(((const BYTE*)(srcBuffer))[2]) << 16; | |
| 16d5: 41 0f b6 45 02 movzbl 0x2(%r13),%eax | |
| 16da: 48 c1 e0 10 shl $0x10,%rax | |
| 16de: 49 01 c2 add %rax,%r10 | |
| 16e1: 4c 89 94 24 00 01 00 mov %r10,0x100(%rsp) | |
| 16e8: 00 | |
| case 2: bitD->bitContainer += (size_t)(((const BYTE*)(srcBuffer))[1]) << 8; | |
| 16e9: 41 0f b6 45 01 movzbl 0x1(%r13),%eax | |
| 16ee: 48 c1 e0 08 shl $0x8,%rax | |
| 16f2: 49 01 c2 add %rax,%r10 | |
| 16f5: 4c 89 94 24 00 01 00 mov %r10,0x100(%rsp) | |
| 16fc: 00 | |
| { BYTE const lastByte = ((const BYTE*)srcBuffer)[srcSize-1]; | |
| 16fd: 43 0f b6 44 2c ff movzbl -0x1(%r12,%r13,1),%eax | |
| 1703: 85 c0 test %eax,%eax | |
| bitD->bitsConsumed = lastByte ? 8 - BIT_highbit32(lastByte) : 0; | |
| 1705: 0f 84 0b 1e 00 00 je 3516 <ZSTD_decompressBlock_internal+0x23f6> | |
| 170b: 48 89 54 24 18 mov %rdx,0x18(%rsp) | |
| return __builtin_clz (val) ^ 31; | |
| 1710: 44 0f bd f8 bsr %eax,%r15d | |
| 1714: 41 f7 d7 not %r15d | |
| 1717: 41 83 cf e0 or $0xffffffe0,%r15d | |
| bitD->bitsConsumed += (U32)(sizeof(bitD->bitContainer) - srcSize)*8; | |
| 171b: 41 c1 e4 03 shl $0x3,%r12d | |
| 171f: 45 29 e7 sub %r12d,%r15d | |
| 1722: 41 83 c7 49 add $0x49,%r15d | |
| 1726: 44 89 bc 24 08 01 00 mov %r15d,0x108(%rsp) | |
| 172d: 00 | |
| 172e: 45 31 e4 xor %r12d,%r12d | |
| 1731: 48 8b 44 24 20 mov 0x20(%rsp),%rax | |
| ZSTD_initFseState(&seqState.stateLL, &seqState.DStream, dctx->LLTptr); | |
| 1736: 48 8b 10 mov (%rax),%rdx | |
| DStatePtr->state = BIT_readBits(bitD, DTableH->tableLog); | |
| 1739: 8b 72 04 mov 0x4(%rdx),%esi | |
| return BIT_getMiddleBits(bitD->bitContainer, (sizeof(bitD->bitContainer)*8) - bitD->bitsConsumed - nbBits, nbBits); | |
| 173c: 41 01 f7 add %esi,%r15d | |
| return (bitContainer >> (start & regMask)) & BIT_mask[nbBits]; | |
| 173f: 44 89 f9 mov %r15d,%ecx | |
| 1742: f6 d9 neg %cl | |
| 1744: 4c 89 d7 mov %r10,%rdi | |
| 1747: 48 d3 ef shr %cl,%rdi | |
| 174a: 23 3c b5 00 00 00 00 and 0x0(,%rsi,4),%edi | |
| bitD->bitsConsumed += nbBits; | |
| 1751: 44 89 bc 24 08 01 00 mov %r15d,0x108(%rsp) | |
| 1758: 00 | |
| 1759: 48 89 bc 24 28 01 00 mov %rdi,0x128(%rsp) | |
| 1760: 00 | |
| if (bitD->bitsConsumed > (sizeof(bitD->bitContainer)*8)) /* overflow detected, like end of stream */ | |
| 1761: 41 83 ff 40 cmp $0x40,%r15d | |
| 1765: 44 89 4c 24 14 mov %r9d,0x14(%rsp) | |
| 176a: 0f 86 c2 01 00 00 jbe 1932 <ZSTD_decompressBlock_internal+0x812> | |
| 1770: 4d 89 e8 mov %r13,%r8 | |
| 1773: e9 27 02 00 00 jmpq 199f <ZSTD_decompressBlock_internal+0x87f> | |
| bitD->ptr -= bitD->bitsConsumed >> 3; | |
| 1778: 89 c1 mov %eax,%ecx | |
| 177a: c1 e9 03 shr $0x3,%ecx | |
| 177d: 49 29 cc sub %rcx,%r12 | |
| 1780: 4b 8d 0c 2c lea (%r12,%r13,1),%rcx | |
| 1784: 48 89 4c 24 70 mov %rcx,0x70(%rsp) | |
| bitD->bitsConsumed &= 7; | |
| 1789: 83 e0 07 and $0x7,%eax | |
| 178c: 89 44 24 68 mov %eax,0x68(%rsp) | |
| 1790: 4b 8b 5c 25 00 mov 0x0(%r13,%r12,1),%rbx | |
| 1795: 48 89 5c 24 60 mov %rbx,0x60(%rsp) | |
| DStatePtr->table = dt + 1; | |
| 179a: 48 83 c5 08 add $0x8,%rbp | |
| 179e: 48 89 ac 24 18 02 00 mov %rbp,0x218(%rsp) | |
| 17a5: 00 | |
| 17a6: 48 89 ac 24 90 00 00 mov %rbp,0x90(%rsp) | |
| 17ad: 00 | |
| ZSTD_initFseState(&seqState.stateOffb, &seqState.DStream, dctx->OFTptr); | |
| 17ae: 49 8b 4a 10 mov 0x10(%r10),%rcx | |
| 17b2: 49 89 c8 mov %rcx,%r8 | |
| DStatePtr->state = BIT_readBits(bitD, DTableH->tableLog); | |
| 17b5: 8b 79 04 mov 0x4(%rcx),%edi | |
| return BIT_getMiddleBits(bitD->bitContainer, (sizeof(bitD->bitContainer)*8) - bitD->bitsConsumed - nbBits, nbBits); | |
| 17b8: 01 f8 add %edi,%eax | |
| return (bitContainer >> (start & regMask)) & BIT_mask[nbBits]; | |
| 17ba: 89 c1 mov %eax,%ecx | |
| 17bc: f6 d9 neg %cl | |
| 17be: 48 89 da mov %rbx,%rdx | |
| 17c1: 48 d3 ea shr %cl,%rdx | |
| 17c4: 23 14 bd 00 00 00 00 and 0x0(,%rdi,4),%edx | |
| bitD->bitsConsumed += nbBits; | |
| 17cb: 89 44 24 68 mov %eax,0x68(%rsp) | |
| 17cf: 48 89 94 24 98 00 00 mov %rdx,0x98(%rsp) | |
| 17d6: 00 | |
| if (bitD->bitsConsumed > (sizeof(bitD->bitContainer)*8)) /* overflow detected, like end of stream */ | |
| 17d7: 83 f8 40 cmp $0x40,%eax | |
| 17da: 48 89 dd mov %rbx,%rbp | |
| 17dd: 77 59 ja 1838 <ZSTD_decompressBlock_internal+0x718> | |
| if (bitD->ptr >= bitD->limitPtr) { | |
| 17df: 49 83 fc 08 cmp $0x8,%r12 | |
| 17e3: 7d 31 jge 1816 <ZSTD_decompressBlock_internal+0x6f6> | |
| if (bitD->ptr == bitD->start) { | |
| 17e5: 4d 85 e4 test %r12,%r12 | |
| 17e8: 0f 84 6f 0b 00 00 je 235d <ZSTD_decompressBlock_internal+0x123d> | |
| 17ee: 4b 8d 0c 2c lea (%r12,%r13,1),%rcx | |
| { U32 nbBytes = bitD->bitsConsumed >> 3; | |
| 17f2: 89 c7 mov %eax,%edi | |
| 17f4: c1 ef 03 shr $0x3,%edi | |
| if (bitD->ptr - nbBytes < bitD->start) { | |
| 17f7: 48 29 f9 sub %rdi,%rcx | |
| 17fa: 4c 39 e9 cmp %r13,%rcx | |
| 17fd: 44 89 e1 mov %r12d,%ecx | |
| 1800: 0f 43 cf cmovae %edi,%ecx | |
| bitD->ptr -= nbBytes; | |
| 1803: 49 29 cc sub %rcx,%r12 | |
| 1806: 4b 8d 3c 2c lea (%r12,%r13,1),%rdi | |
| 180a: 48 89 7c 24 70 mov %rdi,0x70(%rsp) | |
| bitD->bitsConsumed -= nbBytes*8; | |
| 180f: c1 e1 03 shl $0x3,%ecx | |
| 1812: 29 c8 sub %ecx,%eax | |
| 1814: eb 14 jmp 182a <ZSTD_decompressBlock_internal+0x70a> | |
| bitD->ptr -= bitD->bitsConsumed >> 3; | |
| 1816: 89 c1 mov %eax,%ecx | |
| 1818: c1 e9 03 shr $0x3,%ecx | |
| 181b: 49 29 cc sub %rcx,%r12 | |
| 181e: 4b 8d 0c 2c lea (%r12,%r13,1),%rcx | |
| 1822: 48 89 4c 24 70 mov %rcx,0x70(%rsp) | |
| bitD->bitsConsumed &= 7; | |
| 1827: 83 e0 07 and $0x7,%eax | |
| 182a: 89 44 24 68 mov %eax,0x68(%rsp) | |
| 182e: 4b 8b 6c 25 00 mov 0x0(%r13,%r12,1),%rbp | |
| 1833: 48 89 6c 24 60 mov %rbp,0x60(%rsp) | |
| DStatePtr->table = dt + 1; | |
| 1838: 49 83 c0 08 add $0x8,%r8 | |
| 183c: 4c 89 84 24 10 02 00 mov %r8,0x210(%rsp) | |
| 1843: 00 | |
| 1844: 4c 89 84 24 a0 00 00 mov %r8,0xa0(%rsp) | |
| 184b: 00 | |
| ZSTD_initFseState(&seqState.stateML, &seqState.DStream, dctx->MLTptr); | |
| 184c: 49 8b 5a 08 mov 0x8(%r10),%rbx | |
| DStatePtr->state = BIT_readBits(bitD, DTableH->tableLog); | |
| 1850: 8b 7b 04 mov 0x4(%rbx),%edi | |
| return BIT_getMiddleBits(bitD->bitContainer, (sizeof(bitD->bitContainer)*8) - bitD->bitsConsumed - nbBits, nbBits); | |
| 1853: 01 f8 add %edi,%eax | |
| return (bitContainer >> (start & regMask)) & BIT_mask[nbBits]; | |
| 1855: 89 c1 mov %eax,%ecx | |
| 1857: f6 d9 neg %cl | |
| 1859: 49 89 e8 mov %rbp,%r8 | |
| 185c: 49 d3 e8 shr %cl,%r8 | |
| 185f: 4c 89 74 24 40 mov %r14,0x40(%rsp) | |
| 1864: 44 23 04 bd 00 00 00 and 0x0(,%rdi,4),%r8d | |
| 186b: 00 | |
| 186c: 48 8b 4c 24 08 mov 0x8(%rsp),%rcx | |
| 1871: 48 89 cf mov %rcx,%rdi | |
| 1874: 49 29 ce sub %rcx,%r14 | |
| bitD->bitsConsumed += nbBits; | |
| 1877: 89 44 24 68 mov %eax,0x68(%rsp) | |
| 187b: 4c 89 84 24 a8 00 00 mov %r8,0xa8(%rsp) | |
| 1882: 00 | |
| if (bitD->bitsConsumed > (sizeof(bitD->bitContainer)*8)) /* overflow detected, like end of stream */ | |
| 1883: 83 f8 41 cmp $0x41,%eax | |
| 1886: 44 89 4c 24 14 mov %r9d,0x14(%rsp) | |
| 188b: 72 14 jb 18a1 <ZSTD_decompressBlock_internal+0x781> | |
| DStatePtr->table = dt + 1; | |
| 188d: 48 83 c3 08 add $0x8,%rbx | |
| 1891: 48 89 9c 24 b0 00 00 mov %rbx,0xb0(%rsp) | |
| 1898: 00 | |
| 1899: 45 31 ff xor %r15d,%r15d | |
| 189c: e9 61 0f 00 00 jmpq 2802 <ZSTD_decompressBlock_internal+0x16e2> | |
| if (bitD->ptr >= bitD->limitPtr) { | |
| 18a1: 49 83 fc 08 cmp $0x8,%r12 | |
| 18a5: 7d 64 jge 190b <ZSTD_decompressBlock_internal+0x7eb> | |
| if (bitD->ptr == bitD->start) { | |
| 18a7: 4d 85 e4 test %r12,%r12 | |
| 18aa: 0f 84 b5 0a 00 00 je 2365 <ZSTD_decompressBlock_internal+0x1245> | |
| 18b0: 4b 8d 0c 2c lea (%r12,%r13,1),%rcx | |
| { U32 nbBytes = bitD->bitsConsumed >> 3; | |
| 18b4: 89 c7 mov %eax,%edi | |
| 18b6: c1 ef 03 shr $0x3,%edi | |
| if (bitD->ptr - nbBytes < bitD->start) { | |
| 18b9: 48 29 f9 sub %rdi,%rcx | |
| 18bc: 4c 39 e9 cmp %r13,%rcx | |
| 18bf: 44 89 e1 mov %r12d,%ecx | |
| 18c2: 0f 43 cf cmovae %edi,%ecx | |
| bitD->ptr -= nbBytes; | |
| 18c5: 49 29 cc sub %rcx,%r12 | |
| 18c8: 4b 8d 3c 2c lea (%r12,%r13,1),%rdi | |
| 18cc: 48 89 7c 24 70 mov %rdi,0x70(%rsp) | |
| 18d1: 48 8b 7c 24 08 mov 0x8(%rsp),%rdi | |
| bitD->bitsConsumed -= nbBytes*8; | |
| 18d6: c1 e1 03 shl $0x3,%ecx | |
| 18d9: 29 c8 sub %ecx,%eax | |
| 18db: 89 44 24 68 mov %eax,0x68(%rsp) | |
| 18df: 4b 8b 6c 25 00 mov 0x0(%r13,%r12,1),%rbp | |
| bitD->bitContainer = MEM_readLEST(bitD->ptr); /* reminder : srcSize > sizeof(bitD->bitContainer), otherwise bitD->ptr == bitD->start */ | |
| 18e4: 48 89 6c 24 60 mov %rbp,0x60(%rsp) | |
| 18e9: 48 8d 4b 08 lea 0x8(%rbx),%rcx | |
| 18ed: 48 89 8c 24 b0 00 00 mov %rcx,0xb0(%rsp) | |
| 18f4: 00 | |
| if (bitD->bitsConsumed > (sizeof(bitD->bitContainer)*8)) /* overflow detected, like end of stream */ | |
| 18f5: 83 f8 40 cmp $0x40,%eax | |
| 18f8: 0f 86 76 0a 00 00 jbe 2374 <ZSTD_decompressBlock_internal+0x1254> | |
| 18fe: 44 8b 4c 24 14 mov 0x14(%rsp),%r9d | |
| 1903: 45 31 ff xor %r15d,%r15d | |
| 1906: e9 f7 0e 00 00 jmpq 2802 <ZSTD_decompressBlock_internal+0x16e2> | |
| bitD->ptr -= bitD->bitsConsumed >> 3; | |
| 190b: 89 c1 mov %eax,%ecx | |
| 190d: c1 e9 03 shr $0x3,%ecx | |
| 1910: 49 29 cc sub %rcx,%r12 | |
| 1913: 4b 8d 0c 2c lea (%r12,%r13,1),%rcx | |
| 1917: 48 89 4c 24 70 mov %rcx,0x70(%rsp) | |
| bitD->bitsConsumed &= 7; | |
| 191c: 83 e0 07 and $0x7,%eax | |
| 191f: 89 44 24 68 mov %eax,0x68(%rsp) | |
| 1923: 4b 8b 6c 25 00 mov 0x0(%r13,%r12,1),%rbp | |
| bitD->bitContainer = MEM_readLEST(bitD->ptr); | |
| 1928: 48 89 6c 24 60 mov %rbp,0x60(%rsp) | |
| 192d: e9 36 0a 00 00 jmpq 2368 <ZSTD_decompressBlock_internal+0x1248> | |
| if (bitD->ptr >= bitD->limitPtr) { | |
| 1932: 49 83 fc 08 cmp $0x8,%r12 | |
| 1936: 7d 36 jge 196e <ZSTD_decompressBlock_internal+0x84e> | |
| if (bitD->ptr == bitD->start) { | |
| 1938: 4d 85 e4 test %r12,%r12 | |
| 193b: 0f 84 27 1c 00 00 je 3568 <ZSTD_decompressBlock_internal+0x2448> | |
| 1941: 4b 8d 0c 2c lea (%r12,%r13,1),%rcx | |
| { U32 nbBytes = bitD->bitsConsumed >> 3; | |
| 1945: 44 89 fe mov %r15d,%esi | |
| 1948: c1 ee 03 shr $0x3,%esi | |
| if (bitD->ptr - nbBytes < bitD->start) { | |
| 194b: 48 29 f1 sub %rsi,%rcx | |
| 194e: 4c 39 e9 cmp %r13,%rcx | |
| 1951: 44 89 e1 mov %r12d,%ecx | |
| 1954: 0f 43 ce cmovae %esi,%ecx | |
| bitD->ptr -= nbBytes; | |
| 1957: 49 29 cc sub %rcx,%r12 | |
| 195a: 4b 8d 34 2c lea (%r12,%r13,1),%rsi | |
| 195e: 48 89 b4 24 10 01 00 mov %rsi,0x110(%rsp) | |
| 1965: 00 | |
| bitD->bitsConsumed -= nbBytes*8; | |
| 1966: c1 e1 03 shl $0x3,%ecx | |
| 1969: 41 29 cf sub %ecx,%r15d | |
| 196c: eb 19 jmp 1987 <ZSTD_decompressBlock_internal+0x867> | |
| bitD->ptr -= bitD->bitsConsumed >> 3; | |
| 196e: 44 89 f9 mov %r15d,%ecx | |
| 1971: c1 e9 03 shr $0x3,%ecx | |
| 1974: 49 29 cc sub %rcx,%r12 | |
| 1977: 4b 8d 0c 2c lea (%r12,%r13,1),%rcx | |
| 197b: 48 89 8c 24 10 01 00 mov %rcx,0x110(%rsp) | |
| 1982: 00 | |
| bitD->bitsConsumed &= 7; | |
| 1983: 41 83 e7 07 and $0x7,%r15d | |
| 1987: 44 89 bc 24 08 01 00 mov %r15d,0x108(%rsp) | |
| 198e: 00 | |
| 198f: 4d 89 e8 mov %r13,%r8 | |
| 1992: 4f 8b 54 25 00 mov 0x0(%r13,%r12,1),%r10 | |
| 1997: 4c 89 94 24 00 01 00 mov %r10,0x100(%rsp) | |
| 199e: 00 | |
| 199f: 48 83 c2 08 add $0x8,%rdx | |
| 19a3: 48 89 94 24 30 01 00 mov %rdx,0x130(%rsp) | |
| 19aa: 00 | |
| 19ab: 48 8b 44 24 20 mov 0x20(%rsp),%rax | |
| ZSTD_initFseState(&seqState.stateOffb, &seqState.DStream, dctx->OFTptr); | |
| 19b0: 48 8b 70 10 mov 0x10(%rax),%rsi | |
| DStatePtr->state = BIT_readBits(bitD, DTableH->tableLog); | |
| 19b4: 8b 6e 04 mov 0x4(%rsi),%ebp | |
| return BIT_getMiddleBits(bitD->bitContainer, (sizeof(bitD->bitContainer)*8) - bitD->bitsConsumed - nbBits, nbBits); | |
| 19b7: 41 01 ef add %ebp,%r15d | |
| return (bitContainer >> (start & regMask)) & BIT_mask[nbBits]; | |
| 19ba: 44 89 f9 mov %r15d,%ecx | |
| 19bd: f6 d9 neg %cl | |
| 19bf: 4d 89 d5 mov %r10,%r13 | |
| 19c2: 49 d3 ed shr %cl,%r13 | |
| 19c5: 44 23 2c ad 00 00 00 and 0x0(,%rbp,4),%r13d | |
| 19cc: 00 | |
| bitD->bitsConsumed += nbBits; | |
| 19cd: 44 89 bc 24 08 01 00 mov %r15d,0x108(%rsp) | |
| 19d4: 00 | |
| 19d5: 4c 89 ac 24 38 01 00 mov %r13,0x138(%rsp) | |
| 19dc: 00 | |
| if (bitD->bitsConsumed > (sizeof(bitD->bitContainer)*8)) /* overflow detected, like end of stream */ | |
| 19dd: 41 83 ff 40 cmp $0x40,%r15d | |
| 19e1: 77 6f ja 1a52 <ZSTD_decompressBlock_internal+0x932> | |
| if (bitD->ptr >= bitD->limitPtr) { | |
| 19e3: 49 83 fc 08 cmp $0x8,%r12 | |
| 19e7: 7d 39 jge 1a22 <ZSTD_decompressBlock_internal+0x902> | |
| if (bitD->ptr == bitD->start) { | |
| 19e9: 4d 85 e4 test %r12,%r12 | |
| 19ec: 0f 84 81 1b 00 00 je 3573 <ZSTD_decompressBlock_internal+0x2453> | |
| 19f2: 4c 89 c0 mov %r8,%rax | |
| 19f5: 4b 8d 0c 20 lea (%r8,%r12,1),%rcx | |
| { U32 nbBytes = bitD->bitsConsumed >> 3; | |
| 19f9: 44 89 fd mov %r15d,%ebp | |
| 19fc: c1 ed 03 shr $0x3,%ebp | |
| if (bitD->ptr - nbBytes < bitD->start) { | |
| 19ff: 48 29 e9 sub %rbp,%rcx | |
| 1a02: 4c 39 c1 cmp %r8,%rcx | |
| 1a05: 44 89 e1 mov %r12d,%ecx | |
| 1a08: 0f 43 cd cmovae %ebp,%ecx | |
| bitD->ptr -= nbBytes; | |
| 1a0b: 49 29 cc sub %rcx,%r12 | |
| 1a0e: 4b 8d 2c 20 lea (%r8,%r12,1),%rbp | |
| 1a12: 48 89 ac 24 10 01 00 mov %rbp,0x110(%rsp) | |
| 1a19: 00 | |
| bitD->bitsConsumed -= nbBytes*8; | |
| 1a1a: c1 e1 03 shl $0x3,%ecx | |
| 1a1d: 41 29 cf sub %ecx,%r15d | |
| 1a20: eb 1c jmp 1a3e <ZSTD_decompressBlock_internal+0x91e> | |
| bitD->ptr -= bitD->bitsConsumed >> 3; | |
| 1a22: 44 89 f9 mov %r15d,%ecx | |
| 1a25: c1 e9 03 shr $0x3,%ecx | |
| 1a28: 49 29 cc sub %rcx,%r12 | |
| 1a2b: 4c 89 c0 mov %r8,%rax | |
| 1a2e: 4b 8d 0c 20 lea (%r8,%r12,1),%rcx | |
| 1a32: 48 89 8c 24 10 01 00 mov %rcx,0x110(%rsp) | |
| 1a39: 00 | |
| bitD->bitsConsumed &= 7; | |
| 1a3a: 41 83 e7 07 and $0x7,%r15d | |
| 1a3e: 44 89 bc 24 08 01 00 mov %r15d,0x108(%rsp) | |
| 1a45: 00 | |
| 1a46: 4f 8b 14 20 mov (%r8,%r12,1),%r10 | |
| 1a4a: 4c 89 94 24 00 01 00 mov %r10,0x100(%rsp) | |
| 1a51: 00 | |
| DStatePtr->table = dt + 1; | |
| 1a52: 48 83 c6 08 add $0x8,%rsi | |
| 1a56: 48 89 b4 24 40 01 00 mov %rsi,0x140(%rsp) | |
| 1a5d: 00 | |
| 1a5e: 48 8b 44 24 20 mov 0x20(%rsp),%rax | |
| ZSTD_initFseState(&seqState.stateML, &seqState.DStream, dctx->MLTptr); | |
| 1a63: 48 8b 58 08 mov 0x8(%rax),%rbx | |
| DStatePtr->state = BIT_readBits(bitD, DTableH->tableLog); | |
| 1a67: 8b 6b 04 mov 0x4(%rbx),%ebp | |
| return BIT_getMiddleBits(bitD->bitContainer, (sizeof(bitD->bitContainer)*8) - bitD->bitsConsumed - nbBits, nbBits); | |
| 1a6a: 41 01 ef add %ebp,%r15d | |
| return (bitContainer >> (start & regMask)) & BIT_mask[nbBits]; | |
| 1a6d: 44 89 f9 mov %r15d,%ecx | |
| 1a70: f6 d9 neg %cl | |
| 1a72: 49 d3 ea shr %cl,%r10 | |
| 1a75: 44 23 14 ad 00 00 00 and 0x0(,%rbp,4),%r10d | |
| 1a7c: 00 | |
| bitD->bitsConsumed += nbBits; | |
| 1a7d: 44 89 bc 24 08 01 00 mov %r15d,0x108(%rsp) | |
| 1a84: 00 | |
| 1a85: 4c 89 94 24 48 01 00 mov %r10,0x148(%rsp) | |
| 1a8c: 00 | |
| if (bitD->bitsConsumed > (sizeof(bitD->bitContainer)*8)) /* overflow detected, like end of stream */ | |
| 1a8d: 41 83 ff 40 cmp $0x40,%r15d | |
| 1a91: 77 5f ja 1af2 <ZSTD_decompressBlock_internal+0x9d2> | |
| 1a93: 4b 8d 2c 20 lea (%r8,%r12,1),%rbp | |
| if (bitD->ptr >= bitD->limitPtr) { | |
| 1a97: 49 83 fc 08 cmp $0x8,%r12 | |
| 1a9b: 7d 2c jge 1ac9 <ZSTD_decompressBlock_internal+0x9a9> | |
| if (bitD->ptr == bitD->start) { | |
| 1a9d: 4d 85 e4 test %r12,%r12 | |
| 1aa0: 74 50 je 1af2 <ZSTD_decompressBlock_internal+0x9d2> | |
| { U32 nbBytes = bitD->bitsConsumed >> 3; | |
| 1aa2: 44 89 f8 mov %r15d,%eax | |
| 1aa5: c1 e8 03 shr $0x3,%eax | |
| if (bitD->ptr - nbBytes < bitD->start) { | |
| 1aa8: 48 89 e9 mov %rbp,%rcx | |
| 1aab: 48 29 c1 sub %rax,%rcx | |
| 1aae: 4c 39 c1 cmp %r8,%rcx | |
| 1ab1: 44 0f 43 e0 cmovae %eax,%r12d | |
| bitD->ptr -= nbBytes; | |
| 1ab5: 4c 29 e5 sub %r12,%rbp | |
| 1ab8: 48 89 ac 24 10 01 00 mov %rbp,0x110(%rsp) | |
| 1abf: 00 | |
| bitD->bitsConsumed -= nbBytes*8; | |
| 1ac0: 41 c1 e4 03 shl $0x3,%r12d | |
| 1ac4: 45 29 e7 sub %r12d,%r15d | |
| 1ac7: eb 15 jmp 1ade <ZSTD_decompressBlock_internal+0x9be> | |
| bitD->ptr -= bitD->bitsConsumed >> 3; | |
| 1ac9: 44 89 f8 mov %r15d,%eax | |
| 1acc: c1 e8 03 shr $0x3,%eax | |
| 1acf: 48 29 c5 sub %rax,%rbp | |
| 1ad2: 48 89 ac 24 10 01 00 mov %rbp,0x110(%rsp) | |
| 1ad9: 00 | |
| bitD->bitsConsumed &= 7; | |
| 1ada: 41 83 e7 07 and $0x7,%r15d | |
| 1ade: 44 89 bc 24 08 01 00 mov %r15d,0x108(%rsp) | |
| 1ae5: 00 | |
| 1ae6: 48 8b 45 00 mov 0x0(%rbp),%rax | |
| 1aea: 48 89 84 24 00 01 00 mov %rax,0x100(%rsp) | |
| 1af1: 00 | |
| DStatePtr->table = dt + 1; | |
| 1af2: 48 83 c3 08 add $0x8,%rbx | |
| 1af6: 48 89 9c 24 50 01 00 mov %rbx,0x150(%rsp) | |
| 1afd: 00 | |
| 1afe: 66 90 xchg %ax,%ax | |
| __asm__("nop"); | |
| 1b00: 90 nop | |
| 1b01: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) | |
| 1b08: 00 00 00 | |
| 1b0b: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) | |
| 1b12: 00 00 00 | |
| 1b15: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) | |
| 1b1c: 00 00 00 | |
| 1b1f: 90 nop | |
| __asm__("nop"); | |
| 1b20: 90 nop | |
| 1b21: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) | |
| 1b28: 00 00 00 | |
| 1b2b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) | |
| __asm__(".p2align 4"); | |
| 1b30: 48 8b 44 24 18 mov 0x18(%rsp),%rax | |
| 1b35: 48 83 c0 e0 add $0xffffffffffffffe0,%rax | |
| 1b39: 48 89 84 24 d8 00 00 mov %rax,0xd8(%rsp) | |
| 1b40: 00 | |
| 1b41: 4c 89 74 24 30 mov %r14,0x30(%rsp) | |
| 1b46: 4d 89 de mov %r11,%r14 | |
| 1b49: 4c 89 5c 24 48 mov %r11,0x48(%rsp) | |
| 1b4e: eb 59 jmp 1ba9 <ZSTD_decompressBlock_internal+0xa89> | |
| bitD->ptr -= bitD->bitsConsumed >> 3; | |
| 1b50: 4c 89 f8 mov %r15,%rax | |
| 1b53: 48 c1 e8 03 shr $0x3,%rax | |
| 1b57: 48 29 c1 sub %rax,%rcx | |
| 1b5a: 48 89 8c 24 10 01 00 mov %rcx,0x110(%rsp) | |
| 1b61: 00 | |
| bitD->bitsConsumed &= 7; | |
| 1b62: 41 83 e7 07 and $0x7,%r15d | |
| 1b66: 44 89 bc 24 08 01 00 mov %r15d,0x108(%rsp) | |
| 1b6d: 00 | |
| 1b6e: 48 8b 01 mov (%rcx),%rax | |
| 1b71: 48 89 84 24 00 01 00 mov %rax,0x100(%rsp) | |
| 1b78: 00 | |
| ZSTD_seqSymbol const llDInfo = seqState->stateLL.table[seqState->stateLL.state]; | |
| 1b79: 48 8b bc 24 28 01 00 mov 0x128(%rsp),%rdi | |
| 1b80: 00 | |
| 1b81: 48 8b 94 24 30 01 00 mov 0x130(%rsp),%rdx | |
| 1b88: 00 | |
| ZSTD_seqSymbol const mlDInfo = seqState->stateML.table[seqState->stateML.state]; | |
| 1b89: 48 8b 9c 24 50 01 00 mov 0x150(%rsp),%rbx | |
| 1b90: 00 | |
| 1b91: 4c 8b 94 24 48 01 00 mov 0x148(%rsp),%r10 | |
| 1b98: 00 | |
| ZSTD_seqSymbol const ofDInfo = seqState->stateOffb.table[seqState->stateOffb.state]; | |
| 1b99: 48 8b b4 24 40 01 00 mov 0x140(%rsp),%rsi | |
| 1ba0: 00 | |
| 1ba1: 4c 8b ac 24 38 01 00 mov 0x138(%rsp),%r13 | |
| 1ba8: 00 | |
| ZSTD_seqSymbol const llDInfo = seqState->stateLL.table[seqState->stateLL.state]; | |
| 1ba9: 0f b7 04 fa movzwl (%rdx,%rdi,8),%eax | |
| 1bad: 48 89 44 24 28 mov %rax,0x28(%rsp) | |
| 1bb2: 0f b6 6c fa 02 movzbl 0x2(%rdx,%rdi,8),%ebp | |
| 1bb7: 44 0f b6 5c fa 03 movzbl 0x3(%rdx,%rdi,8),%r11d | |
| 1bbd: 8b 54 fa 04 mov 0x4(%rdx,%rdi,8),%edx | |
| ZSTD_seqSymbol const mlDInfo = seqState->stateML.table[seqState->stateML.state]; | |
| 1bc1: 42 0f b7 3c d3 movzwl (%rbx,%r10,8),%edi | |
| 1bc6: 46 0f b6 44 d3 02 movzbl 0x2(%rbx,%r10,8),%r8d | |
| 1bcc: 42 0f b6 44 d3 03 movzbl 0x3(%rbx,%r10,8),%eax | |
| 1bd2: 89 44 24 08 mov %eax,0x8(%rsp) | |
| 1bd6: 46 8b 64 d3 04 mov 0x4(%rbx,%r10,8),%r12d | |
| ZSTD_seqSymbol const ofDInfo = seqState->stateOffb.table[seqState->stateOffb.state]; | |
| 1bdb: 42 0f b7 04 ee movzwl (%rsi,%r13,8),%eax | |
| 1be0: 46 0f b6 4c ee 02 movzbl 0x2(%rsi,%r13,8),%r9d | |
| BYTE const totalBits = llBits+mlBits+ofBits; | |
| 1be6: 45 8d 14 28 lea (%r8,%rbp,1),%r10d | |
| ZSTD_seqSymbol const ofDInfo = seqState->stateOffb.table[seqState->stateOffb.state]; | |
| 1bea: 42 0f b6 4c ee 03 movzbl 0x3(%rsi,%r13,8),%ecx | |
| 1bf0: 42 8b 74 ee 04 mov 0x4(%rsi,%r13,8),%esi | |
| 1bf5: 41 89 cd mov %ecx,%r13d | |
| 1bf8: 49 89 c6 mov %rax,%r14 | |
| 1bfb: 41 83 f9 02 cmp $0x2,%r9d | |
| if (ofBits > 1) { | |
| 1bff: 0f 82 4b 02 00 00 jb 1e50 <ZSTD_decompressBlock_internal+0xd30> | |
| size_t const value = BIT_lookBitsFast(bitD, nbBits); | |
| 1c05: 48 8b 84 24 00 01 00 mov 0x100(%rsp),%rax | |
| 1c0c: 00 | |
| return (bitD->bitContainer << (bitD->bitsConsumed & regMask)) >> (((regMask+1)-nbBits) & regMask); | |
| 1c0d: 44 89 f9 mov %r15d,%ecx | |
| 1c10: 48 d3 e0 shl %cl,%rax | |
| 1c13: 44 89 c9 mov %r9d,%ecx | |
| 1c16: f6 d9 neg %cl | |
| 1c18: 48 d3 e8 shr %cl,%rax | |
| bitD->bitsConsumed += nbBits; | |
| 1c1b: 45 01 cf add %r9d,%r15d | |
| 1c1e: 44 89 bc 24 08 01 00 mov %r15d,0x108(%rsp) | |
| 1c25: 00 | |
| offset = ofBase + BIT_readBitsFast(&seqState->DStream, ofBits/*>0*/); /* <= (ZSTD_WINDOWLOG_MAX-1) bits */ | |
| 1c26: 48 01 f0 add %rsi,%rax | |
| seqState->prevOffset[1] = seqState->prevOffset[0]; | |
| 1c29: 0f 10 84 24 58 01 00 movups 0x158(%rsp),%xmm0 | |
| 1c30: 00 | |
| 1c31: 0f 11 84 24 60 01 00 movups %xmm0,0x160(%rsp) | |
| 1c38: 00 | |
| 1c39: 48 89 44 24 38 mov %rax,0x38(%rsp) | |
| 1c3e: 48 89 84 24 58 01 00 mov %rax,0x158(%rsp) | |
| 1c45: 00 | |
| 1c46: 45 00 ca add %r9b,%r10b | |
| if (mlBits > 0) | |
| 1c49: 45 84 c0 test %r8b,%r8b | |
| 1c4c: 74 24 je 1c72 <ZSTD_decompressBlock_internal+0xb52> | |
| size_t const value = BIT_lookBitsFast(bitD, nbBits); | |
| 1c4e: 48 8b b4 24 00 01 00 mov 0x100(%rsp),%rsi | |
| 1c55: 00 | |
| return (bitD->bitContainer << (bitD->bitsConsumed & regMask)) >> (((regMask+1)-nbBits) & regMask); | |
| 1c56: 44 89 f9 mov %r15d,%ecx | |
| 1c59: 48 d3 e6 shl %cl,%rsi | |
| 1c5c: 44 89 c1 mov %r8d,%ecx | |
| 1c5f: f6 d9 neg %cl | |
| 1c61: 48 d3 ee shr %cl,%rsi | |
| bitD->bitsConsumed += nbBits; | |
| 1c64: 45 01 c7 add %r8d,%r15d | |
| 1c67: 44 89 bc 24 08 01 00 mov %r15d,0x108(%rsp) | |
| 1c6e: 00 | |
| seq.matchLength += BIT_readBitsFast(&seqState->DStream, mlBits/*>0*/); | |
| 1c6f: 49 01 f4 add %rsi,%r12 | |
| 1c72: 4c 8b 44 24 38 mov 0x38(%rsp),%r8 | |
| if (MEM_64bits() && UNLIKELY(totalBits >= STREAM_ACCUMULATOR_MIN_64-(LLFSELog+MLFSELog+OffFSELog))) | |
| 1c77: 41 80 fa 1f cmp $0x1f,%r10b | |
| 1c7b: 72 0a jb 1c87 <ZSTD_decompressBlock_internal+0xb67> | |
| 1c7d: 41 83 ff 40 cmp $0x40,%r15d | |
| 1c81: 0f 86 6a 03 00 00 jbe 1ff1 <ZSTD_decompressBlock_internal+0xed1> | |
| 1c87: 48 89 fb mov %rdi,%rbx | |
| 1c8a: 48 8b bc 24 00 01 00 mov 0x100(%rsp),%rdi | |
| 1c91: 00 | |
| if (llBits > 0) | |
| 1c92: 40 84 ed test %bpl,%bpl | |
| 1c95: 74 1e je 1cb5 <ZSTD_decompressBlock_internal+0xb95> | |
| return (bitD->bitContainer << (bitD->bitsConsumed & regMask)) >> (((regMask+1)-nbBits) & regMask); | |
| 1c97: 48 89 f8 mov %rdi,%rax | |
| 1c9a: 44 89 f9 mov %r15d,%ecx | |
| 1c9d: 48 d3 e0 shl %cl,%rax | |
| 1ca0: 89 e9 mov %ebp,%ecx | |
| 1ca2: f6 d9 neg %cl | |
| 1ca4: 48 d3 e8 shr %cl,%rax | |
| bitD->bitsConsumed += nbBits; | |
| 1ca7: 41 01 ef add %ebp,%r15d | |
| 1caa: 44 89 bc 24 08 01 00 mov %r15d,0x108(%rsp) | |
| 1cb1: 00 | |
| seq.litLength += BIT_readBitsFast(&seqState->DStream, llBits/*>0*/); | |
| 1cb2: 48 01 c2 add %rax,%rdx | |
| return BIT_getMiddleBits(bitD->bitContainer, (sizeof(bitD->bitContainer)*8) - bitD->bitsConsumed - nbBits, nbBits); | |
| 1cb5: 45 01 df add %r11d,%r15d | |
| return (bitContainer >> (start & regMask)) & BIT_mask[nbBits]; | |
| 1cb8: 44 89 f9 mov %r15d,%ecx | |
| 1cbb: f6 d9 neg %cl | |
| 1cbd: 48 89 f8 mov %rdi,%rax | |
| 1cc0: 48 d3 e8 shr %cl,%rax | |
| 1cc3: 44 89 d9 mov %r11d,%ecx | |
| 1cc6: 23 04 8d 00 00 00 00 and 0x0(,%rcx,4),%eax | |
| DStatePtr->state = DInfo.nextState + lowBits; | |
| 1ccd: 48 03 44 24 28 add 0x28(%rsp),%rax | |
| 1cd2: 8b 6c 24 08 mov 0x8(%rsp),%ebp | |
| return BIT_getMiddleBits(bitD->bitContainer, (sizeof(bitD->bitContainer)*8) - bitD->bitsConsumed - nbBits, nbBits); | |
| 1cd6: 41 01 ef add %ebp,%r15d | |
| return (bitContainer >> (start & regMask)) & BIT_mask[nbBits]; | |
| 1cd9: 44 89 f9 mov %r15d,%ecx | |
| 1cdc: f6 d9 neg %cl | |
| 1cde: 48 89 fe mov %rdi,%rsi | |
| 1ce1: 48 d3 ee shr %cl,%rsi | |
| 1ce4: 48 89 84 24 28 01 00 mov %rax,0x128(%rsp) | |
| 1ceb: 00 | |
| 1cec: 89 e8 mov %ebp,%eax | |
| 1cee: 23 34 85 00 00 00 00 and 0x0(,%rax,4),%esi | |
| 1cf5: 48 01 de add %rbx,%rsi | |
| 1cf8: 48 89 b4 24 48 01 00 mov %rsi,0x148(%rsp) | |
| 1cff: 00 | |
| return BIT_getMiddleBits(bitD->bitContainer, (sizeof(bitD->bitContainer)*8) - bitD->bitsConsumed - nbBits, nbBits); | |
| 1d00: 45 01 ef add %r13d,%r15d | |
| return (bitContainer >> (start & regMask)) & BIT_mask[nbBits]; | |
| 1d03: 44 89 f9 mov %r15d,%ecx | |
| 1d06: f6 d9 neg %cl | |
| 1d08: 48 d3 ef shr %cl,%rdi | |
| 1d0b: 44 89 e8 mov %r13d,%eax | |
| 1d0e: 23 3c 85 00 00 00 00 and 0x0(,%rax,4),%edi | |
| 1d15: 4c 01 f7 add %r14,%rdi | |
| bitD->bitsConsumed += nbBits; | |
| 1d18: 44 89 bc 24 08 01 00 mov %r15d,0x108(%rsp) | |
| 1d1f: 00 | |
| 1d20: 48 89 bc 24 38 01 00 mov %rdi,0x138(%rsp) | |
| 1d27: 00 | |
| size_t const sequenceLength = sequence.litLength + sequence.matchLength; | |
| 1d28: 4e 8d 1c 22 lea (%rdx,%r12,1),%r11 | |
| 1d2c: 48 8b 5c 24 30 mov 0x30(%rsp),%rbx | |
| 1d31: 4a 8d 04 1b lea (%rbx,%r11,1),%rax | |
| 1d35: 48 3b 84 24 d8 00 00 cmp 0xd8(%rsp),%rax | |
| 1d3c: 00 | |
| 1d3d: 4c 8b 7c 24 58 mov 0x58(%rsp),%r15 | |
| if (UNLIKELY( | |
| 1d42: 0f 87 d4 01 00 00 ja 1f1c <ZSTD_decompressBlock_internal+0xdfc> | |
| 1d48: 48 8b 4c 24 60 mov 0x60(%rsp),%rcx | |
| 1d4d: 48 8d 04 11 lea (%rcx,%rdx,1),%rax | |
| 1d51: 4c 39 f8 cmp %r15,%rax | |
| 1d54: 0f 87 c2 01 00 00 ja 1f1c <ZSTD_decompressBlock_internal+0xdfc> | |
| 1d5a: 4c 8d 2c 13 lea (%rbx,%rdx,1),%r13 | |
| 1d5e: 4c 89 ed mov %r13,%rbp | |
| 1d61: 4c 29 c5 sub %r8,%rbp | |
| #define COPY8(d,s) { ZSTD_copy8(d,s); d+=8; s+=8; } | |
| static void ZSTD_copy16(void* dst, const void* src) { | |
| #if !defined(ZSTD_NO_INTRINSICS) && defined(__ARM_NEON) | |
| vst1q_u8((uint8_t*)dst, vld1q_u8((const uint8_t*)src)); | |
| #else | |
| ZSTD_memcpy(dst, src, 16); | |
| 1d64: 0f 10 01 movups (%rcx),%xmm0 | |
| 1d67: 0f 11 03 movups %xmm0,(%rbx) | |
| if (UNLIKELY(sequence.litLength > 16)) { | |
| 1d6a: 48 83 fa 11 cmp $0x11,%rdx | |
| 1d6e: 4c 8b 74 24 48 mov 0x48(%rsp),%r14 | |
| 1d73: 0f 83 e6 01 00 00 jae 1f5f <ZSTD_decompressBlock_internal+0xe3f> | |
| *litPtr = iLitEnd; /* update for next sequence */ | |
| 1d79: 48 89 44 24 60 mov %rax,0x60(%rsp) | |
| if (sequence.offset > (size_t)(oLitEnd - prefixStart)) { | |
| 1d7e: 4c 89 e8 mov %r13,%rax | |
| 1d81: 4c 29 f0 sub %r14,%rax | |
| 1d84: 4c 39 c0 cmp %r8,%rax | |
| 1d87: 73 54 jae 1ddd <ZSTD_decompressBlock_internal+0xcbd> | |
| RETURN_ERROR_IF(UNLIKELY(sequence.offset > (size_t)(oLitEnd - virtualStart)), corruption_detected, ""); | |
| 1d89: 4c 89 e8 mov %r13,%rax | |
| 1d8c: 48 2b 44 24 50 sub 0x50(%rsp),%rax | |
| 1d91: 4c 39 c0 cmp %r8,%rax | |
| 1d94: 0f 82 87 17 00 00 jb 3521 <ZSTD_decompressBlock_internal+0x2401> | |
| 1d9a: 4d 89 df mov %r11,%r15 | |
| match = dictEnd + (match - prefixStart); | |
| 1d9d: 4c 29 f5 sub %r14,%rbp | |
| 1da0: 48 8b 8c 24 f0 00 00 mov 0xf0(%rsp),%rcx | |
| 1da7: 00 | |
| 1da8: 48 8d 34 29 lea (%rcx,%rbp,1),%rsi | |
| if (match + sequence.matchLength <= dictEnd) { | |
| 1dac: 4a 8d 04 26 lea (%rsi,%r12,1),%rax | |
| 1db0: 48 39 c8 cmp %rcx,%rax | |
| 1db3: 0f 86 c7 00 00 00 jbe 1e80 <ZSTD_decompressBlock_internal+0xd60> | |
| { size_t const length1 = dictEnd - match; | |
| 1db9: 48 89 ea mov %rbp,%rdx | |
| 1dbc: 48 f7 da neg %rdx | |
| ZSTD_memmove(oLitEnd, match, length1); | |
| 1dbf: 4c 89 ef mov %r13,%rdi | |
| 1dc2: e8 00 00 00 00 callq 1dc7 <ZSTD_decompressBlock_internal+0xca7> | |
| 1dc7: 4c 8b 44 24 38 mov 0x38(%rsp),%r8 | |
| op = oLitEnd + length1; | |
| 1dcc: 49 29 ed sub %rbp,%r13 | |
| sequence.matchLength -= length1; | |
| 1dcf: 49 01 ec add %rbp,%r12 | |
| 1dd2: 4c 89 f5 mov %r14,%rbp | |
| 1dd5: 4d 89 fb mov %r15,%r11 | |
| 1dd8: 48 8b 5c 24 30 mov 0x30(%rsp),%rbx | |
| if (LIKELY(sequence.offset >= WILDCOPY_VECLEN)) { | |
| 1ddd: 49 83 f8 10 cmp $0x10,%r8 | |
| 1de1: 0f 82 c0 01 00 00 jb 1fa7 <ZSTD_decompressBlock_internal+0xe87> | |
| 1de7: 0f 10 45 00 movups 0x0(%rbp),%xmm0 | |
| 1deb: 41 0f 11 45 00 movups %xmm0,0x0(%r13) | |
| COPY16(op, ip); | |
| } | |
| while (op < oend); | |
| #else | |
| ZSTD_copy16(op, ip); | |
| if (16 >= length) return; | |
| 1df0: 49 83 fc 11 cmp $0x11,%r12 | |
| 1df4: 7c 41 jl 1e37 <ZSTD_decompressBlock_internal+0xd17> | |
| 1df6: 4d 01 ec add %r13,%r12 | |
| op += 16; | |
| ip += 16; | |
| do { | |
| 1df9: 48 83 c5 10 add $0x10,%rbp | |
| 1dfd: b8 10 00 00 00 mov $0x10,%eax | |
| 1e02: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) | |
| 1e09: 00 00 00 | |
| 1e0c: 0f 1f 40 00 nopl 0x0(%rax) | |
| ZSTD_memcpy(dst, src, 16); | |
| 1e10: 0f 10 44 05 f0 movups -0x10(%rbp,%rax,1),%xmm0 | |
| 1e15: 41 0f 11 44 05 00 movups %xmm0,0x0(%r13,%rax,1) | |
| 1e1b: 0f 10 44 05 00 movups 0x0(%rbp,%rax,1),%xmm0 | |
| 1e20: 41 0f 11 44 05 10 movups %xmm0,0x10(%r13,%rax,1) | |
| COPY16(op, ip); | |
| COPY16(op, ip); | |
| } | |
| while (op < oend); | |
| 1e26: 4a 8d 0c 28 lea (%rax,%r13,1),%rcx | |
| 1e2a: 48 83 c1 20 add $0x20,%rcx | |
| 1e2e: 48 83 c0 20 add $0x20,%rax | |
| 1e32: 4c 39 e1 cmp %r12,%rcx | |
| } | |
| 1e35: 72 d9 jb 1e10 <ZSTD_decompressBlock_internal+0xcf0> | |
| 1e37: 8b 44 24 14 mov 0x14(%rsp),%eax | |
| 1e3b: 49 83 fb 88 cmp $0xffffffffffffff88,%r11 | |
| 1e3f: 76 60 jbe 1ea1 <ZSTD_decompressBlock_internal+0xd81> | |
| 1e41: e9 e2 16 00 00 jmpq 3528 <ZSTD_decompressBlock_internal+0x2408> | |
| 1e46: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) | |
| 1e4d: 00 00 00 | |
| if (LIKELY((ofBits == 0))) { | |
| 1e50: 45 84 c9 test %r9b,%r9b | |
| 1e53: 0f 85 05 02 00 00 jne 205e <ZSTD_decompressBlock_internal+0xf3e> | |
| U32 const ll0 = (llBase == 0); | |
| 1e59: 85 d2 test %edx,%edx | |
| if (LIKELY(!ll0)) | |
| 1e5b: 0f 84 4c 02 00 00 je 20ad <ZSTD_decompressBlock_internal+0xf8d> | |
| offset = seqState->prevOffset[0]; | |
| 1e61: 48 8b 84 24 58 01 00 mov 0x158(%rsp),%rax | |
| 1e68: 00 | |
| 1e69: 48 89 44 24 38 mov %rax,0x38(%rsp) | |
| 1e6e: 45 00 ca add %r9b,%r10b | |
| if (mlBits > 0) | |
| 1e71: 45 84 c0 test %r8b,%r8b | |
| 1e74: 0f 85 d4 fd ff ff jne 1c4e <ZSTD_decompressBlock_internal+0xb2e> | |
| 1e7a: e9 f3 fd ff ff jmpq 1c72 <ZSTD_decompressBlock_internal+0xb52> | |
| 1e7f: 90 nop | |
| ZSTD_memmove(oLitEnd, match, sequence.matchLength); | |
| 1e80: 4c 89 ef mov %r13,%rdi | |
| 1e83: 4c 89 e2 mov %r12,%rdx | |
| 1e86: e8 00 00 00 00 callq 1e8b <ZSTD_decompressBlock_internal+0xd6b> | |
| 1e8b: 8b 44 24 14 mov 0x14(%rsp),%eax | |
| 1e8f: 4d 89 fb mov %r15,%r11 | |
| 1e92: 48 8b 5c 24 30 mov 0x30(%rsp),%rbx | |
| 1e97: 49 83 fb 88 cmp $0xffffffffffffff88,%r11 | |
| if (UNLIKELY(ZSTD_isError(oneSeqSize))) | |
| 1e9b: 0f 87 87 16 00 00 ja 3528 <ZSTD_decompressBlock_internal+0x2408> | |
| op += oneSeqSize; | |
| 1ea1: 4c 01 db add %r11,%rbx | |
| 1ea4: 48 89 5c 24 30 mov %rbx,0x30(%rsp) | |
| 1ea9: 44 8b bc 24 08 01 00 mov 0x108(%rsp),%r15d | |
| 1eb0: 00 | |
| if (UNLIKELY(!--nbSeq)) | |
| 1eb1: 83 c0 ff add $0xffffffff,%eax | |
| 1eb4: 0f 84 16 04 00 00 je 22d0 <ZSTD_decompressBlock_internal+0x11b0> | |
| 1eba: 41 83 ff 40 cmp $0x40,%r15d | |
| 1ebe: 89 44 24 14 mov %eax,0x14(%rsp) | |
| if (bitD->bitsConsumed > (sizeof(bitD->bitContainer)*8)) /* overflow detected, like end of stream */ | |
| 1ec2: 0f 87 b1 fc ff ff ja 1b79 <ZSTD_decompressBlock_internal+0xa59> | |
| if (bitD->ptr >= bitD->limitPtr) { | |
| 1ec8: 48 8b 8c 24 10 01 00 mov 0x110(%rsp),%rcx | |
| 1ecf: 00 | |
| 1ed0: 48 3b 8c 24 20 01 00 cmp 0x120(%rsp),%rcx | |
| 1ed7: 00 | |
| 1ed8: 0f 83 72 fc ff ff jae 1b50 <ZSTD_decompressBlock_internal+0xa30> | |
| if (bitD->ptr == bitD->start) { | |
| 1ede: 48 8b 94 24 18 01 00 mov 0x118(%rsp),%rdx | |
| 1ee5: 00 | |
| 1ee6: 48 39 d1 cmp %rdx,%rcx | |
| 1ee9: 0f 84 8a fc ff ff je 1b79 <ZSTD_decompressBlock_internal+0xa59> | |
| { U32 nbBytes = bitD->bitsConsumed >> 3; | |
| 1eef: 4c 89 f8 mov %r15,%rax | |
| 1ef2: 48 c1 e8 03 shr $0x3,%rax | |
| if (bitD->ptr - nbBytes < bitD->start) { | |
| 1ef6: 48 89 ce mov %rcx,%rsi | |
| 1ef9: 48 29 c6 sub %rax,%rsi | |
| 1efc: 89 cf mov %ecx,%edi | |
| 1efe: 29 d7 sub %edx,%edi | |
| 1f00: 48 39 d6 cmp %rdx,%rsi | |
| 1f03: 0f 43 f8 cmovae %eax,%edi | |
| bitD->ptr -= nbBytes; | |
| 1f06: 48 29 f9 sub %rdi,%rcx | |
| 1f09: 48 89 8c 24 10 01 00 mov %rcx,0x110(%rsp) | |
| 1f10: 00 | |
| bitD->bitsConsumed -= nbBytes*8; | |
| 1f11: c1 e7 03 shl $0x3,%edi | |
| 1f14: 41 29 ff sub %edi,%r15d | |
| 1f17: e9 4a fc ff ff jmpq 1b66 <ZSTD_decompressBlock_internal+0xa46> | |
| return ZSTD_execSequenceEnd(op, oend, sequence, litPtr, litLimit, prefixStart, virtualStart, dictEnd); | |
| 1f1c: 48 89 df mov %rbx,%rdi | |
| 1f1f: 48 8b 74 24 18 mov 0x18(%rsp),%rsi | |
| 1f24: 4c 89 e1 mov %r12,%rcx | |
| 1f27: 4c 8d 4c 24 60 lea 0x60(%rsp),%r9 | |
| 1f2c: ff b4 24 f0 00 00 00 pushq 0xf0(%rsp) | |
| 1f33: ff 74 24 58 pushq 0x58(%rsp) | |
| 1f37: 4c 8b 74 24 58 mov 0x58(%rsp),%r14 | |
| 1f3c: 41 56 push %r14 | |
| 1f3e: 41 57 push %r15 | |
| 1f40: e8 3b 2d 00 00 callq 4c80 <ZSTD_execSequenceEnd> | |
| 1f45: 48 83 c4 20 add $0x20,%rsp | |
| 1f49: 49 89 c3 mov %rax,%r11 | |
| 1f4c: 8b 44 24 14 mov 0x14(%rsp),%eax | |
| 1f50: 49 83 fb 88 cmp $0xffffffffffffff88,%r11 | |
| 1f54: 0f 86 47 ff ff ff jbe 1ea1 <ZSTD_decompressBlock_internal+0xd81> | |
| 1f5a: e9 c9 15 00 00 jmpq 3528 <ZSTD_decompressBlock_internal+0x2408> | |
| ZSTD_wildcopy(op+16, (*litPtr)+16, sequence.litLength-16, ZSTD_no_overlap); | |
| 1f5f: 48 83 c2 f0 add $0xfffffffffffffff0,%rdx | |
| ZSTD_memcpy(dst, src, 16); | |
| 1f63: 0f 10 41 10 movups 0x10(%rcx),%xmm0 | |
| 1f67: 0f 11 43 10 movups %xmm0,0x10(%rbx) | |
| if (16 >= length) return; | |
| 1f6b: 48 83 fa 11 cmp $0x11,%rdx | |
| 1f6f: 0f 8c 04 fe ff ff jl 1d79 <ZSTD_decompressBlock_internal+0xc59> | |
| op += 16; | |
| 1f75: 48 8d 53 20 lea 0x20(%rbx),%rdx | |
| do { | |
| 1f79: 48 83 c1 30 add $0x30,%rcx | |
| 1f7d: 31 f6 xor %esi,%esi | |
| ZSTD_memcpy(dst, src, 16); | |
| 1f7f: 0f 10 44 31 f0 movups -0x10(%rcx,%rsi,1),%xmm0 | |
| 1f84: 0f 11 04 32 movups %xmm0,(%rdx,%rsi,1) | |
| 1f88: 0f 10 04 31 movups (%rcx,%rsi,1),%xmm0 | |
| 1f8c: 0f 11 44 32 10 movups %xmm0,0x10(%rdx,%rsi,1) | |
| while (op < oend); | |
| 1f91: 48 8d 3c 32 lea (%rdx,%rsi,1),%rdi | |
| 1f95: 48 83 c7 20 add $0x20,%rdi | |
| 1f99: 48 83 c6 20 add $0x20,%rsi | |
| 1f9d: 4c 39 ef cmp %r13,%rdi | |
| } | |
| 1fa0: 72 dd jb 1f7f <ZSTD_decompressBlock_internal+0xe5f> | |
| 1fa2: e9 d2 fd ff ff jmpq 1d79 <ZSTD_decompressBlock_internal+0xc59> | |
| if (offset < 8) { | |
| 1fa7: 49 83 f8 07 cmp $0x7,%r8 | |
| 1fab: 0f 87 19 01 00 00 ja 20ca <ZSTD_decompressBlock_internal+0xfaa> | |
| int const sub2 = dec64table[offset]; | |
| 1fb1: 4a 63 04 85 00 00 00 movslq 0x0(,%r8,4),%rax | |
| 1fb8: 00 | |
| (*op)[0] = (*ip)[0]; | |
| 1fb9: 8a 4d 00 mov 0x0(%rbp),%cl | |
| 1fbc: 41 88 4d 00 mov %cl,0x0(%r13) | |
| (*op)[1] = (*ip)[1]; | |
| 1fc0: 8a 4d 01 mov 0x1(%rbp),%cl | |
| 1fc3: 41 88 4d 01 mov %cl,0x1(%r13) | |
| (*op)[2] = (*ip)[2]; | |
| 1fc7: 8a 4d 02 mov 0x2(%rbp),%cl | |
| 1fca: 41 88 4d 02 mov %cl,0x2(%r13) | |
| (*op)[3] = (*ip)[3]; | |
| 1fce: 8a 4d 03 mov 0x3(%rbp),%cl | |
| 1fd1: 41 88 4d 03 mov %cl,0x3(%r13) | |
| *ip += dec32table[offset]; | |
| 1fd5: 42 8b 0c 85 00 00 00 mov 0x0(,%r8,4),%ecx | |
| 1fdc: 00 | |
| 1fdd: 48 8d 34 29 lea (%rcx,%rbp,1),%rsi | |
| *ip -= sub2; | |
| 1fe1: 48 29 c6 sub %rax,%rsi | |
| static void ZSTD_copy4(void* dst, const void* src) { ZSTD_memcpy(dst, src, 4); } | |
| 1fe4: 8b 44 0d 00 mov 0x0(%rbp,%rcx,1),%eax | |
| 1fe8: 41 89 45 04 mov %eax,0x4(%r13) | |
| 1fec: e9 e4 00 00 00 jmpq 20d5 <ZSTD_decompressBlock_internal+0xfb5> | |
| if (bitD->ptr >= bitD->limitPtr) { | |
| 1ff1: 48 8b 8c 24 10 01 00 mov 0x110(%rsp),%rcx | |
| 1ff8: 00 | |
| 1ff9: 48 3b 8c 24 20 01 00 cmp 0x120(%rsp),%rcx | |
| 2000: 00 | |
| 2001: 0f 83 b0 01 00 00 jae 21b7 <ZSTD_decompressBlock_internal+0x1097> | |
| 2007: 48 89 fb mov %rdi,%rbx | |
| if (bitD->ptr == bitD->start) { | |
| 200a: 4c 8b 84 24 18 01 00 mov 0x118(%rsp),%r8 | |
| 2011: 00 | |
| 2012: 4c 39 c1 cmp %r8,%rcx | |
| 2015: 74 3d je 2054 <ZSTD_decompressBlock_internal+0xf34> | |
| { U32 nbBytes = bitD->bitsConsumed >> 3; | |
| 2017: 45 89 fa mov %r15d,%r10d | |
| 201a: 41 c1 ea 03 shr $0x3,%r10d | |
| if (bitD->ptr - nbBytes < bitD->start) { | |
| 201e: 49 89 c9 mov %rcx,%r9 | |
| 2021: 4d 29 d1 sub %r10,%r9 | |
| 2024: 89 ce mov %ecx,%esi | |
| 2026: 44 29 c6 sub %r8d,%esi | |
| 2029: 4d 39 c1 cmp %r8,%r9 | |
| 202c: 41 0f 43 f2 cmovae %r10d,%esi | |
| bitD->ptr -= nbBytes; | |
| 2030: 48 29 f1 sub %rsi,%rcx | |
| 2033: 48 89 8c 24 10 01 00 mov %rcx,0x110(%rsp) | |
| 203a: 00 | |
| bitD->bitsConsumed -= nbBytes*8; | |
| 203b: c1 e6 03 shl $0x3,%esi | |
| 203e: 41 29 f7 sub %esi,%r15d | |
| 2041: 44 89 bc 24 08 01 00 mov %r15d,0x108(%rsp) | |
| 2048: 00 | |
| 2049: 48 8b 09 mov (%rcx),%rcx | |
| bitD->bitContainer = MEM_readLEST(bitD->ptr); /* reminder : srcSize > sizeof(bitD->bitContainer), otherwise bitD->ptr == bitD->start */ | |
| 204c: 48 89 8c 24 00 01 00 mov %rcx,0x100(%rsp) | |
| 2053: 00 | |
| 2054: 4c 8b 44 24 38 mov 0x38(%rsp),%r8 | |
| 2059: e9 2c fc ff ff jmpq 1c8a <ZSTD_decompressBlock_internal+0xb6a> | |
| offset = ofBase + ll0 + BIT_readBitsFast(&seqState->DStream, 1); | |
| 205e: 83 fa 01 cmp $0x1,%edx | |
| 2061: 83 d6 00 adc $0x0,%esi | |
| size_t const value = BIT_lookBitsFast(bitD, nbBits); | |
| 2064: 48 8b 9c 24 00 01 00 mov 0x100(%rsp),%rbx | |
| 206b: 00 | |
| return (bitD->bitContainer << (bitD->bitsConsumed & regMask)) >> (((regMask+1)-nbBits) & regMask); | |
| 206c: 44 89 f9 mov %r15d,%ecx | |
| 206f: 48 d3 e3 shl %cl,%rbx | |
| 2072: 48 c1 eb 3f shr $0x3f,%rbx | |
| bitD->bitsConsumed += nbBits; | |
| 2076: 41 83 c7 01 add $0x1,%r15d | |
| 207a: 44 89 bc 24 08 01 00 mov %r15d,0x108(%rsp) | |
| 2081: 00 | |
| 2082: 48 01 f3 add %rsi,%rbx | |
| { size_t temp = (offset==3) ? seqState->prevOffset[0] - 1 : seqState->prevOffset[offset]; | |
| 2085: 48 83 fb 03 cmp $0x3,%rbx | |
| 2089: 0f 85 58 01 00 00 jne 21e7 <ZSTD_decompressBlock_internal+0x10c7> | |
| 208f: 48 8b 84 24 58 01 00 mov 0x158(%rsp),%rax | |
| 2096: 00 | |
| 2097: 48 83 c0 ff add $0xffffffffffffffff,%rax | |
| temp += !temp; /* 0 is not valid; input is corrupted; force offset to 1 */ | |
| 209b: 48 83 f8 01 cmp $0x1,%rax | |
| 209f: 48 83 d0 00 adc $0x0,%rax | |
| 20a3: 48 89 44 24 38 mov %rax,0x38(%rsp) | |
| 20a8: e9 55 01 00 00 jmpq 2202 <ZSTD_decompressBlock_internal+0x10e2> | |
| seqState->prevOffset[1] = seqState->prevOffset[0]; | |
| 20ad: 48 8b 8c 24 58 01 00 mov 0x158(%rsp),%rcx | |
| 20b4: 00 | |
| offset = seqState->prevOffset[1]; | |
| 20b5: 48 8b 84 24 60 01 00 mov 0x160(%rsp),%rax | |
| 20bc: 00 | |
| seqState->prevOffset[1] = seqState->prevOffset[0]; | |
| 20bd: 48 89 8c 24 60 01 00 mov %rcx,0x160(%rsp) | |
| 20c4: 00 | |
| 20c5: e9 6f fb ff ff jmpq 1c39 <ZSTD_decompressBlock_internal+0xb19> | |
| ZSTD_memcpy(dst, src, 8); | |
| 20ca: 48 8b 45 00 mov 0x0(%rbp),%rax | |
| 20ce: 49 89 45 00 mov %rax,0x0(%r13) | |
| *ip += 8; | |
| 20d2: 48 89 ee mov %rbp,%rsi | |
| if (sequence.matchLength > 8) { | |
| 20d5: 49 83 fc 09 cmp $0x9,%r12 | |
| 20d9: 0f 82 58 fd ff ff jb 1e37 <ZSTD_decompressBlock_internal+0xd17> | |
| 20df: 48 8d 4e 08 lea 0x8(%rsi),%rcx | |
| 20e3: 49 8d 55 08 lea 0x8(%r13),%rdx | |
| ptrdiff_t diff = (BYTE*)dst - (const BYTE*)src; | |
| 20e7: 48 89 d7 mov %rdx,%rdi | |
| 20ea: 48 29 cf sub %rcx,%rdi | |
| BYTE* const oend = op + length; | |
| 20ed: 4b 8d 04 2c lea (%r12,%r13,1),%rax | |
| 20f1: 48 83 ff 0f cmp $0xf,%rdi | |
| if (ovtype == ZSTD_overlap_src_before_dst && diff < WILDCOPY_VECLEN) { | |
| 20f5: 0f 8f 45 01 00 00 jg 2240 <ZSTD_decompressBlock_internal+0x1120> | |
| do { | |
| 20fb: 49 8d 7d 10 lea 0x10(%r13),%rdi | |
| 20ff: 48 39 f8 cmp %rdi,%rax | |
| 2102: 49 89 fa mov %rdi,%r10 | |
| 2105: 4c 0f 47 d0 cmova %rax,%r10 | |
| 2109: 4d 29 ea sub %r13,%r10 | |
| 210c: 49 83 c2 f7 add $0xfffffffffffffff7,%r10 | |
| 2110: 49 83 fa 18 cmp $0x18,%r10 | |
| 2114: 0f 82 8b 01 00 00 jb 22a5 <ZSTD_decompressBlock_internal+0x1185> | |
| 211a: 48 39 f8 cmp %rdi,%rax | |
| 211d: 48 0f 47 f8 cmova %rax,%rdi | |
| 2121: 4c 29 ef sub %r13,%rdi | |
| 2124: 48 83 c7 f7 add $0xfffffffffffffff7,%rdi | |
| 2128: 48 83 e7 f8 and $0xfffffffffffffff8,%rdi | |
| 212c: 48 8d 2c 3e lea (%rsi,%rdi,1),%rbp | |
| 2130: 48 83 c5 10 add $0x10,%rbp | |
| 2134: 48 39 ea cmp %rbp,%rdx | |
| 2137: 73 10 jae 2149 <ZSTD_decompressBlock_internal+0x1029> | |
| 2139: 4c 01 ef add %r13,%rdi | |
| 213c: 48 83 c7 10 add $0x10,%rdi | |
| 2140: 48 39 f9 cmp %rdi,%rcx | |
| 2143: 0f 82 5c 01 00 00 jb 22a5 <ZSTD_decompressBlock_internal+0x1185> | |
| 2149: 49 c1 ea 03 shr $0x3,%r10 | |
| 214d: 49 83 c2 01 add $0x1,%r10 | |
| 2151: 4d 89 d0 mov %r10,%r8 | |
| 2154: 49 83 e0 fc and $0xfffffffffffffffc,%r8 | |
| 2158: 49 8d 78 fc lea -0x4(%r8),%rdi | |
| 215c: 49 89 f9 mov %rdi,%r9 | |
| 215f: 49 c1 e9 02 shr $0x2,%r9 | |
| 2163: 49 83 c1 01 add $0x1,%r9 | |
| 2167: 48 85 ff test %rdi,%rdi | |
| 216a: 0f 84 0e 01 00 00 je 227e <ZSTD_decompressBlock_internal+0x115e> | |
| 2170: 4c 89 cb mov %r9,%rbx | |
| 2173: 48 83 e3 fe and $0xfffffffffffffffe,%rbx | |
| 2177: 48 f7 db neg %rbx | |
| 217a: 31 ed xor %ebp,%ebp | |
| ZSTD_memcpy(dst, src, 8); | |
| 217c: 0f 10 44 ee 08 movups 0x8(%rsi,%rbp,8),%xmm0 | |
| 2181: 0f 10 4c ee 18 movups 0x18(%rsi,%rbp,8),%xmm1 | |
| 2186: 41 0f 11 44 ed 08 movups %xmm0,0x8(%r13,%rbp,8) | |
| 218c: 41 0f 11 4c ed 18 movups %xmm1,0x18(%r13,%rbp,8) | |
| 2192: 0f 10 44 ee 28 movups 0x28(%rsi,%rbp,8),%xmm0 | |
| 2197: 0f 10 4c ee 38 movups 0x38(%rsi,%rbp,8),%xmm1 | |
| 219c: 41 0f 11 44 ed 28 movups %xmm0,0x28(%r13,%rbp,8) | |
| 21a2: 41 0f 11 4c ed 38 movups %xmm1,0x38(%r13,%rbp,8) | |
| 21a8: 48 83 c5 08 add $0x8,%rbp | |
| 21ac: 48 83 c3 02 add $0x2,%rbx | |
| 21b0: 75 ca jne 217c <ZSTD_decompressBlock_internal+0x105c> | |
| 21b2: e9 c9 00 00 00 jmpq 2280 <ZSTD_decompressBlock_internal+0x1160> | |
| 21b7: 48 89 fb mov %rdi,%rbx | |
| bitD->ptr -= bitD->bitsConsumed >> 3; | |
| 21ba: 44 89 fe mov %r15d,%esi | |
| 21bd: c1 ee 03 shr $0x3,%esi | |
| 21c0: 48 29 f1 sub %rsi,%rcx | |
| 21c3: 48 89 8c 24 10 01 00 mov %rcx,0x110(%rsp) | |
| 21ca: 00 | |
| bitD->bitsConsumed &= 7; | |
| 21cb: 41 83 e7 07 and $0x7,%r15d | |
| 21cf: 44 89 bc 24 08 01 00 mov %r15d,0x108(%rsp) | |
| 21d6: 00 | |
| 21d7: 48 8b 09 mov (%rcx),%rcx | |
| bitD->bitContainer = MEM_readLEST(bitD->ptr); | |
| 21da: 48 89 8c 24 00 01 00 mov %rcx,0x100(%rsp) | |
| 21e1: 00 | |
| 21e2: e9 a3 fa ff ff jmpq 1c8a <ZSTD_decompressBlock_internal+0xb6a> | |
| { size_t temp = (offset==3) ? seqState->prevOffset[0] - 1 : seqState->prevOffset[offset]; | |
| 21e7: 48 8b 84 dc 58 01 00 mov 0x158(%rsp,%rbx,8),%rax | |
| 21ee: 00 | |
| temp += !temp; /* 0 is not valid; input is corrupted; force offset to 1 */ | |
| 21ef: 48 83 f8 01 cmp $0x1,%rax | |
| 21f3: 48 83 d0 00 adc $0x0,%rax | |
| 21f7: 48 89 44 24 38 mov %rax,0x38(%rsp) | |
| if (offset != 1) seqState->prevOffset[2] = seqState->prevOffset[1]; | |
| 21fc: 48 83 fb 01 cmp $0x1,%rbx | |
| 2200: 74 10 je 2212 <ZSTD_decompressBlock_internal+0x10f2> | |
| 2202: 48 8b 8c 24 60 01 00 mov 0x160(%rsp),%rcx | |
| 2209: 00 | |
| 220a: 48 89 8c 24 68 01 00 mov %rcx,0x168(%rsp) | |
| 2211: 00 | |
| seqState->prevOffset[1] = seqState->prevOffset[0]; | |
| 2212: 48 8b 8c 24 58 01 00 mov 0x158(%rsp),%rcx | |
| 2219: 00 | |
| 221a: 48 89 8c 24 60 01 00 mov %rcx,0x160(%rsp) | |
| 2221: 00 | |
| 2222: 48 8b 44 24 38 mov 0x38(%rsp),%rax | |
| 2227: 48 89 84 24 58 01 00 mov %rax,0x158(%rsp) | |
| 222e: 00 | |
| 222f: 45 00 ca add %r9b,%r10b | |
| if (mlBits > 0) | |
| 2232: 45 84 c0 test %r8b,%r8b | |
| 2235: 0f 85 13 fa ff ff jne 1c4e <ZSTD_decompressBlock_internal+0xb2e> | |
| 223b: e9 32 fa ff ff jmpq 1c72 <ZSTD_decompressBlock_internal+0xb52> | |
| ZSTD_memcpy(dst, src, 16); | |
| 2240: 0f 10 01 movups (%rcx),%xmm0 | |
| 2243: 0f 11 02 movups %xmm0,(%rdx) | |
| if (16 >= length) return; | |
| 2246: 49 83 fc 19 cmp $0x19,%r12 | |
| 224a: 7c 6c jl 22b8 <ZSTD_decompressBlock_internal+0x1198> | |
| op += 16; | |
| 224c: 49 83 c5 18 add $0x18,%r13 | |
| do { | |
| 2250: 48 83 c6 28 add $0x28,%rsi | |
| 2254: 31 c9 xor %ecx,%ecx | |
| ZSTD_memcpy(dst, src, 16); | |
| 2256: 0f 10 44 0e f0 movups -0x10(%rsi,%rcx,1),%xmm0 | |
| 225b: 41 0f 11 44 0d 00 movups %xmm0,0x0(%r13,%rcx,1) | |
| 2261: 0f 10 04 0e movups (%rsi,%rcx,1),%xmm0 | |
| 2265: 41 0f 11 44 0d 10 movups %xmm0,0x10(%r13,%rcx,1) | |
| while (op < oend); | |
| 226b: 4a 8d 14 29 lea (%rcx,%r13,1),%rdx | |
| 226f: 48 83 c2 20 add $0x20,%rdx | |
| 2273: 48 83 c1 20 add $0x20,%rcx | |
| 2277: 48 39 c2 cmp %rax,%rdx | |
| } | |
| 227a: 72 da jb 2256 <ZSTD_decompressBlock_internal+0x1136> | |
| 227c: eb 3a jmp 22b8 <ZSTD_decompressBlock_internal+0x1198> | |
| 227e: 31 ed xor %ebp,%ebp | |
| 2280: 41 f6 c1 01 test $0x1,%r9b | |
| 2284: 74 12 je 2298 <ZSTD_decompressBlock_internal+0x1178> | |
| ZSTD_memcpy(dst, src, 8); | |
| 2286: 0f 10 04 e9 movups (%rcx,%rbp,8),%xmm0 | |
| 228a: 0f 10 4c e9 10 movups 0x10(%rcx,%rbp,8),%xmm1 | |
| 228f: 0f 11 04 ea movups %xmm0,(%rdx,%rbp,8) | |
| 2293: 0f 11 4c ea 10 movups %xmm1,0x10(%rdx,%rbp,8) | |
| } while (op < oend); | |
| 2298: 4d 39 c2 cmp %r8,%r10 | |
| 229b: 74 1b je 22b8 <ZSTD_decompressBlock_internal+0x1198> | |
| 229d: 4a 8d 14 c2 lea (%rdx,%r8,8),%rdx | |
| 22a1: 4a 8d 0c c1 lea (%rcx,%r8,8),%rcx | |
| ZSTD_memcpy(dst, src, 8); | |
| 22a5: 48 8b 31 mov (%rcx),%rsi | |
| 22a8: 48 89 32 mov %rsi,(%rdx) | |
| COPY8(op, ip) | |
| 22ab: 48 83 c2 08 add $0x8,%rdx | |
| 22af: 48 83 c1 08 add $0x8,%rcx | |
| } while (op < oend); | |
| 22b3: 48 39 c2 cmp %rax,%rdx | |
| 22b6: 72 ed jb 22a5 <ZSTD_decompressBlock_internal+0x1185> | |
| 22b8: 8b 44 24 14 mov 0x14(%rsp),%eax | |
| 22bc: 48 8b 5c 24 30 mov 0x30(%rsp),%rbx | |
| 22c1: 49 83 fb 88 cmp $0xffffffffffffff88,%r11 | |
| 22c5: 0f 86 d6 fb ff ff jbe 1ea1 <ZSTD_decompressBlock_internal+0xd81> | |
| 22cb: e9 58 12 00 00 jmpq 3528 <ZSTD_decompressBlock_internal+0x2408> | |
| 22d0: 41 83 ff 40 cmp $0x40,%r15d | |
| 22d4: 48 8b 54 24 18 mov 0x18(%rsp),%rdx | |
| if (bitD->bitsConsumed > (sizeof(bitD->bitContainer)*8)) /* overflow detected, like end of stream */ | |
| 22d9: 0f 86 d4 11 00 00 jbe 34b3 <ZSTD_decompressBlock_internal+0x2393> | |
| { U32 i; for (i=0; i<ZSTD_REP_NUM; i++) dctx->entropy.rep[i] = (U32)(seqState.prevOffset[i]); } | |
| 22df: 8b 84 24 58 01 00 00 mov 0x158(%rsp),%eax | |
| 22e6: 48 8b 4c 24 20 mov 0x20(%rsp),%rcx | |
| 22eb: 89 81 3c 68 00 00 mov %eax,0x683c(%rcx) | |
| 22f1: 8b 84 24 60 01 00 00 mov 0x160(%rsp),%eax | |
| 22f8: 89 81 40 68 00 00 mov %eax,0x6840(%rcx) | |
| 22fe: 8b 84 24 68 01 00 00 mov 0x168(%rsp),%eax | |
| 2305: 89 81 44 68 00 00 mov %eax,0x6844(%rcx) | |
| { size_t const lastLLSize = litEnd - litPtr; | |
| 230b: 48 8b 74 24 60 mov 0x60(%rsp),%rsi | |
| 2310: 48 8b 5c 24 58 mov 0x58(%rsp),%rbx | |
| 2315: 4c 8b 74 24 30 mov 0x30(%rsp),%r14 | |
| 231a: 48 29 f3 sub %rsi,%rbx | |
| RETURN_ERROR_IF(lastLLSize > (size_t)(oend-op), dstSize_tooSmall, ""); | |
| 231d: 4c 29 f2 sub %r14,%rdx | |
| 2320: 49 c7 c3 ba ff ff ff mov $0xffffffffffffffba,%r11 | |
| 2327: 48 39 d3 cmp %rdx,%rbx | |
| 232a: 0f 87 f8 11 00 00 ja 3528 <ZSTD_decompressBlock_internal+0x2408> | |
| if (op != NULL) { | |
| 2330: 4d 85 f6 test %r14,%r14 | |
| 2333: 74 13 je 2348 <ZSTD_decompressBlock_internal+0x1228> | |
| ZSTD_memcpy(op, litPtr, lastLLSize); | |
| 2335: 4c 89 f7 mov %r14,%rdi | |
| 2338: 48 89 da mov %rbx,%rdx | |
| 233b: e8 00 00 00 00 callq 2340 <ZSTD_decompressBlock_internal+0x1220> | |
| op += lastLLSize; | |
| 2340: 49 01 de add %rbx,%r14 | |
| 2343: 4d 89 f3 mov %r14,%r11 | |
| 2346: eb 03 jmp 234b <ZSTD_decompressBlock_internal+0x122b> | |
| 2348: 45 31 db xor %r11d,%r11d | |
| return op-ostart; | |
| 234b: 4c 2b 5c 24 40 sub 0x40(%rsp),%r11 | |
| 2350: e9 d3 11 00 00 jmpq 3528 <ZSTD_decompressBlock_internal+0x2408> | |
| 2355: 45 31 e4 xor %r12d,%r12d | |
| 2358: e9 3d f4 ff ff jmpq 179a <ZSTD_decompressBlock_internal+0x67a> | |
| 235d: 45 31 e4 xor %r12d,%r12d | |
| 2360: e9 d3 f4 ff ff jmpq 1838 <ZSTD_decompressBlock_internal+0x718> | |
| 2365: 45 31 e4 xor %r12d,%r12d | |
| DStatePtr->table = dt + 1; | |
| 2368: 48 8d 4b 08 lea 0x8(%rbx),%rcx | |
| 236c: 48 89 8c 24 b0 00 00 mov %rcx,0xb0(%rsp) | |
| 2373: 00 | |
| 2374: 48 89 9c 24 08 02 00 mov %rbx,0x208(%rsp) | |
| 237b: 00 | |
| 237c: 4c 89 7c 24 48 mov %r15,0x48(%rsp) | |
| 2381: 4c 89 ac 24 c8 01 00 mov %r13,0x1c8(%rsp) | |
| 2388: 00 | |
| 2389: 31 db xor %ebx,%ebx | |
| 238b: 8b 8c 24 ec 00 00 00 mov 0xec(%rsp),%ecx | |
| 2392: 85 c9 test %ecx,%ecx | |
| 2394: 49 89 e9 mov %rbp,%r9 | |
| 2397: bd 00 00 00 00 mov $0x0,%ebp | |
| 239c: 0f 49 e9 cmovns %ecx,%ebp | |
| 239f: 48 89 6c 24 30 mov %rbp,0x30(%rsp) | |
| 23a4: 4d 89 cf mov %r9,%r15 | |
| 23a7: 0f 13 84 24 d8 00 00 movlps %xmm0,0xd8(%rsp) | |
| 23ae: 00 | |
| 23af: 4c 8d 8c 24 10 01 00 lea 0x110(%rsp),%r9 | |
| 23b6: 00 | |
| 23b7: 4d 89 e5 mov %r12,%r13 | |
| 23ba: e9 db 00 00 00 jmpq 249a <ZSTD_decompressBlock_internal+0x137a> | |
| 23bf: 48 8b 5c 24 58 mov 0x58(%rsp),%rbx | |
| 23c4: 8b 94 24 f4 01 00 00 mov 0x1f4(%rsp),%edx | |
| return BIT_getMiddleBits(bitD->bitContainer, (sizeof(bitD->bitContainer)*8) - bitD->bitsConsumed - nbBits, nbBits); | |
| 23cb: 01 d0 add %edx,%eax | |
| return (bitContainer >> (start & regMask)) & BIT_mask[nbBits]; | |
| 23cd: 89 c1 mov %eax,%ecx | |
| 23cf: f6 d9 neg %cl | |
| 23d1: 4c 89 fe mov %r15,%rsi | |
| 23d4: 48 d3 ee shr %cl,%rsi | |
| 23d7: 89 d1 mov %edx,%ecx | |
| 23d9: 23 34 8d 00 00 00 00 and 0x0(,%rcx,4),%esi | |
| DStatePtr->state = DInfo.nextState + lowBits; | |
| 23e0: 48 03 b4 24 20 02 00 add 0x220(%rsp),%rsi | |
| 23e7: 00 | |
| 23e8: 8b 94 24 f8 01 00 00 mov 0x1f8(%rsp),%edx | |
| return BIT_getMiddleBits(bitD->bitContainer, (sizeof(bitD->bitContainer)*8) - bitD->bitsConsumed - nbBits, nbBits); | |
| 23ef: 01 d0 add %edx,%eax | |
| return (bitContainer >> (start & regMask)) & BIT_mask[nbBits]; | |
| 23f1: 89 c1 mov %eax,%ecx | |
| 23f3: f6 d9 neg %cl | |
| 23f5: 4d 89 f8 mov %r15,%r8 | |
| 23f8: 49 d3 e8 shr %cl,%r8 | |
| 23fb: 89 d1 mov %edx,%ecx | |
| 23fd: 44 23 04 8d 00 00 00 and 0x0(,%rcx,4),%r8d | |
| 2404: 00 | |
| 2405: 8b ac 24 e8 01 00 00 mov 0x1e8(%rsp),%ebp | |
| return BIT_getMiddleBits(bitD->bitContainer, (sizeof(bitD->bitContainer)*8) - bitD->bitsConsumed - nbBits, nbBits); | |
| 240c: 01 e8 add %ebp,%eax | |
| return (bitContainer >> (start & regMask)) & BIT_mask[nbBits]; | |
| 240e: 89 c1 mov %eax,%ecx | |
| 2410: f6 d9 neg %cl | |
| 2412: 4c 89 fa mov %r15,%rdx | |
| 2415: 48 d3 ea shr %cl,%rdx | |
| 2418: 4c 03 84 24 d8 01 00 add 0x1d8(%rsp),%r8 | |
| 241f: 00 | |
| 2420: 89 e9 mov %ebp,%ecx | |
| 2422: 23 14 8d 00 00 00 00 and 0x0(,%rcx,4),%edx | |
| 2429: 48 89 b4 24 88 00 00 mov %rsi,0x88(%rsp) | |
| 2430: 00 | |
| 2431: 4c 89 84 24 a8 00 00 mov %r8,0xa8(%rsp) | |
| 2438: 00 | |
| 2439: 48 03 94 24 d0 00 00 add 0xd0(%rsp),%rdx | |
| 2440: 00 | |
| bitD->bitsConsumed += nbBits; | |
| 2441: 89 44 24 68 mov %eax,0x68(%rsp) | |
| prefetchPos += sequence.litLength; | |
| 2445: 49 01 de add %rbx,%r14 | |
| { const BYTE* const matchBase = (sequence.offset > prefetchPos) ? dictEnd : prefixStart; | |
| 2448: 4d 39 d6 cmp %r10,%r14 | |
| 244b: 48 89 f9 mov %rdi,%rcx | |
| 244e: 48 0f 42 4c 24 38 cmovb 0x38(%rsp),%rcx | |
| DStatePtr->state = DInfo.nextState + lowBits; | |
| 2454: 48 89 94 24 98 00 00 mov %rdx,0x98(%rsp) | |
| 245b: 00 | |
| const BYTE* const match = matchBase + prefetchPos - sequence.offset; /* note : this operation can overflow when seq.offset is really too large, which can only happen when input is corrupted. | |
| 245c: 4c 01 f1 add %r14,%rcx | |
| 245f: 4c 29 d1 sub %r10,%rcx | |
| PREFETCH_L1(match); PREFETCH_L1(match+CACHELINE_SIZE); /* note : it's safe to invoke PREFETCH() on any memory address, including invalid ones */ | |
| 2462: 0f 18 09 prefetcht0 (%rcx) | |
| 2465: 0f 18 49 40 prefetcht0 0x40(%rcx) | |
| sequences[seqNb] = sequence; | |
| 2469: 49 89 59 f0 mov %rbx,-0x10(%r9) | |
| return prefetchPos + sequence.matchLength; | |
| 246d: 4d 01 de add %r11,%r14 | |
| sequences[seqNb] = sequence; | |
| 2470: 4d 89 59 f8 mov %r11,-0x8(%r9) | |
| 2474: 4d 89 11 mov %r10,(%r9) | |
| 2477: 48 8b 9c 24 f0 00 00 mov 0xf0(%rsp),%rbx | |
| 247e: 00 | |
| for (seqNb=0; (BIT_reloadDStream(&seqState.DStream) <= BIT_DStream_completed) && (seqNb<seqAdvance); seqNb++) { | |
| 247f: 48 83 c3 01 add $0x1,%rbx | |
| if (bitD->bitsConsumed > (sizeof(bitD->bitContainer)*8)) /* overflow detected, like end of stream */ | |
| 2483: 49 83 c1 18 add $0x18,%r9 | |
| 2487: 4c 89 54 24 48 mov %r10,0x48(%rsp) | |
| 248c: 83 f8 40 cmp $0x40,%eax | |
| 248f: 4c 8b 54 24 20 mov 0x20(%rsp),%r10 | |
| 2494: 0f 87 60 03 00 00 ja 27fa <ZSTD_decompressBlock_internal+0x16da> | |
| if (bitD->ptr >= bitD->limitPtr) { | |
| 249a: 49 83 fd 08 cmp $0x8,%r13 | |
| 249e: 7d 41 jge 24e1 <ZSTD_decompressBlock_internal+0x13c1> | |
| if (bitD->ptr == bitD->start) { | |
| 24a0: 4d 85 ed test %r13,%r13 | |
| 24a3: 0f 84 14 02 00 00 je 26bd <ZSTD_decompressBlock_internal+0x159d> | |
| 24a9: 4c 8b a4 24 c8 01 00 mov 0x1c8(%rsp),%r12 | |
| 24b0: 00 | |
| 24b1: 4b 8d 0c 2c lea (%r12,%r13,1),%rcx | |
| { U32 nbBytes = bitD->bitsConsumed >> 3; | |
| 24b5: 89 c5 mov %eax,%ebp | |
| 24b7: c1 ed 03 shr $0x3,%ebp | |
| if (bitD->ptr - nbBytes < bitD->start) { | |
| 24ba: 48 29 e9 sub %rbp,%rcx | |
| 24bd: 4c 39 e1 cmp %r12,%rcx | |
| 24c0: 44 89 e9 mov %r13d,%ecx | |
| 24c3: 0f 43 cd cmovae %ebp,%ecx | |
| bitD->ptr -= nbBytes; | |
| 24c6: 49 29 cd sub %rcx,%r13 | |
| 24c9: 4b 8d 2c 2c lea (%r12,%r13,1),%rbp | |
| 24cd: 48 89 6c 24 70 mov %rbp,0x70(%rsp) | |
| bitD->bitsConsumed -= nbBytes*8; | |
| 24d2: c1 e1 03 shl $0x3,%ecx | |
| 24d5: 29 c8 sub %ecx,%eax | |
| 24d7: 89 44 24 68 mov %eax,0x68(%rsp) | |
| 24db: 4f 8b 3c 2c mov (%r12,%r13,1),%r15 | |
| 24df: eb 27 jmp 2508 <ZSTD_decompressBlock_internal+0x13e8> | |
| bitD->ptr -= bitD->bitsConsumed >> 3; | |
| 24e1: 89 c1 mov %eax,%ecx | |
| 24e3: c1 e9 03 shr $0x3,%ecx | |
| 24e6: 49 29 cd sub %rcx,%r13 | |
| 24e9: 48 8b ac 24 c8 01 00 mov 0x1c8(%rsp),%rbp | |
| 24f0: 00 | |
| 24f1: 48 89 e9 mov %rbp,%rcx | |
| 24f4: 4c 01 e9 add %r13,%rcx | |
| 24f7: 48 89 4c 24 70 mov %rcx,0x70(%rsp) | |
| bitD->bitsConsumed &= 7; | |
| 24fc: 83 e0 07 and $0x7,%eax | |
| 24ff: 89 44 24 68 mov %eax,0x68(%rsp) | |
| 2503: 4e 8b 7c 2d 00 mov 0x0(%rbp,%r13,1),%r15 | |
| 2508: 4c 89 7c 24 60 mov %r15,0x60(%rsp) | |
| 250d: 4d 89 ec mov %r13,%r12 | |
| 2510: 48 39 5c 24 30 cmp %rbx,0x30(%rsp) | |
| 2515: 0f 84 cb 02 00 00 je 27e6 <ZSTD_decompressBlock_internal+0x16c6> | |
| 251b: 4c 89 ac 24 00 02 00 mov %r13,0x200(%rsp) | |
| 2522: 00 | |
| 2523: 48 89 9c 24 f0 00 00 mov %rbx,0xf0(%rsp) | |
| 252a: 00 | |
| 252b: 4c 89 7c 24 28 mov %r15,0x28(%rsp) | |
| 2530: 48 8b 8c 24 18 02 00 mov 0x218(%rsp),%rcx | |
| 2537: 00 | |
| ZSTD_seqSymbol const llDInfo = seqState->stateLL.table[seqState->stateLL.state]; | |
| 2538: 0f b7 2c f1 movzwl (%rcx,%rsi,8),%ebp | |
| 253c: 48 89 ac 24 20 02 00 mov %rbp,0x220(%rsp) | |
| 2543: 00 | |
| 2544: 44 0f b6 5c f1 02 movzbl 0x2(%rcx,%rsi,8),%r11d | |
| 254a: 0f b6 6c f1 03 movzbl 0x3(%rcx,%rsi,8),%ebp | |
| 254f: 89 ac 24 f4 01 00 00 mov %ebp,0x1f4(%rsp) | |
| 2556: 8b 4c f1 04 mov 0x4(%rcx,%rsi,8),%ecx | |
| 255a: 48 89 4c 24 58 mov %rcx,0x58(%rsp) | |
| 255f: 48 8b 8c 24 08 02 00 mov 0x208(%rsp),%rcx | |
| 2566: 00 | |
| ZSTD_seqSymbol const mlDInfo = seqState->stateML.table[seqState->stateML.state]; | |
| 2567: 46 0f b7 54 c1 08 movzwl 0x8(%rcx,%r8,8),%r10d | |
| 256d: 46 0f b6 6c c1 0a movzbl 0xa(%rcx,%r8,8),%r13d | |
| 2573: 42 0f b6 5c c1 0b movzbl 0xb(%rcx,%r8,8),%ebx | |
| 2579: 42 8b 4c c1 0c mov 0xc(%rcx,%r8,8),%ecx | |
| 257e: 48 89 8c 24 e0 01 00 mov %rcx,0x1e0(%rsp) | |
| 2585: 00 | |
| 2586: 48 8b 8c 24 10 02 00 mov 0x210(%rsp),%rcx | |
| 258d: 00 | |
| ZSTD_seqSymbol const ofDInfo = seqState->stateOffb.table[seqState->stateOffb.state]; | |
| 258e: 0f b7 34 d1 movzwl (%rcx,%rdx,8),%esi | |
| 2592: 44 0f b6 7c d1 02 movzbl 0x2(%rcx,%rdx,8),%r15d | |
| 2598: 4c 89 5c 24 50 mov %r11,0x50(%rsp) | |
| BYTE const totalBits = llBits+mlBits+ofBits; | |
| 259d: 47 8d 04 2b lea (%r11,%r13,1),%r8d | |
| ZSTD_seqSymbol const ofDInfo = seqState->stateOffb.table[seqState->stateOffb.state]; | |
| 25a1: 0f b6 6c d1 03 movzbl 0x3(%rcx,%rdx,8),%ebp | |
| 25a6: 8b 54 d1 04 mov 0x4(%rcx,%rdx,8),%edx | |
| 25aa: 41 83 ff 02 cmp $0x2,%r15d | |
| 25ae: 48 89 b4 24 d0 00 00 mov %rsi,0xd0(%rsp) | |
| 25b5: 00 | |
| 25b6: 4c 89 94 24 d8 01 00 mov %r10,0x1d8(%rsp) | |
| 25bd: 00 | |
| 25be: 89 ac 24 e8 01 00 00 mov %ebp,0x1e8(%rsp) | |
| 25c5: 89 9c 24 f8 01 00 00 mov %ebx,0x1f8(%rsp) | |
| if (ofBits > 1) { | |
| 25cc: 72 51 jb 261f <ZSTD_decompressBlock_internal+0x14ff> | |
| return (bitD->bitContainer << (bitD->bitsConsumed & regMask)) >> (((regMask+1)-nbBits) & regMask); | |
| 25ce: 89 c1 mov %eax,%ecx | |
| bitD->bitsConsumed += nbBits; | |
| 25d0: 44 01 f8 add %r15d,%eax | |
| 25d3: 89 44 24 68 mov %eax,0x68(%rsp) | |
| 25d7: 48 8b bc 24 d8 00 00 mov 0xd8(%rsp),%rdi | |
| 25de: 00 | |
| seqState->prevOffset[2] = seqState->prevOffset[1]; | |
| 25df: 48 89 bc 24 c8 00 00 mov %rdi,0xc8(%rsp) | |
| 25e6: 00 | |
| 25e7: 48 8b 7c 24 28 mov 0x28(%rsp),%rdi | |
| return (bitD->bitContainer << (bitD->bitsConsumed & regMask)) >> (((regMask+1)-nbBits) & regMask); | |
| 25ec: 48 d3 e7 shl %cl,%rdi | |
| 25ef: 44 89 f9 mov %r15d,%ecx | |
| 25f2: f6 d9 neg %cl | |
| 25f4: 48 d3 ef shr %cl,%rdi | |
| offset = ofBase + BIT_readBitsFast(&seqState->DStream, ofBits/*>0*/); /* <= (ZSTD_WINDOWLOG_MAX-1) bits */ | |
| 25f7: 48 01 d7 add %rdx,%rdi | |
| 25fa: 48 89 f9 mov %rdi,%rcx | |
| 25fd: 48 8b 7c 24 08 mov 0x8(%rsp),%rdi | |
| 2602: 4c 8b 5c 24 48 mov 0x48(%rsp),%r11 | |
| 2607: 4c 89 9c 24 c0 00 00 mov %r11,0xc0(%rsp) | |
| 260e: 00 | |
| 260f: 48 89 8c 24 b8 00 00 mov %rcx,0xb8(%rsp) | |
| 2616: 00 | |
| 2617: 49 89 ca mov %rcx,%r10 | |
| 261a: 4c 89 d9 mov %r11,%rcx | |
| 261d: eb 1d jmp 263c <ZSTD_decompressBlock_internal+0x151c> | |
| if (LIKELY((ofBits == 0))) { | |
| 261f: 45 84 ff test %r15b,%r15b | |
| 2622: 0f 85 a8 00 00 00 jne 26d0 <ZSTD_decompressBlock_internal+0x15b0> | |
| U32 const ll0 = (llBase == 0); | |
| 2628: 83 7c 24 58 00 cmpl $0x0,0x58(%rsp) | |
| 262d: 48 8b 8c 24 d8 00 00 mov 0xd8(%rsp),%rcx | |
| 2634: 00 | |
| if (LIKELY(!ll0)) | |
| 2635: 74 cb je 2602 <ZSTD_decompressBlock_internal+0x14e2> | |
| 2637: 4c 8b 54 24 48 mov 0x48(%rsp),%r10 | |
| 263c: 48 8b 74 24 50 mov 0x50(%rsp),%rsi | |
| 2641: 48 89 8c 24 d8 00 00 mov %rcx,0xd8(%rsp) | |
| 2648: 00 | |
| 2649: 45 00 f8 add %r15b,%r8b | |
| if (mlBits > 0) | |
| 264c: 45 84 ed test %r13b,%r13b | |
| 264f: 4c 8b 9c 24 e0 01 00 mov 0x1e0(%rsp),%r11 | |
| 2656: 00 | |
| 2657: 74 21 je 267a <ZSTD_decompressBlock_internal+0x155a> | |
| 2659: 4c 8b 7c 24 28 mov 0x28(%rsp),%r15 | |
| 265e: 4c 89 fa mov %r15,%rdx | |
| 2661: 89 c1 mov %eax,%ecx | |
| 2663: 48 d3 e2 shl %cl,%rdx | |
| 2666: 44 89 e9 mov %r13d,%ecx | |
| 2669: f6 d9 neg %cl | |
| 266b: 48 d3 ea shr %cl,%rdx | |
| bitD->bitsConsumed += nbBits; | |
| 266e: 44 01 e8 add %r13d,%eax | |
| 2671: 89 44 24 68 mov %eax,0x68(%rsp) | |
| seq.matchLength += BIT_readBitsFast(&seqState->DStream, mlBits/*>0*/); | |
| 2675: 49 01 d3 add %rdx,%r11 | |
| 2678: eb 05 jmp 267f <ZSTD_decompressBlock_internal+0x155f> | |
| 267a: 4c 8b 7c 24 28 mov 0x28(%rsp),%r15 | |
| 267f: 4c 8b ac 24 00 02 00 mov 0x200(%rsp),%r13 | |
| 2686: 00 | |
| if (MEM_64bits() && UNLIKELY(totalBits >= STREAM_ACCUMULATOR_MIN_64-(LLFSELog+MLFSELog+OffFSELog))) | |
| 2687: 41 80 f8 1f cmp $0x1f,%r8b | |
| 268b: 72 05 jb 2692 <ZSTD_decompressBlock_internal+0x1572> | |
| 268d: 83 f8 40 cmp $0x40,%eax | |
| 2690: 76 77 jbe 2709 <ZSTD_decompressBlock_internal+0x15e9> | |
| if (llBits > 0) | |
| 2692: 40 84 f6 test %sil,%sil | |
| 2695: 0f 84 24 fd ff ff je 23bf <ZSTD_decompressBlock_internal+0x129f> | |
| return (bitD->bitContainer << (bitD->bitsConsumed & regMask)) >> (((regMask+1)-nbBits) & regMask); | |
| 269b: 4c 89 fa mov %r15,%rdx | |
| 269e: 89 c1 mov %eax,%ecx | |
| 26a0: 48 d3 e2 shl %cl,%rdx | |
| 26a3: 89 f1 mov %esi,%ecx | |
| 26a5: f6 d9 neg %cl | |
| 26a7: 48 d3 ea shr %cl,%rdx | |
| bitD->bitsConsumed += nbBits; | |
| 26aa: 01 f0 add %esi,%eax | |
| 26ac: 89 44 24 68 mov %eax,0x68(%rsp) | |
| 26b0: 48 8b 5c 24 58 mov 0x58(%rsp),%rbx | |
| seq.litLength += BIT_readBitsFast(&seqState->DStream, llBits/*>0*/); | |
| 26b5: 48 01 d3 add %rdx,%rbx | |
| 26b8: e9 07 fd ff ff jmpq 23c4 <ZSTD_decompressBlock_internal+0x12a4> | |
| 26bd: 45 31 ed xor %r13d,%r13d | |
| for (seqNb=0; (BIT_reloadDStream(&seqState.DStream) <= BIT_DStream_completed) && (seqNb<seqAdvance); seqNb++) { | |
| 26c0: 48 39 5c 24 30 cmp %rbx,0x30(%rsp) | |
| 26c5: 0f 85 50 fe ff ff jne 251b <ZSTD_decompressBlock_internal+0x13fb> | |
| 26cb: e9 16 01 00 00 jmpq 27e6 <ZSTD_decompressBlock_internal+0x16c6> | |
| offset = ofBase + ll0 + BIT_readBitsFast(&seqState->DStream, 1); | |
| 26d0: 83 7c 24 58 01 cmpl $0x1,0x58(%rsp) | |
| 26d5: 83 d2 00 adc $0x0,%edx | |
| 26d8: 48 8b 7c 24 28 mov 0x28(%rsp),%rdi | |
| return (bitD->bitContainer << (bitD->bitsConsumed & regMask)) >> (((regMask+1)-nbBits) & regMask); | |
| 26dd: 89 c1 mov %eax,%ecx | |
| 26df: 48 d3 e7 shl %cl,%rdi | |
| 26e2: 48 c1 ef 3f shr $0x3f,%rdi | |
| bitD->bitsConsumed += nbBits; | |
| 26e6: 83 c0 01 add $0x1,%eax | |
| 26e9: 89 44 24 68 mov %eax,0x68(%rsp) | |
| 26ed: 48 01 d7 add %rdx,%rdi | |
| { size_t temp = (offset==3) ? seqState->prevOffset[0] - 1 : seqState->prevOffset[offset]; | |
| 26f0: 48 83 ff 03 cmp $0x3,%rdi | |
| 26f4: 75 5a jne 2750 <ZSTD_decompressBlock_internal+0x1630> | |
| 26f6: 48 8b 4c 24 48 mov 0x48(%rsp),%rcx | |
| 26fb: 48 83 c1 ff add $0xffffffffffffffff,%rcx | |
| temp += !temp; /* 0 is not valid; input is corrupted; force offset to 1 */ | |
| 26ff: 48 83 f9 01 cmp $0x1,%rcx | |
| 2703: 48 83 d1 00 adc $0x0,%rcx | |
| 2707: eb 61 jmp 276a <ZSTD_decompressBlock_internal+0x164a> | |
| if (bitD->ptr >= bitD->limitPtr) { | |
| 2709: 49 83 fc 08 cmp $0x8,%r12 | |
| 270d: 7d 70 jge 277f <ZSTD_decompressBlock_internal+0x165f> | |
| if (bitD->ptr == bitD->start) { | |
| 270f: 4d 85 e4 test %r12,%r12 | |
| 2712: 0f 84 ab 00 00 00 je 27c3 <ZSTD_decompressBlock_internal+0x16a3> | |
| 2718: 48 8b b4 24 c8 01 00 mov 0x1c8(%rsp),%rsi | |
| 271f: 00 | |
| 2720: 4a 8d 0c 26 lea (%rsi,%r12,1),%rcx | |
| { U32 nbBytes = bitD->bitsConsumed >> 3; | |
| 2724: 89 c2 mov %eax,%edx | |
| 2726: c1 ea 03 shr $0x3,%edx | |
| if (bitD->ptr - nbBytes < bitD->start) { | |
| 2729: 48 29 d1 sub %rdx,%rcx | |
| 272c: 48 39 f1 cmp %rsi,%rcx | |
| 272f: 44 89 e1 mov %r12d,%ecx | |
| 2732: 0f 43 ca cmovae %edx,%ecx | |
| bitD->ptr -= nbBytes; | |
| 2735: 49 29 cc sub %rcx,%r12 | |
| 2738: 4a 8d 14 26 lea (%rsi,%r12,1),%rdx | |
| 273c: 48 89 54 24 70 mov %rdx,0x70(%rsp) | |
| bitD->bitsConsumed -= nbBytes*8; | |
| 2741: c1 e1 03 shl $0x3,%ecx | |
| 2744: 29 c8 sub %ecx,%eax | |
| 2746: 89 44 24 68 mov %eax,0x68(%rsp) | |
| 274a: 4e 8b 3c 26 mov (%rsi,%r12,1),%r15 | |
| 274e: eb 53 jmp 27a3 <ZSTD_decompressBlock_internal+0x1683> | |
| { size_t temp = (offset==3) ? seqState->prevOffset[0] - 1 : seqState->prevOffset[offset]; | |
| 2750: 48 8b 8c fc b8 00 00 mov 0xb8(%rsp,%rdi,8),%rcx | |
| 2757: 00 | |
| temp += !temp; /* 0 is not valid; input is corrupted; force offset to 1 */ | |
| 2758: 48 83 f9 01 cmp $0x1,%rcx | |
| 275c: 48 83 d1 00 adc $0x0,%rcx | |
| if (offset != 1) seqState->prevOffset[2] = seqState->prevOffset[1]; | |
| 2760: 48 83 ff 01 cmp $0x1,%rdi | |
| 2764: 0f 84 93 fe ff ff je 25fd <ZSTD_decompressBlock_internal+0x14dd> | |
| 276a: 48 8b 94 24 d8 00 00 mov 0xd8(%rsp),%rdx | |
| 2771: 00 | |
| 2772: 48 89 94 24 c8 00 00 mov %rdx,0xc8(%rsp) | |
| 2779: 00 | |
| 277a: e9 7e fe ff ff jmpq 25fd <ZSTD_decompressBlock_internal+0x14dd> | |
| bitD->ptr -= bitD->bitsConsumed >> 3; | |
| 277f: 89 c1 mov %eax,%ecx | |
| 2781: c1 e9 03 shr $0x3,%ecx | |
| 2784: 49 29 cc sub %rcx,%r12 | |
| 2787: 48 8b 94 24 c8 01 00 mov 0x1c8(%rsp),%rdx | |
| 278e: 00 | |
| 278f: 4a 8d 0c 22 lea (%rdx,%r12,1),%rcx | |
| 2793: 48 89 4c 24 70 mov %rcx,0x70(%rsp) | |
| bitD->bitsConsumed &= 7; | |
| 2798: 83 e0 07 and $0x7,%eax | |
| 279b: 89 44 24 68 mov %eax,0x68(%rsp) | |
| 279f: 4e 8b 3c 22 mov (%rdx,%r12,1),%r15 | |
| 27a3: 4c 89 7c 24 60 mov %r15,0x60(%rsp) | |
| 27a8: 4d 89 e5 mov %r12,%r13 | |
| 27ab: 48 8b 7c 24 08 mov 0x8(%rsp),%rdi | |
| 27b0: 48 8b 74 24 50 mov 0x50(%rsp),%rsi | |
| if (llBits > 0) | |
| 27b5: 40 84 f6 test %sil,%sil | |
| 27b8: 0f 85 dd fe ff ff jne 269b <ZSTD_decompressBlock_internal+0x157b> | |
| 27be: e9 fc fb ff ff jmpq 23bf <ZSTD_decompressBlock_internal+0x129f> | |
| 27c3: 45 31 e4 xor %r12d,%r12d | |
| 27c6: 45 31 ed xor %r13d,%r13d | |
| 27c9: 48 8b 7c 24 08 mov 0x8(%rsp),%rdi | |
| 27ce: 4c 8b 7c 24 28 mov 0x28(%rsp),%r15 | |
| 27d3: 48 8b 74 24 50 mov 0x50(%rsp),%rsi | |
| 27d8: 40 84 f6 test %sil,%sil | |
| 27db: 0f 85 ba fe ff ff jne 269b <ZSTD_decompressBlock_internal+0x157b> | |
| 27e1: e9 d9 fb ff ff jmpq 23bf <ZSTD_decompressBlock_internal+0x129f> | |
| 27e6: 48 8b 54 24 18 mov 0x18(%rsp),%rdx | |
| 27eb: 44 8b 4c 24 14 mov 0x14(%rsp),%r9d | |
| 27f0: 4c 8b 7c 24 30 mov 0x30(%rsp),%r15 | |
| 27f5: 49 89 f8 mov %rdi,%r8 | |
| 27f8: eb 25 jmp 281f <ZSTD_decompressBlock_internal+0x16ff> | |
| 27fa: 41 89 df mov %ebx,%r15d | |
| 27fd: 44 8b 4c 24 14 mov 0x14(%rsp),%r9d | |
| 2802: 49 c7 c3 ec ff ff ff mov $0xffffffffffffffec,%r11 | |
| for (seqNb=0; (BIT_reloadDStream(&seqState.DStream) <= BIT_DStream_completed) && (seqNb<seqAdvance); seqNb++) { | |
| 2809: 44 3b bc 24 ec 00 00 cmp 0xec(%rsp),%r15d | |
| 2810: 00 | |
| 2811: 48 8b 54 24 18 mov 0x18(%rsp),%rdx | |
| 2816: 49 89 f8 mov %rdi,%r8 | |
| RETURN_ERROR_IF(seqNb<seqAdvance, corruption_detected, ""); | |
| 2819: 0f 8c 09 0d 00 00 jl 3528 <ZSTD_decompressBlock_internal+0x2408> | |
| 281f: 48 8d 4a e0 lea -0x20(%rdx),%rcx | |
| 2823: 48 89 8c 24 d8 01 00 mov %rcx,0x1d8(%rsp) | |
| 282a: 00 | |
| 282b: 48 8b 7c 24 40 mov 0x40(%rsp),%rdi | |
| 2830: 48 89 7c 24 28 mov %rdi,0x28(%rsp) | |
| if (bitD->bitsConsumed > (sizeof(bitD->bitContainer)*8)) /* overflow detected, like end of stream */ | |
| 2835: 83 f8 41 cmp $0x41,%eax | |
| 2838: 0f 83 e1 07 00 00 jae 301f <ZSTD_decompressBlock_internal+0x1eff> | |
| if (bitD->ptr >= bitD->limitPtr) { | |
| 283e: 4c 8b 5c 24 70 mov 0x70(%rsp),%r11 | |
| 2843: 48 8b 9c 24 80 00 00 mov 0x80(%rsp),%rbx | |
| 284a: 00 | |
| 284b: 49 39 db cmp %rbx,%r11 | |
| 284e: 73 39 jae 2889 <ZSTD_decompressBlock_internal+0x1769> | |
| if (bitD->ptr == bitD->start) { | |
| 2850: 48 8b 4c 24 78 mov 0x78(%rsp),%rcx | |
| 2855: 49 39 cb cmp %rcx,%r11 | |
| 2858: 74 4b je 28a5 <ZSTD_decompressBlock_internal+0x1785> | |
| { U32 nbBytes = bitD->bitsConsumed >> 3; | |
| 285a: 89 c6 mov %eax,%esi | |
| 285c: c1 ee 03 shr $0x3,%esi | |
| if (bitD->ptr - nbBytes < bitD->start) { | |
| 285f: 4c 89 df mov %r11,%rdi | |
| 2862: 48 29 f7 sub %rsi,%rdi | |
| 2865: 44 89 da mov %r11d,%edx | |
| 2868: 29 ca sub %ecx,%edx | |
| 286a: 48 39 cf cmp %rcx,%rdi | |
| 286d: 4c 8b 44 24 08 mov 0x8(%rsp),%r8 | |
| 2872: 0f 43 d6 cmovae %esi,%edx | |
| bitD->ptr -= nbBytes; | |
| 2875: 49 29 d3 sub %rdx,%r11 | |
| 2878: 4c 89 5c 24 70 mov %r11,0x70(%rsp) | |
| bitD->bitsConsumed -= nbBytes*8; | |
| 287d: c1 e2 03 shl $0x3,%edx | |
| 2880: 29 d0 sub %edx,%eax | |
| 2882: 48 8b 54 24 18 mov 0x18(%rsp),%rdx | |
| 2887: eb 10 jmp 2899 <ZSTD_decompressBlock_internal+0x1779> | |
| bitD->ptr -= bitD->bitsConsumed >> 3; | |
| 2889: 89 c1 mov %eax,%ecx | |
| 288b: c1 e9 03 shr $0x3,%ecx | |
| 288e: 49 29 cb sub %rcx,%r11 | |
| 2891: 4c 89 5c 24 70 mov %r11,0x70(%rsp) | |
| bitD->bitsConsumed &= 7; | |
| 2896: 83 e0 07 and $0x7,%eax | |
| 2899: 89 44 24 68 mov %eax,0x68(%rsp) | |
| 289d: 49 8b 0b mov (%r11),%rcx | |
| 28a0: 48 89 4c 24 60 mov %rcx,0x60(%rsp) | |
| for ( ; (BIT_reloadDStream(&(seqState.DStream)) <= BIT_DStream_completed) && (seqNb<nbSeq) ; seqNb++) { | |
| 28a5: 45 39 cf cmp %r9d,%r15d | |
| 28a8: 0f 8d 81 07 00 00 jge 302f <ZSTD_decompressBlock_internal+0x1f0f> | |
| 28ae: 48 89 9c 24 e8 01 00 mov %rbx,0x1e8(%rsp) | |
| 28b5: 00 | |
| 28b6: 4c 89 7c 24 30 mov %r15,0x30(%rsp) | |
| ZSTD_seqSymbol const llDInfo = seqState->stateLL.table[seqState->stateLL.state]; | |
| 28bb: 48 8b 8c 24 88 00 00 mov 0x88(%rsp),%rcx | |
| 28c2: 00 | |
| 28c3: 48 8b 94 24 90 00 00 mov 0x90(%rsp),%rdx | |
| 28ca: 00 | |
| 28cb: 0f b7 34 ca movzwl (%rdx,%rcx,8),%esi | |
| 28cf: 48 89 b4 24 f0 00 00 mov %rsi,0xf0(%rsp) | |
| 28d6: 00 | |
| 28d7: 44 0f b6 54 ca 02 movzbl 0x2(%rdx,%rcx,8),%r10d | |
| 28dd: 44 0f b6 6c ca 03 movzbl 0x3(%rdx,%rcx,8),%r13d | |
| 28e3: 8b 6c ca 04 mov 0x4(%rdx,%rcx,8),%ebp | |
| ZSTD_seqSymbol const mlDInfo = seqState->stateML.table[seqState->stateML.state]; | |
| 28e7: 48 8b 8c 24 b0 00 00 mov 0xb0(%rsp),%rcx | |
| 28ee: 00 | |
| 28ef: 48 8b 94 24 a8 00 00 mov 0xa8(%rsp),%rdx | |
| 28f6: 00 | |
| 28f7: 0f b7 34 d1 movzwl (%rcx,%rdx,8),%esi | |
| 28fb: 48 89 b4 24 d8 00 00 mov %rsi,0xd8(%rsp) | |
| 2902: 00 | |
| 2903: 44 0f b6 4c d1 02 movzbl 0x2(%rcx,%rdx,8),%r9d | |
| 2909: 44 0f b6 64 d1 03 movzbl 0x3(%rcx,%rdx,8),%r12d | |
| 290f: 8b 5c d1 04 mov 0x4(%rcx,%rdx,8),%ebx | |
| ZSTD_seqSymbol const ofDInfo = seqState->stateOffb.table[seqState->stateOffb.state]; | |
| 2913: 48 8b 8c 24 a0 00 00 mov 0xa0(%rsp),%rcx | |
| 291a: 00 | |
| 291b: 48 8b 94 24 98 00 00 mov 0x98(%rsp),%rdx | |
| 2922: 00 | |
| 2923: 0f b7 34 d1 movzwl (%rcx,%rdx,8),%esi | |
| 2927: 48 89 74 24 48 mov %rsi,0x48(%rsp) | |
| 292c: 0f b6 74 d1 02 movzbl 0x2(%rcx,%rdx,8),%esi | |
| BYTE const totalBits = llBits+mlBits+ofBits; | |
| 2931: 47 8d 3c 11 lea (%r9,%r10,1),%r15d | |
| ZSTD_seqSymbol const ofDInfo = seqState->stateOffb.table[seqState->stateOffb.state]; | |
| 2935: 0f b6 7c d1 03 movzbl 0x3(%rcx,%rdx,8),%edi | |
| 293a: 89 7c 24 50 mov %edi,0x50(%rsp) | |
| 293e: 44 8b 44 d1 04 mov 0x4(%rcx,%rdx,8),%r8d | |
| 2943: 83 fe 02 cmp $0x2,%esi | |
| 2946: 48 89 6c 24 58 mov %rbp,0x58(%rsp) | |
| if (ofBits > 1) { | |
| 294b: 0f 82 15 02 00 00 jb 2b66 <ZSTD_decompressBlock_internal+0x1a46> | |
| size_t const value = BIT_lookBitsFast(bitD, nbBits); | |
| 2951: 48 8b 54 24 60 mov 0x60(%rsp),%rdx | |
| return (bitD->bitContainer << (bitD->bitsConsumed & regMask)) >> (((regMask+1)-nbBits) & regMask); | |
| 2956: 89 c1 mov %eax,%ecx | |
| 2958: 48 d3 e2 shl %cl,%rdx | |
| 295b: 89 f1 mov %esi,%ecx | |
| 295d: f6 d9 neg %cl | |
| 295f: 48 d3 ea shr %cl,%rdx | |
| bitD->bitsConsumed += nbBits; | |
| 2962: 01 f0 add %esi,%eax | |
| 2964: 89 44 24 68 mov %eax,0x68(%rsp) | |
| offset = ofBase + BIT_readBitsFast(&seqState->DStream, ofBits/*>0*/); /* <= (ZSTD_WINDOWLOG_MAX-1) bits */ | |
| 2968: 4c 01 c2 add %r8,%rdx | |
| seqState->prevOffset[1] = seqState->prevOffset[0]; | |
| 296b: 0f 10 84 24 b8 00 00 movups 0xb8(%rsp),%xmm0 | |
| 2972: 00 | |
| 2973: 0f 11 84 24 c0 00 00 movups %xmm0,0xc0(%rsp) | |
| 297a: 00 | |
| 297b: 48 89 94 24 d0 00 00 mov %rdx,0xd0(%rsp) | |
| 2982: 00 | |
| 2983: 48 89 94 24 b8 00 00 mov %rdx,0xb8(%rsp) | |
| 298a: 00 | |
| 298b: 41 00 f7 add %sil,%r15b | |
| if (mlBits > 0) | |
| 298e: 45 84 c9 test %r9b,%r9b | |
| 2991: 74 1c je 29af <ZSTD_decompressBlock_internal+0x188f> | |
| size_t const value = BIT_lookBitsFast(bitD, nbBits); | |
| 2993: 48 8b 54 24 60 mov 0x60(%rsp),%rdx | |
| return (bitD->bitContainer << (bitD->bitsConsumed & regMask)) >> (((regMask+1)-nbBits) & regMask); | |
| 2998: 89 c1 mov %eax,%ecx | |
| 299a: 48 d3 e2 shl %cl,%rdx | |
| 299d: 44 89 c9 mov %r9d,%ecx | |
| 29a0: f6 d9 neg %cl | |
| 29a2: 48 d3 ea shr %cl,%rdx | |
| bitD->bitsConsumed += nbBits; | |
| 29a5: 44 01 c8 add %r9d,%eax | |
| 29a8: 89 44 24 68 mov %eax,0x68(%rsp) | |
| seq.matchLength += BIT_readBitsFast(&seqState->DStream, mlBits/*>0*/); | |
| 29ac: 48 01 d3 add %rdx,%rbx | |
| 29af: 48 89 9c 24 e0 01 00 mov %rbx,0x1e0(%rsp) | |
| 29b6: 00 | |
| 29b7: 4c 8b 4c 24 08 mov 0x8(%rsp),%r9 | |
| if (MEM_64bits() && UNLIKELY(totalBits >= STREAM_ACCUMULATOR_MIN_64-(LLFSELog+MLFSELog+OffFSELog))) | |
| 29bc: 41 80 ff 1f cmp $0x1f,%r15b | |
| 29c0: 72 09 jb 29cb <ZSTD_decompressBlock_internal+0x18ab> | |
| 29c2: 83 f8 40 cmp $0x40,%eax | |
| 29c5: 0f 86 a3 03 00 00 jbe 2d6e <ZSTD_decompressBlock_internal+0x1c4e> | |
| 29cb: 48 8b 54 24 60 mov 0x60(%rsp),%rdx | |
| if (llBits > 0) | |
| 29d0: 45 84 d2 test %r10b,%r10b | |
| 29d3: 48 8b 7c 24 28 mov 0x28(%rsp),%rdi | |
| 29d8: 74 1c je 29f6 <ZSTD_decompressBlock_internal+0x18d6> | |
| return (bitD->bitContainer << (bitD->bitsConsumed & regMask)) >> (((regMask+1)-nbBits) & regMask); | |
| 29da: 48 89 d6 mov %rdx,%rsi | |
| 29dd: 89 c1 mov %eax,%ecx | |
| 29df: 48 d3 e6 shl %cl,%rsi | |
| 29e2: 44 89 d1 mov %r10d,%ecx | |
| 29e5: f6 d9 neg %cl | |
| 29e7: 48 d3 ee shr %cl,%rsi | |
| bitD->bitsConsumed += nbBits; | |
| 29ea: 44 01 d0 add %r10d,%eax | |
| 29ed: 89 44 24 68 mov %eax,0x68(%rsp) | |
| seq.litLength += BIT_readBitsFast(&seqState->DStream, llBits/*>0*/); | |
| 29f1: 48 01 74 24 58 add %rsi,0x58(%rsp) | |
| return BIT_getMiddleBits(bitD->bitContainer, (sizeof(bitD->bitContainer)*8) - bitD->bitsConsumed - nbBits, nbBits); | |
| 29f6: 44 01 e8 add %r13d,%eax | |
| return (bitContainer >> (start & regMask)) & BIT_mask[nbBits]; | |
| 29f9: 89 c1 mov %eax,%ecx | |
| 29fb: f6 d9 neg %cl | |
| 29fd: 48 89 d6 mov %rdx,%rsi | |
| 2a00: 48 d3 ee shr %cl,%rsi | |
| 2a03: 44 89 e9 mov %r13d,%ecx | |
| 2a06: 23 34 8d 00 00 00 00 and 0x0(,%rcx,4),%esi | |
| DStatePtr->state = DInfo.nextState + lowBits; | |
| 2a0d: 48 03 b4 24 f0 00 00 add 0xf0(%rsp),%rsi | |
| 2a14: 00 | |
| 2a15: 48 89 b4 24 88 00 00 mov %rsi,0x88(%rsp) | |
| 2a1c: 00 | |
| return BIT_getMiddleBits(bitD->bitContainer, (sizeof(bitD->bitContainer)*8) - bitD->bitsConsumed - nbBits, nbBits); | |
| 2a1d: 44 01 e0 add %r12d,%eax | |
| return (bitContainer >> (start & regMask)) & BIT_mask[nbBits]; | |
| 2a20: 89 c1 mov %eax,%ecx | |
| 2a22: f6 d9 neg %cl | |
| 2a24: 48 89 d6 mov %rdx,%rsi | |
| 2a27: 48 d3 ee shr %cl,%rsi | |
| 2a2a: 44 89 e1 mov %r12d,%ecx | |
| 2a2d: 23 34 8d 00 00 00 00 and 0x0(,%rcx,4),%esi | |
| 2a34: 8b 6c 24 50 mov 0x50(%rsp),%ebp | |
| return BIT_getMiddleBits(bitD->bitContainer, (sizeof(bitD->bitContainer)*8) - bitD->bitsConsumed - nbBits, nbBits); | |
| 2a38: 01 e8 add %ebp,%eax | |
| return (bitContainer >> (start & regMask)) & BIT_mask[nbBits]; | |
| 2a3a: 89 c1 mov %eax,%ecx | |
| 2a3c: f6 d9 neg %cl | |
| 2a3e: 48 d3 ea shr %cl,%rdx | |
| 2a41: 48 03 b4 24 d8 00 00 add 0xd8(%rsp),%rsi | |
| 2a48: 00 | |
| 2a49: 89 e9 mov %ebp,%ecx | |
| 2a4b: 23 14 8d 00 00 00 00 and 0x0(,%rcx,4),%edx | |
| 2a52: 48 89 b4 24 a8 00 00 mov %rsi,0xa8(%rsp) | |
| 2a59: 00 | |
| 2a5a: 48 03 54 24 48 add 0x48(%rsp),%rdx | |
| bitD->bitsConsumed += nbBits; | |
| 2a5f: 89 44 24 68 mov %eax,0x68(%rsp) | |
| 2a63: 48 89 94 24 98 00 00 mov %rdx,0x98(%rsp) | |
| 2a6a: 00 | |
| 2a6b: 4c 8b 7c 24 30 mov 0x30(%rsp),%r15 | |
| size_t const oneSeqSize = ZSTD_execSequence(op, oend, sequences[(seqNb-ADVANCED_SEQS) & STORED_SEQS_MASK], &litPtr, litEnd, prefixStart, dictStart, dictEnd); | |
| 2a70: 44 89 f8 mov %r15d,%eax | |
| 2a73: 83 e0 07 and $0x7,%eax | |
| 2a76: 48 8d 04 40 lea (%rax,%rax,2),%rax | |
| 2a7a: 48 8b 94 c4 00 01 00 mov 0x100(%rsp,%rax,8),%rdx | |
| 2a81: 00 | |
| 2a82: 4c 8b ac c4 08 01 00 mov 0x108(%rsp,%rax,8),%r13 | |
| 2a89: 00 | |
| 2a8a: 48 89 44 24 48 mov %rax,0x48(%rsp) | |
| 2a8f: 4c 8b a4 c4 10 01 00 mov 0x110(%rsp,%rax,8),%r12 | |
| 2a96: 00 | |
| const BYTE* const iLitEnd = *litPtr + sequence.litLength; | |
| 2a97: 48 8b 8c 24 e0 00 00 mov 0xe0(%rsp),%rcx | |
| 2a9e: 00 | |
| 2a9f: 48 8d 04 11 lea (%rcx,%rdx,1),%rax | |
| if (UNLIKELY( | |
| 2aa3: 48 3b 84 24 f8 00 00 cmp 0xf8(%rsp),%rax | |
| 2aaa: 00 | |
| 2aab: 0f 87 db 01 00 00 ja 2c8c <ZSTD_decompressBlock_internal+0x1b6c> | |
| 2ab1: 4e 8d 1c 2a lea (%rdx,%r13,1),%r11 | |
| 2ab5: 4a 8d 34 1f lea (%rdi,%r11,1),%rsi | |
| 2ab9: 48 3b b4 24 d8 01 00 cmp 0x1d8(%rsp),%rsi | |
| 2ac0: 00 | |
| 2ac1: 0f 87 c5 01 00 00 ja 2c8c <ZSTD_decompressBlock_internal+0x1b6c> | |
| 2ac7: 48 8d 1c 17 lea (%rdi,%rdx,1),%rbx | |
| 2acb: 48 89 dd mov %rbx,%rbp | |
| 2ace: 4c 29 e5 sub %r12,%rbp | |
| ZSTD_memcpy(dst, src, 16); | |
| 2ad1: 0f 10 01 movups (%rcx),%xmm0 | |
| 2ad4: 0f 11 07 movups %xmm0,(%rdi) | |
| if (UNLIKELY(sequence.litLength > 16)) { | |
| 2ad7: 48 83 fa 11 cmp $0x11,%rdx | |
| 2adb: 4c 8b 54 24 20 mov 0x20(%rsp),%r10 | |
| 2ae0: 0f 83 f5 01 00 00 jae 2cdb <ZSTD_decompressBlock_internal+0x1bbb> | |
| *litPtr = iLitEnd; /* update for next sequence */ | |
| 2ae6: 48 89 84 24 e0 00 00 mov %rax,0xe0(%rsp) | |
| 2aed: 00 | |
| if (sequence.offset > (size_t)(oLitEnd - prefixStart)) { | |
| 2aee: 48 89 d8 mov %rbx,%rax | |
| 2af1: 4d 89 c8 mov %r9,%r8 | |
| 2af4: 4c 29 c8 sub %r9,%rax | |
| 2af7: 4c 39 e0 cmp %r12,%rax | |
| 2afa: 0f 83 98 00 00 00 jae 2b98 <ZSTD_decompressBlock_internal+0x1a78> | |
| RETURN_ERROR_IF(UNLIKELY(sequence.offset > (size_t)(oLitEnd - virtualStart)), corruption_detected, ""); | |
| 2b00: 48 89 d8 mov %rbx,%rax | |
| 2b03: 48 2b 84 24 d0 01 00 sub 0x1d0(%rsp),%rax | |
| 2b0a: 00 | |
| 2b0b: 4c 39 e0 cmp %r12,%rax | |
| 2b0e: 0f 82 0d 0a 00 00 jb 3521 <ZSTD_decompressBlock_internal+0x2401> | |
| 2b14: 4d 89 f7 mov %r14,%r15 | |
| 2b17: 4d 89 de mov %r11,%r14 | |
| match = dictEnd + (match - prefixStart); | |
| 2b1a: 4c 29 c5 sub %r8,%rbp | |
| 2b1d: 48 8b 4c 24 38 mov 0x38(%rsp),%rcx | |
| 2b22: 48 8d 34 29 lea (%rcx,%rbp,1),%rsi | |
| if (match + sequence.matchLength <= dictEnd) { | |
| 2b26: 4a 8d 04 2e lea (%rsi,%r13,1),%rax | |
| 2b2a: 48 39 c8 cmp %rcx,%rax | |
| 2b2d: 0f 86 b3 00 00 00 jbe 2be6 <ZSTD_decompressBlock_internal+0x1ac6> | |
| { size_t const length1 = dictEnd - match; | |
| 2b33: 48 89 ea mov %rbp,%rdx | |
| 2b36: 48 f7 da neg %rdx | |
| ZSTD_memmove(oLitEnd, match, length1); | |
| 2b39: 48 89 df mov %rbx,%rdi | |
| 2b3c: e8 00 00 00 00 callq 2b41 <ZSTD_decompressBlock_internal+0x1a21> | |
| op = oLitEnd + length1; | |
| 2b41: 48 29 eb sub %rbp,%rbx | |
| sequence.matchLength -= length1; | |
| 2b44: 49 01 ed add %rbp,%r13 | |
| 2b47: 4c 8b 44 24 08 mov 0x8(%rsp),%r8 | |
| 2b4c: 4c 89 c5 mov %r8,%rbp | |
| 2b4f: 48 8b 54 24 18 mov 0x18(%rsp),%rdx | |
| 2b54: 4c 8b 54 24 20 mov 0x20(%rsp),%r10 | |
| 2b59: 48 8b 7c 24 28 mov 0x28(%rsp),%rdi | |
| 2b5e: 4d 89 f3 mov %r14,%r11 | |
| 2b61: 4d 89 fe mov %r15,%r14 | |
| 2b64: eb 37 jmp 2b9d <ZSTD_decompressBlock_internal+0x1a7d> | |
| if (LIKELY((ofBits == 0))) { | |
| 2b66: 40 84 f6 test %sil,%sil | |
| 2b69: 0f 85 43 02 00 00 jne 2db2 <ZSTD_decompressBlock_internal+0x1c92> | |
| U32 const ll0 = (llBase == 0); | |
| 2b6f: 85 ed test %ebp,%ebp | |
| if (LIKELY(!ll0)) | |
| 2b71: 0f 84 85 02 00 00 je 2dfc <ZSTD_decompressBlock_internal+0x1cdc> | |
| offset = seqState->prevOffset[0]; | |
| 2b77: 48 8b 8c 24 b8 00 00 mov 0xb8(%rsp),%rcx | |
| 2b7e: 00 | |
| 2b7f: 48 89 8c 24 d0 00 00 mov %rcx,0xd0(%rsp) | |
| 2b86: 00 | |
| 2b87: 41 00 f7 add %sil,%r15b | |
| if (mlBits > 0) | |
| 2b8a: 45 84 c9 test %r9b,%r9b | |
| 2b8d: 0f 85 00 fe ff ff jne 2993 <ZSTD_decompressBlock_internal+0x1873> | |
| 2b93: e9 17 fe ff ff jmpq 29af <ZSTD_decompressBlock_internal+0x188f> | |
| 2b98: 48 8b 54 24 18 mov 0x18(%rsp),%rdx | |
| if (LIKELY(sequence.offset >= WILDCOPY_VECLEN)) { | |
| 2b9d: 49 83 fc 10 cmp $0x10,%r12 | |
| 2ba1: 0f 82 83 01 00 00 jb 2d2a <ZSTD_decompressBlock_internal+0x1c0a> | |
| 2ba7: 0f 10 45 00 movups 0x0(%rbp),%xmm0 | |
| 2bab: 0f 11 03 movups %xmm0,(%rbx) | |
| if (16 >= length) return; | |
| 2bae: 49 83 fd 11 cmp $0x11,%r13 | |
| 2bb2: 7c 57 jl 2c0b <ZSTD_decompressBlock_internal+0x1aeb> | |
| 2bb4: 49 01 dd add %rbx,%r13 | |
| do { | |
| 2bb7: 48 83 c5 10 add $0x10,%rbp | |
| 2bbb: b8 10 00 00 00 mov $0x10,%eax | |
| ZSTD_memcpy(dst, src, 16); | |
| 2bc0: 0f 10 44 05 f0 movups -0x10(%rbp,%rax,1),%xmm0 | |
| 2bc5: 0f 11 04 03 movups %xmm0,(%rbx,%rax,1) | |
| 2bc9: 0f 10 44 05 00 movups 0x0(%rbp,%rax,1),%xmm0 | |
| 2bce: 0f 11 44 03 10 movups %xmm0,0x10(%rbx,%rax,1) | |
| while (op < oend); | |
| 2bd3: 48 8d 0c 03 lea (%rbx,%rax,1),%rcx | |
| 2bd7: 48 83 c1 20 add $0x20,%rcx | |
| 2bdb: 48 83 c0 20 add $0x20,%rax | |
| 2bdf: 4c 39 e9 cmp %r13,%rcx | |
| } | |
| 2be2: 72 dc jb 2bc0 <ZSTD_decompressBlock_internal+0x1aa0> | |
| 2be4: eb 25 jmp 2c0b <ZSTD_decompressBlock_internal+0x1aeb> | |
| ZSTD_memmove(oLitEnd, match, sequence.matchLength); | |
| 2be6: 48 89 df mov %rbx,%rdi | |
| 2be9: 4c 89 ea mov %r13,%rdx | |
| 2bec: e8 00 00 00 00 callq 2bf1 <ZSTD_decompressBlock_internal+0x1ad1> | |
| 2bf1: 48 8b 54 24 18 mov 0x18(%rsp),%rdx | |
| 2bf6: 4c 8b 54 24 20 mov 0x20(%rsp),%r10 | |
| 2bfb: 4c 8b 44 24 08 mov 0x8(%rsp),%r8 | |
| 2c00: 48 8b 7c 24 28 mov 0x28(%rsp),%rdi | |
| 2c05: 4d 89 f3 mov %r14,%r11 | |
| 2c08: 4d 89 fe mov %r15,%r14 | |
| 2c0b: 49 83 fb 88 cmp $0xffffffffffffff88,%r11 | |
| 2c0f: 44 8b 4c 24 14 mov 0x14(%rsp),%r9d | |
| if (ZSTD_isError(oneSeqSize)) return oneSeqSize; | |
| 2c14: 0f 87 0e 09 00 00 ja 3528 <ZSTD_decompressBlock_internal+0x2408> | |
| 2c1a: 48 8b 74 24 58 mov 0x58(%rsp),%rsi | |
| prefetchPos += sequence.litLength; | |
| 2c1f: 49 01 f6 add %rsi,%r14 | |
| 2c22: 48 8b 9c 24 d0 00 00 mov 0xd0(%rsp),%rbx | |
| 2c29: 00 | |
| { const BYTE* const matchBase = (sequence.offset > prefetchPos) ? dictEnd : prefixStart; | |
| 2c2a: 49 39 de cmp %rbx,%r14 | |
| 2c2d: 4c 89 c0 mov %r8,%rax | |
| 2c30: 48 0f 42 44 24 38 cmovb 0x38(%rsp),%rax | |
| 2c36: 48 8b 4c 24 48 mov 0x48(%rsp),%rcx | |
| 2c3b: 48 8d 0c cc lea (%rsp,%rcx,8),%rcx | |
| 2c3f: 48 81 c1 00 01 00 00 add $0x100,%rcx | |
| const BYTE* const match = matchBase + prefetchPos - sequence.offset; /* note : this operation can overflow when seq.offset is really too large, which can only happen when input is corrupted. | |
| 2c46: 4c 01 f0 add %r14,%rax | |
| 2c49: 48 29 d8 sub %rbx,%rax | |
| PREFETCH_L1(match); PREFETCH_L1(match+CACHELINE_SIZE); /* note : it's safe to invoke PREFETCH() on any memory address, including invalid ones */ | |
| 2c4c: 0f 18 08 prefetcht0 (%rax) | |
| 2c4f: 0f 18 48 40 prefetcht0 0x40(%rax) | |
| 2c53: 48 8b 84 24 e0 01 00 mov 0x1e0(%rsp),%rax | |
| 2c5a: 00 | |
| return prefetchPos + sequence.matchLength; | |
| 2c5b: 49 01 c6 add %rax,%r14 | |
| sequences[seqNb & STORED_SEQS_MASK] = sequence; | |
| 2c5e: 48 89 31 mov %rsi,(%rcx) | |
| 2c61: 48 89 41 08 mov %rax,0x8(%rcx) | |
| 2c65: 48 89 59 10 mov %rbx,0x10(%rcx) | |
| op += oneSeqSize; | |
| 2c69: 4c 01 df add %r11,%rdi | |
| 2c6c: 4c 8b 7c 24 30 mov 0x30(%rsp),%r15 | |
| for ( ; (BIT_reloadDStream(&(seqState.DStream)) <= BIT_DStream_completed) && (seqNb<nbSeq) ; seqNb++) { | |
| 2c71: 41 83 c7 01 add $0x1,%r15d | |
| if (bitD->bitsConsumed > (sizeof(bitD->bitContainer)*8)) /* overflow detected, like end of stream */ | |
| 2c75: 8b 44 24 68 mov 0x68(%rsp),%eax | |
| 2c79: 48 89 7c 24 28 mov %rdi,0x28(%rsp) | |
| 2c7e: 83 f8 41 cmp $0x41,%eax | |
| 2c81: 0f 82 b7 fb ff ff jb 283e <ZSTD_decompressBlock_internal+0x171e> | |
| 2c87: e9 93 03 00 00 jmpq 301f <ZSTD_decompressBlock_internal+0x1eff> | |
| 2c8c: 48 8b 5c 24 18 mov 0x18(%rsp),%rbx | |
| return ZSTD_execSequenceEnd(op, oend, sequence, litPtr, litLimit, prefixStart, virtualStart, dictEnd); | |
| 2c91: 48 89 de mov %rbx,%rsi | |
| 2c94: 4c 89 e9 mov %r13,%rcx | |
| 2c97: 4d 89 e0 mov %r12,%r8 | |
| 2c9a: 4c 8d 8c 24 e0 00 00 lea 0xe0(%rsp),%r9 | |
| 2ca1: 00 | |
| 2ca2: ff 74 24 38 pushq 0x38(%rsp) | |
| 2ca6: ff b4 24 d8 01 00 00 pushq 0x1d8(%rsp) | |
| 2cad: ff 74 24 18 pushq 0x18(%rsp) | |
| 2cb1: ff b4 24 10 01 00 00 pushq 0x110(%rsp) | |
| 2cb8: e8 c3 1f 00 00 callq 4c80 <ZSTD_execSequenceEnd> | |
| 2cbd: 48 8b 7c 24 48 mov 0x48(%rsp),%rdi | |
| 2cc2: 4c 8b 44 24 28 mov 0x28(%rsp),%r8 | |
| 2cc7: 48 89 da mov %rbx,%rdx | |
| 2cca: 48 83 c4 20 add $0x20,%rsp | |
| 2cce: 49 89 c3 mov %rax,%r11 | |
| 2cd1: 4c 8b 54 24 20 mov 0x20(%rsp),%r10 | |
| 2cd6: e9 30 ff ff ff jmpq 2c0b <ZSTD_decompressBlock_internal+0x1aeb> | |
| ZSTD_wildcopy(op+16, (*litPtr)+16, sequence.litLength-16, ZSTD_no_overlap); | |
| 2cdb: 48 83 c2 f0 add $0xfffffffffffffff0,%rdx | |
| ZSTD_memcpy(dst, src, 16); | |
| 2cdf: 0f 10 41 10 movups 0x10(%rcx),%xmm0 | |
| 2ce3: 0f 11 47 10 movups %xmm0,0x10(%rdi) | |
| if (16 >= length) return; | |
| 2ce7: 48 83 fa 11 cmp $0x11,%rdx | |
| 2ceb: 0f 8c f5 fd ff ff jl 2ae6 <ZSTD_decompressBlock_internal+0x19c6> | |
| op += 16; | |
| 2cf1: 4c 8d 47 20 lea 0x20(%rdi),%r8 | |
| do { | |
| 2cf5: 48 83 c1 30 add $0x30,%rcx | |
| 2cf9: 31 f6 xor %esi,%esi | |
| ZSTD_memcpy(dst, src, 16); | |
| 2cfb: 0f 10 44 31 f0 movups -0x10(%rcx,%rsi,1),%xmm0 | |
| 2d00: 41 0f 11 04 30 movups %xmm0,(%r8,%rsi,1) | |
| 2d05: 0f 10 04 31 movups (%rcx,%rsi,1),%xmm0 | |
| 2d09: 41 0f 11 44 30 10 movups %xmm0,0x10(%r8,%rsi,1) | |
| while (op < oend); | |
| 2d0f: 49 8d 14 30 lea (%r8,%rsi,1),%rdx | |
| 2d13: 48 83 c2 20 add $0x20,%rdx | |
| 2d17: 48 83 c6 20 add $0x20,%rsi | |
| 2d1b: 48 39 da cmp %rbx,%rdx | |
| 2d1e: 4c 8b 4c 24 08 mov 0x8(%rsp),%r9 | |
| } | |
| 2d23: 72 d6 jb 2cfb <ZSTD_decompressBlock_internal+0x1bdb> | |
| 2d25: e9 bc fd ff ff jmpq 2ae6 <ZSTD_decompressBlock_internal+0x19c6> | |
| if (offset < 8) { | |
| 2d2a: 49 83 fc 07 cmp $0x7,%r12 | |
| 2d2e: 0f 87 e5 00 00 00 ja 2e19 <ZSTD_decompressBlock_internal+0x1cf9> | |
| int const sub2 = dec64table[offset]; | |
| 2d34: 4a 63 04 a5 00 00 00 movslq 0x0(,%r12,4),%rax | |
| 2d3b: 00 | |
| (*op)[0] = (*ip)[0]; | |
| 2d3c: 8a 4d 00 mov 0x0(%rbp),%cl | |
| 2d3f: 88 0b mov %cl,(%rbx) | |
| (*op)[1] = (*ip)[1]; | |
| 2d41: 8a 4d 01 mov 0x1(%rbp),%cl | |
| 2d44: 88 4b 01 mov %cl,0x1(%rbx) | |
| (*op)[2] = (*ip)[2]; | |
| 2d47: 8a 4d 02 mov 0x2(%rbp),%cl | |
| 2d4a: 88 4b 02 mov %cl,0x2(%rbx) | |
| (*op)[3] = (*ip)[3]; | |
| 2d4d: 8a 4d 03 mov 0x3(%rbp),%cl | |
| 2d50: 88 4b 03 mov %cl,0x3(%rbx) | |
| *ip += dec32table[offset]; | |
| 2d53: 42 8b 0c a5 00 00 00 mov 0x0(,%r12,4),%ecx | |
| 2d5a: 00 | |
| 2d5b: 48 8d 34 29 lea (%rcx,%rbp,1),%rsi | |
| *ip -= sub2; | |
| 2d5f: 48 29 c6 sub %rax,%rsi | |
| static void ZSTD_copy4(void* dst, const void* src) { ZSTD_memcpy(dst, src, 4); } | |
| 2d62: 8b 44 0d 00 mov 0x0(%rbp,%rcx,1),%eax | |
| 2d66: 89 43 04 mov %eax,0x4(%rbx) | |
| 2d69: e9 b5 00 00 00 jmpq 2e23 <ZSTD_decompressBlock_internal+0x1d03> | |
| if (bitD->ptr >= bitD->limitPtr) { | |
| 2d6e: 4c 3b 9c 24 e8 01 00 cmp 0x1e8(%rsp),%r11 | |
| 2d75: 00 | |
| 2d76: 0f 83 7d 01 00 00 jae 2ef9 <ZSTD_decompressBlock_internal+0x1dd9> | |
| if (bitD->ptr == bitD->start) { | |
| 2d7c: 48 8b 4c 24 78 mov 0x78(%rsp),%rcx | |
| 2d81: 49 39 cb cmp %rcx,%r11 | |
| 2d84: 0f 84 8b 01 00 00 je 2f15 <ZSTD_decompressBlock_internal+0x1df5> | |
| { U32 nbBytes = bitD->bitsConsumed >> 3; | |
| 2d8a: 89 c2 mov %eax,%edx | |
| 2d8c: c1 ea 03 shr $0x3,%edx | |
| if (bitD->ptr - nbBytes < bitD->start) { | |
| 2d8f: 4c 89 de mov %r11,%rsi | |
| 2d92: 48 29 d6 sub %rdx,%rsi | |
| 2d95: 44 89 df mov %r11d,%edi | |
| 2d98: 29 cf sub %ecx,%edi | |
| 2d9a: 48 39 ce cmp %rcx,%rsi | |
| 2d9d: 0f 43 fa cmovae %edx,%edi | |
| bitD->ptr -= nbBytes; | |
| 2da0: 49 29 fb sub %rdi,%r11 | |
| 2da3: 4c 89 5c 24 70 mov %r11,0x70(%rsp) | |
| bitD->bitsConsumed -= nbBytes*8; | |
| 2da8: c1 e7 03 shl $0x3,%edi | |
| 2dab: 29 f8 sub %edi,%eax | |
| 2dad: e9 57 01 00 00 jmpq 2f09 <ZSTD_decompressBlock_internal+0x1de9> | |
| offset = ofBase + ll0 + BIT_readBitsFast(&seqState->DStream, 1); | |
| 2db2: 83 fd 01 cmp $0x1,%ebp | |
| 2db5: 41 83 d0 00 adc $0x0,%r8d | |
| size_t const value = BIT_lookBitsFast(bitD, nbBits); | |
| 2db9: 48 8b 54 24 60 mov 0x60(%rsp),%rdx | |
| return (bitD->bitContainer << (bitD->bitsConsumed & regMask)) >> (((regMask+1)-nbBits) & regMask); | |
| 2dbe: 89 c1 mov %eax,%ecx | |
| 2dc0: 48 d3 e2 shl %cl,%rdx | |
| 2dc3: 48 c1 ea 3f shr $0x3f,%rdx | |
| bitD->bitsConsumed += nbBits; | |
| 2dc7: 83 c0 01 add $0x1,%eax | |
| 2dca: 89 44 24 68 mov %eax,0x68(%rsp) | |
| 2dce: 4c 01 c2 add %r8,%rdx | |
| { size_t temp = (offset==3) ? seqState->prevOffset[0] - 1 : seqState->prevOffset[offset]; | |
| 2dd1: 48 83 fa 03 cmp $0x3,%rdx | |
| 2dd5: 0f 85 57 01 00 00 jne 2f32 <ZSTD_decompressBlock_internal+0x1e12> | |
| 2ddb: 48 8b 8c 24 b8 00 00 mov 0xb8(%rsp),%rcx | |
| 2de2: 00 | |
| 2de3: 48 83 c1 ff add $0xffffffffffffffff,%rcx | |
| temp += !temp; /* 0 is not valid; input is corrupted; force offset to 1 */ | |
| 2de7: 48 83 f9 01 cmp $0x1,%rcx | |
| 2deb: 48 83 d1 00 adc $0x0,%rcx | |
| 2def: 48 89 8c 24 d0 00 00 mov %rcx,0xd0(%rsp) | |
| 2df6: 00 | |
| 2df7: e9 54 01 00 00 jmpq 2f50 <ZSTD_decompressBlock_internal+0x1e30> | |
| seqState->prevOffset[1] = seqState->prevOffset[0]; | |
| 2dfc: 48 8b 8c 24 b8 00 00 mov 0xb8(%rsp),%rcx | |
| 2e03: 00 | |
| offset = seqState->prevOffset[1]; | |
| 2e04: 48 8b 94 24 c0 00 00 mov 0xc0(%rsp),%rdx | |
| 2e0b: 00 | |
| seqState->prevOffset[1] = seqState->prevOffset[0]; | |
| 2e0c: 48 89 8c 24 c0 00 00 mov %rcx,0xc0(%rsp) | |
| 2e13: 00 | |
| 2e14: e9 62 fb ff ff jmpq 297b <ZSTD_decompressBlock_internal+0x185b> | |
| ZSTD_memcpy(dst, src, 8); | |
| 2e19: 48 8b 45 00 mov 0x0(%rbp),%rax | |
| 2e1d: 48 89 03 mov %rax,(%rbx) | |
| *ip += 8; | |
| 2e20: 48 89 ee mov %rbp,%rsi | |
| if (sequence.matchLength > 8) { | |
| 2e23: 49 83 fd 09 cmp $0x9,%r13 | |
| 2e27: 0f 82 d9 01 00 00 jb 3006 <ZSTD_decompressBlock_internal+0x1ee6> | |
| 2e2d: 48 8d 4e 08 lea 0x8(%rsi),%rcx | |
| 2e31: 48 8d 53 08 lea 0x8(%rbx),%rdx | |
| ptrdiff_t diff = (BYTE*)dst - (const BYTE*)src; | |
| 2e35: 48 89 d7 mov %rdx,%rdi | |
| 2e38: 48 29 cf sub %rcx,%rdi | |
| BYTE* const oend = op + length; | |
| 2e3b: 4a 8d 04 2b lea (%rbx,%r13,1),%rax | |
| 2e3f: 48 83 ff 0f cmp $0xf,%rdi | |
| if (ovtype == ZSTD_overlap_src_before_dst && diff < WILDCOPY_VECLEN) { | |
| 2e43: 0f 8f 48 01 00 00 jg 2f91 <ZSTD_decompressBlock_internal+0x1e71> | |
| do { | |
| 2e49: 48 8d 7b 10 lea 0x10(%rbx),%rdi | |
| 2e4d: 48 39 f8 cmp %rdi,%rax | |
| 2e50: 49 89 fa mov %rdi,%r10 | |
| 2e53: 4c 0f 47 d0 cmova %rax,%r10 | |
| 2e57: 49 29 da sub %rbx,%r10 | |
| 2e5a: 49 83 c2 f7 add $0xfffffffffffffff7,%r10 | |
| 2e5e: 49 83 fa 18 cmp $0x18,%r10 | |
| 2e62: 0f 82 8b 01 00 00 jb 2ff3 <ZSTD_decompressBlock_internal+0x1ed3> | |
| 2e68: 48 39 f8 cmp %rdi,%rax | |
| 2e6b: 48 0f 47 f8 cmova %rax,%rdi | |
| 2e6f: 48 29 df sub %rbx,%rdi | |
| 2e72: 48 83 c7 07 add $0x7,%rdi | |
| 2e76: 48 83 e7 f8 and $0xfffffffffffffff8,%rdi | |
| 2e7a: 48 8d 2c 3e lea (%rsi,%rdi,1),%rbp | |
| 2e7e: 48 39 ea cmp %rbp,%rdx | |
| 2e81: 73 0c jae 2e8f <ZSTD_decompressBlock_internal+0x1d6f> | |
| 2e83: 48 01 df add %rbx,%rdi | |
| 2e86: 48 39 f9 cmp %rdi,%rcx | |
| 2e89: 0f 82 64 01 00 00 jb 2ff3 <ZSTD_decompressBlock_internal+0x1ed3> | |
| 2e8f: 49 c1 ea 03 shr $0x3,%r10 | |
| 2e93: 49 83 c2 01 add $0x1,%r10 | |
| 2e97: 4d 89 d0 mov %r10,%r8 | |
| 2e9a: 49 83 e0 fc and $0xfffffffffffffffc,%r8 | |
| 2e9e: 49 8d 78 fc lea -0x4(%r8),%rdi | |
| 2ea2: 49 89 f9 mov %rdi,%r9 | |
| 2ea5: 49 c1 e9 02 shr $0x2,%r9 | |
| 2ea9: 49 83 c1 01 add $0x1,%r9 | |
| 2ead: 48 85 ff test %rdi,%rdi | |
| 2eb0: 0f 84 16 01 00 00 je 2fcc <ZSTD_decompressBlock_internal+0x1eac> | |
| 2eb6: 4c 89 cf mov %r9,%rdi | |
| 2eb9: 48 83 e7 fe and $0xfffffffffffffffe,%rdi | |
| 2ebd: 48 f7 df neg %rdi | |
| 2ec0: 31 ed xor %ebp,%ebp | |
| ZSTD_memcpy(dst, src, 8); | |
| 2ec2: 0f 10 44 ee 08 movups 0x8(%rsi,%rbp,8),%xmm0 | |
| 2ec7: 0f 10 4c ee 18 movups 0x18(%rsi,%rbp,8),%xmm1 | |
| 2ecc: 0f 11 44 eb 08 movups %xmm0,0x8(%rbx,%rbp,8) | |
| 2ed1: 0f 11 4c eb 18 movups %xmm1,0x18(%rbx,%rbp,8) | |
| 2ed6: 0f 10 44 ee 28 movups 0x28(%rsi,%rbp,8),%xmm0 | |
| 2edb: 0f 10 4c ee 38 movups 0x38(%rsi,%rbp,8),%xmm1 | |
| 2ee0: 0f 11 44 eb 28 movups %xmm0,0x28(%rbx,%rbp,8) | |
| 2ee5: 0f 11 4c eb 38 movups %xmm1,0x38(%rbx,%rbp,8) | |
| 2eea: 48 83 c5 08 add $0x8,%rbp | |
| 2eee: 48 83 c7 02 add $0x2,%rdi | |
| 2ef2: 75 ce jne 2ec2 <ZSTD_decompressBlock_internal+0x1da2> | |
| 2ef4: e9 d5 00 00 00 jmpq 2fce <ZSTD_decompressBlock_internal+0x1eae> | |
| bitD->ptr -= bitD->bitsConsumed >> 3; | |
| 2ef9: 89 c1 mov %eax,%ecx | |
| 2efb: c1 e9 03 shr $0x3,%ecx | |
| 2efe: 49 29 cb sub %rcx,%r11 | |
| 2f01: 4c 89 5c 24 70 mov %r11,0x70(%rsp) | |
| bitD->bitsConsumed &= 7; | |
| 2f06: 83 e0 07 and $0x7,%eax | |
| 2f09: 89 44 24 68 mov %eax,0x68(%rsp) | |
| 2f0d: 49 8b 0b mov (%r11),%rcx | |
| 2f10: 48 89 4c 24 60 mov %rcx,0x60(%rsp) | |
| 2f15: 4c 8b 4c 24 08 mov 0x8(%rsp),%r9 | |
| 2f1a: 48 8b 54 24 60 mov 0x60(%rsp),%rdx | |
| if (llBits > 0) | |
| 2f1f: 45 84 d2 test %r10b,%r10b | |
| 2f22: 48 8b 7c 24 28 mov 0x28(%rsp),%rdi | |
| 2f27: 0f 85 ad fa ff ff jne 29da <ZSTD_decompressBlock_internal+0x18ba> | |
| 2f2d: e9 c4 fa ff ff jmpq 29f6 <ZSTD_decompressBlock_internal+0x18d6> | |
| { size_t temp = (offset==3) ? seqState->prevOffset[0] - 1 : seqState->prevOffset[offset]; | |
| 2f32: 48 8b 8c d4 b8 00 00 mov 0xb8(%rsp,%rdx,8),%rcx | |
| 2f39: 00 | |
| temp += !temp; /* 0 is not valid; input is corrupted; force offset to 1 */ | |
| 2f3a: 48 83 f9 01 cmp $0x1,%rcx | |
| 2f3e: 48 83 d1 00 adc $0x0,%rcx | |
| 2f42: 48 89 8c 24 d0 00 00 mov %rcx,0xd0(%rsp) | |
| 2f49: 00 | |
| if (offset != 1) seqState->prevOffset[2] = seqState->prevOffset[1]; | |
| 2f4a: 48 83 fa 01 cmp $0x1,%rdx | |
| 2f4e: 74 10 je 2f60 <ZSTD_decompressBlock_internal+0x1e40> | |
| 2f50: 48 8b 8c 24 c0 00 00 mov 0xc0(%rsp),%rcx | |
| 2f57: 00 | |
| 2f58: 48 89 8c 24 c8 00 00 mov %rcx,0xc8(%rsp) | |
| 2f5f: 00 | |
| seqState->prevOffset[1] = seqState->prevOffset[0]; | |
| 2f60: 48 8b 8c 24 b8 00 00 mov 0xb8(%rsp),%rcx | |
| 2f67: 00 | |
| 2f68: 48 89 8c 24 c0 00 00 mov %rcx,0xc0(%rsp) | |
| 2f6f: 00 | |
| 2f70: 48 8b 8c 24 d0 00 00 mov 0xd0(%rsp),%rcx | |
| 2f77: 00 | |
| seqState->prevOffset[0] = offset = temp; | |
| 2f78: 48 89 8c 24 b8 00 00 mov %rcx,0xb8(%rsp) | |
| 2f7f: 00 | |
| 2f80: 41 00 f7 add %sil,%r15b | |
| if (mlBits > 0) | |
| 2f83: 45 84 c9 test %r9b,%r9b | |
| 2f86: 0f 85 07 fa ff ff jne 2993 <ZSTD_decompressBlock_internal+0x1873> | |
| 2f8c: e9 1e fa ff ff jmpq 29af <ZSTD_decompressBlock_internal+0x188f> | |
| ZSTD_memcpy(dst, src, 16); | |
| 2f91: 0f 10 01 movups (%rcx),%xmm0 | |
| 2f94: 0f 11 02 movups %xmm0,(%rdx) | |
| if (16 >= length) return; | |
| 2f97: 49 83 fd 19 cmp $0x19,%r13 | |
| 2f9b: 7c 69 jl 3006 <ZSTD_decompressBlock_internal+0x1ee6> | |
| op += 16; | |
| 2f9d: 48 83 c3 18 add $0x18,%rbx | |
| do { | |
| 2fa1: 48 83 c6 28 add $0x28,%rsi | |
| 2fa5: 31 c9 xor %ecx,%ecx | |
| ZSTD_memcpy(dst, src, 16); | |
| 2fa7: 0f 10 44 0e f0 movups -0x10(%rsi,%rcx,1),%xmm0 | |
| 2fac: 0f 11 04 0b movups %xmm0,(%rbx,%rcx,1) | |
| 2fb0: 0f 10 04 0e movups (%rsi,%rcx,1),%xmm0 | |
| 2fb4: 0f 11 44 0b 10 movups %xmm0,0x10(%rbx,%rcx,1) | |
| while (op < oend); | |
| 2fb9: 48 8d 14 0b lea (%rbx,%rcx,1),%rdx | |
| 2fbd: 48 83 c2 20 add $0x20,%rdx | |
| 2fc1: 48 83 c1 20 add $0x20,%rcx | |
| 2fc5: 48 39 c2 cmp %rax,%rdx | |
| } | |
| 2fc8: 72 dd jb 2fa7 <ZSTD_decompressBlock_internal+0x1e87> | |
| 2fca: eb 3a jmp 3006 <ZSTD_decompressBlock_internal+0x1ee6> | |
| 2fcc: 31 ed xor %ebp,%ebp | |
| 2fce: 41 f6 c1 01 test $0x1,%r9b | |
| 2fd2: 74 12 je 2fe6 <ZSTD_decompressBlock_internal+0x1ec6> | |
| ZSTD_memcpy(dst, src, 8); | |
| 2fd4: 0f 10 04 e9 movups (%rcx,%rbp,8),%xmm0 | |
| 2fd8: 0f 10 4c e9 10 movups 0x10(%rcx,%rbp,8),%xmm1 | |
| 2fdd: 0f 11 04 ea movups %xmm0,(%rdx,%rbp,8) | |
| 2fe1: 0f 11 4c ea 10 movups %xmm1,0x10(%rdx,%rbp,8) | |
| } while (op < oend); | |
| 2fe6: 4d 39 c2 cmp %r8,%r10 | |
| 2fe9: 74 1b je 3006 <ZSTD_decompressBlock_internal+0x1ee6> | |
| 2feb: 4a 8d 14 c2 lea (%rdx,%r8,8),%rdx | |
| 2fef: 4a 8d 0c c1 lea (%rcx,%r8,8),%rcx | |
| ZSTD_memcpy(dst, src, 8); | |
| 2ff3: 48 8b 31 mov (%rcx),%rsi | |
| 2ff6: 48 89 32 mov %rsi,(%rdx) | |
| COPY8(op, ip) | |
| 2ff9: 48 83 c2 08 add $0x8,%rdx | |
| 2ffd: 48 83 c1 08 add $0x8,%rcx | |
| } while (op < oend); | |
| 3001: 48 39 c2 cmp %rax,%rdx | |
| 3004: 72 ed jb 2ff3 <ZSTD_decompressBlock_internal+0x1ed3> | |
| 3006: 48 8b 54 24 18 mov 0x18(%rsp),%rdx | |
| 300b: 4c 8b 54 24 20 mov 0x20(%rsp),%r10 | |
| 3010: 4c 8b 44 24 08 mov 0x8(%rsp),%r8 | |
| 3015: 48 8b 7c 24 28 mov 0x28(%rsp),%rdi | |
| 301a: e9 ec fb ff ff jmpq 2c0b <ZSTD_decompressBlock_internal+0x1aeb> | |
| 301f: 49 c7 c3 ec ff ff ff mov $0xffffffffffffffec,%r11 | |
| for ( ; (BIT_reloadDStream(&(seqState.DStream)) <= BIT_DStream_completed) && (seqNb<nbSeq) ; seqNb++) { | |
| 3026: 45 39 cf cmp %r9d,%r15d | |
| RETURN_ERROR_IF(seqNb<nbSeq, corruption_detected, ""); | |
| 3029: 0f 8c f9 04 00 00 jl 3528 <ZSTD_decompressBlock_internal+0x2408> | |
| seqNb -= seqAdvance; | |
| 302f: 44 2b bc 24 ec 00 00 sub 0xec(%rsp),%r15d | |
| 3036: 00 | |
| for ( ; seqNb<nbSeq ; seqNb++) { | |
| 3037: 45 39 cf cmp %r9d,%r15d | |
| 303a: 0f 8d f3 03 00 00 jge 3433 <ZSTD_decompressBlock_internal+0x2313> | |
| 3040: 4c 8b 74 24 40 mov 0x40(%rsp),%r14 | |
| 3045: 48 8b 7c 24 28 mov 0x28(%rsp),%rdi | |
| 304a: 4c 89 c6 mov %r8,%rsi | |
| size_t const oneSeqSize = ZSTD_execSequence(op, oend, sequences[seqNb&STORED_SEQS_MASK], &litPtr, litEnd, prefixStart, dictStart, dictEnd); | |
| 304d: 44 89 f8 mov %r15d,%eax | |
| 3050: 83 e0 07 and $0x7,%eax | |
| 3053: 48 8d 04 40 lea (%rax,%rax,2),%rax | |
| 3057: 48 8b 94 c4 00 01 00 mov 0x100(%rsp,%rax,8),%rdx | |
| 305e: 00 | |
| 305f: 4c 8b ac c4 08 01 00 mov 0x108(%rsp,%rax,8),%r13 | |
| 3066: 00 | |
| 3067: 4c 8b 84 c4 10 01 00 mov 0x110(%rsp,%rax,8),%r8 | |
| 306e: 00 | |
| size_t const sequenceLength = sequence.litLength + sequence.matchLength; | |
| 306f: 4e 8d 1c 2a lea (%rdx,%r13,1),%r11 | |
| 3073: 4a 8d 04 1f lea (%rdi,%r11,1),%rax | |
| 3077: 48 3b 84 24 d8 01 00 cmp 0x1d8(%rsp),%rax | |
| 307e: 00 | |
| if (UNLIKELY( | |
| 307f: 0f 87 55 01 00 00 ja 31da <ZSTD_decompressBlock_internal+0x20ba> | |
| 3085: 48 8b 8c 24 e0 00 00 mov 0xe0(%rsp),%rcx | |
| 308c: 00 | |
| 308d: 48 8d 04 11 lea (%rcx,%rdx,1),%rax | |
| 3091: 48 3b 84 24 f8 00 00 cmp 0xf8(%rsp),%rax | |
| 3098: 00 | |
| 3099: 0f 87 3b 01 00 00 ja 31da <ZSTD_decompressBlock_internal+0x20ba> | |
| 309f: 48 8d 2c 17 lea (%rdi,%rdx,1),%rbp | |
| 30a3: 48 89 eb mov %rbp,%rbx | |
| 30a6: 4c 29 c3 sub %r8,%rbx | |
| ZSTD_memcpy(dst, src, 16); | |
| 30a9: 0f 10 01 movups (%rcx),%xmm0 | |
| 30ac: 0f 11 07 movups %xmm0,(%rdi) | |
| if (UNLIKELY(sequence.litLength > 16)) { | |
| 30af: 48 83 fa 11 cmp $0x11,%rdx | |
| 30b3: 0f 83 6b 01 00 00 jae 3224 <ZSTD_decompressBlock_internal+0x2104> | |
| *litPtr = iLitEnd; /* update for next sequence */ | |
| 30b9: 48 89 84 24 e0 00 00 mov %rax,0xe0(%rsp) | |
| 30c0: 00 | |
| if (sequence.offset > (size_t)(oLitEnd - prefixStart)) { | |
| 30c1: 48 89 e8 mov %rbp,%rax | |
| 30c4: 48 89 f1 mov %rsi,%rcx | |
| 30c7: 48 29 f0 sub %rsi,%rax | |
| 30ca: 4c 39 c0 cmp %r8,%rax | |
| 30cd: 73 6f jae 313e <ZSTD_decompressBlock_internal+0x201e> | |
| 30cf: 4c 89 5c 24 30 mov %r11,0x30(%rsp) | |
| RETURN_ERROR_IF(UNLIKELY(sequence.offset > (size_t)(oLitEnd - virtualStart)), corruption_detected, ""); | |
| 30d4: 48 89 e8 mov %rbp,%rax | |
| 30d7: 48 2b 84 24 d0 01 00 sub 0x1d0(%rsp),%rax | |
| 30de: 00 | |
| 30df: 4c 39 c0 cmp %r8,%rax | |
| 30e2: 0f 82 39 04 00 00 jb 3521 <ZSTD_decompressBlock_internal+0x2401> | |
| 30e8: 49 89 fc mov %rdi,%r12 | |
| match = dictEnd + (match - prefixStart); | |
| 30eb: 48 29 cb sub %rcx,%rbx | |
| 30ee: 48 8b 4c 24 38 mov 0x38(%rsp),%rcx | |
| 30f3: 48 8d 34 19 lea (%rcx,%rbx,1),%rsi | |
| if (match + sequence.matchLength <= dictEnd) { | |
| 30f7: 4a 8d 04 2e lea (%rsi,%r13,1),%rax | |
| 30fb: 48 39 c8 cmp %rcx,%rax | |
| 30fe: 0f 86 90 00 00 00 jbe 3194 <ZSTD_decompressBlock_internal+0x2074> | |
| { size_t const length1 = dictEnd - match; | |
| 3104: 48 89 da mov %rbx,%rdx | |
| 3107: 48 f7 da neg %rdx | |
| ZSTD_memmove(oLitEnd, match, length1); | |
| 310a: 48 89 ef mov %rbp,%rdi | |
| 310d: 4c 89 44 24 28 mov %r8,0x28(%rsp) | |
| 3112: e8 00 00 00 00 callq 3117 <ZSTD_decompressBlock_internal+0x1ff7> | |
| 3117: 4c 8b 44 24 28 mov 0x28(%rsp),%r8 | |
| op = oLitEnd + length1; | |
| 311c: 48 29 dd sub %rbx,%rbp | |
| sequence.matchLength -= length1; | |
| 311f: 49 01 dd add %rbx,%r13 | |
| 3122: 48 8b 4c 24 08 mov 0x8(%rsp),%rcx | |
| 3127: 48 89 cb mov %rcx,%rbx | |
| 312a: 48 8b 54 24 18 mov 0x18(%rsp),%rdx | |
| 312f: 4c 8b 54 24 20 mov 0x20(%rsp),%r10 | |
| 3134: 4c 89 e7 mov %r12,%rdi | |
| 3137: 4c 8b 5c 24 30 mov 0x30(%rsp),%r11 | |
| 313c: eb 05 jmp 3143 <ZSTD_decompressBlock_internal+0x2023> | |
| 313e: 48 8b 54 24 18 mov 0x18(%rsp),%rdx | |
| if (LIKELY(sequence.offset >= WILDCOPY_VECLEN)) { | |
| 3143: 49 83 f8 10 cmp $0x10,%r8 | |
| 3147: 0f 82 26 01 00 00 jb 3273 <ZSTD_decompressBlock_internal+0x2153> | |
| 314d: 0f 10 03 movups (%rbx),%xmm0 | |
| 3150: 0f 11 45 00 movups %xmm0,0x0(%rbp) | |
| if (16 >= length) return; | |
| 3154: 49 83 fd 11 cmp $0x11,%r13 | |
| 3158: 7d 05 jge 315f <ZSTD_decompressBlock_internal+0x203f> | |
| 315a: 49 89 c8 mov %rcx,%r8 | |
| 315d: eb 57 jmp 31b6 <ZSTD_decompressBlock_internal+0x2096> | |
| 315f: 49 01 ed add %rbp,%r13 | |
| do { | |
| 3162: 48 83 c3 10 add $0x10,%rbx | |
| 3166: b8 10 00 00 00 mov $0x10,%eax | |
| 316b: 49 89 c8 mov %rcx,%r8 | |
| ZSTD_memcpy(dst, src, 16); | |
| 316e: 0f 10 44 03 f0 movups -0x10(%rbx,%rax,1),%xmm0 | |
| 3173: 0f 11 44 05 00 movups %xmm0,0x0(%rbp,%rax,1) | |
| 3178: 0f 10 04 03 movups (%rbx,%rax,1),%xmm0 | |
| 317c: 0f 11 44 05 10 movups %xmm0,0x10(%rbp,%rax,1) | |
| while (op < oend); | |
| 3181: 48 8d 0c 28 lea (%rax,%rbp,1),%rcx | |
| 3185: 48 83 c1 20 add $0x20,%rcx | |
| 3189: 48 83 c0 20 add $0x20,%rax | |
| 318d: 4c 39 e9 cmp %r13,%rcx | |
| } | |
| 3190: 72 dc jb 316e <ZSTD_decompressBlock_internal+0x204e> | |
| 3192: eb 22 jmp 31b6 <ZSTD_decompressBlock_internal+0x2096> | |
| ZSTD_memmove(oLitEnd, match, sequence.matchLength); | |
| 3194: 48 89 ef mov %rbp,%rdi | |
| 3197: 4c 89 ea mov %r13,%rdx | |
| 319a: e8 00 00 00 00 callq 319f <ZSTD_decompressBlock_internal+0x207f> | |
| 319f: 48 8b 54 24 18 mov 0x18(%rsp),%rdx | |
| 31a4: 4c 8b 54 24 20 mov 0x20(%rsp),%r10 | |
| 31a9: 4c 8b 44 24 08 mov 0x8(%rsp),%r8 | |
| 31ae: 4c 89 e7 mov %r12,%rdi | |
| 31b1: 4c 8b 5c 24 30 mov 0x30(%rsp),%r11 | |
| 31b6: 49 83 fb 88 cmp $0xffffffffffffff88,%r11 | |
| 31ba: 44 8b 4c 24 14 mov 0x14(%rsp),%r9d | |
| 31bf: 0f 87 63 03 00 00 ja 3528 <ZSTD_decompressBlock_internal+0x2408> | |
| if (ZSTD_isError(oneSeqSize)) return oneSeqSize; | |
| 31c5: 4c 01 df add %r11,%rdi | |
| for ( ; seqNb<nbSeq ; seqNb++) { | |
| 31c8: 41 83 c7 01 add $0x1,%r15d | |
| 31cc: 45 39 cf cmp %r9d,%r15d | |
| 31cf: 0f 85 75 fe ff ff jne 304a <ZSTD_decompressBlock_internal+0x1f2a> | |
| 31d5: e9 63 02 00 00 jmpq 343d <ZSTD_decompressBlock_internal+0x231d> | |
| 31da: 48 8b 5c 24 18 mov 0x18(%rsp),%rbx | |
| return ZSTD_execSequenceEnd(op, oend, sequence, litPtr, litLimit, prefixStart, virtualStart, dictEnd); | |
| 31df: 48 89 de mov %rbx,%rsi | |
| 31e2: 4c 89 e9 mov %r13,%rcx | |
| 31e5: 4c 8d 8c 24 e0 00 00 lea 0xe0(%rsp),%r9 | |
| 31ec: 00 | |
| 31ed: ff 74 24 38 pushq 0x38(%rsp) | |
| 31f1: ff b4 24 d8 01 00 00 pushq 0x1d8(%rsp) | |
| 31f8: ff 74 24 18 pushq 0x18(%rsp) | |
| 31fc: ff b4 24 10 01 00 00 pushq 0x110(%rsp) | |
| 3203: 48 89 fd mov %rdi,%rbp | |
| 3206: e8 75 1a 00 00 callq 4c80 <ZSTD_execSequenceEnd> | |
| 320b: 48 89 ef mov %rbp,%rdi | |
| 320e: 4c 8b 44 24 28 mov 0x28(%rsp),%r8 | |
| 3213: 4c 8b 54 24 40 mov 0x40(%rsp),%r10 | |
| 3218: 48 89 da mov %rbx,%rdx | |
| 321b: 48 83 c4 20 add $0x20,%rsp | |
| 321f: 49 89 c3 mov %rax,%r11 | |
| 3222: eb 92 jmp 31b6 <ZSTD_decompressBlock_internal+0x2096> | |
| ZSTD_wildcopy(op+16, (*litPtr)+16, sequence.litLength-16, ZSTD_no_overlap); | |
| 3224: 48 83 c2 f0 add $0xfffffffffffffff0,%rdx | |
| ZSTD_memcpy(dst, src, 16); | |
| 3228: 0f 10 41 10 movups 0x10(%rcx),%xmm0 | |
| 322c: 0f 11 47 10 movups %xmm0,0x10(%rdi) | |
| if (16 >= length) return; | |
| 3230: 48 83 fa 11 cmp $0x11,%rdx | |
| 3234: 0f 8c 7f fe ff ff jl 30b9 <ZSTD_decompressBlock_internal+0x1f99> | |
| op += 16; | |
| 323a: 4c 8d 4f 20 lea 0x20(%rdi),%r9 | |
| do { | |
| 323e: 48 83 c1 30 add $0x30,%rcx | |
| 3242: 31 d2 xor %edx,%edx | |
| ZSTD_memcpy(dst, src, 16); | |
| 3244: 0f 10 44 11 f0 movups -0x10(%rcx,%rdx,1),%xmm0 | |
| 3249: 41 0f 11 04 11 movups %xmm0,(%r9,%rdx,1) | |
| 324e: 0f 10 04 11 movups (%rcx,%rdx,1),%xmm0 | |
| 3252: 41 0f 11 44 11 10 movups %xmm0,0x10(%r9,%rdx,1) | |
| while (op < oend); | |
| 3258: 49 8d 34 11 lea (%r9,%rdx,1),%rsi | |
| 325c: 48 83 c6 20 add $0x20,%rsi | |
| 3260: 48 83 c2 20 add $0x20,%rdx | |
| 3264: 48 39 ee cmp %rbp,%rsi | |
| 3267: 48 8b 74 24 08 mov 0x8(%rsp),%rsi | |
| } | |
| 326c: 72 d6 jb 3244 <ZSTD_decompressBlock_internal+0x2124> | |
| 326e: e9 46 fe ff ff jmpq 30b9 <ZSTD_decompressBlock_internal+0x1f99> | |
| 3273: 4d 89 dc mov %r11,%r12 | |
| 3276: 49 89 fb mov %rdi,%r11 | |
| if (offset < 8) { | |
| 3279: 49 83 f8 07 cmp $0x7,%r8 | |
| 327d: 77 3c ja 32bb <ZSTD_decompressBlock_internal+0x219b> | |
| 327f: 4c 89 c0 mov %r8,%rax | |
| 3282: 4c 89 c2 mov %r8,%rdx | |
| int const sub2 = dec64table[offset]; | |
| 3285: 48 63 04 85 00 00 00 movslq 0x0(,%rax,4),%rax | |
| 328c: 00 | |
| (*op)[0] = (*ip)[0]; | |
| 328d: 8a 0b mov (%rbx),%cl | |
| 328f: 88 4d 00 mov %cl,0x0(%rbp) | |
| (*op)[1] = (*ip)[1]; | |
| 3292: 8a 4b 01 mov 0x1(%rbx),%cl | |
| 3295: 88 4d 01 mov %cl,0x1(%rbp) | |
| (*op)[2] = (*ip)[2]; | |
| 3298: 8a 4b 02 mov 0x2(%rbx),%cl | |
| 329b: 88 4d 02 mov %cl,0x2(%rbp) | |
| (*op)[3] = (*ip)[3]; | |
| 329e: 8a 4b 03 mov 0x3(%rbx),%cl | |
| 32a1: 88 4d 03 mov %cl,0x3(%rbp) | |
| *ip += dec32table[offset]; | |
| 32a4: 42 8b 0c 85 00 00 00 mov 0x0(,%r8,4),%ecx | |
| 32ab: 00 | |
| 32ac: 48 8d 34 0b lea (%rbx,%rcx,1),%rsi | |
| *ip -= sub2; | |
| 32b0: 48 29 c6 sub %rax,%rsi | |
| static void ZSTD_copy4(void* dst, const void* src) { ZSTD_memcpy(dst, src, 4); } | |
| 32b3: 8b 04 0b mov (%rbx,%rcx,1),%eax | |
| 32b6: 89 45 04 mov %eax,0x4(%rbp) | |
| 32b9: eb 0a jmp 32c5 <ZSTD_decompressBlock_internal+0x21a5> | |
| ZSTD_memcpy(dst, src, 8); | |
| 32bb: 48 8b 03 mov (%rbx),%rax | |
| 32be: 48 89 45 00 mov %rax,0x0(%rbp) | |
| *ip += 8; | |
| 32c2: 48 89 de mov %rbx,%rsi | |
| if (sequence.matchLength > 8) { | |
| 32c5: 49 83 fd 09 cmp $0x9,%r13 | |
| 32c9: 0f 82 45 01 00 00 jb 3414 <ZSTD_decompressBlock_internal+0x22f4> | |
| 32cf: 48 8d 4e 08 lea 0x8(%rsi),%rcx | |
| 32d3: 48 8d 55 08 lea 0x8(%rbp),%rdx | |
| ptrdiff_t diff = (BYTE*)dst - (const BYTE*)src; | |
| 32d7: 48 89 d7 mov %rdx,%rdi | |
| 32da: 48 29 cf sub %rcx,%rdi | |
| BYTE* const oend = op + length; | |
| 32dd: 48 89 e8 mov %rbp,%rax | |
| 32e0: 4c 01 e8 add %r13,%rax | |
| 32e3: 48 83 ff 0f cmp $0xf,%rdi | |
| if (ovtype == ZSTD_overlap_src_before_dst && diff < WILDCOPY_VECLEN) { | |
| 32e7: 0f 8f b1 00 00 00 jg 339e <ZSTD_decompressBlock_internal+0x227e> | |
| do { | |
| 32ed: 48 8d 7d 10 lea 0x10(%rbp),%rdi | |
| 32f1: 48 39 f8 cmp %rdi,%rax | |
| 32f4: 49 89 fa mov %rdi,%r10 | |
| 32f7: 4c 0f 47 d0 cmova %rax,%r10 | |
| 32fb: 49 29 ea sub %rbp,%r10 | |
| 32fe: 49 83 c2 f7 add $0xfffffffffffffff7,%r10 | |
| 3302: 49 83 fa 18 cmp $0x18,%r10 | |
| 3306: 0f 82 f5 00 00 00 jb 3401 <ZSTD_decompressBlock_internal+0x22e1> | |
| 330c: 48 39 f8 cmp %rdi,%rax | |
| 330f: 48 0f 47 f8 cmova %rax,%rdi | |
| 3313: 48 29 ef sub %rbp,%rdi | |
| 3316: 48 83 c7 f7 add $0xfffffffffffffff7,%rdi | |
| 331a: 48 83 e7 f8 and $0xfffffffffffffff8,%rdi | |
| 331e: 48 8d 1c 3e lea (%rsi,%rdi,1),%rbx | |
| 3322: 48 83 c3 10 add $0x10,%rbx | |
| 3326: 48 39 da cmp %rbx,%rdx | |
| 3329: 73 10 jae 333b <ZSTD_decompressBlock_internal+0x221b> | |
| 332b: 48 01 ef add %rbp,%rdi | |
| 332e: 48 83 c7 10 add $0x10,%rdi | |
| 3332: 48 39 f9 cmp %rdi,%rcx | |
| 3335: 0f 82 c6 00 00 00 jb 3401 <ZSTD_decompressBlock_internal+0x22e1> | |
| 333b: 49 c1 ea 03 shr $0x3,%r10 | |
| 333f: 49 83 c2 01 add $0x1,%r10 | |
| 3343: 4d 89 d0 mov %r10,%r8 | |
| 3346: 49 83 e0 fc and $0xfffffffffffffffc,%r8 | |
| 334a: 49 8d 78 fc lea -0x4(%r8),%rdi | |
| 334e: 49 89 f9 mov %rdi,%r9 | |
| 3351: 49 c1 e9 02 shr $0x2,%r9 | |
| 3355: 49 83 c1 01 add $0x1,%r9 | |
| 3359: 48 85 ff test %rdi,%rdi | |
| 335c: 74 7c je 33da <ZSTD_decompressBlock_internal+0x22ba> | |
| 335e: 4c 89 cf mov %r9,%rdi | |
| 3361: 48 83 e7 fe and $0xfffffffffffffffe,%rdi | |
| 3365: 48 f7 df neg %rdi | |
| 3368: 31 db xor %ebx,%ebx | |
| ZSTD_memcpy(dst, src, 8); | |
| 336a: 0f 10 44 de 08 movups 0x8(%rsi,%rbx,8),%xmm0 | |
| 336f: 0f 10 4c de 18 movups 0x18(%rsi,%rbx,8),%xmm1 | |
| 3374: 0f 11 44 dd 08 movups %xmm0,0x8(%rbp,%rbx,8) | |
| 3379: 0f 11 4c dd 18 movups %xmm1,0x18(%rbp,%rbx,8) | |
| 337e: 0f 10 44 de 28 movups 0x28(%rsi,%rbx,8),%xmm0 | |
| 3383: 0f 10 4c de 38 movups 0x38(%rsi,%rbx,8),%xmm1 | |
| 3388: 0f 11 44 dd 28 movups %xmm0,0x28(%rbp,%rbx,8) | |
| 338d: 0f 11 4c dd 38 movups %xmm1,0x38(%rbp,%rbx,8) | |
| 3392: 48 83 c3 08 add $0x8,%rbx | |
| 3396: 48 83 c7 02 add $0x2,%rdi | |
| 339a: 75 ce jne 336a <ZSTD_decompressBlock_internal+0x224a> | |
| 339c: eb 3e jmp 33dc <ZSTD_decompressBlock_internal+0x22bc> | |
| ZSTD_memcpy(dst, src, 16); | |
| 339e: 0f 10 01 movups (%rcx),%xmm0 | |
| 33a1: 0f 11 02 movups %xmm0,(%rdx) | |
| if (16 >= length) return; | |
| 33a4: 49 83 fd 19 cmp $0x19,%r13 | |
| 33a8: 7c 6a jl 3414 <ZSTD_decompressBlock_internal+0x22f4> | |
| op += 16; | |
| 33aa: 48 83 c5 18 add $0x18,%rbp | |
| do { | |
| 33ae: 48 83 c6 28 add $0x28,%rsi | |
| 33b2: 31 c9 xor %ecx,%ecx | |
| ZSTD_memcpy(dst, src, 16); | |
| 33b4: 0f 10 44 0e f0 movups -0x10(%rsi,%rcx,1),%xmm0 | |
| 33b9: 0f 11 44 0d 00 movups %xmm0,0x0(%rbp,%rcx,1) | |
| 33be: 0f 10 04 0e movups (%rsi,%rcx,1),%xmm0 | |
| 33c2: 0f 11 44 0d 10 movups %xmm0,0x10(%rbp,%rcx,1) | |
| while (op < oend); | |
| 33c7: 48 8d 14 29 lea (%rcx,%rbp,1),%rdx | |
| 33cb: 48 83 c2 20 add $0x20,%rdx | |
| 33cf: 48 83 c1 20 add $0x20,%rcx | |
| 33d3: 48 39 c2 cmp %rax,%rdx | |
| } | |
| 33d6: 72 dc jb 33b4 <ZSTD_decompressBlock_internal+0x2294> | |
| 33d8: eb 3a jmp 3414 <ZSTD_decompressBlock_internal+0x22f4> | |
| 33da: 31 db xor %ebx,%ebx | |
| 33dc: 41 f6 c1 01 test $0x1,%r9b | |
| 33e0: 74 12 je 33f4 <ZSTD_decompressBlock_internal+0x22d4> | |
| ZSTD_memcpy(dst, src, 8); | |
| 33e2: 0f 10 04 d9 movups (%rcx,%rbx,8),%xmm0 | |
| 33e6: 0f 10 4c d9 10 movups 0x10(%rcx,%rbx,8),%xmm1 | |
| 33eb: 0f 11 04 da movups %xmm0,(%rdx,%rbx,8) | |
| 33ef: 0f 11 4c da 10 movups %xmm1,0x10(%rdx,%rbx,8) | |
| } while (op < oend); | |
| 33f4: 4d 39 c2 cmp %r8,%r10 | |
| 33f7: 74 1b je 3414 <ZSTD_decompressBlock_internal+0x22f4> | |
| 33f9: 4a 8d 14 c2 lea (%rdx,%r8,8),%rdx | |
| 33fd: 4a 8d 0c c1 lea (%rcx,%r8,8),%rcx | |
| ZSTD_memcpy(dst, src, 8); | |
| 3401: 48 8b 31 mov (%rcx),%rsi | |
| 3404: 48 89 32 mov %rsi,(%rdx) | |
| COPY8(op, ip) | |
| 3407: 48 83 c2 08 add $0x8,%rdx | |
| 340b: 48 83 c1 08 add $0x8,%rcx | |
| } while (op < oend); | |
| 340f: 48 39 c2 cmp %rax,%rdx | |
| 3412: 72 ed jb 3401 <ZSTD_decompressBlock_internal+0x22e1> | |
| 3414: 4c 8b 74 24 40 mov 0x40(%rsp),%r14 | |
| 3419: 48 8b 54 24 18 mov 0x18(%rsp),%rdx | |
| 341e: 4c 8b 54 24 20 mov 0x20(%rsp),%r10 | |
| 3423: 4c 8b 44 24 08 mov 0x8(%rsp),%r8 | |
| 3428: 4c 89 df mov %r11,%rdi | |
| 342b: 4d 89 e3 mov %r12,%r11 | |
| 342e: e9 83 fd ff ff jmpq 31b6 <ZSTD_decompressBlock_internal+0x2096> | |
| 3433: 4c 8b 74 24 40 mov 0x40(%rsp),%r14 | |
| 3438: 48 8b 7c 24 28 mov 0x28(%rsp),%rdi | |
| { U32 i; for (i=0; i<ZSTD_REP_NUM; i++) dctx->entropy.rep[i] = (U32)(seqState.prevOffset[i]); } | |
| 343d: 8b 84 24 b8 00 00 00 mov 0xb8(%rsp),%eax | |
| 3444: 41 89 82 3c 68 00 00 mov %eax,0x683c(%r10) | |
| 344b: 8b 84 24 c0 00 00 00 mov 0xc0(%rsp),%eax | |
| 3452: 41 89 82 40 68 00 00 mov %eax,0x6840(%r10) | |
| 3459: 8b 84 24 c8 00 00 00 mov 0xc8(%rsp),%eax | |
| 3460: 41 89 82 44 68 00 00 mov %eax,0x6844(%r10) | |
| { size_t const lastLLSize = litEnd - litPtr; | |
| 3467: 48 8b b4 24 e0 00 00 mov 0xe0(%rsp),%rsi | |
| 346e: 00 | |
| 346f: 48 8b 84 24 f8 00 00 mov 0xf8(%rsp),%rax | |
| 3476: 00 | |
| 3477: 48 29 f0 sub %rsi,%rax | |
| RETURN_ERROR_IF(lastLLSize > (size_t)(oend-op), dstSize_tooSmall, ""); | |
| 347a: 48 29 fa sub %rdi,%rdx | |
| 347d: 49 c7 c3 ba ff ff ff mov $0xffffffffffffffba,%r11 | |
| 3484: 48 39 d0 cmp %rdx,%rax | |
| 3487: 0f 87 9b 00 00 00 ja 3528 <ZSTD_decompressBlock_internal+0x2408> | |
| if (op != NULL) { | |
| 348d: 48 85 ff test %rdi,%rdi | |
| 3490: 74 19 je 34ab <ZSTD_decompressBlock_internal+0x238b> | |
| ZSTD_memcpy(op, litPtr, lastLLSize); | |
| 3492: 48 89 c2 mov %rax,%rdx | |
| 3495: 48 89 c3 mov %rax,%rbx | |
| 3498: 48 89 fd mov %rdi,%rbp | |
| 349b: e8 00 00 00 00 callq 34a0 <ZSTD_decompressBlock_internal+0x2380> | |
| op += lastLLSize; | |
| 34a0: 48 01 dd add %rbx,%rbp | |
| 34a3: 49 89 eb mov %rbp,%r11 | |
| return op-ostart; | |
| 34a6: 4d 29 f3 sub %r14,%r11 | |
| 34a9: eb 7d jmp 3528 <ZSTD_decompressBlock_internal+0x2408> | |
| 34ab: 45 31 db xor %r11d,%r11d | |
| 34ae: 4d 29 f3 sub %r14,%r11 | |
| 34b1: eb 75 jmp 3528 <ZSTD_decompressBlock_internal+0x2408> | |
| if (bitD->ptr >= bitD->limitPtr) { | |
| 34b3: 48 8b 8c 24 10 01 00 mov 0x110(%rsp),%rcx | |
| 34ba: 00 | |
| 34bb: 48 3b 8c 24 20 01 00 cmp 0x120(%rsp),%rcx | |
| 34c2: 00 | |
| 34c3: 73 78 jae 353d <ZSTD_decompressBlock_internal+0x241d> | |
| 34c5: 48 89 d0 mov %rdx,%rax | |
| if (bitD->ptr == bitD->start) { | |
| 34c8: 48 8b 94 24 18 01 00 mov 0x118(%rsp),%rdx | |
| 34cf: 00 | |
| 34d0: 48 39 d1 cmp %rdx,%rcx | |
| 34d3: 0f 84 a2 00 00 00 je 357b <ZSTD_decompressBlock_internal+0x245b> | |
| { U32 nbBytes = bitD->bitsConsumed >> 3; | |
| 34d9: 4c 89 f8 mov %r15,%rax | |
| 34dc: 48 c1 e8 03 shr $0x3,%rax | |
| if (bitD->ptr - nbBytes < bitD->start) { | |
| 34e0: 48 89 ce mov %rcx,%rsi | |
| 34e3: 48 29 c6 sub %rax,%rsi | |
| 34e6: 89 cf mov %ecx,%edi | |
| 34e8: 29 d7 sub %edx,%edi | |
| 34ea: 48 39 d6 cmp %rdx,%rsi | |
| 34ed: 0f 43 f8 cmovae %eax,%edi | |
| bitD->ptr -= nbBytes; | |
| 34f0: 48 29 f9 sub %rdi,%rcx | |
| 34f3: 48 89 8c 24 10 01 00 mov %rcx,0x110(%rsp) | |
| 34fa: 00 | |
| bitD->bitsConsumed -= nbBytes*8; | |
| 34fb: c1 e7 03 shl $0x3,%edi | |
| 34fe: 41 29 ff sub %edi,%r15d | |
| 3501: eb 50 jmp 3553 <ZSTD_decompressBlock_internal+0x2433> | |
| 3503: 4c 8b 74 24 40 mov 0x40(%rsp),%r14 | |
| { BYTE const lastByte = ((const BYTE*)srcBuffer)[srcSize-1]; | |
| 3508: 43 0f b6 44 2c ff movzbl -0x1(%r12,%r13,1),%eax | |
| 350e: 85 c0 test %eax,%eax | |
| bitD->bitsConsumed = lastByte ? 8 - BIT_highbit32(lastByte) : 0; | |
| 3510: 0f 85 f5 e1 ff ff jne 170b <ZSTD_decompressBlock_internal+0x5eb> | |
| 3516: c7 84 24 08 01 00 00 movl $0x0,0x108(%rsp) | |
| 351d: 00 00 00 00 | |
| 3521: 49 c7 c3 ec ff ff ff mov $0xffffffffffffffec,%r11 | |
| #ifndef ZSTD_FORCE_DECOMPRESS_SEQUENCES_LONG | |
| /* else */ | |
| return ZSTD_decompressSequences(dctx, dst, dstCapacity, ip, srcSize, nbSeq, isLongOffset, frame); | |
| #endif | |
| } | |
| } | |
| 3528: 4c 89 d8 mov %r11,%rax | |
| 352b: 48 81 c4 28 02 00 00 add $0x228,%rsp | |
| 3532: 5b pop %rbx | |
| 3533: 41 5c pop %r12 | |
| 3535: 41 5d pop %r13 | |
| 3537: 41 5e pop %r14 | |
| 3539: 41 5f pop %r15 | |
| 353b: 5d pop %rbp | |
| 353c: c3 retq | |
| bitD->ptr -= bitD->bitsConsumed >> 3; | |
| 353d: 4c 89 f8 mov %r15,%rax | |
| 3540: 48 c1 e8 03 shr $0x3,%rax | |
| 3544: 48 29 c1 sub %rax,%rcx | |
| 3547: 48 89 8c 24 10 01 00 mov %rcx,0x110(%rsp) | |
| 354e: 00 | |
| bitD->bitsConsumed &= 7; | |
| 354f: 41 83 e7 07 and $0x7,%r15d | |
| 3553: 44 89 bc 24 08 01 00 mov %r15d,0x108(%rsp) | |
| 355a: 00 | |
| 355b: 48 8b 01 mov (%rcx),%rax | |
| 355e: 48 89 84 24 00 01 00 mov %rax,0x100(%rsp) | |
| 3565: 00 | |
| 3566: eb b9 jmp 3521 <ZSTD_decompressBlock_internal+0x2401> | |
| 3568: 4d 89 e8 mov %r13,%r8 | |
| 356b: 45 31 e4 xor %r12d,%r12d | |
| 356e: e9 2c e4 ff ff jmpq 199f <ZSTD_decompressBlock_internal+0x87f> | |
| 3573: 45 31 e4 xor %r12d,%r12d | |
| 3576: e9 d7 e4 ff ff jmpq 1a52 <ZSTD_decompressBlock_internal+0x932> | |
| 357b: 49 c7 c3 ec ff ff ff mov $0xffffffffffffffec,%r11 | |
| if (bitD->bitsConsumed < sizeof(bitD->bitContainer)*8) return BIT_DStream_endOfBuffer; | |
| 3582: 41 83 ff 40 cmp $0x40,%r15d | |
| 3586: 48 89 c2 mov %rax,%rdx | |
| 3589: 0f 83 50 ed ff ff jae 22df <ZSTD_decompressBlock_internal+0x11bf> | |
| 358f: eb 97 jmp 3528 <ZSTD_decompressBlock_internal+0x2408> | |
| 3591: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) | |
| 3598: 00 00 00 | |
| 359b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) | |
| 00000000000035a0 <ZSTD_checkContinuity>: | |
| void ZSTD_checkContinuity(ZSTD_DCtx* dctx, const void* dst, size_t dstSize) | |
| { | |
| 35a0: 48 85 d2 test %rdx,%rdx | |
| if (dst != dctx->previousDstEnd && dstSize > 0) { /* not contiguous */ | |
| 35a3: 74 35 je 35da <ZSTD_checkContinuity+0x3a> | |
| 35a5: 48 8b 87 c0 74 00 00 mov 0x74c0(%rdi),%rax | |
| 35ac: 48 39 f0 cmp %rsi,%rax | |
| 35af: 74 29 je 35da <ZSTD_checkContinuity+0x3a> | |
| dctx->dictEnd = dctx->previousDstEnd; | |
| 35b1: 48 89 87 d8 74 00 00 mov %rax,0x74d8(%rdi) | |
| dctx->virtualStart = (const char*)dst - ((const char*)(dctx->previousDstEnd) - (const char*)(dctx->prefixStart)); | |
| 35b8: 48 8b 8f c8 74 00 00 mov 0x74c8(%rdi),%rcx | |
| 35bf: 48 29 c1 sub %rax,%rcx | |
| 35c2: 48 01 f1 add %rsi,%rcx | |
| 35c5: 48 89 8f d0 74 00 00 mov %rcx,0x74d0(%rdi) | |
| dctx->prefixStart = dst; | |
| 35cc: 48 89 b7 c8 74 00 00 mov %rsi,0x74c8(%rdi) | |
| dctx->previousDstEnd = dst; | |
| 35d3: 48 89 b7 c0 74 00 00 mov %rsi,0x74c0(%rdi) | |
| } | |
| } | |
| 35da: c3 retq | |
| 35db: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) | |
| 00000000000035e0 <ZSTD_decompressBlock>: | |
| size_t ZSTD_decompressBlock(ZSTD_DCtx* dctx, | |
| void* dst, size_t dstCapacity, | |
| const void* src, size_t srcSize) | |
| { | |
| 35e0: 41 56 push %r14 | |
| 35e2: 53 push %rbx | |
| 35e3: 50 push %rax | |
| 35e4: 48 89 f3 mov %rsi,%rbx | |
| 35e7: 49 89 fe mov %rdi,%r14 | |
| 35ea: 48 85 d2 test %rdx,%rdx | |
| if (dst != dctx->previousDstEnd && dstSize > 0) { /* not contiguous */ | |
| 35ed: 74 35 je 3624 <ZSTD_decompressBlock+0x44> | |
| 35ef: 49 8b 86 c0 74 00 00 mov 0x74c0(%r14),%rax | |
| 35f6: 48 39 d8 cmp %rbx,%rax | |
| 35f9: 74 29 je 3624 <ZSTD_decompressBlock+0x44> | |
| dctx->dictEnd = dctx->previousDstEnd; | |
| 35fb: 49 89 86 d8 74 00 00 mov %rax,0x74d8(%r14) | |
| dctx->virtualStart = (const char*)dst - ((const char*)(dctx->previousDstEnd) - (const char*)(dctx->prefixStart)); | |
| 3602: 49 8b b6 c8 74 00 00 mov 0x74c8(%r14),%rsi | |
| 3609: 48 29 c6 sub %rax,%rsi | |
| 360c: 48 01 de add %rbx,%rsi | |
| 360f: 49 89 b6 d0 74 00 00 mov %rsi,0x74d0(%r14) | |
| dctx->prefixStart = dst; | |
| 3616: 49 89 9e c8 74 00 00 mov %rbx,0x74c8(%r14) | |
| dctx->previousDstEnd = dst; | |
| 361d: 49 89 9e c0 74 00 00 mov %rbx,0x74c0(%r14) | |
| size_t dSize; | |
| ZSTD_checkContinuity(dctx, dst, dstCapacity); | |
| dSize = ZSTD_decompressBlock_internal(dctx, dst, dstCapacity, src, srcSize, /* frame */ 0); | |
| 3624: 4c 89 f7 mov %r14,%rdi | |
| 3627: 48 89 de mov %rbx,%rsi | |
| 362a: 45 31 c9 xor %r9d,%r9d | |
| 362d: e8 00 00 00 00 callq 3632 <ZSTD_decompressBlock+0x52> | |
| dctx->previousDstEnd = (char*)dst + dSize; | |
| 3632: 48 01 c3 add %rax,%rbx | |
| 3635: 49 89 9e c0 74 00 00 mov %rbx,0x74c0(%r14) | |
| return dSize; | |
| 363c: 48 83 c4 08 add $0x8,%rsp | |
| 3640: 5b pop %rbx | |
| 3641: 41 5e pop %r14 | |
| 3643: c3 retq | |
| 3644: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) | |
| 364b: 00 00 00 | |
| 364e: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) | |
| 3655: 00 00 00 | |
| 3658: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) | |
| 365f: 00 | |
| 0000000000003660 <ZSTD_decompressSequencesLong_bmi2>: | |
| { | |
| 3660: 55 push %rbp | |
| 3661: 41 57 push %r15 | |
| 3663: 41 56 push %r14 | |
| 3665: 41 55 push %r13 | |
| 3667: 41 54 push %r12 | |
| 3669: 53 push %rbx | |
| 366a: 48 81 ec 18 02 00 00 sub $0x218,%rsp | |
| 3671: 49 89 ca mov %rcx,%r10 | |
| 3674: 49 89 f5 mov %rsi,%r13 | |
| BYTE* const oend = ostart + maxDstSize; | |
| 3677: 48 01 f2 add %rsi,%rdx | |
| const BYTE* litPtr = dctx->litPtr; | |
| 367a: 48 8b b7 a0 75 00 00 mov 0x75a0(%rdi),%rsi | |
| 3681: 48 89 b4 24 d8 00 00 mov %rsi,0xd8(%rsp) | |
| 3688: 00 | |
| 3689: 4c 8b a7 c0 75 00 00 mov 0x75c0(%rdi),%r12 | |
| const BYTE* const litEnd = litPtr + dctx->litSize; | |
| 3690: 49 01 f4 add %rsi,%r12 | |
| BYTE* op = ostart; | |
| 3693: 4c 89 e9 mov %r13,%rcx | |
| if (nbSeq) { | |
| 3696: 45 85 c9 test %r9d,%r9d | |
| 3699: 0f 84 7c 15 00 00 je 4c1b <ZSTD_decompressSequencesLong_bmi2+0x15bb> | |
| 369f: 48 8b af c8 74 00 00 mov 0x74c8(%rdi),%rbp | |
| 36a6: 48 8b 87 d0 74 00 00 mov 0x74d0(%rdi),%rax | |
| 36ad: 48 89 84 24 00 01 00 mov %rax,0x100(%rsp) | |
| 36b4: 00 | |
| 36b5: 48 8b 87 d8 74 00 00 mov 0x74d8(%rdi),%rax | |
| 36bc: 48 89 84 24 e8 00 00 mov %rax,0xe8(%rsp) | |
| 36c3: 00 | |
| int const seqAdvance = MIN(nbSeq, ADVANCED_SEQS); | |
| 36c4: 41 83 f9 09 cmp $0x9,%r9d | |
| dctx->fseEntropy = 1; | |
| 36c8: c7 87 2c 75 00 00 01 movl $0x1,0x752c(%rdi) | |
| 36cf: 00 00 00 | |
| { int i; for (i=0; i<ZSTD_REP_NUM; i++) seqState.prevOffset[i] = dctx->entropy.rep[i]; } | |
| 36d2: 44 8b b7 3c 68 00 00 mov 0x683c(%rdi),%r14d | |
| 36d9: 4c 89 b4 24 98 00 00 mov %r14,0x98(%rsp) | |
| 36e0: 00 | |
| 36e1: f2 0f 10 87 40 68 00 movsd 0x6840(%rdi),%xmm0 | |
| 36e8: 00 | |
| 36e9: 0f 57 c9 xorps %xmm1,%xmm1 | |
| 36ec: 0f 14 c1 unpcklps %xmm1,%xmm0 | |
| 36ef: 0f 11 84 24 a0 00 00 movups %xmm0,0xa0(%rsp) | |
| 36f6: 00 | |
| 36f7: b9 08 00 00 00 mov $0x8,%ecx | |
| int const seqAdvance = MIN(nbSeq, ADVANCED_SEQS); | |
| 36fc: 41 0f 4c c9 cmovl %r9d,%ecx | |
| if (srcSize < 1) { ZSTD_memset(bitD, 0, sizeof(*bitD)); return ERROR(srcSize_wrong); } | |
| 3700: 4d 85 c0 test %r8,%r8 | |
| 3703: 74 79 je 377e <ZSTD_decompressSequencesLong_bmi2+0x11e> | |
| 3705: 48 89 94 24 f8 00 00 mov %rdx,0xf8(%rsp) | |
| 370c: 00 | |
| 370d: 4c 89 a4 24 b8 00 00 mov %r12,0xb8(%rsp) | |
| 3714: 00 | |
| bitD->start = (const char*)srcBuffer; | |
| 3715: 4c 89 54 24 58 mov %r10,0x58(%rsp) | |
| bitD->limitPtr = bitD->start + sizeof(bitD->bitContainer); | |
| 371a: 49 8d 42 08 lea 0x8(%r10),%rax | |
| 371e: 48 89 44 24 60 mov %rax,0x60(%rsp) | |
| if (srcSize >= sizeof(bitD->bitContainer)) { /* normal case */ | |
| 3723: 49 83 f8 08 cmp $0x8,%r8 | |
| 3727: 72 74 jb 379d <ZSTD_decompressSequencesLong_bmi2+0x13d> | |
| bitD->ptr = (const char*)srcBuffer + srcSize - sizeof(bitD->bitContainer); | |
| 3729: 4b 8d 04 02 lea (%r10,%r8,1),%rax | |
| 372d: 48 83 c0 f8 add $0xfffffffffffffff8,%rax | |
| 3731: 48 89 44 24 50 mov %rax,0x50(%rsp) | |
| 3736: 4b 8b 74 02 f8 mov -0x8(%r10,%r8,1),%rsi | |
| bitD->bitContainer = MEM_readLEST(bitD->ptr); | |
| 373b: 48 89 74 24 40 mov %rsi,0x40(%rsp) | |
| { BYTE const lastByte = ((const BYTE*)srcBuffer)[srcSize-1]; | |
| 3740: 43 0f b6 44 10 ff movzbl -0x1(%r8,%r10,1),%eax | |
| 3746: 85 c0 test %eax,%eax | |
| bitD->bitsConsumed = lastByte ? 8 - BIT_highbit32(lastByte) : 0; /* ensures bitsConsumed is always set */ | |
| 3748: 0f 84 2f 01 00 00 je 387d <ZSTD_decompressSequencesLong_bmi2+0x21d> | |
| 374e: 89 4c 24 3c mov %ecx,0x3c(%rsp) | |
| return __builtin_clz (val) ^ 31; | |
| 3752: 0f bd c0 bsr %eax,%eax | |
| 3755: f7 d0 not %eax | |
| 3757: 83 c8 e0 or $0xffffffe0,%eax | |
| bitD->bitsConsumed = lastByte ? 8 - BIT_highbit32(lastByte) : 0; /* ensures bitsConsumed is always set */ | |
| 375a: 83 c0 09 add $0x9,%eax | |
| 375d: 89 44 24 48 mov %eax,0x48(%rsp) | |
| 3761: 49 c7 c3 ec ff ff ff mov $0xffffffffffffffec,%r11 | |
| 3768: 49 83 f8 88 cmp $0xffffffffffffff88,%r8 | |
| RETURN_ERROR_IF( | |
| 376c: 0f 87 dc 14 00 00 ja 4c4e <ZSTD_decompressSequencesLong_bmi2+0x15ee> | |
| 3772: 49 89 ec mov %rbp,%r12 | |
| 3775: 49 83 c0 f8 add $0xfffffffffffffff8,%r8 | |
| 3779: e9 d1 00 00 00 jmpq 384f <ZSTD_decompressSequencesLong_bmi2+0x1ef> | |
| if (srcSize < 1) { ZSTD_memset(bitD, 0, sizeof(*bitD)); return ERROR(srcSize_wrong); } | |
| 377e: 0f 29 4c 24 50 movaps %xmm1,0x50(%rsp) | |
| 3783: 0f 29 4c 24 40 movaps %xmm1,0x40(%rsp) | |
| 3788: 48 c7 44 24 60 00 00 movq $0x0,0x60(%rsp) | |
| 378f: 00 00 | |
| 3791: 49 c7 c3 ec ff ff ff mov $0xffffffffffffffec,%r11 | |
| 3798: e9 b1 14 00 00 jmpq 4c4e <ZSTD_decompressSequencesLong_bmi2+0x15ee> | |
| bitD->ptr = bitD->start; | |
| 379d: 4c 89 54 24 50 mov %r10,0x50(%rsp) | |
| bitD->bitContainer = *(const BYTE*)(bitD->start); | |
| 37a2: 41 0f b6 12 movzbl (%r10),%edx | |
| 37a6: 48 89 54 24 40 mov %rdx,0x40(%rsp) | |
| switch(srcSize) | |
| 37ab: 49 8d 40 fe lea -0x2(%r8),%rax | |
| 37af: 48 83 f8 05 cmp $0x5,%rax | |
| 37b3: 49 89 ec mov %rbp,%r12 | |
| 37b6: 77 6d ja 3825 <ZSTD_decompressSequencesLong_bmi2+0x1c5> | |
| 37b8: ff 24 c5 00 00 00 00 jmpq *0x0(,%rax,8) | |
| case 7: bitD->bitContainer += (size_t)(((const BYTE*)(srcBuffer))[6]) << (sizeof(bitD->bitContainer)*8 - 16); | |
| 37bf: 41 0f b6 42 06 movzbl 0x6(%r10),%eax | |
| 37c4: 48 c1 e0 30 shl $0x30,%rax | |
| 37c8: 48 09 c2 or %rax,%rdx | |
| 37cb: 48 89 54 24 40 mov %rdx,0x40(%rsp) | |
| case 6: bitD->bitContainer += (size_t)(((const BYTE*)(srcBuffer))[5]) << (sizeof(bitD->bitContainer)*8 - 24); | |
| 37d0: 41 0f b6 42 05 movzbl 0x5(%r10),%eax | |
| 37d5: 48 c1 e0 28 shl $0x28,%rax | |
| 37d9: 48 01 c2 add %rax,%rdx | |
| 37dc: 48 89 54 24 40 mov %rdx,0x40(%rsp) | |
| case 5: bitD->bitContainer += (size_t)(((const BYTE*)(srcBuffer))[4]) << (sizeof(bitD->bitContainer)*8 - 32); | |
| 37e1: 41 0f b6 42 04 movzbl 0x4(%r10),%eax | |
| 37e6: 48 c1 e0 20 shl $0x20,%rax | |
| 37ea: 48 01 c2 add %rax,%rdx | |
| 37ed: 48 89 54 24 40 mov %rdx,0x40(%rsp) | |
| case 4: bitD->bitContainer += (size_t)(((const BYTE*)(srcBuffer))[3]) << 24; | |
| 37f2: 41 0f b6 42 03 movzbl 0x3(%r10),%eax | |
| 37f7: 48 c1 e0 18 shl $0x18,%rax | |
| 37fb: 48 01 c2 add %rax,%rdx | |
| 37fe: 48 89 54 24 40 mov %rdx,0x40(%rsp) | |
| case 3: bitD->bitContainer += (size_t)(((const BYTE*)(srcBuffer))[2]) << 16; | |
| 3803: 41 0f b6 42 02 movzbl 0x2(%r10),%eax | |
| 3808: 48 c1 e0 10 shl $0x10,%rax | |
| 380c: 48 01 c2 add %rax,%rdx | |
| 380f: 48 89 54 24 40 mov %rdx,0x40(%rsp) | |
| case 2: bitD->bitContainer += (size_t)(((const BYTE*)(srcBuffer))[1]) << 8; | |
| 3814: 41 0f b6 42 01 movzbl 0x1(%r10),%eax | |
| 3819: 48 c1 e0 08 shl $0x8,%rax | |
| 381d: 48 01 c2 add %rax,%rdx | |
| 3820: 48 89 54 24 40 mov %rdx,0x40(%rsp) | |
| { BYTE const lastByte = ((const BYTE*)srcBuffer)[srcSize-1]; | |
| 3825: 43 0f b6 44 10 ff movzbl -0x1(%r8,%r10,1),%eax | |
| 382b: 85 c0 test %eax,%eax | |
| bitD->bitsConsumed = lastByte ? 8 - BIT_highbit32(lastByte) : 0; | |
| 382d: 74 4e je 387d <ZSTD_decompressSequencesLong_bmi2+0x21d> | |
| 382f: 48 89 d6 mov %rdx,%rsi | |
| 3832: 89 4c 24 3c mov %ecx,0x3c(%rsp) | |
| return __builtin_clz (val) ^ 31; | |
| 3836: 0f bd c0 bsr %eax,%eax | |
| 3839: f7 d0 not %eax | |
| 383b: 83 c8 e0 or $0xffffffe0,%eax | |
| bitD->bitsConsumed += (U32)(sizeof(bitD->bitContainer) - srcSize)*8; | |
| 383e: 41 c1 e0 03 shl $0x3,%r8d | |
| 3842: 44 29 c0 sub %r8d,%eax | |
| 3845: 83 c0 49 add $0x49,%eax | |
| 3848: 89 44 24 48 mov %eax,0x48(%rsp) | |
| 384c: 45 31 c0 xor %r8d,%r8d | |
| ZSTD_initFseState(&seqState.stateLL, &seqState.DStream, dctx->LLTptr); | |
| 384f: 48 8b 0f mov (%rdi),%rcx | |
| 3852: 48 89 cd mov %rcx,%rbp | |
| DStatePtr->state = BIT_readBits(bitD, DTableH->tableLog); | |
| 3855: 8b 49 04 mov 0x4(%rcx),%ecx | |
| return BIT_getMiddleBits(bitD->bitContainer, (sizeof(bitD->bitContainer)*8) - bitD->bitsConsumed - nbBits, nbBits); | |
| 3858: 01 c8 add %ecx,%eax | |
| return (bitContainer >> (start & regMask)) & BIT_mask[nbBits]; | |
| 385a: 89 c2 mov %eax,%edx | |
| 385c: f6 da neg %dl | |
| 385e: c4 e2 eb f7 d6 shrx %rdx,%rsi,%rdx | |
| 3863: 23 14 8d 00 00 00 00 and 0x0(,%rcx,4),%edx | |
| bitD->bitsConsumed += nbBits; | |
| 386a: 89 44 24 48 mov %eax,0x48(%rsp) | |
| 386e: 48 89 54 24 68 mov %rdx,0x68(%rsp) | |
| if (bitD->bitsConsumed > (sizeof(bitD->bitContainer)*8)) /* overflow detected, like end of stream */ | |
| 3873: 83 f8 40 cmp $0x40,%eax | |
| 3876: 76 19 jbe 3891 <ZSTD_decompressSequencesLong_bmi2+0x231> | |
| 3878: 49 89 f3 mov %rsi,%r11 | |
| 387b: eb 6c jmp 38e9 <ZSTD_decompressSequencesLong_bmi2+0x289> | |
| 387d: c7 44 24 48 00 00 00 movl $0x0,0x48(%rsp) | |
| 3884: 00 | |
| 3885: 49 c7 c3 ec ff ff ff mov $0xffffffffffffffec,%r11 | |
| 388c: e9 bd 13 00 00 jmpq 4c4e <ZSTD_decompressSequencesLong_bmi2+0x15ee> | |
| if (bitD->ptr >= bitD->limitPtr) { | |
| 3891: 49 83 f8 08 cmp $0x8,%r8 | |
| 3895: 7d 31 jge 38c8 <ZSTD_decompressSequencesLong_bmi2+0x268> | |
| if (bitD->ptr == bitD->start) { | |
| 3897: 4d 85 c0 test %r8,%r8 | |
| 389a: 0f 84 0a 02 00 00 je 3aaa <ZSTD_decompressSequencesLong_bmi2+0x44a> | |
| 38a0: 4b 8d 0c 02 lea (%r10,%r8,1),%rcx | |
| { U32 nbBytes = bitD->bitsConsumed >> 3; | |
| 38a4: 89 c6 mov %eax,%esi | |
| 38a6: c1 ee 03 shr $0x3,%esi | |
| if (bitD->ptr - nbBytes < bitD->start) { | |
| 38a9: 48 29 f1 sub %rsi,%rcx | |
| 38ac: 4c 39 d1 cmp %r10,%rcx | |
| 38af: 44 89 c1 mov %r8d,%ecx | |
| 38b2: 0f 43 ce cmovae %esi,%ecx | |
| bitD->ptr -= nbBytes; | |
| 38b5: 49 29 c8 sub %rcx,%r8 | |
| 38b8: 4b 8d 34 02 lea (%r10,%r8,1),%rsi | |
| 38bc: 48 89 74 24 50 mov %rsi,0x50(%rsp) | |
| bitD->bitsConsumed -= nbBytes*8; | |
| 38c1: c1 e1 03 shl $0x3,%ecx | |
| 38c4: 29 c8 sub %ecx,%eax | |
| 38c6: eb 14 jmp 38dc <ZSTD_decompressSequencesLong_bmi2+0x27c> | |
| bitD->ptr -= bitD->bitsConsumed >> 3; | |
| 38c8: 89 c1 mov %eax,%ecx | |
| 38ca: c1 e9 03 shr $0x3,%ecx | |
| 38cd: 49 29 c8 sub %rcx,%r8 | |
| 38d0: 4b 8d 0c 02 lea (%r10,%r8,1),%rcx | |
| 38d4: 48 89 4c 24 50 mov %rcx,0x50(%rsp) | |
| bitD->bitsConsumed &= 7; | |
| 38d9: 83 e0 07 and $0x7,%eax | |
| 38dc: 89 44 24 48 mov %eax,0x48(%rsp) | |
| 38e0: 4f 8b 1c 02 mov (%r10,%r8,1),%r11 | |
| 38e4: 4c 89 5c 24 40 mov %r11,0x40(%rsp) | |
| DStatePtr->table = dt + 1; | |
| 38e9: 48 83 c5 08 add $0x8,%rbp | |
| 38ed: 48 89 ac 24 48 01 00 mov %rbp,0x148(%rsp) | |
| 38f4: 00 | |
| 38f5: 48 89 6c 24 70 mov %rbp,0x70(%rsp) | |
| ZSTD_initFseState(&seqState.stateOffb, &seqState.DStream, dctx->OFTptr); | |
| 38fa: 48 8b 4f 10 mov 0x10(%rdi),%rcx | |
| 38fe: 49 89 cf mov %rcx,%r15 | |
| DStatePtr->state = BIT_readBits(bitD, DTableH->tableLog); | |
| 3901: 8b 49 04 mov 0x4(%rcx),%ecx | |
| return BIT_getMiddleBits(bitD->bitContainer, (sizeof(bitD->bitContainer)*8) - bitD->bitsConsumed - nbBits, nbBits); | |
| 3904: 01 c8 add %ecx,%eax | |
| return (bitContainer >> (start & regMask)) & BIT_mask[nbBits]; | |
| 3906: 89 c6 mov %eax,%esi | |
| 3908: 40 f6 de neg %sil | |
| 390b: c4 c2 cb f7 f3 shrx %rsi,%r11,%rsi | |
| 3910: 23 34 8d 00 00 00 00 and 0x0(,%rcx,4),%esi | |
| bitD->bitsConsumed += nbBits; | |
| 3917: 89 44 24 48 mov %eax,0x48(%rsp) | |
| 391b: 48 89 74 24 78 mov %rsi,0x78(%rsp) | |
| if (bitD->bitsConsumed > (sizeof(bitD->bitContainer)*8)) /* overflow detected, like end of stream */ | |
| 3920: 83 f8 40 cmp $0x40,%eax | |
| 3923: 4c 89 dd mov %r11,%rbp | |
| 3926: 77 58 ja 3980 <ZSTD_decompressSequencesLong_bmi2+0x320> | |
| if (bitD->ptr >= bitD->limitPtr) { | |
| 3928: 49 83 f8 08 cmp $0x8,%r8 | |
| 392c: 7d 31 jge 395f <ZSTD_decompressSequencesLong_bmi2+0x2ff> | |
| if (bitD->ptr == bitD->start) { | |
| 392e: 4d 85 c0 test %r8,%r8 | |
| 3931: 0f 84 7e 01 00 00 je 3ab5 <ZSTD_decompressSequencesLong_bmi2+0x455> | |
| 3937: 4b 8d 0c 02 lea (%r10,%r8,1),%rcx | |
| { U32 nbBytes = bitD->bitsConsumed >> 3; | |
| 393b: 89 c5 mov %eax,%ebp | |
| 393d: c1 ed 03 shr $0x3,%ebp | |
| if (bitD->ptr - nbBytes < bitD->start) { | |
| 3940: 48 29 e9 sub %rbp,%rcx | |
| 3943: 4c 39 d1 cmp %r10,%rcx | |
| 3946: 44 89 c1 mov %r8d,%ecx | |
| 3949: 0f 43 cd cmovae %ebp,%ecx | |
| bitD->ptr -= nbBytes; | |
| 394c: 49 29 c8 sub %rcx,%r8 | |
| 394f: 4b 8d 2c 02 lea (%r10,%r8,1),%rbp | |
| 3953: 48 89 6c 24 50 mov %rbp,0x50(%rsp) | |
| bitD->bitsConsumed -= nbBytes*8; | |
| 3958: c1 e1 03 shl $0x3,%ecx | |
| 395b: 29 c8 sub %ecx,%eax | |
| 395d: eb 14 jmp 3973 <ZSTD_decompressSequencesLong_bmi2+0x313> | |
| bitD->ptr -= bitD->bitsConsumed >> 3; | |
| 395f: 89 c1 mov %eax,%ecx | |
| 3961: c1 e9 03 shr $0x3,%ecx | |
| 3964: 49 29 c8 sub %rcx,%r8 | |
| 3967: 4b 8d 0c 02 lea (%r10,%r8,1),%rcx | |
| 396b: 48 89 4c 24 50 mov %rcx,0x50(%rsp) | |
| bitD->bitsConsumed &= 7; | |
| 3970: 83 e0 07 and $0x7,%eax | |
| 3973: 89 44 24 48 mov %eax,0x48(%rsp) | |
| 3977: 4b 8b 2c 02 mov (%r10,%r8,1),%rbp | |
| 397b: 48 89 6c 24 40 mov %rbp,0x40(%rsp) | |
| 3980: 4c 89 ac 24 c8 00 00 mov %r13,0xc8(%rsp) | |
| 3987: 00 | |
| DStatePtr->table = dt + 1; | |
| 3988: 49 83 c7 08 add $0x8,%r15 | |
| 398c: 4c 89 bc 24 40 01 00 mov %r15,0x140(%rsp) | |
| 3993: 00 | |
| 3994: 4c 89 bc 24 80 00 00 mov %r15,0x80(%rsp) | |
| 399b: 00 | |
| 399c: 48 89 bc 24 38 01 00 mov %rdi,0x138(%rsp) | |
| 39a3: 00 | |
| ZSTD_initFseState(&seqState.stateML, &seqState.DStream, dctx->MLTptr); | |
| 39a4: 48 8b 5f 08 mov 0x8(%rdi),%rbx | |
| DStatePtr->state = BIT_readBits(bitD, DTableH->tableLog); | |
| 39a8: 8b 4b 04 mov 0x4(%rbx),%ecx | |
| return BIT_getMiddleBits(bitD->bitContainer, (sizeof(bitD->bitContainer)*8) - bitD->bitsConsumed - nbBits, nbBits); | |
| 39ab: 01 c8 add %ecx,%eax | |
| return (bitContainer >> (start & regMask)) & BIT_mask[nbBits]; | |
| 39ad: 89 c7 mov %eax,%edi | |
| 39af: 40 f6 df neg %dil | |
| 39b2: c4 62 c3 f7 dd shrx %rdi,%rbp,%r11 | |
| 39b7: 44 23 1c 8d 00 00 00 and 0x0(,%rcx,4),%r11d | |
| 39be: 00 | |
| 39bf: 4d 29 e5 sub %r12,%r13 | |
| bitD->bitsConsumed += nbBits; | |
| 39c2: 89 44 24 48 mov %eax,0x48(%rsp) | |
| 39c6: 4c 89 9c 24 88 00 00 mov %r11,0x88(%rsp) | |
| 39cd: 00 | |
| if (bitD->bitsConsumed > (sizeof(bitD->bitContainer)*8)) /* overflow detected, like end of stream */ | |
| 39ce: 83 f8 41 cmp $0x41,%eax | |
| 39d1: 44 89 4c 24 04 mov %r9d,0x4(%rsp) | |
| 39d6: 4c 89 64 24 10 mov %r12,0x10(%rsp) | |
| 39db: 72 17 jb 39f4 <ZSTD_decompressSequencesLong_bmi2+0x394> | |
| 39dd: 45 89 cf mov %r9d,%r15d | |
| DStatePtr->table = dt + 1; | |
| 39e0: 48 83 c3 08 add $0x8,%rbx | |
| 39e4: 48 89 9c 24 90 00 00 mov %rbx,0x90(%rsp) | |
| 39eb: 00 | |
| 39ec: 45 31 d2 xor %r10d,%r10d | |
| 39ef: e9 5a 05 00 00 jmpq 3f4e <ZSTD_decompressSequencesLong_bmi2+0x8ee> | |
| 39f4: 48 89 9c 24 10 01 00 mov %rbx,0x110(%rsp) | |
| 39fb: 00 | |
| if (bitD->ptr >= bitD->limitPtr) { | |
| 39fc: 49 83 f8 08 cmp $0x8,%r8 | |
| 3a00: 4c 89 94 24 f0 00 00 mov %r10,0xf0(%rsp) | |
| 3a07: 00 | |
| 3a08: 7d 70 jge 3a7a <ZSTD_decompressSequencesLong_bmi2+0x41a> | |
| 3a0a: 45 31 d2 xor %r10d,%r10d | |
| if (bitD->ptr == bitD->start) { | |
| 3a0d: 4d 85 c0 test %r8,%r8 | |
| 3a10: 48 8b 9c 24 10 01 00 mov 0x110(%rsp),%rbx | |
| 3a17: 00 | |
| 3a18: 0f 84 9f 00 00 00 je 3abd <ZSTD_decompressSequencesLong_bmi2+0x45d> | |
| 3a1e: 48 8b ac 24 f0 00 00 mov 0xf0(%rsp),%rbp | |
| 3a25: 00 | |
| 3a26: 49 8d 0c 28 lea (%r8,%rbp,1),%rcx | |
| { U32 nbBytes = bitD->bitsConsumed >> 3; | |
| 3a2a: 89 c7 mov %eax,%edi | |
| 3a2c: c1 ef 03 shr $0x3,%edi | |
| if (bitD->ptr - nbBytes < bitD->start) { | |
| 3a2f: 48 29 f9 sub %rdi,%rcx | |
| 3a32: 48 39 e9 cmp %rbp,%rcx | |
| 3a35: 44 89 c1 mov %r8d,%ecx | |
| 3a38: 0f 43 cf cmovae %edi,%ecx | |
| bitD->ptr -= nbBytes; | |
| 3a3b: 49 29 c8 sub %rcx,%r8 | |
| 3a3e: 49 8d 3c 28 lea (%r8,%rbp,1),%rdi | |
| 3a42: 48 89 7c 24 50 mov %rdi,0x50(%rsp) | |
| bitD->bitsConsumed -= nbBytes*8; | |
| 3a47: c1 e1 03 shl $0x3,%ecx | |
| 3a4a: 29 c8 sub %ecx,%eax | |
| 3a4c: 89 44 24 48 mov %eax,0x48(%rsp) | |
| 3a50: 4c 89 44 24 28 mov %r8,0x28(%rsp) | |
| 3a55: 4a 8b 6c 05 00 mov 0x0(%rbp,%r8,1),%rbp | |
| bitD->bitContainer = MEM_readLEST(bitD->ptr); /* reminder : srcSize > sizeof(bitD->bitContainer), otherwise bitD->ptr == bitD->start */ | |
| 3a5a: 48 89 6c 24 40 mov %rbp,0x40(%rsp) | |
| 3a5f: 48 8d 4b 08 lea 0x8(%rbx),%rcx | |
| 3a63: 48 89 8c 24 90 00 00 mov %rcx,0x90(%rsp) | |
| 3a6a: 00 | |
| if (bitD->bitsConsumed > (sizeof(bitD->bitContainer)*8)) /* overflow detected, like end of stream */ | |
| 3a6b: 83 f8 40 cmp $0x40,%eax | |
| 3a6e: 76 60 jbe 3ad0 <ZSTD_decompressSequencesLong_bmi2+0x470> | |
| 3a70: 44 8b 7c 24 04 mov 0x4(%rsp),%r15d | |
| 3a75: e9 d4 04 00 00 jmpq 3f4e <ZSTD_decompressSequencesLong_bmi2+0x8ee> | |
| bitD->ptr -= bitD->bitsConsumed >> 3; | |
| 3a7a: 89 c1 mov %eax,%ecx | |
| 3a7c: c1 e9 03 shr $0x3,%ecx | |
| 3a7f: 49 29 c8 sub %rcx,%r8 | |
| 3a82: 4b 8d 0c 02 lea (%r10,%r8,1),%rcx | |
| 3a86: 48 89 4c 24 50 mov %rcx,0x50(%rsp) | |
| bitD->bitsConsumed &= 7; | |
| 3a8b: 83 e0 07 and $0x7,%eax | |
| 3a8e: 89 44 24 48 mov %eax,0x48(%rsp) | |
| 3a92: 4c 89 44 24 28 mov %r8,0x28(%rsp) | |
| 3a97: 4b 8b 2c 02 mov (%r10,%r8,1),%rbp | |
| bitD->bitContainer = MEM_readLEST(bitD->ptr); | |
| 3a9b: 48 89 6c 24 40 mov %rbp,0x40(%rsp) | |
| 3aa0: 48 8b 9c 24 10 01 00 mov 0x110(%rsp),%rbx | |
| 3aa7: 00 | |
| 3aa8: eb 1a jmp 3ac4 <ZSTD_decompressSequencesLong_bmi2+0x464> | |
| 3aaa: 45 31 c0 xor %r8d,%r8d | |
| 3aad: 49 89 f3 mov %rsi,%r11 | |
| 3ab0: e9 34 fe ff ff jmpq 38e9 <ZSTD_decompressSequencesLong_bmi2+0x289> | |
| 3ab5: 45 31 c0 xor %r8d,%r8d | |
| 3ab8: e9 c3 fe ff ff jmpq 3980 <ZSTD_decompressSequencesLong_bmi2+0x320> | |
| 3abd: 31 c9 xor %ecx,%ecx | |
| 3abf: 48 89 4c 24 28 mov %rcx,0x28(%rsp) | |
| 3ac4: 48 8d 4b 08 lea 0x8(%rbx),%rcx | |
| 3ac8: 48 89 8c 24 90 00 00 mov %rcx,0x90(%rsp) | |
| 3acf: 00 | |
| 3ad0: 31 c9 xor %ecx,%ecx | |
| 3ad2: 48 89 4c 24 08 mov %rcx,0x8(%rsp) | |
| 3ad7: 8b 4c 24 3c mov 0x3c(%rsp),%ecx | |
| if (bitD->bitsConsumed > (sizeof(bitD->bitContainer)*8)) /* overflow detected, like end of stream */ | |
| 3adb: 85 c9 test %ecx,%ecx | |
| 3add: bf 00 00 00 00 mov $0x0,%edi | |
| 3ae2: 0f 49 f9 cmovns %ecx,%edi | |
| 3ae5: 48 89 7c 24 20 mov %rdi,0x20(%rsp) | |
| 3aea: 0f 13 84 24 e0 00 00 movlps %xmm0,0xe0(%rsp) | |
| 3af1: 00 | |
| 3af2: 4c 8d 94 24 60 01 00 lea 0x160(%rsp),%r10 | |
| 3af9: 00 | |
| 3afa: 4c 8b 4c 24 28 mov 0x28(%rsp),%r9 | |
| 3aff: e9 ce 00 00 00 jmpq 3bd2 <ZSTD_decompressSequencesLong_bmi2+0x572> | |
| 3b04: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) | |
| 3b0b: 00 00 00 | |
| 3b0e: 66 90 xchg %ax,%ax | |
| return BIT_getMiddleBits(bitD->bitContainer, (sizeof(bitD->bitContainer)*8) - bitD->bitsConsumed - nbBits, nbBits); | |
| 3b10: 44 01 d8 add %r11d,%eax | |
| return (bitContainer >> (start & regMask)) & BIT_mask[nbBits]; | |
| 3b13: 89 c2 mov %eax,%edx | |
| 3b15: f6 da neg %dl | |
| 3b17: c4 e2 eb f7 d5 shrx %rdx,%rbp,%rdx | |
| 3b1c: 44 89 de mov %r11d,%esi | |
| 3b1f: 23 14 b5 00 00 00 00 and 0x0(,%rsi,4),%edx | |
| 3b26: 8b bc 24 20 01 00 00 mov 0x120(%rsp),%edi | |
| return BIT_getMiddleBits(bitD->bitContainer, (sizeof(bitD->bitContainer)*8) - bitD->bitsConsumed - nbBits, nbBits); | |
| 3b2d: 01 f8 add %edi,%eax | |
| return (bitContainer >> (start & regMask)) & BIT_mask[nbBits]; | |
| 3b2f: 89 c6 mov %eax,%esi | |
| 3b31: 40 f6 de neg %sil | |
| 3b34: c4 62 cb f7 dd shrx %rsi,%rbp,%r11 | |
| 3b39: 89 fe mov %edi,%esi | |
| 3b3b: 44 23 1c b5 00 00 00 and 0x0(,%rsi,4),%r11d | |
| 3b42: 00 | |
| DStatePtr->state = DInfo.nextState + lowBits; | |
| 3b43: 48 03 94 24 08 01 00 add 0x108(%rsp),%rdx | |
| 3b4a: 00 | |
| 3b4b: 4c 03 9c 24 18 01 00 add 0x118(%rsp),%r11 | |
| 3b52: 00 | |
| 3b53: 8b bc 24 24 01 00 00 mov 0x124(%rsp),%edi | |
| return BIT_getMiddleBits(bitD->bitContainer, (sizeof(bitD->bitContainer)*8) - bitD->bitsConsumed - nbBits, nbBits); | |
| 3b5a: 01 f8 add %edi,%eax | |
| return (bitContainer >> (start & regMask)) & BIT_mask[nbBits]; | |
| 3b5c: 89 c6 mov %eax,%esi | |
| 3b5e: 40 f6 de neg %sil | |
| 3b61: c4 e2 cb f7 f5 shrx %rsi,%rbp,%rsi | |
| 3b66: 89 ff mov %edi,%edi | |
| 3b68: 23 34 bd 00 00 00 00 and 0x0(,%rdi,4),%esi | |
| 3b6f: 48 89 54 24 68 mov %rdx,0x68(%rsp) | |
| 3b74: 4c 89 9c 24 88 00 00 mov %r11,0x88(%rsp) | |
| 3b7b: 00 | |
| 3b7c: 48 03 b4 24 c0 00 00 add 0xc0(%rsp),%rsi | |
| 3b83: 00 | |
| bitD->bitsConsumed += nbBits; | |
| 3b84: 89 44 24 48 mov %eax,0x48(%rsp) | |
| prefetchPos += sequence.litLength; | |
| 3b88: 4d 01 fd add %r15,%r13 | |
| { const BYTE* const matchBase = (sequence.offset > prefetchPos) ? dictEnd : prefixStart; | |
| 3b8b: 4d 39 e5 cmp %r12,%r13 | |
| 3b8e: 48 8b 7c 24 10 mov 0x10(%rsp),%rdi | |
| 3b93: 48 0f 42 bc 24 e8 00 cmovb 0xe8(%rsp),%rdi | |
| 3b9a: 00 00 | |
| DStatePtr->state = DInfo.nextState + lowBits; | |
| 3b9c: 48 89 74 24 78 mov %rsi,0x78(%rsp) | |
| const BYTE* const match = matchBase + prefetchPos - sequence.offset; /* note : this operation can overflow when seq.offset is really too large, which can only happen when input is corrupted. | |
| 3ba1: 4c 01 ef add %r13,%rdi | |
| 3ba4: 4c 29 e7 sub %r12,%rdi | |
| PREFETCH_L1(match); PREFETCH_L1(match+CACHELINE_SIZE); /* note : it's safe to invoke PREFETCH() on any memory address, including invalid ones */ | |
| 3ba7: 0f 18 0f prefetcht0 (%rdi) | |
| 3baa: 0f 18 4f 40 prefetcht0 0x40(%rdi) | |
| sequences[seqNb] = sequence; | |
| 3bae: 4d 89 7a f0 mov %r15,-0x10(%r10) | |
| return prefetchPos + sequence.matchLength; | |
| 3bb2: 49 01 cd add %rcx,%r13 | |
| sequences[seqNb] = sequence; | |
| 3bb5: 49 89 4a f8 mov %rcx,-0x8(%r10) | |
| 3bb9: 4d 89 22 mov %r12,(%r10) | |
| for (seqNb=0; (BIT_reloadDStream(&seqState.DStream) <= BIT_DStream_completed) && (seqNb<seqAdvance); seqNb++) { | |
| 3bbc: 48 83 44 24 08 01 addq $0x1,0x8(%rsp) | |
| if (bitD->bitsConsumed > (sizeof(bitD->bitContainer)*8)) /* overflow detected, like end of stream */ | |
| 3bc2: 49 83 c2 18 add $0x18,%r10 | |
| 3bc6: 4d 89 e6 mov %r12,%r14 | |
| 3bc9: 83 f8 40 cmp $0x40,%eax | |
| 3bcc: 0f 87 6d 03 00 00 ja 3f3f <ZSTD_decompressSequencesLong_bmi2+0x8df> | |
| if (bitD->ptr >= bitD->limitPtr) { | |
| 3bd2: 49 83 f9 08 cmp $0x8,%r9 | |
| 3bd6: 7d 48 jge 3c20 <ZSTD_decompressSequencesLong_bmi2+0x5c0> | |
| if (bitD->ptr == bitD->start) { | |
| 3bd8: 4d 85 c9 test %r9,%r9 | |
| 3bdb: 0f 84 32 02 00 00 je 3e13 <ZSTD_decompressSequencesLong_bmi2+0x7b3> | |
| 3be1: 48 8b bc 24 f0 00 00 mov 0xf0(%rsp),%rdi | |
| 3be8: 00 | |
| 3be9: 4a 8d 0c 0f lea (%rdi,%r9,1),%rcx | |
| { U32 nbBytes = bitD->bitsConsumed >> 3; | |
| 3bed: 89 c5 mov %eax,%ebp | |
| 3bef: c1 ed 03 shr $0x3,%ebp | |
| if (bitD->ptr - nbBytes < bitD->start) { | |
| 3bf2: 48 29 e9 sub %rbp,%rcx | |
| 3bf5: 48 39 f9 cmp %rdi,%rcx | |
| 3bf8: 44 89 c9 mov %r9d,%ecx | |
| 3bfb: 0f 43 cd cmovae %ebp,%ecx | |
| bitD->ptr -= nbBytes; | |
| 3bfe: 49 29 c9 sub %rcx,%r9 | |
| 3c01: 4a 8d 2c 0f lea (%rdi,%r9,1),%rbp | |
| 3c05: 48 89 6c 24 50 mov %rbp,0x50(%rsp) | |
| bitD->bitsConsumed -= nbBytes*8; | |
| 3c0a: c1 e1 03 shl $0x3,%ecx | |
| 3c0d: 29 c8 sub %ecx,%eax | |
| 3c0f: eb 2b jmp 3c3c <ZSTD_decompressSequencesLong_bmi2+0x5dc> | |
| 3c11: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) | |
| 3c18: 00 00 00 | |
| 3c1b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) | |
| bitD->ptr -= bitD->bitsConsumed >> 3; | |
| 3c20: 89 c1 mov %eax,%ecx | |
| 3c22: c1 e9 03 shr $0x3,%ecx | |
| 3c25: 49 29 c9 sub %rcx,%r9 | |
| 3c28: 48 8b bc 24 f0 00 00 mov 0xf0(%rsp),%rdi | |
| 3c2f: 00 | |
| 3c30: 4a 8d 0c 0f lea (%rdi,%r9,1),%rcx | |
| 3c34: 48 89 4c 24 50 mov %rcx,0x50(%rsp) | |
| bitD->bitsConsumed &= 7; | |
| 3c39: 83 e0 07 and $0x7,%eax | |
| 3c3c: 89 44 24 48 mov %eax,0x48(%rsp) | |
| 3c40: 4a 8b 2c 0f mov (%rdi,%r9,1),%rbp | |
| 3c44: 48 89 6c 24 40 mov %rbp,0x40(%rsp) | |
| 3c49: 4c 89 4c 24 28 mov %r9,0x28(%rsp) | |
| 3c4e: 48 8b 4c 24 08 mov 0x8(%rsp),%rcx | |
| 3c53: 48 39 4c 24 20 cmp %rcx,0x20(%rsp) | |
| 3c58: 0f 84 d0 02 00 00 je 3f2e <ZSTD_decompressSequencesLong_bmi2+0x8ce> | |
| 3c5e: 4c 89 ac 24 d0 00 00 mov %r13,0xd0(%rsp) | |
| 3c65: 00 | |
| 3c66: 4c 89 8c 24 30 01 00 mov %r9,0x130(%rsp) | |
| 3c6d: 00 | |
| 3c6e: 48 89 6c 24 18 mov %rbp,0x18(%rsp) | |
| 3c73: 4c 89 74 24 30 mov %r14,0x30(%rsp) | |
| 3c78: 48 8b 8c 24 48 01 00 mov 0x148(%rsp),%rcx | |
| 3c7f: 00 | |
| ZSTD_seqSymbol const llDInfo = seqState->stateLL.table[seqState->stateLL.state]; | |
| 3c80: 0f b7 1c d1 movzwl (%rcx,%rdx,8),%ebx | |
| 3c84: 0f b6 7c d1 02 movzbl 0x2(%rcx,%rdx,8),%edi | |
| 3c89: 44 0f b6 74 d1 03 movzbl 0x3(%rcx,%rdx,8),%r14d | |
| 3c8f: 44 8b 4c d1 04 mov 0x4(%rcx,%rdx,8),%r9d | |
| 3c94: 48 8b 8c 24 10 01 00 mov 0x110(%rsp),%rcx | |
| 3c9b: 00 | |
| ZSTD_seqSymbol const mlDInfo = seqState->stateML.table[seqState->stateML.state]; | |
| 3c9c: 42 0f b7 54 d9 08 movzwl 0x8(%rcx,%r11,8),%edx | |
| 3ca2: 48 89 94 24 18 01 00 mov %rdx,0x118(%rsp) | |
| 3ca9: 00 | |
| 3caa: 46 0f b6 44 d9 0a movzbl 0xa(%rcx,%r11,8),%r8d | |
| 3cb0: 42 0f b6 54 d9 0b movzbl 0xb(%rcx,%r11,8),%edx | |
| 3cb6: 89 94 24 20 01 00 00 mov %edx,0x120(%rsp) | |
| 3cbd: 46 8b 5c d9 0c mov 0xc(%rcx,%r11,8),%r11d | |
| 3cc2: 48 8b 8c 24 40 01 00 mov 0x140(%rsp),%rcx | |
| 3cc9: 00 | |
| ZSTD_seqSymbol const ofDInfo = seqState->stateOffb.table[seqState->stateOffb.state]; | |
| 3cca: 44 0f b7 2c f1 movzwl (%rcx,%rsi,8),%r13d | |
| 3ccf: 0f b6 6c f1 02 movzbl 0x2(%rcx,%rsi,8),%ebp | |
| 3cd4: 48 89 bc 24 28 01 00 mov %rdi,0x128(%rsp) | |
| 3cdb: 00 | |
| BYTE const totalBits = llBits+mlBits+ofBits; | |
| 3cdc: 41 8d 14 38 lea (%r8,%rdi,1),%edx | |
| ZSTD_seqSymbol const ofDInfo = seqState->stateOffb.table[seqState->stateOffb.state]; | |
| 3ce0: 0f b6 7c f1 03 movzbl 0x3(%rcx,%rsi,8),%edi | |
| 3ce5: 89 bc 24 24 01 00 00 mov %edi,0x124(%rsp) | |
| 3cec: 44 8b 7c f1 04 mov 0x4(%rcx,%rsi,8),%r15d | |
| 3cf1: 83 fd 02 cmp $0x2,%ebp | |
| 3cf4: 4c 89 ac 24 c0 00 00 mov %r13,0xc0(%rsp) | |
| 3cfb: 00 | |
| 3cfc: 48 89 9c 24 08 01 00 mov %rbx,0x108(%rsp) | |
| 3d03: 00 | |
| if (ofBits > 1) { | |
| 3d04: 72 5a jb 3d60 <ZSTD_decompressSequencesLong_bmi2+0x700> | |
| return (bitD->bitContainer << (bitD->bitsConsumed & regMask)) >> (((regMask+1)-nbBits) & regMask); | |
| 3d06: c4 e2 f9 f7 74 24 18 shlx %rax,0x18(%rsp),%rsi | |
| 3d0d: 89 ef mov %ebp,%edi | |
| 3d0f: 40 f6 df neg %dil | |
| bitD->bitsConsumed += nbBits; | |
| 3d12: 01 e8 add %ebp,%eax | |
| 3d14: 89 44 24 48 mov %eax,0x48(%rsp) | |
| 3d18: 48 8b 9c 24 e0 00 00 mov 0xe0(%rsp),%rbx | |
| 3d1f: 00 | |
| seqState->prevOffset[2] = seqState->prevOffset[1]; | |
| 3d20: 48 89 9c 24 a8 00 00 mov %rbx,0xa8(%rsp) | |
| 3d27: 00 | |
| return (bitD->bitContainer << (bitD->bitsConsumed & regMask)) >> (((regMask+1)-nbBits) & regMask); | |
| 3d28: c4 e2 c3 f7 f6 shrx %rdi,%rsi,%rsi | |
| offset = ofBase + BIT_readBitsFast(&seqState->DStream, ofBits/*>0*/); /* <= (ZSTD_WINDOWLOG_MAX-1) bits */ | |
| 3d2d: 4c 01 fe add %r15,%rsi | |
| 3d30: 48 89 f7 mov %rsi,%rdi | |
| 3d33: 4d 89 cf mov %r9,%r15 | |
| 3d36: 4c 89 d9 mov %r11,%rcx | |
| 3d39: 45 89 f3 mov %r14d,%r11d | |
| 3d3c: 4c 8b 74 24 30 mov 0x30(%rsp),%r14 | |
| 3d41: 4c 89 b4 24 a0 00 00 mov %r14,0xa0(%rsp) | |
| 3d48: 00 | |
| 3d49: 48 89 bc 24 98 00 00 mov %rdi,0x98(%rsp) | |
| 3d50: 00 | |
| 3d51: 49 89 fc mov %rdi,%r12 | |
| 3d54: 4c 89 f7 mov %r14,%rdi | |
| 3d57: eb 2b jmp 3d84 <ZSTD_decompressSequencesLong_bmi2+0x724> | |
| 3d59: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) | |
| if (LIKELY((ofBits == 0))) { | |
| 3d60: 40 84 ed test %bpl,%bpl | |
| 3d63: 48 8b bc 24 e0 00 00 mov 0xe0(%rsp),%rdi | |
| 3d6a: 00 | |
| 3d6b: 0f 85 ba 00 00 00 jne 3e2b <ZSTD_decompressSequencesLong_bmi2+0x7cb> | |
| 3d71: 4d 89 cf mov %r9,%r15 | |
| U32 const ll0 = (llBase == 0); | |
| 3d74: 45 85 ff test %r15d,%r15d | |
| 3d77: 4c 89 d9 mov %r11,%rcx | |
| 3d7a: 45 89 f3 mov %r14d,%r11d | |
| if (LIKELY(!ll0)) | |
| 3d7d: 74 bd je 3d3c <ZSTD_decompressSequencesLong_bmi2+0x6dc> | |
| 3d7f: 4c 8b 64 24 30 mov 0x30(%rsp),%r12 | |
| 3d84: 4c 8b 8c 24 30 01 00 mov 0x130(%rsp),%r9 | |
| 3d8b: 00 | |
| 3d8c: 4c 8b ac 24 d0 00 00 mov 0xd0(%rsp),%r13 | |
| 3d93: 00 | |
| 3d94: 4c 8b b4 24 28 01 00 mov 0x128(%rsp),%r14 | |
| 3d9b: 00 | |
| 3d9c: 40 00 ea add %bpl,%dl | |
| if (mlBits > 0) | |
| 3d9f: 45 84 c0 test %r8b,%r8b | |
| 3da2: 74 2c je 3dd0 <ZSTD_decompressSequencesLong_bmi2+0x770> | |
| 3da4: 48 8b 6c 24 18 mov 0x18(%rsp),%rbp | |
| 3da9: c4 e2 f9 f7 f5 shlx %rax,%rbp,%rsi | |
| 3dae: 48 89 fb mov %rdi,%rbx | |
| 3db1: 44 89 c7 mov %r8d,%edi | |
| 3db4: 40 f6 df neg %dil | |
| 3db7: c4 e2 c3 f7 f6 shrx %rdi,%rsi,%rsi | |
| 3dbc: 48 89 df mov %rbx,%rdi | |
| bitD->bitsConsumed += nbBits; | |
| 3dbf: 44 01 c0 add %r8d,%eax | |
| 3dc2: 89 44 24 48 mov %eax,0x48(%rsp) | |
| seq.matchLength += BIT_readBitsFast(&seqState->DStream, mlBits/*>0*/); | |
| 3dc6: 48 01 f1 add %rsi,%rcx | |
| if (MEM_64bits() && UNLIKELY(totalBits >= STREAM_ACCUMULATOR_MIN_64-(LLFSELog+MLFSELog+OffFSELog))) | |
| 3dc9: 80 fa 1f cmp $0x1f,%dl | |
| 3dcc: 73 0c jae 3dda <ZSTD_decompressSequencesLong_bmi2+0x77a> | |
| 3dce: eb 13 jmp 3de3 <ZSTD_decompressSequencesLong_bmi2+0x783> | |
| 3dd0: 48 8b 6c 24 18 mov 0x18(%rsp),%rbp | |
| 3dd5: 80 fa 1f cmp $0x1f,%dl | |
| 3dd8: 72 09 jb 3de3 <ZSTD_decompressSequencesLong_bmi2+0x783> | |
| 3dda: 83 f8 40 cmp $0x40,%eax | |
| 3ddd: 0f 86 84 00 00 00 jbe 3e67 <ZSTD_decompressSequencesLong_bmi2+0x807> | |
| if (llBits > 0) | |
| 3de3: 45 84 f6 test %r14b,%r14b | |
| 3de6: 48 89 bc 24 e0 00 00 mov %rdi,0xe0(%rsp) | |
| 3ded: 00 | |
| 3dee: 0f 84 1c fd ff ff je 3b10 <ZSTD_decompressSequencesLong_bmi2+0x4b0> | |
| return (bitD->bitContainer << (bitD->bitsConsumed & regMask)) >> (((regMask+1)-nbBits) & regMask); | |
| 3df4: c4 e2 f9 f7 d5 shlx %rax,%rbp,%rdx | |
| 3df9: 44 89 f6 mov %r14d,%esi | |
| 3dfc: 40 f6 de neg %sil | |
| 3dff: c4 e2 cb f7 d2 shrx %rsi,%rdx,%rdx | |
| bitD->bitsConsumed += nbBits; | |
| 3e04: 44 01 f0 add %r14d,%eax | |
| 3e07: 89 44 24 48 mov %eax,0x48(%rsp) | |
| seq.litLength += BIT_readBitsFast(&seqState->DStream, llBits/*>0*/); | |
| 3e0b: 49 01 d7 add %rdx,%r15 | |
| 3e0e: e9 fd fc ff ff jmpq 3b10 <ZSTD_decompressSequencesLong_bmi2+0x4b0> | |
| 3e13: 45 31 c9 xor %r9d,%r9d | |
| 3e16: 48 8b 4c 24 08 mov 0x8(%rsp),%rcx | |
| for (seqNb=0; (BIT_reloadDStream(&seqState.DStream) <= BIT_DStream_completed) && (seqNb<seqAdvance); seqNb++) { | |
| 3e1b: 48 39 4c 24 20 cmp %rcx,0x20(%rsp) | |
| 3e20: 0f 85 38 fe ff ff jne 3c5e <ZSTD_decompressSequencesLong_bmi2+0x5fe> | |
| 3e26: e9 03 01 00 00 jmpq 3f2e <ZSTD_decompressSequencesLong_bmi2+0x8ce> | |
| 3e2b: 49 89 fc mov %rdi,%r12 | |
| offset = ofBase + ll0 + BIT_readBitsFast(&seqState->DStream, 1); | |
| 3e2e: 41 83 f9 01 cmp $0x1,%r9d | |
| 3e32: 41 83 d7 00 adc $0x0,%r15d | |
| return (bitD->bitContainer << (bitD->bitsConsumed & regMask)) >> (((regMask+1)-nbBits) & regMask); | |
| 3e36: c4 e2 f9 f7 74 24 18 shlx %rax,0x18(%rsp),%rsi | |
| 3e3d: 48 c1 ee 3f shr $0x3f,%rsi | |
| bitD->bitsConsumed += nbBits; | |
| 3e41: 83 c0 01 add $0x1,%eax | |
| 3e44: 89 44 24 48 mov %eax,0x48(%rsp) | |
| 3e48: 4c 01 fe add %r15,%rsi | |
| { size_t temp = (offset==3) ? seqState->prevOffset[0] - 1 : seqState->prevOffset[offset]; | |
| 3e4b: 48 83 fe 03 cmp $0x3,%rsi | |
| 3e4f: 75 6f jne 3ec0 <ZSTD_decompressSequencesLong_bmi2+0x860> | |
| 3e51: 48 8b 4c 24 30 mov 0x30(%rsp),%rcx | |
| 3e56: 48 8d 79 ff lea -0x1(%rcx),%rdi | |
| temp += !temp; /* 0 is not valid; input is corrupted; force offset to 1 */ | |
| 3e5a: 48 83 ff 01 cmp $0x1,%rdi | |
| 3e5e: 48 83 d7 00 adc $0x0,%rdi | |
| 3e62: 4c 89 d9 mov %r11,%rcx | |
| 3e65: eb 72 jmp 3ed9 <ZSTD_decompressSequencesLong_bmi2+0x879> | |
| 3e67: 4c 8b 4c 24 28 mov 0x28(%rsp),%r9 | |
| if (bitD->ptr >= bitD->limitPtr) { | |
| 3e6c: 49 83 f9 08 cmp $0x8,%r9 | |
| 3e70: 7d 77 jge 3ee9 <ZSTD_decompressSequencesLong_bmi2+0x889> | |
| 3e72: 49 89 f8 mov %rdi,%r8 | |
| if (bitD->ptr == bitD->start) { | |
| 3e75: 4d 85 c9 test %r9,%r9 | |
| 3e78: 0f 84 9e 00 00 00 je 3f1c <ZSTD_decompressSequencesLong_bmi2+0x8bc> | |
| 3e7e: 48 8b bc 24 f0 00 00 mov 0xf0(%rsp),%rdi | |
| 3e85: 00 | |
| 3e86: 4a 8d 14 0f lea (%rdi,%r9,1),%rdx | |
| { U32 nbBytes = bitD->bitsConsumed >> 3; | |
| 3e8a: 89 c6 mov %eax,%esi | |
| 3e8c: c1 ee 03 shr $0x3,%esi | |
| if (bitD->ptr - nbBytes < bitD->start) { | |
| 3e8f: 48 29 f2 sub %rsi,%rdx | |
| 3e92: 48 39 fa cmp %rdi,%rdx | |
| 3e95: 44 89 ca mov %r9d,%edx | |
| 3e98: 0f 43 d6 cmovae %esi,%edx | |
| bitD->ptr -= nbBytes; | |
| 3e9b: 49 29 d1 sub %rdx,%r9 | |
| 3e9e: 4a 8d 34 0f lea (%rdi,%r9,1),%rsi | |
| 3ea2: 48 89 74 24 50 mov %rsi,0x50(%rsp) | |
| bitD->bitsConsumed -= nbBytes*8; | |
| 3ea7: c1 e2 03 shl $0x3,%edx | |
| 3eaa: 29 d0 sub %edx,%eax | |
| 3eac: 89 44 24 48 mov %eax,0x48(%rsp) | |
| 3eb0: 4a 8b 2c 0f mov (%rdi,%r9,1),%rbp | |
| bitD->bitContainer = MEM_readLEST(bitD->ptr); /* reminder : srcSize > sizeof(bitD->bitContainer), otherwise bitD->ptr == bitD->start */ | |
| 3eb4: 48 89 6c 24 40 mov %rbp,0x40(%rsp) | |
| 3eb9: 4c 89 4c 24 28 mov %r9,0x28(%rsp) | |
| 3ebe: eb 66 jmp 3f26 <ZSTD_decompressSequencesLong_bmi2+0x8c6> | |
| { size_t temp = (offset==3) ? seqState->prevOffset[0] - 1 : seqState->prevOffset[offset]; | |
| 3ec0: 48 8b bc f4 98 00 00 mov 0x98(%rsp,%rsi,8),%rdi | |
| 3ec7: 00 | |
| temp += !temp; /* 0 is not valid; input is corrupted; force offset to 1 */ | |
| 3ec8: 48 83 ff 01 cmp $0x1,%rdi | |
| 3ecc: 48 83 d7 00 adc $0x0,%rdi | |
| if (offset != 1) seqState->prevOffset[2] = seqState->prevOffset[1]; | |
| 3ed0: 48 83 fe 01 cmp $0x1,%rsi | |
| 3ed4: 4c 89 d9 mov %r11,%rcx | |
| 3ed7: 74 08 je 3ee1 <ZSTD_decompressSequencesLong_bmi2+0x881> | |
| 3ed9: 4c 89 a4 24 a8 00 00 mov %r12,0xa8(%rsp) | |
| 3ee0: 00 | |
| 3ee1: 4d 89 cf mov %r9,%r15 | |
| 3ee4: e9 50 fe ff ff jmpq 3d39 <ZSTD_decompressSequencesLong_bmi2+0x6d9> | |
| bitD->ptr -= bitD->bitsConsumed >> 3; | |
| 3ee9: 89 c2 mov %eax,%edx | |
| 3eeb: c1 ea 03 shr $0x3,%edx | |
| 3eee: 49 29 d1 sub %rdx,%r9 | |
| 3ef1: 48 8b b4 24 f0 00 00 mov 0xf0(%rsp),%rsi | |
| 3ef8: 00 | |
| 3ef9: 4a 8d 14 0e lea (%rsi,%r9,1),%rdx | |
| 3efd: 48 89 54 24 50 mov %rdx,0x50(%rsp) | |
| bitD->bitsConsumed &= 7; | |
| 3f02: 83 e0 07 and $0x7,%eax | |
| 3f05: 89 44 24 48 mov %eax,0x48(%rsp) | |
| 3f09: 4a 8b 2c 0e mov (%rsi,%r9,1),%rbp | |
| bitD->bitContainer = MEM_readLEST(bitD->ptr); | |
| 3f0d: 48 89 6c 24 40 mov %rbp,0x40(%rsp) | |
| 3f12: 4c 89 4c 24 28 mov %r9,0x28(%rsp) | |
| 3f17: e9 c7 fe ff ff jmpq 3de3 <ZSTD_decompressSequencesLong_bmi2+0x783> | |
| 3f1c: 31 d2 xor %edx,%edx | |
| 3f1e: 48 89 54 24 28 mov %rdx,0x28(%rsp) | |
| 3f23: 45 31 c9 xor %r9d,%r9d | |
| 3f26: 4c 89 c7 mov %r8,%rdi | |
| 3f29: e9 b5 fe ff ff jmpq 3de3 <ZSTD_decompressSequencesLong_bmi2+0x783> | |
| 3f2e: 44 8b 7c 24 04 mov 0x4(%rsp),%r15d | |
| 3f33: 4c 8b 64 24 10 mov 0x10(%rsp),%r12 | |
| 3f38: 4c 8b 54 24 20 mov 0x20(%rsp),%r10 | |
| 3f3d: eb 21 jmp 3f60 <ZSTD_decompressSequencesLong_bmi2+0x900> | |
| 3f3f: 4c 8b 54 24 08 mov 0x8(%rsp),%r10 | |
| 3f44: 44 8b 7c 24 04 mov 0x4(%rsp),%r15d | |
| 3f49: 4c 8b 64 24 10 mov 0x10(%rsp),%r12 | |
| 3f4e: 49 c7 c3 ec ff ff ff mov $0xffffffffffffffec,%r11 | |
| for (seqNb=0; (BIT_reloadDStream(&seqState.DStream) <= BIT_DStream_completed) && (seqNb<seqAdvance); seqNb++) { | |
| 3f55: 44 3b 54 24 3c cmp 0x3c(%rsp),%r10d | |
| RETURN_ERROR_IF(seqNb<seqAdvance, corruption_detected, ""); | |
| 3f5a: 0f 8c ee 0c 00 00 jl 4c4e <ZSTD_decompressSequencesLong_bmi2+0x15ee> | |
| 3f60: 48 8b 8c 24 f8 00 00 mov 0xf8(%rsp),%rcx | |
| 3f67: 00 | |
| 3f68: 48 83 c1 e0 add $0xffffffffffffffe0,%rcx | |
| 3f6c: 48 89 8c 24 08 01 00 mov %rcx,0x108(%rsp) | |
| 3f73: 00 | |
| 3f74: 48 8b 8c 24 c8 00 00 mov 0xc8(%rsp),%rcx | |
| 3f7b: 00 | |
| 3f7c: 48 89 4c 24 18 mov %rcx,0x18(%rsp) | |
| if (bitD->bitsConsumed > (sizeof(bitD->bitContainer)*8)) /* overflow detected, like end of stream */ | |
| 3f81: 83 f8 41 cmp $0x41,%eax | |
| 3f84: 0f 83 fc 07 00 00 jae 4786 <ZSTD_decompressSequencesLong_bmi2+0x1126> | |
| 3f8a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) | |
| if (bitD->ptr >= bitD->limitPtr) { | |
| 3f90: 4c 8b 44 24 50 mov 0x50(%rsp),%r8 | |
| 3f95: 4c 8b 4c 24 60 mov 0x60(%rsp),%r9 | |
| 3f9a: 4d 39 c8 cmp %r9,%r8 | |
| 3f9d: 73 31 jae 3fd0 <ZSTD_decompressSequencesLong_bmi2+0x970> | |
| if (bitD->ptr == bitD->start) { | |
| 3f9f: 48 8b 4c 24 58 mov 0x58(%rsp),%rcx | |
| 3fa4: 49 39 c8 cmp %rcx,%r8 | |
| 3fa7: 74 43 je 3fec <ZSTD_decompressSequencesLong_bmi2+0x98c> | |
| { U32 nbBytes = bitD->bitsConsumed >> 3; | |
| 3fa9: 89 c2 mov %eax,%edx | |
| 3fab: c1 ea 03 shr $0x3,%edx | |
| if (bitD->ptr - nbBytes < bitD->start) { | |
| 3fae: 4c 89 c7 mov %r8,%rdi | |
| 3fb1: 48 29 d7 sub %rdx,%rdi | |
| 3fb4: 44 89 c6 mov %r8d,%esi | |
| 3fb7: 29 ce sub %ecx,%esi | |
| 3fb9: 48 39 cf cmp %rcx,%rdi | |
| 3fbc: 0f 43 f2 cmovae %edx,%esi | |
| bitD->ptr -= nbBytes; | |
| 3fbf: 49 29 f0 sub %rsi,%r8 | |
| 3fc2: 4c 89 44 24 50 mov %r8,0x50(%rsp) | |
| bitD->bitsConsumed -= nbBytes*8; | |
| 3fc7: c1 e6 03 shl $0x3,%esi | |
| 3fca: 29 f0 sub %esi,%eax | |
| 3fcc: eb 12 jmp 3fe0 <ZSTD_decompressSequencesLong_bmi2+0x980> | |
| 3fce: 66 90 xchg %ax,%ax | |
| bitD->ptr -= bitD->bitsConsumed >> 3; | |
| 3fd0: 89 c1 mov %eax,%ecx | |
| 3fd2: c1 e9 03 shr $0x3,%ecx | |
| 3fd5: 49 29 c8 sub %rcx,%r8 | |
| 3fd8: 4c 89 44 24 50 mov %r8,0x50(%rsp) | |
| bitD->bitsConsumed &= 7; | |
| 3fdd: 83 e0 07 and $0x7,%eax | |
| 3fe0: 89 44 24 48 mov %eax,0x48(%rsp) | |
| 3fe4: 49 8b 08 mov (%r8),%rcx | |
| 3fe7: 48 89 4c 24 40 mov %rcx,0x40(%rsp) | |
| for ( ; (BIT_reloadDStream(&(seqState.DStream)) <= BIT_DStream_completed) && (seqNb<nbSeq) ; seqNb++) { | |
| 3fec: 45 39 fa cmp %r15d,%r10d | |
| 3fef: 0f 8d a1 07 00 00 jge 4796 <ZSTD_decompressSequencesLong_bmi2+0x1136> | |
| 3ff5: 4c 89 54 24 20 mov %r10,0x20(%rsp) | |
| ZSTD_seqSymbol const llDInfo = seqState->stateLL.table[seqState->stateLL.state]; | |
| 3ffa: 48 8b 4c 24 68 mov 0x68(%rsp),%rcx | |
| 3fff: 48 8b 74 24 70 mov 0x70(%rsp),%rsi | |
| 4004: 44 0f b7 3c ce movzwl (%rsi,%rcx,8),%r15d | |
| 4009: 0f b6 54 ce 02 movzbl 0x2(%rsi,%rcx,8),%edx | |
| 400e: 0f b6 6c ce 03 movzbl 0x3(%rsi,%rcx,8),%ebp | |
| 4013: 8b 4c ce 04 mov 0x4(%rsi,%rcx,8),%ecx | |
| 4017: 48 89 4c 24 08 mov %rcx,0x8(%rsp) | |
| ZSTD_seqSymbol const mlDInfo = seqState->stateML.table[seqState->stateML.state]; | |
| 401c: 48 8b 8c 24 90 00 00 mov 0x90(%rsp),%rcx | |
| 4023: 00 | |
| 4024: 48 8b b4 24 88 00 00 mov 0x88(%rsp),%rsi | |
| 402b: 00 | |
| 402c: 44 0f b7 34 f1 movzwl (%rcx,%rsi,8),%r14d | |
| 4031: 0f b6 7c f1 02 movzbl 0x2(%rcx,%rsi,8),%edi | |
| 4036: 44 0f b6 64 f1 03 movzbl 0x3(%rcx,%rsi,8),%r12d | |
| 403c: 8b 4c f1 04 mov 0x4(%rcx,%rsi,8),%ecx | |
| 4040: 48 89 8c 24 e0 00 00 mov %rcx,0xe0(%rsp) | |
| 4047: 00 | |
| ZSTD_seqSymbol const ofDInfo = seqState->stateOffb.table[seqState->stateOffb.state]; | |
| 4048: 48 8b 8c 24 80 00 00 mov 0x80(%rsp),%rcx | |
| 404f: 00 | |
| 4050: 48 8b 74 24 78 mov 0x78(%rsp),%rsi | |
| 4055: 44 0f b7 1c f1 movzwl (%rcx,%rsi,8),%r11d | |
| 405a: 0f b6 5c f1 02 movzbl 0x2(%rcx,%rsi,8),%ebx | |
| 405f: 48 89 54 24 30 mov %rdx,0x30(%rsp) | |
| BYTE const totalBits = llBits+mlBits+ofBits; | |
| 4064: 44 8d 14 17 lea (%rdi,%rdx,1),%r10d | |
| ZSTD_seqSymbol const ofDInfo = seqState->stateOffb.table[seqState->stateOffb.state]; | |
| 4068: 0f b6 54 f1 03 movzbl 0x3(%rcx,%rsi,8),%edx | |
| 406d: 8b 4c f1 04 mov 0x4(%rcx,%rsi,8),%ecx | |
| 4071: 83 fb 02 cmp $0x2,%ebx | |
| 4074: 89 ac 24 d0 00 00 00 mov %ebp,0xd0(%rsp) | |
| 407b: 4c 89 8c 24 18 01 00 mov %r9,0x118(%rsp) | |
| 4082: 00 | |
| if (ofBits > 1) { | |
| 4083: 0f 82 c7 00 00 00 jb 4150 <ZSTD_decompressSequencesLong_bmi2+0xaf0> | |
| return (bitD->bitContainer << (bitD->bitsConsumed & regMask)) >> (((regMask+1)-nbBits) & regMask); | |
| 4089: c4 e2 f9 f7 74 24 40 shlx %rax,0x40(%rsp),%rsi | |
| 4090: 41 89 d9 mov %ebx,%r9d | |
| 4093: 41 f6 d9 neg %r9b | |
| 4096: c4 e2 b3 f7 f6 shrx %r9,%rsi,%rsi | |
| bitD->bitsConsumed += nbBits; | |
| 409b: 01 d8 add %ebx,%eax | |
| 409d: 89 44 24 48 mov %eax,0x48(%rsp) | |
| offset = ofBase + BIT_readBitsFast(&seqState->DStream, ofBits/*>0*/); /* <= (ZSTD_WINDOWLOG_MAX-1) bits */ | |
| 40a1: 48 01 ce add %rcx,%rsi | |
| seqState->prevOffset[1] = seqState->prevOffset[0]; | |
| 40a4: 0f 10 84 24 98 00 00 movups 0x98(%rsp),%xmm0 | |
| 40ab: 00 | |
| 40ac: 0f 11 84 24 a0 00 00 movups %xmm0,0xa0(%rsp) | |
| 40b3: 00 | |
| 40b4: 48 89 b4 24 c0 00 00 mov %rsi,0xc0(%rsp) | |
| 40bb: 00 | |
| 40bc: 48 89 b4 24 98 00 00 mov %rsi,0x98(%rsp) | |
| 40c3: 00 | |
| 40c4: 41 00 da add %bl,%r10b | |
| if (mlBits > 0) | |
| 40c7: 40 84 ff test %dil,%dil | |
| 40ca: 74 1f je 40eb <ZSTD_decompressSequencesLong_bmi2+0xa8b> | |
| return (bitD->bitContainer << (bitD->bitsConsumed & regMask)) >> (((regMask+1)-nbBits) & regMask); | |
| 40cc: c4 e2 f9 f7 4c 24 40 shlx %rax,0x40(%rsp),%rcx | |
| 40d3: 89 fe mov %edi,%esi | |
| 40d5: 40 f6 de neg %sil | |
| 40d8: c4 e2 cb f7 c9 shrx %rsi,%rcx,%rcx | |
| bitD->bitsConsumed += nbBits; | |
| 40dd: 01 f8 add %edi,%eax | |
| 40df: 89 44 24 48 mov %eax,0x48(%rsp) | |
| seq.matchLength += BIT_readBitsFast(&seqState->DStream, mlBits/*>0*/); | |
| 40e3: 48 01 8c 24 e0 00 00 add %rcx,0xe0(%rsp) | |
| 40ea: 00 | |
| 40eb: 41 89 d1 mov %edx,%r9d | |
| if (MEM_64bits() && UNLIKELY(totalBits >= STREAM_ACCUMULATOR_MIN_64-(LLFSELog+MLFSELog+OffFSELog))) | |
| 40ee: 41 80 fa 1f cmp $0x1f,%r10b | |
| 40f2: 0f 82 98 00 00 00 jb 4190 <ZSTD_decompressSequencesLong_bmi2+0xb30> | |
| 40f8: 83 f8 40 cmp $0x40,%eax | |
| 40fb: 48 8b 6c 24 30 mov 0x30(%rsp),%rbp | |
| 4100: 0f 87 8f 00 00 00 ja 4195 <ZSTD_decompressSequencesLong_bmi2+0xb35> | |
| if (bitD->ptr >= bitD->limitPtr) { | |
| 4106: 4c 3b 84 24 18 01 00 cmp 0x118(%rsp),%r8 | |
| 410d: 00 | |
| 410e: 0f 83 40 05 00 00 jae 4654 <ZSTD_decompressSequencesLong_bmi2+0xff4> | |
| if (bitD->ptr == bitD->start) { | |
| 4114: 48 8b 4c 24 58 mov 0x58(%rsp),%rcx | |
| 4119: 49 39 c8 cmp %rcx,%r8 | |
| 411c: 74 77 je 4195 <ZSTD_decompressSequencesLong_bmi2+0xb35> | |
| { U32 nbBytes = bitD->bitsConsumed >> 3; | |
| 411e: 89 c6 mov %eax,%esi | |
| 4120: c1 ee 03 shr $0x3,%esi | |
| if (bitD->ptr - nbBytes < bitD->start) { | |
| 4123: 4c 89 c7 mov %r8,%rdi | |
| 4126: 48 29 f7 sub %rsi,%rdi | |
| 4129: 44 89 c2 mov %r8d,%edx | |
| 412c: 29 ca sub %ecx,%edx | |
| 412e: 48 39 cf cmp %rcx,%rdi | |
| 4131: 0f 43 d6 cmovae %esi,%edx | |
| bitD->ptr -= nbBytes; | |
| 4134: 49 29 d0 sub %rdx,%r8 | |
| 4137: 4c 89 44 24 50 mov %r8,0x50(%rsp) | |
| bitD->bitsConsumed -= nbBytes*8; | |
| 413c: c1 e2 03 shl $0x3,%edx | |
| 413f: 29 d0 sub %edx,%eax | |
| 4141: e9 1e 05 00 00 jmpq 4664 <ZSTD_decompressSequencesLong_bmi2+0x1004> | |
| 4146: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) | |
| 414d: 00 00 00 | |
| if (LIKELY((ofBits == 0))) { | |
| 4150: 84 db test %bl,%bl | |
| 4152: 0f 85 b1 03 00 00 jne 4509 <ZSTD_decompressSequencesLong_bmi2+0xea9> | |
| U32 const ll0 = (llBase == 0); | |
| 4158: 83 7c 24 08 00 cmpl $0x0,0x8(%rsp) | |
| if (LIKELY(!ll0)) | |
| 415d: 0f 84 ee 03 00 00 je 4551 <ZSTD_decompressSequencesLong_bmi2+0xef1> | |
| offset = seqState->prevOffset[0]; | |
| 4163: 48 8b 8c 24 98 00 00 mov 0x98(%rsp),%rcx | |
| 416a: 00 | |
| 416b: 48 89 8c 24 c0 00 00 mov %rcx,0xc0(%rsp) | |
| 4172: 00 | |
| 4173: 41 00 da add %bl,%r10b | |
| if (mlBits > 0) | |
| 4176: 40 84 ff test %dil,%dil | |
| 4179: 0f 85 4d ff ff ff jne 40cc <ZSTD_decompressSequencesLong_bmi2+0xa6c> | |
| 417f: e9 67 ff ff ff jmpq 40eb <ZSTD_decompressSequencesLong_bmi2+0xa8b> | |
| 4184: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) | |
| 418b: 00 00 00 | |
| 418e: 66 90 xchg %ax,%ax | |
| 4190: 48 8b 6c 24 30 mov 0x30(%rsp),%rbp | |
| 4195: 48 8b 74 24 40 mov 0x40(%rsp),%rsi | |
| if (llBits > 0) | |
| 419a: 40 84 ed test %bpl,%bpl | |
| 419d: 48 8b 7c 24 18 mov 0x18(%rsp),%rdi | |
| 41a2: 74 19 je 41bd <ZSTD_decompressSequencesLong_bmi2+0xb5d> | |
| return (bitD->bitContainer << (bitD->bitsConsumed & regMask)) >> (((regMask+1)-nbBits) & regMask); | |
| 41a4: c4 e2 f9 f7 ce shlx %rax,%rsi,%rcx | |
| 41a9: 89 ea mov %ebp,%edx | |
| 41ab: f6 da neg %dl | |
| 41ad: c4 e2 eb f7 c9 shrx %rdx,%rcx,%rcx | |
| bitD->bitsConsumed += nbBits; | |
| 41b2: 01 e8 add %ebp,%eax | |
| 41b4: 89 44 24 48 mov %eax,0x48(%rsp) | |
| seq.litLength += BIT_readBitsFast(&seqState->DStream, llBits/*>0*/); | |
| 41b8: 48 01 4c 24 08 add %rcx,0x8(%rsp) | |
| 41bd: 8b 94 24 d0 00 00 00 mov 0xd0(%rsp),%edx | |
| return BIT_getMiddleBits(bitD->bitContainer, (sizeof(bitD->bitContainer)*8) - bitD->bitsConsumed - nbBits, nbBits); | |
| 41c4: 01 d0 add %edx,%eax | |
| return (bitContainer >> (start & regMask)) & BIT_mask[nbBits]; | |
| 41c6: 89 c1 mov %eax,%ecx | |
| 41c8: f6 d9 neg %cl | |
| 41ca: c4 e2 f3 f7 ce shrx %rcx,%rsi,%rcx | |
| 41cf: 89 d2 mov %edx,%edx | |
| 41d1: 23 0c 95 00 00 00 00 and 0x0(,%rdx,4),%ecx | |
| DStatePtr->state = DInfo.nextState + lowBits; | |
| 41d8: 4c 01 f9 add %r15,%rcx | |
| return BIT_getMiddleBits(bitD->bitContainer, (sizeof(bitD->bitContainer)*8) - bitD->bitsConsumed - nbBits, nbBits); | |
| 41db: 44 01 e0 add %r12d,%eax | |
| return (bitContainer >> (start & regMask)) & BIT_mask[nbBits]; | |
| 41de: 89 c2 mov %eax,%edx | |
| 41e0: f6 da neg %dl | |
| 41e2: c4 e2 eb f7 d6 shrx %rdx,%rsi,%rdx | |
| 41e7: 44 89 e5 mov %r12d,%ebp | |
| 41ea: 23 14 ad 00 00 00 00 and 0x0(,%rbp,4),%edx | |
| 41f1: 48 89 4c 24 68 mov %rcx,0x68(%rsp) | |
| 41f6: 4c 01 f2 add %r14,%rdx | |
| return BIT_getMiddleBits(bitD->bitContainer, (sizeof(bitD->bitContainer)*8) - bitD->bitsConsumed - nbBits, nbBits); | |
| 41f9: 44 01 c8 add %r9d,%eax | |
| return (bitContainer >> (start & regMask)) & BIT_mask[nbBits]; | |
| 41fc: 89 c1 mov %eax,%ecx | |
| 41fe: f6 d9 neg %cl | |
| 4200: c4 e2 f3 f7 ce shrx %rcx,%rsi,%rcx | |
| 4205: 44 89 ce mov %r9d,%esi | |
| 4208: 23 0c b5 00 00 00 00 and 0x0(,%rsi,4),%ecx | |
| 420f: 48 89 94 24 88 00 00 mov %rdx,0x88(%rsp) | |
| 4216: 00 | |
| 4217: 4c 01 d9 add %r11,%rcx | |
| bitD->bitsConsumed += nbBits; | |
| 421a: 89 44 24 48 mov %eax,0x48(%rsp) | |
| 421e: 48 89 4c 24 78 mov %rcx,0x78(%rsp) | |
| 4223: 4c 8b 54 24 20 mov 0x20(%rsp),%r10 | |
| size_t const oneSeqSize = ZSTD_execSequence(op, oend, sequences[(seqNb-ADVANCED_SEQS) & STORED_SEQS_MASK], &litPtr, litEnd, prefixStart, dictStart, dictEnd); | |
| 4228: 44 89 d0 mov %r10d,%eax | |
| 422b: 83 e0 07 and $0x7,%eax | |
| 422e: 4c 8d 04 40 lea (%rax,%rax,2),%r8 | |
| 4232: 4a 8b 94 c4 50 01 00 mov 0x150(%rsp,%r8,8),%rdx | |
| 4239: 00 | |
| 423a: 4a 8b 9c c4 58 01 00 mov 0x158(%rsp,%r8,8),%rbx | |
| 4241: 00 | |
| 4242: 4a 8b ac c4 60 01 00 mov 0x160(%rsp,%r8,8),%rbp | |
| 4249: 00 | |
| const BYTE* const iLitEnd = *litPtr + sequence.litLength; | |
| 424a: 48 8b 8c 24 d8 00 00 mov 0xd8(%rsp),%rcx | |
| 4251: 00 | |
| 4252: 48 8d 04 11 lea (%rcx,%rdx,1),%rax | |
| if (UNLIKELY( | |
| 4256: 48 3b 84 24 b8 00 00 cmp 0xb8(%rsp),%rax | |
| 425d: 00 | |
| 425e: 0f 87 c0 01 00 00 ja 4424 <ZSTD_decompressSequencesLong_bmi2+0xdc4> | |
| 4264: 4c 8d 1c 13 lea (%rbx,%rdx,1),%r11 | |
| 4268: 4a 8d 34 1f lea (%rdi,%r11,1),%rsi | |
| 426c: 48 3b b4 24 08 01 00 cmp 0x108(%rsp),%rsi | |
| 4273: 00 | |
| 4274: 0f 87 aa 01 00 00 ja 4424 <ZSTD_decompressSequencesLong_bmi2+0xdc4> | |
| 427a: 4c 8d 34 17 lea (%rdi,%rdx,1),%r14 | |
| 427e: 4d 89 f7 mov %r14,%r15 | |
| 4281: 49 29 ef sub %rbp,%r15 | |
| ZSTD_memcpy(dst, src, 16); | |
| 4284: 0f 10 01 movups (%rcx),%xmm0 | |
| 4287: 0f 11 07 movups %xmm0,(%rdi) | |
| if (UNLIKELY(sequence.litLength > 16)) { | |
| 428a: 48 83 fa 11 cmp $0x11,%rdx | |
| 428e: 0f 83 e5 01 00 00 jae 4479 <ZSTD_decompressSequencesLong_bmi2+0xe19> | |
| *litPtr = iLitEnd; /* update for next sequence */ | |
| 4294: 48 89 84 24 d8 00 00 mov %rax,0xd8(%rsp) | |
| 429b: 00 | |
| if (sequence.offset > (size_t)(oLitEnd - prefixStart)) { | |
| 429c: 4c 89 f0 mov %r14,%rax | |
| 429f: 4c 8b 64 24 10 mov 0x10(%rsp),%r12 | |
| 42a4: 4c 29 e0 sub %r12,%rax | |
| 42a7: 48 39 e8 cmp %rbp,%rax | |
| 42aa: 73 74 jae 4320 <ZSTD_decompressSequencesLong_bmi2+0xcc0> | |
| RETURN_ERROR_IF(UNLIKELY(sequence.offset > (size_t)(oLitEnd - virtualStart)), corruption_detected, ""); | |
| 42ac: 4c 89 f0 mov %r14,%rax | |
| 42af: 48 2b 84 24 00 01 00 sub 0x100(%rsp),%rax | |
| 42b6: 00 | |
| 42b7: 48 39 e8 cmp %rbp,%rax | |
| 42ba: 0f 82 a3 09 00 00 jb 4c63 <ZSTD_decompressSequencesLong_bmi2+0x1603> | |
| 42c0: 4c 89 44 24 30 mov %r8,0x30(%rsp) | |
| 42c5: 4c 89 ac 24 d0 00 00 mov %r13,0xd0(%rsp) | |
| 42cc: 00 | |
| 42cd: 4d 89 dd mov %r11,%r13 | |
| match = dictEnd + (match - prefixStart); | |
| 42d0: 4d 29 e7 sub %r12,%r15 | |
| 42d3: 48 8b 8c 24 e8 00 00 mov 0xe8(%rsp),%rcx | |
| 42da: 00 | |
| 42db: 4a 8d 34 39 lea (%rcx,%r15,1),%rsi | |
| if (match + sequence.matchLength <= dictEnd) { | |
| 42df: 48 8d 04 1e lea (%rsi,%rbx,1),%rax | |
| 42e3: 48 39 c8 cmp %rcx,%rax | |
| 42e6: 0f 86 94 00 00 00 jbe 4380 <ZSTD_decompressSequencesLong_bmi2+0xd20> | |
| { size_t const length1 = dictEnd - match; | |
| 42ec: 4c 89 fa mov %r15,%rdx | |
| 42ef: 48 f7 da neg %rdx | |
| ZSTD_memmove(oLitEnd, match, length1); | |
| 42f2: 4c 89 f7 mov %r14,%rdi | |
| 42f5: e8 00 00 00 00 callq 42fa <ZSTD_decompressSequencesLong_bmi2+0xc9a> | |
| op = oLitEnd + length1; | |
| 42fa: 4d 29 fe sub %r15,%r14 | |
| sequence.matchLength -= length1; | |
| 42fd: 4c 01 fb add %r15,%rbx | |
| 4300: 4d 89 e7 mov %r12,%r15 | |
| 4303: 4c 8b 54 24 20 mov 0x20(%rsp),%r10 | |
| 4308: 4d 89 eb mov %r13,%r11 | |
| 430b: 4c 8b ac 24 d0 00 00 mov 0xd0(%rsp),%r13 | |
| 4312: 00 | |
| 4313: 48 8b 54 24 08 mov 0x8(%rsp),%rdx | |
| 4318: 4c 8b 44 24 30 mov 0x30(%rsp),%r8 | |
| 431d: eb 06 jmp 4325 <ZSTD_decompressSequencesLong_bmi2+0xcc5> | |
| 431f: 90 nop | |
| 4320: 48 8b 54 24 08 mov 0x8(%rsp),%rdx | |
| if (LIKELY(sequence.offset >= WILDCOPY_VECLEN)) { | |
| 4325: 48 83 fd 10 cmp $0x10,%rbp | |
| 4329: 0f 82 92 01 00 00 jb 44c1 <ZSTD_decompressSequencesLong_bmi2+0xe61> | |
| 432f: 41 0f 10 07 movups (%r15),%xmm0 | |
| 4333: 41 0f 11 06 movups %xmm0,(%r14) | |
| if (16 >= length) return; | |
| 4337: 48 83 fb 11 cmp $0x11,%rbx | |
| 433b: 7c 3a jl 4377 <ZSTD_decompressSequencesLong_bmi2+0xd17> | |
| 433d: 4c 01 f3 add %r14,%rbx | |
| do { | |
| 4340: 49 83 c7 10 add $0x10,%r15 | |
| 4344: b8 10 00 00 00 mov $0x10,%eax | |
| 4349: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) | |
| ZSTD_memcpy(dst, src, 16); | |
| 4350: 41 0f 10 44 07 f0 movups -0x10(%r15,%rax,1),%xmm0 | |
| 4356: 41 0f 11 04 06 movups %xmm0,(%r14,%rax,1) | |
| 435b: 41 0f 10 04 07 movups (%r15,%rax,1),%xmm0 | |
| 4360: 41 0f 11 44 06 10 movups %xmm0,0x10(%r14,%rax,1) | |
| while (op < oend); | |
| 4366: 49 8d 0c 06 lea (%r14,%rax,1),%rcx | |
| 436a: 48 83 c1 20 add $0x20,%rcx | |
| 436e: 48 83 c0 20 add $0x20,%rax | |
| 4372: 48 39 d9 cmp %rbx,%rcx | |
| } | |
| 4375: 72 d9 jb 4350 <ZSTD_decompressSequencesLong_bmi2+0xcf0> | |
| 4377: 44 8b 7c 24 04 mov 0x4(%rsp),%r15d | |
| 437c: eb 2c jmp 43aa <ZSTD_decompressSequencesLong_bmi2+0xd4a> | |
| 437e: 66 90 xchg %ax,%ax | |
| ZSTD_memmove(oLitEnd, match, sequence.matchLength); | |
| 4380: 4c 89 f7 mov %r14,%rdi | |
| 4383: 48 89 da mov %rbx,%rdx | |
| 4386: e8 00 00 00 00 callq 438b <ZSTD_decompressSequencesLong_bmi2+0xd2b> | |
| 438b: 44 8b 7c 24 04 mov 0x4(%rsp),%r15d | |
| 4390: 4c 8b 54 24 20 mov 0x20(%rsp),%r10 | |
| 4395: 4d 89 eb mov %r13,%r11 | |
| 4398: 4c 8b ac 24 d0 00 00 mov 0xd0(%rsp),%r13 | |
| 439f: 00 | |
| 43a0: 48 8b 54 24 08 mov 0x8(%rsp),%rdx | |
| 43a5: 4c 8b 44 24 30 mov 0x30(%rsp),%r8 | |
| 43aa: 49 83 fb 88 cmp $0xffffffffffffff88,%r11 | |
| if (ZSTD_isError(oneSeqSize)) return oneSeqSize; | |
| 43ae: 0f 87 9a 08 00 00 ja 4c4e <ZSTD_decompressSequencesLong_bmi2+0x15ee> | |
| prefetchPos += sequence.litLength; | |
| 43b4: 49 01 d5 add %rdx,%r13 | |
| 43b7: 48 8b b4 24 c0 00 00 mov 0xc0(%rsp),%rsi | |
| 43be: 00 | |
| { const BYTE* const matchBase = (sequence.offset > prefetchPos) ? dictEnd : prefixStart; | |
| 43bf: 49 39 f5 cmp %rsi,%r13 | |
| 43c2: 4c 8b 64 24 10 mov 0x10(%rsp),%r12 | |
| 43c7: 4c 89 e0 mov %r12,%rax | |
| 43ca: 48 0f 42 84 24 e8 00 cmovb 0xe8(%rsp),%rax | |
| 43d1: 00 00 | |
| 43d3: 4a 8d 0c c4 lea (%rsp,%r8,8),%rcx | |
| 43d7: 48 81 c1 50 01 00 00 add $0x150,%rcx | |
| const BYTE* const match = matchBase + prefetchPos - sequence.offset; /* note : this operation can overflow when seq.offset is really too large, which can only happen when input is corrupted. | |
| 43de: 4c 01 e8 add %r13,%rax | |
| 43e1: 48 29 f0 sub %rsi,%rax | |
| PREFETCH_L1(match); PREFETCH_L1(match+CACHELINE_SIZE); /* note : it's safe to invoke PREFETCH() on any memory address, including invalid ones */ | |
| 43e4: 0f 18 08 prefetcht0 (%rax) | |
| 43e7: 0f 18 48 40 prefetcht0 0x40(%rax) | |
| 43eb: 48 8b 84 24 e0 00 00 mov 0xe0(%rsp),%rax | |
| 43f2: 00 | |
| return prefetchPos + sequence.matchLength; | |
| 43f3: 49 01 c5 add %rax,%r13 | |
| sequences[seqNb & STORED_SEQS_MASK] = sequence; | |
| 43f6: 48 89 11 mov %rdx,(%rcx) | |
| 43f9: 48 89 41 08 mov %rax,0x8(%rcx) | |
| 43fd: 48 89 71 10 mov %rsi,0x10(%rcx) | |
| 4401: 48 8b 4c 24 18 mov 0x18(%rsp),%rcx | |
| op += oneSeqSize; | |
| 4406: 4c 01 d9 add %r11,%rcx | |
| for ( ; (BIT_reloadDStream(&(seqState.DStream)) <= BIT_DStream_completed) && (seqNb<nbSeq) ; seqNb++) { | |
| 4409: 41 83 c2 01 add $0x1,%r10d | |
| if (bitD->bitsConsumed > (sizeof(bitD->bitContainer)*8)) /* overflow detected, like end of stream */ | |
| 440d: 8b 44 24 48 mov 0x48(%rsp),%eax | |
| 4411: 48 89 4c 24 18 mov %rcx,0x18(%rsp) | |
| 4416: 83 f8 41 cmp $0x41,%eax | |
| 4419: 0f 82 71 fb ff ff jb 3f90 <ZSTD_decompressSequencesLong_bmi2+0x930> | |
| 441f: e9 62 03 00 00 jmpq 4786 <ZSTD_decompressSequencesLong_bmi2+0x1126> | |
| 4424: 48 8b b4 24 f8 00 00 mov 0xf8(%rsp),%rsi | |
| 442b: 00 | |
| return ZSTD_execSequenceEnd(op, oend, sequence, litPtr, litLimit, prefixStart, virtualStart, dictEnd); | |
| 442c: 48 89 d9 mov %rbx,%rcx | |
| 442f: 4c 89 c3 mov %r8,%rbx | |
| 4432: 49 89 e8 mov %rbp,%r8 | |
| 4435: 4c 8d 8c 24 d8 00 00 lea 0xd8(%rsp),%r9 | |
| 443c: 00 | |
| 443d: ff b4 24 e8 00 00 00 pushq 0xe8(%rsp) | |
| 4444: ff b4 24 08 01 00 00 pushq 0x108(%rsp) | |
| 444b: ff 74 24 20 pushq 0x20(%rsp) | |
| 444f: ff b4 24 d0 00 00 00 pushq 0xd0(%rsp) | |
| 4456: e8 25 08 00 00 callq 4c80 <ZSTD_execSequenceEnd> | |
| 445b: 49 89 d8 mov %rbx,%r8 | |
| 445e: 4c 8b 54 24 40 mov 0x40(%rsp),%r10 | |
| 4463: 48 83 c4 20 add $0x20,%rsp | |
| 4467: 49 89 c3 mov %rax,%r11 | |
| 446a: 44 8b 7c 24 04 mov 0x4(%rsp),%r15d | |
| 446f: 48 8b 54 24 08 mov 0x8(%rsp),%rdx | |
| 4474: e9 31 ff ff ff jmpq 43aa <ZSTD_decompressSequencesLong_bmi2+0xd4a> | |
| ZSTD_wildcopy(op+16, (*litPtr)+16, sequence.litLength-16, ZSTD_no_overlap); | |
| 4479: 48 83 c2 f0 add $0xfffffffffffffff0,%rdx | |
| ZSTD_memcpy(dst, src, 16); | |
| 447d: 0f 10 41 10 movups 0x10(%rcx),%xmm0 | |
| 4481: 0f 11 47 10 movups %xmm0,0x10(%rdi) | |
| if (16 >= length) return; | |
| 4485: 48 83 fa 11 cmp $0x11,%rdx | |
| 4489: 0f 8c 05 fe ff ff jl 4294 <ZSTD_decompressSequencesLong_bmi2+0xc34> | |
| op += 16; | |
| 448f: 48 8d 57 20 lea 0x20(%rdi),%rdx | |
| do { | |
| 4493: 48 83 c1 30 add $0x30,%rcx | |
| 4497: 31 f6 xor %esi,%esi | |
| ZSTD_memcpy(dst, src, 16); | |
| 4499: 0f 10 44 31 f0 movups -0x10(%rcx,%rsi,1),%xmm0 | |
| 449e: 0f 11 04 32 movups %xmm0,(%rdx,%rsi,1) | |
| 44a2: 0f 10 04 31 movups (%rcx,%rsi,1),%xmm0 | |
| 44a6: 0f 11 44 32 10 movups %xmm0,0x10(%rdx,%rsi,1) | |
| while (op < oend); | |
| 44ab: 48 8d 3c 32 lea (%rdx,%rsi,1),%rdi | |
| 44af: 48 83 c7 20 add $0x20,%rdi | |
| 44b3: 48 83 c6 20 add $0x20,%rsi | |
| 44b7: 4c 39 f7 cmp %r14,%rdi | |
| } | |
| 44ba: 72 dd jb 4499 <ZSTD_decompressSequencesLong_bmi2+0xe39> | |
| 44bc: e9 d3 fd ff ff jmpq 4294 <ZSTD_decompressSequencesLong_bmi2+0xc34> | |
| if (offset < 8) { | |
| 44c1: 48 83 fd 07 cmp $0x7,%rbp | |
| 44c5: 0f 87 a3 00 00 00 ja 456e <ZSTD_decompressSequencesLong_bmi2+0xf0e> | |
| int const sub2 = dec64table[offset]; | |
| 44cb: 48 63 04 ad 00 00 00 movslq 0x0(,%rbp,4),%rax | |
| 44d2: 00 | |
| (*op)[0] = (*ip)[0]; | |
| 44d3: 41 8a 0f mov (%r15),%cl | |
| 44d6: 41 88 0e mov %cl,(%r14) | |
| (*op)[1] = (*ip)[1]; | |
| 44d9: 41 8a 4f 01 mov 0x1(%r15),%cl | |
| 44dd: 41 88 4e 01 mov %cl,0x1(%r14) | |
| (*op)[2] = (*ip)[2]; | |
| 44e1: 41 8a 4f 02 mov 0x2(%r15),%cl | |
| 44e5: 41 88 4e 02 mov %cl,0x2(%r14) | |
| (*op)[3] = (*ip)[3]; | |
| 44e9: 41 8a 4f 03 mov 0x3(%r15),%cl | |
| 44ed: 41 88 4e 03 mov %cl,0x3(%r14) | |
| *ip += dec32table[offset]; | |
| 44f1: 8b 0c ad 00 00 00 00 mov 0x0(,%rbp,4),%ecx | |
| 44f8: 49 8d 34 0f lea (%r15,%rcx,1),%rsi | |
| *ip -= sub2; | |
| 44fc: 48 29 c6 sub %rax,%rsi | |
| static void ZSTD_copy4(void* dst, const void* src) { ZSTD_memcpy(dst, src, 4); } | |
| 44ff: 41 8b 04 0f mov (%r15,%rcx,1),%eax | |
| 4503: 41 89 46 04 mov %eax,0x4(%r14) | |
| 4507: eb 6e jmp 4577 <ZSTD_decompressSequencesLong_bmi2+0xf17> | |
| offset = ofBase + ll0 + BIT_readBitsFast(&seqState->DStream, 1); | |
| 4509: 83 7c 24 08 01 cmpl $0x1,0x8(%rsp) | |
| 450e: 83 d1 00 adc $0x0,%ecx | |
| return (bitD->bitContainer << (bitD->bitsConsumed & regMask)) >> (((regMask+1)-nbBits) & regMask); | |
| 4511: c4 e2 f9 f7 74 24 40 shlx %rax,0x40(%rsp),%rsi | |
| 4518: 48 c1 ee 3f shr $0x3f,%rsi | |
| bitD->bitsConsumed += nbBits; | |
| 451c: 83 c0 01 add $0x1,%eax | |
| 451f: 89 44 24 48 mov %eax,0x48(%rsp) | |
| 4523: 48 01 ce add %rcx,%rsi | |
| { size_t temp = (offset==3) ? seqState->prevOffset[0] - 1 : seqState->prevOffset[offset]; | |
| 4526: 48 83 fe 03 cmp $0x3,%rsi | |
| 452a: 0f 85 58 01 00 00 jne 4688 <ZSTD_decompressSequencesLong_bmi2+0x1028> | |
| 4530: 48 8b 8c 24 98 00 00 mov 0x98(%rsp),%rcx | |
| 4537: 00 | |
| 4538: 48 83 c1 ff add $0xffffffffffffffff,%rcx | |
| temp += !temp; /* 0 is not valid; input is corrupted; force offset to 1 */ | |
| 453c: 48 83 f9 01 cmp $0x1,%rcx | |
| 4540: 48 83 d1 00 adc $0x0,%rcx | |
| 4544: 48 89 8c 24 c0 00 00 mov %rcx,0xc0(%rsp) | |
| 454b: 00 | |
| 454c: e9 55 01 00 00 jmpq 46a6 <ZSTD_decompressSequencesLong_bmi2+0x1046> | |
| seqState->prevOffset[1] = seqState->prevOffset[0]; | |
| 4551: 48 8b 8c 24 98 00 00 mov 0x98(%rsp),%rcx | |
| 4558: 00 | |
| offset = seqState->prevOffset[1]; | |
| 4559: 48 8b b4 24 a0 00 00 mov 0xa0(%rsp),%rsi | |
| 4560: 00 | |
| seqState->prevOffset[1] = seqState->prevOffset[0]; | |
| 4561: 48 89 8c 24 a0 00 00 mov %rcx,0xa0(%rsp) | |
| 4568: 00 | |
| 4569: e9 46 fb ff ff jmpq 40b4 <ZSTD_decompressSequencesLong_bmi2+0xa54> | |
| ZSTD_memcpy(dst, src, 8); | |
| 456e: 49 8b 07 mov (%r15),%rax | |
| 4571: 49 89 06 mov %rax,(%r14) | |
| *ip += 8; | |
| 4574: 4c 89 fe mov %r15,%rsi | |
| if (sequence.matchLength > 8) { | |
| 4577: 48 83 fb 09 cmp $0x9,%rbx | |
| 457b: 0f 82 f6 fd ff ff jb 4377 <ZSTD_decompressSequencesLong_bmi2+0xd17> | |
| 4581: 48 8d 4e 08 lea 0x8(%rsi),%rcx | |
| 4585: 49 8d 56 08 lea 0x8(%r14),%rdx | |
| ptrdiff_t diff = (BYTE*)dst - (const BYTE*)src; | |
| 4589: 48 89 d7 mov %rdx,%rdi | |
| 458c: 48 29 cf sub %rcx,%rdi | |
| BYTE* const oend = op + length; | |
| 458f: 49 8d 04 1e lea (%r14,%rbx,1),%rax | |
| 4593: 48 83 ff 0f cmp $0xf,%rdi | |
| if (ovtype == ZSTD_overlap_src_before_dst && diff < WILDCOPY_VECLEN) { | |
| 4597: 0f 8f 4a 01 00 00 jg 46e7 <ZSTD_decompressSequencesLong_bmi2+0x1087> | |
| 459d: 4d 89 c4 mov %r8,%r12 | |
| do { | |
| 45a0: 49 8d 7e 10 lea 0x10(%r14),%rdi | |
| 45a4: 48 39 f8 cmp %rdi,%rax | |
| 45a7: 48 89 fb mov %rdi,%rbx | |
| 45aa: 48 0f 47 d8 cmova %rax,%rbx | |
| 45ae: 4c 29 f3 sub %r14,%rbx | |
| 45b1: 48 83 c3 f7 add $0xfffffffffffffff7,%rbx | |
| 45b5: 48 83 fb 18 cmp $0x18,%rbx | |
| 45b9: 0f 82 9d 01 00 00 jb 475c <ZSTD_decompressSequencesLong_bmi2+0x10fc> | |
| 45bf: 48 39 f8 cmp %rdi,%rax | |
| 45c2: 48 0f 47 f8 cmova %rax,%rdi | |
| 45c6: 4c 29 f7 sub %r14,%rdi | |
| 45c9: 48 83 c7 07 add $0x7,%rdi | |
| 45cd: 48 83 e7 f8 and $0xfffffffffffffff8,%rdi | |
| 45d1: 48 8d 2c 3e lea (%rsi,%rdi,1),%rbp | |
| 45d5: 48 39 ea cmp %rbp,%rdx | |
| 45d8: 73 0c jae 45e6 <ZSTD_decompressSequencesLong_bmi2+0xf86> | |
| 45da: 4c 01 f7 add %r14,%rdi | |
| 45dd: 48 39 f9 cmp %rdi,%rcx | |
| 45e0: 0f 82 76 01 00 00 jb 475c <ZSTD_decompressSequencesLong_bmi2+0x10fc> | |
| 45e6: 48 c1 eb 03 shr $0x3,%rbx | |
| 45ea: 48 83 c3 01 add $0x1,%rbx | |
| 45ee: 49 89 d8 mov %rbx,%r8 | |
| 45f1: 49 83 e0 fc and $0xfffffffffffffffc,%r8 | |
| 45f5: 49 8d 78 fc lea -0x4(%r8),%rdi | |
| 45f9: 49 89 f9 mov %rdi,%r9 | |
| 45fc: 49 c1 e9 02 shr $0x2,%r9 | |
| 4600: 49 83 c1 01 add $0x1,%r9 | |
| 4604: 48 85 ff test %rdi,%rdi | |
| 4607: 0f 84 28 01 00 00 je 4735 <ZSTD_decompressSequencesLong_bmi2+0x10d5> | |
| 460d: 4c 89 cf mov %r9,%rdi | |
| 4610: 48 83 e7 fe and $0xfffffffffffffffe,%rdi | |
| 4614: 48 f7 df neg %rdi | |
| 4617: 31 ed xor %ebp,%ebp | |
| ZSTD_memcpy(dst, src, 8); | |
| 4619: 0f 10 44 ee 08 movups 0x8(%rsi,%rbp,8),%xmm0 | |
| 461e: 0f 10 4c ee 18 movups 0x18(%rsi,%rbp,8),%xmm1 | |
| 4623: 41 0f 11 44 ee 08 movups %xmm0,0x8(%r14,%rbp,8) | |
| 4629: 41 0f 11 4c ee 18 movups %xmm1,0x18(%r14,%rbp,8) | |
| 462f: 0f 10 44 ee 28 movups 0x28(%rsi,%rbp,8),%xmm0 | |
| 4634: 0f 10 4c ee 38 movups 0x38(%rsi,%rbp,8),%xmm1 | |
| 4639: 41 0f 11 44 ee 28 movups %xmm0,0x28(%r14,%rbp,8) | |
| 463f: 41 0f 11 4c ee 38 movups %xmm1,0x38(%r14,%rbp,8) | |
| 4645: 48 83 c5 08 add $0x8,%rbp | |
| 4649: 48 83 c7 02 add $0x2,%rdi | |
| 464d: 75 ca jne 4619 <ZSTD_decompressSequencesLong_bmi2+0xfb9> | |
| 464f: e9 e3 00 00 00 jmpq 4737 <ZSTD_decompressSequencesLong_bmi2+0x10d7> | |
| bitD->ptr -= bitD->bitsConsumed >> 3; | |
| 4654: 89 c1 mov %eax,%ecx | |
| 4656: c1 e9 03 shr $0x3,%ecx | |
| 4659: 49 29 c8 sub %rcx,%r8 | |
| 465c: 4c 89 44 24 50 mov %r8,0x50(%rsp) | |
| bitD->bitsConsumed &= 7; | |
| 4661: 83 e0 07 and $0x7,%eax | |
| 4664: 89 44 24 48 mov %eax,0x48(%rsp) | |
| 4668: 49 8b 08 mov (%r8),%rcx | |
| 466b: 48 89 4c 24 40 mov %rcx,0x40(%rsp) | |
| 4670: 48 8b 74 24 40 mov 0x40(%rsp),%rsi | |
| if (llBits > 0) | |
| 4675: 40 84 ed test %bpl,%bpl | |
| 4678: 48 8b 7c 24 18 mov 0x18(%rsp),%rdi | |
| 467d: 0f 85 21 fb ff ff jne 41a4 <ZSTD_decompressSequencesLong_bmi2+0xb44> | |
| 4683: e9 35 fb ff ff jmpq 41bd <ZSTD_decompressSequencesLong_bmi2+0xb5d> | |
| { size_t temp = (offset==3) ? seqState->prevOffset[0] - 1 : seqState->prevOffset[offset]; | |
| 4688: 48 8b 8c f4 98 00 00 mov 0x98(%rsp,%rsi,8),%rcx | |
| 468f: 00 | |
| temp += !temp; /* 0 is not valid; input is corrupted; force offset to 1 */ | |
| 4690: 48 83 f9 01 cmp $0x1,%rcx | |
| 4694: 48 83 d1 00 adc $0x0,%rcx | |
| 4698: 48 89 8c 24 c0 00 00 mov %rcx,0xc0(%rsp) | |
| 469f: 00 | |
| if (offset != 1) seqState->prevOffset[2] = seqState->prevOffset[1]; | |
| 46a0: 48 83 fe 01 cmp $0x1,%rsi | |
| 46a4: 74 10 je 46b6 <ZSTD_decompressSequencesLong_bmi2+0x1056> | |
| 46a6: 48 8b 8c 24 a0 00 00 mov 0xa0(%rsp),%rcx | |
| 46ad: 00 | |
| 46ae: 48 89 8c 24 a8 00 00 mov %rcx,0xa8(%rsp) | |
| 46b5: 00 | |
| seqState->prevOffset[1] = seqState->prevOffset[0]; | |
| 46b6: 48 8b 8c 24 98 00 00 mov 0x98(%rsp),%rcx | |
| 46bd: 00 | |
| 46be: 48 89 8c 24 a0 00 00 mov %rcx,0xa0(%rsp) | |
| 46c5: 00 | |
| 46c6: 48 8b 8c 24 c0 00 00 mov 0xc0(%rsp),%rcx | |
| 46cd: 00 | |
| seqState->prevOffset[0] = offset = temp; | |
| 46ce: 48 89 8c 24 98 00 00 mov %rcx,0x98(%rsp) | |
| 46d5: 00 | |
| 46d6: 41 00 da add %bl,%r10b | |
| if (mlBits > 0) | |
| 46d9: 40 84 ff test %dil,%dil | |
| 46dc: 0f 85 ea f9 ff ff jne 40cc <ZSTD_decompressSequencesLong_bmi2+0xa6c> | |
| 46e2: e9 04 fa ff ff jmpq 40eb <ZSTD_decompressSequencesLong_bmi2+0xa8b> | |
| ZSTD_memcpy(dst, src, 16); | |
| 46e7: 0f 10 01 movups (%rcx),%xmm0 | |
| 46ea: 0f 11 02 movups %xmm0,(%rdx) | |
| if (16 >= length) return; | |
| 46ed: 48 83 fb 19 cmp $0x19,%rbx | |
| 46f1: 0f 8c 73 fd ff ff jl 446a <ZSTD_decompressSequencesLong_bmi2+0xe0a> | |
| op += 16; | |
| 46f7: 49 83 c6 18 add $0x18,%r14 | |
| do { | |
| 46fb: 48 83 c6 28 add $0x28,%rsi | |
| 46ff: 31 c9 xor %ecx,%ecx | |
| ZSTD_memcpy(dst, src, 16); | |
| 4701: 0f 10 44 0e f0 movups -0x10(%rsi,%rcx,1),%xmm0 | |
| 4706: 41 0f 11 04 0e movups %xmm0,(%r14,%rcx,1) | |
| 470b: 0f 10 04 0e movups (%rsi,%rcx,1),%xmm0 | |
| 470f: 41 0f 11 44 0e 10 movups %xmm0,0x10(%r14,%rcx,1) | |
| while (op < oend); | |
| 4715: 49 8d 14 0e lea (%r14,%rcx,1),%rdx | |
| 4719: 48 83 c2 20 add $0x20,%rdx | |
| 471d: 48 83 c1 20 add $0x20,%rcx | |
| 4721: 48 39 c2 cmp %rax,%rdx | |
| } | |
| 4724: 72 db jb 4701 <ZSTD_decompressSequencesLong_bmi2+0x10a1> | |
| 4726: 44 8b 7c 24 04 mov 0x4(%rsp),%r15d | |
| 472b: 4c 8b 54 24 20 mov 0x20(%rsp),%r10 | |
| 4730: e9 3a fd ff ff jmpq 446f <ZSTD_decompressSequencesLong_bmi2+0xe0f> | |
| 4735: 31 ed xor %ebp,%ebp | |
| 4737: 41 f6 c1 01 test $0x1,%r9b | |
| 473b: 74 12 je 474f <ZSTD_decompressSequencesLong_bmi2+0x10ef> | |
| ZSTD_memcpy(dst, src, 8); | |
| 473d: 0f 10 04 e9 movups (%rcx,%rbp,8),%xmm0 | |
| 4741: 0f 10 4c e9 10 movups 0x10(%rcx,%rbp,8),%xmm1 | |
| 4746: 0f 11 04 ea movups %xmm0,(%rdx,%rbp,8) | |
| 474a: 0f 11 4c ea 10 movups %xmm1,0x10(%rdx,%rbp,8) | |
| } while (op < oend); | |
| 474f: 4c 39 c3 cmp %r8,%rbx | |
| 4752: 74 1b je 476f <ZSTD_decompressSequencesLong_bmi2+0x110f> | |
| 4754: 4a 8d 14 c2 lea (%rdx,%r8,8),%rdx | |
| 4758: 4a 8d 0c c1 lea (%rcx,%r8,8),%rcx | |
| ZSTD_memcpy(dst, src, 8); | |
| 475c: 48 8b 31 mov (%rcx),%rsi | |
| 475f: 48 89 32 mov %rsi,(%rdx) | |
| COPY8(op, ip) | |
| 4762: 48 83 c2 08 add $0x8,%rdx | |
| 4766: 48 83 c1 08 add $0x8,%rcx | |
| } while (op < oend); | |
| 476a: 48 39 c2 cmp %rax,%rdx | |
| 476d: 72 ed jb 475c <ZSTD_decompressSequencesLong_bmi2+0x10fc> | |
| 476f: 44 8b 7c 24 04 mov 0x4(%rsp),%r15d | |
| 4774: 4c 8b 54 24 20 mov 0x20(%rsp),%r10 | |
| 4779: 48 8b 54 24 08 mov 0x8(%rsp),%rdx | |
| 477e: 4d 89 e0 mov %r12,%r8 | |
| 4781: e9 24 fc ff ff jmpq 43aa <ZSTD_decompressSequencesLong_bmi2+0xd4a> | |
| 4786: 49 c7 c3 ec ff ff ff mov $0xffffffffffffffec,%r11 | |
| for ( ; (BIT_reloadDStream(&(seqState.DStream)) <= BIT_DStream_completed) && (seqNb<nbSeq) ; seqNb++) { | |
| 478d: 45 39 fa cmp %r15d,%r10d | |
| RETURN_ERROR_IF(seqNb<nbSeq, corruption_detected, ""); | |
| 4790: 0f 8c b8 04 00 00 jl 4c4e <ZSTD_decompressSequencesLong_bmi2+0x15ee> | |
| seqNb -= seqAdvance; | |
| 4796: 44 2b 54 24 3c sub 0x3c(%rsp),%r10d | |
| for ( ; seqNb<nbSeq ; seqNb++) { | |
| 479b: 45 39 fa cmp %r15d,%r10d | |
| 479e: 0f 8d 23 04 00 00 jge 4bc7 <ZSTD_decompressSequencesLong_bmi2+0x1567> | |
| 47a4: 4c 89 e7 mov %r12,%rdi | |
| 47a7: 4c 8b ac 24 c8 00 00 mov 0xc8(%rsp),%r13 | |
| 47ae: 00 | |
| 47af: 4c 8b a4 24 b8 00 00 mov 0xb8(%rsp),%r12 | |
| 47b6: 00 | |
| 47b7: 48 8b 4c 24 18 mov 0x18(%rsp),%rcx | |
| 47bc: 0f 1f 40 00 nopl 0x0(%rax) | |
| size_t const oneSeqSize = ZSTD_execSequence(op, oend, sequences[seqNb&STORED_SEQS_MASK], &litPtr, litEnd, prefixStart, dictStart, dictEnd); | |
| 47c0: 44 89 d0 mov %r10d,%eax | |
| 47c3: 83 e0 07 and $0x7,%eax | |
| 47c6: 48 8d 04 40 lea (%rax,%rax,2),%rax | |
| 47ca: 48 8b 94 c4 50 01 00 mov 0x150(%rsp,%rax,8),%rdx | |
| 47d1: 00 | |
| 47d2: 4c 8b b4 c4 58 01 00 mov 0x158(%rsp,%rax,8),%r14 | |
| 47d9: 00 | |
| 47da: 4c 8b 84 c4 60 01 00 mov 0x160(%rsp,%rax,8),%r8 | |
| 47e1: 00 | |
| size_t const sequenceLength = sequence.litLength + sequence.matchLength; | |
| 47e2: 4d 8d 1c 16 lea (%r14,%rdx,1),%r11 | |
| 47e6: 4a 8d 04 19 lea (%rcx,%r11,1),%rax | |
| 47ea: 48 3b 84 24 08 01 00 cmp 0x108(%rsp),%rax | |
| 47f1: 00 | |
| 47f2: 48 89 4c 24 18 mov %rcx,0x18(%rsp) | |
| if (UNLIKELY( | |
| 47f7: 0f 87 5d 01 00 00 ja 495a <ZSTD_decompressSequencesLong_bmi2+0x12fa> | |
| 47fd: 4c 8b 8c 24 d8 00 00 mov 0xd8(%rsp),%r9 | |
| 4804: 00 | |
| 4805: 49 8d 04 11 lea (%r9,%rdx,1),%rax | |
| 4809: 4c 39 e0 cmp %r12,%rax | |
| 480c: 0f 87 48 01 00 00 ja 495a <ZSTD_decompressSequencesLong_bmi2+0x12fa> | |
| 4812: 48 8d 2c 11 lea (%rcx,%rdx,1),%rbp | |
| 4816: 48 89 eb mov %rbp,%rbx | |
| 4819: 4c 29 c3 sub %r8,%rbx | |
| ZSTD_memcpy(dst, src, 16); | |
| 481c: 41 0f 10 01 movups (%r9),%xmm0 | |
| 4820: 0f 11 01 movups %xmm0,(%rcx) | |
| if (UNLIKELY(sequence.litLength > 16)) { | |
| 4823: 48 83 fa 11 cmp $0x11,%rdx | |
| 4827: 4c 89 c6 mov %r8,%rsi | |
| 482a: 0f 83 76 01 00 00 jae 49a6 <ZSTD_decompressSequencesLong_bmi2+0x1346> | |
| *litPtr = iLitEnd; /* update for next sequence */ | |
| 4830: 48 89 84 24 d8 00 00 mov %rax,0xd8(%rsp) | |
| 4837: 00 | |
| if (sequence.offset > (size_t)(oLitEnd - prefixStart)) { | |
| 4838: 48 89 e8 mov %rbp,%rax | |
| 483b: 48 29 f8 sub %rdi,%rax | |
| 483e: 48 39 f0 cmp %rsi,%rax | |
| 4841: 49 89 f0 mov %rsi,%r8 | |
| 4844: 73 6c jae 48b2 <ZSTD_decompressSequencesLong_bmi2+0x1252> | |
| RETURN_ERROR_IF(UNLIKELY(sequence.offset > (size_t)(oLitEnd - virtualStart)), corruption_detected, ""); | |
| 4846: 48 89 e8 mov %rbp,%rax | |
| 4849: 48 2b 84 24 00 01 00 sub 0x100(%rsp),%rax | |
| 4850: 00 | |
| 4851: 4c 39 c0 cmp %r8,%rax | |
| 4854: 0f 82 09 04 00 00 jb 4c63 <ZSTD_decompressSequencesLong_bmi2+0x1603> | |
| 485a: 4d 89 ef mov %r13,%r15 | |
| 485d: 4d 89 dd mov %r11,%r13 | |
| 4860: 4c 89 54 24 20 mov %r10,0x20(%rsp) | |
| match = dictEnd + (match - prefixStart); | |
| 4865: 48 29 fb sub %rdi,%rbx | |
| 4868: 48 8b 8c 24 e8 00 00 mov 0xe8(%rsp),%rcx | |
| 486f: 00 | |
| 4870: 48 8d 34 19 lea (%rcx,%rbx,1),%rsi | |
| if (match + sequence.matchLength <= dictEnd) { | |
| 4874: 4a 8d 04 36 lea (%rsi,%r14,1),%rax | |
| 4878: 48 39 c8 cmp %rcx,%rax | |
| 487b: 0f 86 93 00 00 00 jbe 4914 <ZSTD_decompressSequencesLong_bmi2+0x12b4> | |
| { size_t const length1 = dictEnd - match; | |
| 4881: 48 89 da mov %rbx,%rdx | |
| 4884: 48 f7 da neg %rdx | |
| ZSTD_memmove(oLitEnd, match, length1); | |
| 4887: 48 89 ef mov %rbp,%rdi | |
| 488a: 4c 89 44 24 08 mov %r8,0x8(%rsp) | |
| 488f: e8 00 00 00 00 callq 4894 <ZSTD_decompressSequencesLong_bmi2+0x1234> | |
| 4894: 4c 8b 44 24 08 mov 0x8(%rsp),%r8 | |
| op = oLitEnd + length1; | |
| 4899: 48 29 dd sub %rbx,%rbp | |
| sequence.matchLength -= length1; | |
| 489c: 49 01 de add %rbx,%r14 | |
| 489f: 48 8b 7c 24 10 mov 0x10(%rsp),%rdi | |
| 48a4: 48 89 fb mov %rdi,%rbx | |
| 48a7: 4c 8b 54 24 20 mov 0x20(%rsp),%r10 | |
| 48ac: 4d 89 eb mov %r13,%r11 | |
| 48af: 4d 89 fd mov %r15,%r13 | |
| if (LIKELY(sequence.offset >= WILDCOPY_VECLEN)) { | |
| 48b2: 49 83 f8 10 cmp $0x10,%r8 | |
| 48b6: 0f 82 41 01 00 00 jb 49fd <ZSTD_decompressSequencesLong_bmi2+0x139d> | |
| 48bc: 0f 10 03 movups (%rbx),%xmm0 | |
| 48bf: 0f 11 45 00 movups %xmm0,0x0(%rbp) | |
| if (16 >= length) return; | |
| 48c3: 49 83 fe 11 cmp $0x11,%r14 | |
| 48c7: 7c 3b jl 4904 <ZSTD_decompressSequencesLong_bmi2+0x12a4> | |
| 48c9: 49 01 ee add %rbp,%r14 | |
| do { | |
| 48cc: 48 83 c3 10 add $0x10,%rbx | |
| 48d0: b8 10 00 00 00 mov $0x10,%eax | |
| 48d5: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) | |
| 48dc: 00 00 00 | |
| 48df: 90 nop | |
| ZSTD_memcpy(dst, src, 16); | |
| 48e0: 0f 10 44 03 f0 movups -0x10(%rbx,%rax,1),%xmm0 | |
| 48e5: 0f 11 44 05 00 movups %xmm0,0x0(%rbp,%rax,1) | |
| 48ea: 0f 10 04 03 movups (%rbx,%rax,1),%xmm0 | |
| 48ee: 0f 11 44 05 10 movups %xmm0,0x10(%rbp,%rax,1) | |
| while (op < oend); | |
| 48f3: 48 8d 0c 28 lea (%rax,%rbp,1),%rcx | |
| 48f7: 48 83 c1 20 add $0x20,%rcx | |
| 48fb: 48 83 c0 20 add $0x20,%rax | |
| 48ff: 4c 39 f1 cmp %r14,%rcx | |
| } | |
| 4902: 72 dc jb 48e0 <ZSTD_decompressSequencesLong_bmi2+0x1280> | |
| 4904: 44 8b 7c 24 04 mov 0x4(%rsp),%r15d | |
| 4909: 49 83 fb 88 cmp $0xffffffffffffff88,%r11 | |
| 490d: 76 31 jbe 4940 <ZSTD_decompressSequencesLong_bmi2+0x12e0> | |
| 490f: e9 3a 03 00 00 jmpq 4c4e <ZSTD_decompressSequencesLong_bmi2+0x15ee> | |
| ZSTD_memmove(oLitEnd, match, sequence.matchLength); | |
| 4914: 48 89 ef mov %rbp,%rdi | |
| 4917: 4c 89 f2 mov %r14,%rdx | |
| 491a: e8 00 00 00 00 callq 491f <ZSTD_decompressSequencesLong_bmi2+0x12bf> | |
| 491f: 8b 44 24 04 mov 0x4(%rsp),%eax | |
| 4923: 48 8b 7c 24 10 mov 0x10(%rsp),%rdi | |
| 4928: 4c 8b 54 24 20 mov 0x20(%rsp),%r10 | |
| 492d: 4d 89 eb mov %r13,%r11 | |
| 4930: 4d 89 fd mov %r15,%r13 | |
| 4933: 41 89 c7 mov %eax,%r15d | |
| 4936: 49 83 fb 88 cmp $0xffffffffffffff88,%r11 | |
| 493a: 0f 87 0e 03 00 00 ja 4c4e <ZSTD_decompressSequencesLong_bmi2+0x15ee> | |
| 4940: 48 8b 4c 24 18 mov 0x18(%rsp),%rcx | |
| if (ZSTD_isError(oneSeqSize)) return oneSeqSize; | |
| 4945: 4c 01 d9 add %r11,%rcx | |
| for ( ; seqNb<nbSeq ; seqNb++) { | |
| 4948: 41 83 c2 01 add $0x1,%r10d | |
| 494c: 45 39 fa cmp %r15d,%r10d | |
| 494f: 0f 85 6b fe ff ff jne 47c0 <ZSTD_decompressSequencesLong_bmi2+0x1160> | |
| 4955: e9 82 02 00 00 jmpq 4bdc <ZSTD_decompressSequencesLong_bmi2+0x157c> | |
| return ZSTD_execSequenceEnd(op, oend, sequence, litPtr, litLimit, prefixStart, virtualStart, dictEnd); | |
| 495a: 48 89 cf mov %rcx,%rdi | |
| 495d: 48 8b b4 24 f8 00 00 mov 0xf8(%rsp),%rsi | |
| 4964: 00 | |
| 4965: 4c 89 f1 mov %r14,%rcx | |
| 4968: 4c 8d 8c 24 d8 00 00 lea 0xd8(%rsp),%r9 | |
| 496f: 00 | |
| 4970: ff b4 24 e8 00 00 00 pushq 0xe8(%rsp) | |
| 4977: ff b4 24 08 01 00 00 pushq 0x108(%rsp) | |
| 497e: ff 74 24 20 pushq 0x20(%rsp) | |
| 4982: 41 54 push %r12 | |
| 4984: 4c 89 d5 mov %r10,%rbp | |
| 4987: e8 f4 02 00 00 callq 4c80 <ZSTD_execSequenceEnd> | |
| 498c: 49 89 ea mov %rbp,%r10 | |
| 498f: 48 8b 7c 24 30 mov 0x30(%rsp),%rdi | |
| 4994: 48 83 c4 20 add $0x20,%rsp | |
| 4998: 49 89 c3 mov %rax,%r11 | |
| 499b: 49 83 fb 88 cmp $0xffffffffffffff88,%r11 | |
| 499f: 76 9f jbe 4940 <ZSTD_decompressSequencesLong_bmi2+0x12e0> | |
| 49a1: e9 a8 02 00 00 jmpq 4c4e <ZSTD_decompressSequencesLong_bmi2+0x15ee> | |
| ZSTD_wildcopy(op+16, (*litPtr)+16, sequence.litLength-16, ZSTD_no_overlap); | |
| 49a6: 48 83 c2 f0 add $0xfffffffffffffff0,%rdx | |
| ZSTD_memcpy(dst, src, 16); | |
| 49aa: 41 0f 10 41 10 movups 0x10(%r9),%xmm0 | |
| 49af: 48 8b 4c 24 18 mov 0x18(%rsp),%rcx | |
| 49b4: 0f 11 41 10 movups %xmm0,0x10(%rcx) | |
| if (16 >= length) return; | |
| 49b8: 48 83 fa 11 cmp $0x11,%rdx | |
| 49bc: 0f 8c 6e fe ff ff jl 4830 <ZSTD_decompressSequencesLong_bmi2+0x11d0> | |
| 49c2: 48 8b 4c 24 18 mov 0x18(%rsp),%rcx | |
| op += 16; | |
| 49c7: 4c 8d 41 20 lea 0x20(%rcx),%r8 | |
| do { | |
| 49cb: 49 83 c1 30 add $0x30,%r9 | |
| 49cf: 31 c9 xor %ecx,%ecx | |
| ZSTD_memcpy(dst, src, 16); | |
| 49d1: 41 0f 10 44 09 f0 movups -0x10(%r9,%rcx,1),%xmm0 | |
| 49d7: 41 0f 11 04 08 movups %xmm0,(%r8,%rcx,1) | |
| 49dc: 41 0f 10 04 09 movups (%r9,%rcx,1),%xmm0 | |
| 49e1: 41 0f 11 44 08 10 movups %xmm0,0x10(%r8,%rcx,1) | |
| while (op < oend); | |
| 49e7: 49 8d 14 08 lea (%r8,%rcx,1),%rdx | |
| 49eb: 48 83 c2 20 add $0x20,%rdx | |
| 49ef: 48 83 c1 20 add $0x20,%rcx | |
| 49f3: 48 39 ea cmp %rbp,%rdx | |
| } | |
| 49f6: 72 d9 jb 49d1 <ZSTD_decompressSequencesLong_bmi2+0x1371> | |
| 49f8: e9 33 fe ff ff jmpq 4830 <ZSTD_decompressSequencesLong_bmi2+0x11d0> | |
| if (offset < 8) { | |
| 49fd: 49 83 f8 07 cmp $0x7,%r8 | |
| 4a01: 77 36 ja 4a39 <ZSTD_decompressSequencesLong_bmi2+0x13d9> | |
| int const sub2 = dec64table[offset]; | |
| 4a03: 4a 63 04 85 00 00 00 movslq 0x0(,%r8,4),%rax | |
| 4a0a: 00 | |
| (*op)[0] = (*ip)[0]; | |
| 4a0b: 8a 0b mov (%rbx),%cl | |
| 4a0d: 88 4d 00 mov %cl,0x0(%rbp) | |
| (*op)[1] = (*ip)[1]; | |
| 4a10: 8a 4b 01 mov 0x1(%rbx),%cl | |
| 4a13: 88 4d 01 mov %cl,0x1(%rbp) | |
| (*op)[2] = (*ip)[2]; | |
| 4a16: 8a 4b 02 mov 0x2(%rbx),%cl | |
| 4a19: 88 4d 02 mov %cl,0x2(%rbp) | |
| (*op)[3] = (*ip)[3]; | |
| 4a1c: 8a 4b 03 mov 0x3(%rbx),%cl | |
| 4a1f: 88 4d 03 mov %cl,0x3(%rbp) | |
| *ip += dec32table[offset]; | |
| 4a22: 42 8b 0c 85 00 00 00 mov 0x0(,%r8,4),%ecx | |
| 4a29: 00 | |
| 4a2a: 48 8d 34 0b lea (%rbx,%rcx,1),%rsi | |
| *ip -= sub2; | |
| 4a2e: 48 29 c6 sub %rax,%rsi | |
| static void ZSTD_copy4(void* dst, const void* src) { ZSTD_memcpy(dst, src, 4); } | |
| 4a31: 8b 04 0b mov (%rbx,%rcx,1),%eax | |
| 4a34: 89 45 04 mov %eax,0x4(%rbp) | |
| 4a37: eb 0a jmp 4a43 <ZSTD_decompressSequencesLong_bmi2+0x13e3> | |
| ZSTD_memcpy(dst, src, 8); | |
| 4a39: 48 8b 03 mov (%rbx),%rax | |
| 4a3c: 48 89 45 00 mov %rax,0x0(%rbp) | |
| *ip += 8; | |
| 4a40: 48 89 de mov %rbx,%rsi | |
| if (sequence.matchLength > 8) { | |
| 4a43: 49 83 fe 09 cmp $0x9,%r14 | |
| 4a47: 0f 82 b7 fe ff ff jb 4904 <ZSTD_decompressSequencesLong_bmi2+0x12a4> | |
| 4a4d: 4d 89 df mov %r11,%r15 | |
| 4a50: 4d 89 d3 mov %r10,%r11 | |
| 4a53: 48 8d 4e 08 lea 0x8(%rsi),%rcx | |
| 4a57: 48 8d 55 08 lea 0x8(%rbp),%rdx | |
| ptrdiff_t diff = (BYTE*)dst - (const BYTE*)src; | |
| 4a5b: 48 89 d7 mov %rdx,%rdi | |
| 4a5e: 48 29 cf sub %rcx,%rdi | |
| BYTE* const oend = op + length; | |
| 4a61: 49 8d 04 2e lea (%r14,%rbp,1),%rax | |
| 4a65: 48 83 ff 0f cmp $0xf,%rdi | |
| if (ovtype == ZSTD_overlap_src_before_dst && diff < WILDCOPY_VECLEN) { | |
| 4a69: 0f 8f b1 00 00 00 jg 4b20 <ZSTD_decompressSequencesLong_bmi2+0x14c0> | |
| do { | |
| 4a6f: 48 8d 7d 10 lea 0x10(%rbp),%rdi | |
| 4a73: 48 39 f8 cmp %rdi,%rax | |
| 4a76: 49 89 fa mov %rdi,%r10 | |
| 4a79: 4c 0f 47 d0 cmova %rax,%r10 | |
| 4a7d: 49 29 ea sub %rbp,%r10 | |
| 4a80: 49 83 c2 f7 add $0xfffffffffffffff7,%r10 | |
| 4a84: 49 83 fa 18 cmp $0x18,%r10 | |
| 4a88: 0f 82 f5 00 00 00 jb 4b83 <ZSTD_decompressSequencesLong_bmi2+0x1523> | |
| 4a8e: 48 39 f8 cmp %rdi,%rax | |
| 4a91: 48 0f 47 f8 cmova %rax,%rdi | |
| 4a95: 48 29 ef sub %rbp,%rdi | |
| 4a98: 48 83 c7 f7 add $0xfffffffffffffff7,%rdi | |
| 4a9c: 48 83 e7 f8 and $0xfffffffffffffff8,%rdi | |
| 4aa0: 48 8d 1c 3e lea (%rsi,%rdi,1),%rbx | |
| 4aa4: 48 83 c3 10 add $0x10,%rbx | |
| 4aa8: 48 39 da cmp %rbx,%rdx | |
| 4aab: 73 10 jae 4abd <ZSTD_decompressSequencesLong_bmi2+0x145d> | |
| 4aad: 48 01 ef add %rbp,%rdi | |
| 4ab0: 48 83 c7 10 add $0x10,%rdi | |
| 4ab4: 48 39 f9 cmp %rdi,%rcx | |
| 4ab7: 0f 82 c6 00 00 00 jb 4b83 <ZSTD_decompressSequencesLong_bmi2+0x1523> | |
| 4abd: 49 c1 ea 03 shr $0x3,%r10 | |
| 4ac1: 49 83 c2 01 add $0x1,%r10 | |
| 4ac5: 4d 89 d0 mov %r10,%r8 | |
| 4ac8: 49 83 e0 fc and $0xfffffffffffffffc,%r8 | |
| 4acc: 49 8d 78 fc lea -0x4(%r8),%rdi | |
| 4ad0: 49 89 f9 mov %rdi,%r9 | |
| 4ad3: 49 c1 e9 02 shr $0x2,%r9 | |
| 4ad7: 49 83 c1 01 add $0x1,%r9 | |
| 4adb: 48 85 ff test %rdi,%rdi | |
| 4ade: 74 7c je 4b5c <ZSTD_decompressSequencesLong_bmi2+0x14fc> | |
| 4ae0: 4c 89 cf mov %r9,%rdi | |
| 4ae3: 48 83 e7 fe and $0xfffffffffffffffe,%rdi | |
| 4ae7: 48 f7 df neg %rdi | |
| 4aea: 31 db xor %ebx,%ebx | |
| ZSTD_memcpy(dst, src, 8); | |
| 4aec: 0f 10 44 de 08 movups 0x8(%rsi,%rbx,8),%xmm0 | |
| 4af1: 0f 10 4c de 18 movups 0x18(%rsi,%rbx,8),%xmm1 | |
| 4af6: 0f 11 44 dd 08 movups %xmm0,0x8(%rbp,%rbx,8) | |
| 4afb: 0f 11 4c dd 18 movups %xmm1,0x18(%rbp,%rbx,8) | |
| 4b00: 0f 10 44 de 28 movups 0x28(%rsi,%rbx,8),%xmm0 | |
| 4b05: 0f 10 4c de 38 movups 0x38(%rsi,%rbx,8),%xmm1 | |
| 4b0a: 0f 11 44 dd 28 movups %xmm0,0x28(%rbp,%rbx,8) | |
| 4b0f: 0f 11 4c dd 38 movups %xmm1,0x38(%rbp,%rbx,8) | |
| 4b14: 48 83 c3 08 add $0x8,%rbx | |
| 4b18: 48 83 c7 02 add $0x2,%rdi | |
| 4b1c: 75 ce jne 4aec <ZSTD_decompressSequencesLong_bmi2+0x148c> | |
| 4b1e: eb 3e jmp 4b5e <ZSTD_decompressSequencesLong_bmi2+0x14fe> | |
| ZSTD_memcpy(dst, src, 16); | |
| 4b20: 0f 10 01 movups (%rcx),%xmm0 | |
| 4b23: 0f 11 02 movups %xmm0,(%rdx) | |
| if (16 >= length) return; | |
| 4b26: 49 83 fe 19 cmp $0x19,%r14 | |
| 4b2a: 7c 6a jl 4b96 <ZSTD_decompressSequencesLong_bmi2+0x1536> | |
| op += 16; | |
| 4b2c: 48 83 c5 18 add $0x18,%rbp | |
| do { | |
| 4b30: 48 83 c6 28 add $0x28,%rsi | |
| 4b34: 31 c9 xor %ecx,%ecx | |
| ZSTD_memcpy(dst, src, 16); | |
| 4b36: 0f 10 44 0e f0 movups -0x10(%rsi,%rcx,1),%xmm0 | |
| 4b3b: 0f 11 44 0d 00 movups %xmm0,0x0(%rbp,%rcx,1) | |
| 4b40: 0f 10 04 0e movups (%rsi,%rcx,1),%xmm0 | |
| 4b44: 0f 11 44 0d 10 movups %xmm0,0x10(%rbp,%rcx,1) | |
| while (op < oend); | |
| 4b49: 48 8d 14 29 lea (%rcx,%rbp,1),%rdx | |
| 4b4d: 48 83 c2 20 add $0x20,%rdx | |
| 4b51: 48 83 c1 20 add $0x20,%rcx | |
| 4b55: 48 39 c2 cmp %rax,%rdx | |
| } | |
| 4b58: 72 dc jb 4b36 <ZSTD_decompressSequencesLong_bmi2+0x14d6> | |
| 4b5a: eb 3a jmp 4b96 <ZSTD_decompressSequencesLong_bmi2+0x1536> | |
| 4b5c: 31 db xor %ebx,%ebx | |
| 4b5e: 41 f6 c1 01 test $0x1,%r9b | |
| 4b62: 74 12 je 4b76 <ZSTD_decompressSequencesLong_bmi2+0x1516> | |
| ZSTD_memcpy(dst, src, 8); | |
| 4b64: 0f 10 04 d9 movups (%rcx,%rbx,8),%xmm0 | |
| 4b68: 0f 10 4c d9 10 movups 0x10(%rcx,%rbx,8),%xmm1 | |
| 4b6d: 0f 11 04 da movups %xmm0,(%rdx,%rbx,8) | |
| 4b71: 0f 11 4c da 10 movups %xmm1,0x10(%rdx,%rbx,8) | |
| } while (op < oend); | |
| 4b76: 4d 39 c2 cmp %r8,%r10 | |
| 4b79: 74 1b je 4b96 <ZSTD_decompressSequencesLong_bmi2+0x1536> | |
| 4b7b: 4a 8d 14 c2 lea (%rdx,%r8,8),%rdx | |
| 4b7f: 4a 8d 0c c1 lea (%rcx,%r8,8),%rcx | |
| ZSTD_memcpy(dst, src, 8); | |
| 4b83: 48 8b 31 mov (%rcx),%rsi | |
| 4b86: 48 89 32 mov %rsi,(%rdx) | |
| COPY8(op, ip) | |
| 4b89: 48 83 c2 08 add $0x8,%rdx | |
| 4b8d: 48 83 c1 08 add $0x8,%rcx | |
| } while (op < oend); | |
| 4b91: 48 39 c2 cmp %rax,%rdx | |
| 4b94: 72 ed jb 4b83 <ZSTD_decompressSequencesLong_bmi2+0x1523> | |
| 4b96: 4c 8b ac 24 c8 00 00 mov 0xc8(%rsp),%r13 | |
| 4b9d: 00 | |
| 4b9e: 4c 8b a4 24 b8 00 00 mov 0xb8(%rsp),%r12 | |
| 4ba5: 00 | |
| 4ba6: 8b 44 24 04 mov 0x4(%rsp),%eax | |
| 4baa: 48 8b 7c 24 10 mov 0x10(%rsp),%rdi | |
| 4baf: 4d 89 da mov %r11,%r10 | |
| 4bb2: 4d 89 fb mov %r15,%r11 | |
| 4bb5: 41 89 c7 mov %eax,%r15d | |
| 4bb8: 49 83 fb 88 cmp $0xffffffffffffff88,%r11 | |
| 4bbc: 0f 86 7e fd ff ff jbe 4940 <ZSTD_decompressSequencesLong_bmi2+0x12e0> | |
| 4bc2: e9 87 00 00 00 jmpq 4c4e <ZSTD_decompressSequencesLong_bmi2+0x15ee> | |
| 4bc7: 4c 8b ac 24 c8 00 00 mov 0xc8(%rsp),%r13 | |
| 4bce: 00 | |
| 4bcf: 4c 8b a4 24 b8 00 00 mov 0xb8(%rsp),%r12 | |
| 4bd6: 00 | |
| 4bd7: 48 8b 4c 24 18 mov 0x18(%rsp),%rcx | |
| { U32 i; for (i=0; i<ZSTD_REP_NUM; i++) dctx->entropy.rep[i] = (U32)(seqState.prevOffset[i]); } | |
| 4bdc: 8b 84 24 98 00 00 00 mov 0x98(%rsp),%eax | |
| 4be3: 48 8b 94 24 38 01 00 mov 0x138(%rsp),%rdx | |
| 4bea: 00 | |
| 4beb: 89 82 3c 68 00 00 mov %eax,0x683c(%rdx) | |
| 4bf1: 8b 84 24 a0 00 00 00 mov 0xa0(%rsp),%eax | |
| 4bf8: 89 82 40 68 00 00 mov %eax,0x6840(%rdx) | |
| 4bfe: 8b 84 24 a8 00 00 00 mov 0xa8(%rsp),%eax | |
| 4c05: 89 82 44 68 00 00 mov %eax,0x6844(%rdx) | |
| { size_t const lastLLSize = litEnd - litPtr; | |
| 4c0b: 48 8b b4 24 d8 00 00 mov 0xd8(%rsp),%rsi | |
| 4c12: 00 | |
| 4c13: 48 8b 94 24 f8 00 00 mov 0xf8(%rsp),%rdx | |
| 4c1a: 00 | |
| 4c1b: 49 29 f4 sub %rsi,%r12 | |
| RETURN_ERROR_IF(lastLLSize > (size_t)(oend-op), dstSize_tooSmall, ""); | |
| 4c1e: 48 29 ca sub %rcx,%rdx | |
| 4c21: 49 c7 c3 ba ff ff ff mov $0xffffffffffffffba,%r11 | |
| 4c28: 49 39 d4 cmp %rdx,%r12 | |
| 4c2b: 77 21 ja 4c4e <ZSTD_decompressSequencesLong_bmi2+0x15ee> | |
| if (op != NULL) { | |
| 4c2d: 48 85 c9 test %rcx,%rcx | |
| 4c30: 74 16 je 4c48 <ZSTD_decompressSequencesLong_bmi2+0x15e8> | |
| ZSTD_memcpy(op, litPtr, lastLLSize); | |
| 4c32: 48 89 cf mov %rcx,%rdi | |
| 4c35: 4c 89 e2 mov %r12,%rdx | |
| 4c38: 48 89 cb mov %rcx,%rbx | |
| 4c3b: e8 00 00 00 00 callq 4c40 <ZSTD_decompressSequencesLong_bmi2+0x15e0> | |
| op += lastLLSize; | |
| 4c40: 4c 01 e3 add %r12,%rbx | |
| 4c43: 49 89 db mov %rbx,%r11 | |
| 4c46: eb 03 jmp 4c4b <ZSTD_decompressSequencesLong_bmi2+0x15eb> | |
| 4c48: 45 31 db xor %r11d,%r11d | |
| return op-ostart; | |
| 4c4b: 4d 29 eb sub %r13,%r11 | |
| return ZSTD_decompressSequencesLong_body(dctx, dst, maxDstSize, seqStart, seqSize, nbSeq, isLongOffset, frame); | |
| 4c4e: 4c 89 d8 mov %r11,%rax | |
| 4c51: 48 81 c4 18 02 00 00 add $0x218,%rsp | |
| 4c58: 5b pop %rbx | |
| 4c59: 41 5c pop %r12 | |
| 4c5b: 41 5d pop %r13 | |
| 4c5d: 41 5e pop %r14 | |
| 4c5f: 41 5f pop %r15 | |
| 4c61: 5d pop %rbp | |
| 4c62: c3 retq | |
| 4c63: 49 c7 c3 ec ff ff ff mov $0xffffffffffffffec,%r11 | |
| 4c6a: eb e2 jmp 4c4e <ZSTD_decompressSequencesLong_bmi2+0x15ee> | |
| 4c6c: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) | |
| 4c73: 00 00 00 | |
| 4c76: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) | |
| 4c7d: 00 00 00 | |
| 0000000000004c80 <ZSTD_execSequenceEnd>: | |
| { | |
| 4c80: 55 push %rbp | |
| 4c81: 41 57 push %r15 | |
| 4c83: 41 56 push %r14 | |
| 4c85: 41 55 push %r13 | |
| 4c87: 41 54 push %r12 | |
| 4c89: 53 push %rbx | |
| 4c8a: 48 83 ec 18 sub $0x18,%rsp | |
| 4c8e: 48 89 f5 mov %rsi,%rbp | |
| size_t const sequenceLength = sequence.litLength + sequence.matchLength; | |
| 4c91: 4c 8d 34 11 lea (%rcx,%rdx,1),%r14 | |
| RETURN_ERROR_IF(sequenceLength > (size_t)(oend - op), dstSize_tooSmall, "last match must fit within dstBuffer"); | |
| 4c95: 48 29 fe sub %rdi,%rsi | |
| 4c98: 48 c7 c0 ba ff ff ff mov $0xffffffffffffffba,%rax | |
| 4c9f: 49 39 f6 cmp %rsi,%r14 | |
| 4ca2: 0f 87 ac 09 00 00 ja 5654 <ZSTD_execSequenceEnd+0x9d4> | |
| 4ca8: 48 8b 74 24 50 mov 0x50(%rsp),%rsi | |
| 4cad: 4d 8b 21 mov (%r9),%r12 | |
| RETURN_ERROR_IF(sequence.litLength > (size_t)(litLimit - *litPtr), corruption_detected, "try to read beyond literal buffer"); | |
| 4cb0: 4c 29 e6 sub %r12,%rsi | |
| 4cb3: 48 c7 c0 ec ff ff ff mov $0xffffffffffffffec,%rax | |
| 4cba: 48 39 d6 cmp %rdx,%rsi | |
| 4cbd: 0f 82 91 09 00 00 jb 5654 <ZSTD_execSequenceEnd+0x9d4> | |
| 4cc3: 4c 8b 5c 24 58 mov 0x58(%rsp),%r11 | |
| 4cc8: 4c 8d 2c 17 lea (%rdi,%rdx,1),%r13 | |
| 4ccc: 49 8d 34 14 lea (%r12,%rdx,1),%rsi | |
| 4cd0: 48 89 74 24 10 mov %rsi,0x10(%rsp) | |
| 4cd5: 48 83 c5 e0 add $0xffffffffffffffe0,%rbp | |
| if (length < 8) { | |
| 4cd9: 48 83 fa 07 cmp $0x7,%rdx | |
| 4cdd: 7f 6a jg 4d49 <ZSTD_execSequenceEnd+0xc9> | |
| while (op < oend) *op++ = *ip++; | |
| 4cdf: 48 85 d2 test %rdx,%rdx | |
| 4ce2: 0f 8e 4a 03 00 00 jle 5032 <ZSTD_execSequenceEnd+0x3b2> | |
| 4ce8: 49 89 ef mov %rbp,%r15 | |
| 4ceb: 48 8d 57 01 lea 0x1(%rdi),%rdx | |
| 4cef: 49 39 d5 cmp %rdx,%r13 | |
| 4cf2: 49 89 d3 mov %rdx,%r11 | |
| 4cf5: 4d 0f 47 dd cmova %r13,%r11 | |
| 4cf9: 49 29 fb sub %rdi,%r11 | |
| 4cfc: 49 83 fb 20 cmp $0x20,%r11 | |
| 4d00: 72 22 jb 4d24 <ZSTD_execSequenceEnd+0xa4> | |
| 4d02: 49 39 d5 cmp %rdx,%r13 | |
| 4d05: 49 0f 47 d5 cmova %r13,%rdx | |
| 4d09: 48 89 d6 mov %rdx,%rsi | |
| 4d0c: 48 29 fe sub %rdi,%rsi | |
| 4d0f: 4c 01 e6 add %r12,%rsi | |
| 4d12: 48 39 fe cmp %rdi,%rsi | |
| 4d15: 0f 86 59 01 00 00 jbe 4e74 <ZSTD_execSequenceEnd+0x1f4> | |
| 4d1b: 49 39 d4 cmp %rdx,%r12 | |
| 4d1e: 0f 83 50 01 00 00 jae 4e74 <ZSTD_execSequenceEnd+0x1f4> | |
| 4d24: 4c 8b 5c 24 58 mov 0x58(%rsp),%r11 | |
| 4d29: 4c 89 fd mov %r15,%rbp | |
| 4d2c: 0f 1f 40 00 nopl 0x0(%rax) | |
| 4d30: 41 0f b6 14 24 movzbl (%r12),%edx | |
| 4d35: 49 83 c4 01 add $0x1,%r12 | |
| 4d39: 88 17 mov %dl,(%rdi) | |
| 4d3b: 48 83 c7 01 add $0x1,%rdi | |
| 4d3f: 4c 39 ef cmp %r13,%rdi | |
| 4d42: 72 ec jb 4d30 <ZSTD_execSequenceEnd+0xb0> | |
| 4d44: e9 e9 02 00 00 jmpq 5032 <ZSTD_execSequenceEnd+0x3b2> | |
| if (oend <= oend_w) { | |
| 4d49: 49 39 ed cmp %rbp,%r13 | |
| 4d4c: 76 10 jbe 4d5e <ZSTD_execSequenceEnd+0xde> | |
| if (op <= oend_w) { | |
| 4d4e: 49 89 ea mov %rbp,%r10 | |
| 4d51: 49 29 fa sub %rdi,%r10 | |
| 4d54: 73 54 jae 4daa <ZSTD_execSequenceEnd+0x12a> | |
| 4d56: 49 89 ff mov %rdi,%r15 | |
| 4d59: e9 aa 00 00 00 jmpq 4e08 <ZSTD_execSequenceEnd+0x188> | |
| ZSTD_memcpy(dst, src, 16); | |
| 4d5e: 41 0f 10 04 24 movups (%r12),%xmm0 | |
| 4d63: 0f 11 07 movups %xmm0,(%rdi) | |
| if (16 >= length) return; | |
| 4d66: 48 83 fa 11 cmp $0x11,%rdx | |
| 4d6a: 0f 8c c2 02 00 00 jl 5032 <ZSTD_execSequenceEnd+0x3b2> | |
| do { | |
| 4d70: 49 83 c4 10 add $0x10,%r12 | |
| 4d74: ba 10 00 00 00 mov $0x10,%edx | |
| 4d79: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) | |
| ZSTD_memcpy(dst, src, 16); | |
| 4d80: 41 0f 10 44 14 f0 movups -0x10(%r12,%rdx,1),%xmm0 | |
| 4d86: 0f 11 04 17 movups %xmm0,(%rdi,%rdx,1) | |
| 4d8a: 41 0f 10 04 14 movups (%r12,%rdx,1),%xmm0 | |
| 4d8f: 0f 11 44 17 10 movups %xmm0,0x10(%rdi,%rdx,1) | |
| while (op < oend); | |
| 4d94: 48 8d 34 17 lea (%rdi,%rdx,1),%rsi | |
| 4d98: 48 83 c6 20 add $0x20,%rsi | |
| 4d9c: 48 83 c2 20 add $0x20,%rdx | |
| 4da0: 4c 39 ee cmp %r13,%rsi | |
| } | |
| 4da3: 72 db jb 4d80 <ZSTD_execSequenceEnd+0x100> | |
| 4da5: e9 88 02 00 00 jmpq 5032 <ZSTD_execSequenceEnd+0x3b2> | |
| 4daa: 4d 89 f3 mov %r14,%r11 | |
| 4dad: 49 89 ee mov %rbp,%r14 | |
| ZSTD_memcpy(dst, src, 16); | |
| 4db0: 41 0f 10 04 24 movups (%r12),%xmm0 | |
| 4db5: 0f 11 07 movups %xmm0,(%rdi) | |
| if (16 >= length) return; | |
| 4db8: 49 83 fa 11 cmp $0x11,%r10 | |
| 4dbc: 7c 36 jl 4df4 <ZSTD_execSequenceEnd+0x174> | |
| do { | |
| 4dbe: 49 8d 6c 24 10 lea 0x10(%r12),%rbp | |
| 4dc3: bb 10 00 00 00 mov $0x10,%ebx | |
| 4dc8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) | |
| 4dcf: 00 | |
| ZSTD_memcpy(dst, src, 16); | |
| 4dd0: 0f 10 44 1d f0 movups -0x10(%rbp,%rbx,1),%xmm0 | |
| 4dd5: 0f 11 04 1f movups %xmm0,(%rdi,%rbx,1) | |
| 4dd9: 0f 10 44 1d 00 movups 0x0(%rbp,%rbx,1),%xmm0 | |
| 4dde: 0f 11 44 1f 10 movups %xmm0,0x10(%rdi,%rbx,1) | |
| while (op < oend); | |
| 4de3: 48 8d 34 1f lea (%rdi,%rbx,1),%rsi | |
| 4de7: 48 83 c6 20 add $0x20,%rsi | |
| 4deb: 48 83 c3 20 add $0x20,%rbx | |
| 4def: 4c 39 f6 cmp %r14,%rsi | |
| } | |
| 4df2: 72 dc jb 4dd0 <ZSTD_execSequenceEnd+0x150> | |
| ip += oend_w - op; | |
| 4df4: 4d 01 d4 add %r10,%r12 | |
| 4df7: 4d 89 f7 mov %r14,%r15 | |
| 4dfa: 4c 89 de mov %r11,%rsi | |
| 4dfd: 4c 8b 5c 24 58 mov 0x58(%rsp),%r11 | |
| 4e02: 4c 89 f5 mov %r14,%rbp | |
| 4e05: 49 89 f6 mov %rsi,%r14 | |
| while (op < oend) *op++ = *ip++; | |
| 4e08: 4d 39 fd cmp %r15,%r13 | |
| 4e0b: 0f 86 21 02 00 00 jbe 5032 <ZSTD_execSequenceEnd+0x3b2> | |
| 4e11: 48 89 d3 mov %rdx,%rbx | |
| 4e14: 4c 29 fb sub %r15,%rbx | |
| 4e17: 48 01 fb add %rdi,%rbx | |
| 4e1a: 48 83 fb 20 cmp $0x20,%rbx | |
| 4e1e: 0f 82 ec 01 00 00 jb 5010 <ZSTD_execSequenceEnd+0x390> | |
| 4e24: 49 8d 34 1c lea (%r12,%rbx,1),%rsi | |
| 4e28: 49 39 f7 cmp %rsi,%r15 | |
| 4e2b: 73 09 jae 4e36 <ZSTD_execSequenceEnd+0x1b6> | |
| 4e2d: 4d 39 ec cmp %r13,%r12 | |
| 4e30: 0f 82 da 01 00 00 jb 5010 <ZSTD_execSequenceEnd+0x390> | |
| 4e36: 48 89 6c 24 08 mov %rbp,0x8(%rsp) | |
| 4e3b: 48 89 0c 24 mov %rcx,(%rsp) | |
| 4e3f: 4c 89 d9 mov %r11,%rcx | |
| 4e42: 48 89 de mov %rbx,%rsi | |
| 4e45: 48 83 e6 e0 and $0xffffffffffffffe0,%rsi | |
| 4e49: 48 89 f5 mov %rsi,%rbp | |
| 4e4c: 4c 8d 56 e0 lea -0x20(%rsi),%r10 | |
| 4e50: 4c 89 d6 mov %r10,%rsi | |
| 4e53: 48 c1 ee 05 shr $0x5,%rsi | |
| 4e57: 48 83 c6 01 add $0x1,%rsi | |
| 4e5b: 41 89 f3 mov %esi,%r11d | |
| 4e5e: 41 83 e3 03 and $0x3,%r11d | |
| 4e62: 49 83 fa 60 cmp $0x60,%r10 | |
| 4e66: 0f 83 ed 00 00 00 jae 4f59 <ZSTD_execSequenceEnd+0x2d9> | |
| 4e6c: 45 31 d2 xor %r10d,%r10d | |
| 4e6f: e9 57 01 00 00 jmpq 4fcb <ZSTD_execSequenceEnd+0x34b> | |
| while (op < oend) *op++ = *ip++; | |
| 4e74: 4d 89 da mov %r11,%r10 | |
| 4e77: 49 83 e2 e0 and $0xffffffffffffffe0,%r10 | |
| 4e7b: 49 8d 52 e0 lea -0x20(%r10),%rdx | |
| 4e7f: 48 89 d3 mov %rdx,%rbx | |
| 4e82: 48 c1 eb 05 shr $0x5,%rbx | |
| 4e86: 48 83 c3 01 add $0x1,%rbx | |
| 4e8a: 89 dd mov %ebx,%ebp | |
| 4e8c: 83 e5 03 and $0x3,%ebp | |
| 4e8f: 48 83 fa 60 cmp $0x60,%rdx | |
| 4e93: 73 04 jae 4e99 <ZSTD_execSequenceEnd+0x219> | |
| 4e95: 31 f6 xor %esi,%esi | |
| 4e97: eb 77 jmp 4f10 <ZSTD_execSequenceEnd+0x290> | |
| 4e99: 48 83 e3 fc and $0xfffffffffffffffc,%rbx | |
| 4e9d: 48 f7 db neg %rbx | |
| 4ea0: 31 f6 xor %esi,%esi | |
| 4ea2: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) | |
| 4ea9: 00 00 00 | |
| 4eac: 0f 1f 40 00 nopl 0x0(%rax) | |
| 4eb0: 41 0f 10 04 34 movups (%r12,%rsi,1),%xmm0 | |
| 4eb5: 41 0f 10 4c 34 10 movups 0x10(%r12,%rsi,1),%xmm1 | |
| 4ebb: 0f 11 04 37 movups %xmm0,(%rdi,%rsi,1) | |
| 4ebf: 0f 11 4c 37 10 movups %xmm1,0x10(%rdi,%rsi,1) | |
| 4ec4: 41 0f 10 44 34 20 movups 0x20(%r12,%rsi,1),%xmm0 | |
| 4eca: 41 0f 10 4c 34 30 movups 0x30(%r12,%rsi,1),%xmm1 | |
| 4ed0: 0f 11 44 37 20 movups %xmm0,0x20(%rdi,%rsi,1) | |
| 4ed5: 0f 11 4c 37 30 movups %xmm1,0x30(%rdi,%rsi,1) | |
| 4eda: 41 0f 10 44 34 40 movups 0x40(%r12,%rsi,1),%xmm0 | |
| 4ee0: 41 0f 10 4c 34 50 movups 0x50(%r12,%rsi,1),%xmm1 | |
| 4ee6: 0f 11 44 37 40 movups %xmm0,0x40(%rdi,%rsi,1) | |
| 4eeb: 0f 11 4c 37 50 movups %xmm1,0x50(%rdi,%rsi,1) | |
| 4ef0: 41 0f 10 44 34 60 movups 0x60(%r12,%rsi,1),%xmm0 | |
| 4ef6: 41 0f 10 4c 34 70 movups 0x70(%r12,%rsi,1),%xmm1 | |
| 4efc: 0f 11 44 37 60 movups %xmm0,0x60(%rdi,%rsi,1) | |
| 4f01: 0f 11 4c 37 70 movups %xmm1,0x70(%rdi,%rsi,1) | |
| 4f06: 48 83 ee 80 sub $0xffffffffffffff80,%rsi | |
| 4f0a: 48 83 c3 04 add $0x4,%rbx | |
| 4f0e: 75 a0 jne 4eb0 <ZSTD_execSequenceEnd+0x230> | |
| 4f10: 48 85 ed test %rbp,%rbp | |
| 4f13: 74 28 je 4f3d <ZSTD_execSequenceEnd+0x2bd> | |
| 4f15: 48 83 c6 10 add $0x10,%rsi | |
| 4f19: 48 f7 dd neg %rbp | |
| 4f1c: 0f 1f 40 00 nopl 0x0(%rax) | |
| 4f20: 41 0f 10 44 34 f0 movups -0x10(%r12,%rsi,1),%xmm0 | |
| 4f26: 41 0f 10 0c 34 movups (%r12,%rsi,1),%xmm1 | |
| 4f2b: 0f 11 44 37 f0 movups %xmm0,-0x10(%rdi,%rsi,1) | |
| 4f30: 0f 11 0c 37 movups %xmm1,(%rdi,%rsi,1) | |
| 4f34: 48 83 c6 20 add $0x20,%rsi | |
| 4f38: 48 ff c5 inc %rbp | |
| 4f3b: 75 e3 jne 4f20 <ZSTD_execSequenceEnd+0x2a0> | |
| 4f3d: 4d 39 d3 cmp %r10,%r11 | |
| 4f40: 4c 8b 5c 24 58 mov 0x58(%rsp),%r11 | |
| 4f45: 4c 89 fd mov %r15,%rbp | |
| 4f48: 0f 84 e4 00 00 00 je 5032 <ZSTD_execSequenceEnd+0x3b2> | |
| 4f4e: 4d 01 d4 add %r10,%r12 | |
| 4f51: 4c 01 d7 add %r10,%rdi | |
| 4f54: e9 d7 fd ff ff jmpq 4d30 <ZSTD_execSequenceEnd+0xb0> | |
| while (op < oend) *op++ = *ip++; | |
| 4f59: 48 83 e6 fc and $0xfffffffffffffffc,%rsi | |
| 4f5d: 48 f7 de neg %rsi | |
| 4f60: 45 31 d2 xor %r10d,%r10d | |
| 4f63: 43 0f 10 04 14 movups (%r12,%r10,1),%xmm0 | |
| 4f68: 43 0f 10 4c 14 10 movups 0x10(%r12,%r10,1),%xmm1 | |
| 4f6e: 43 0f 11 04 17 movups %xmm0,(%r15,%r10,1) | |
| 4f73: 43 0f 11 4c 17 10 movups %xmm1,0x10(%r15,%r10,1) | |
| 4f79: 43 0f 10 44 14 20 movups 0x20(%r12,%r10,1),%xmm0 | |
| 4f7f: 43 0f 10 4c 14 30 movups 0x30(%r12,%r10,1),%xmm1 | |
| 4f85: 43 0f 11 44 17 20 movups %xmm0,0x20(%r15,%r10,1) | |
| 4f8b: 43 0f 11 4c 17 30 movups %xmm1,0x30(%r15,%r10,1) | |
| 4f91: 43 0f 10 44 14 40 movups 0x40(%r12,%r10,1),%xmm0 | |
| 4f97: 43 0f 10 4c 14 50 movups 0x50(%r12,%r10,1),%xmm1 | |
| 4f9d: 43 0f 11 44 17 40 movups %xmm0,0x40(%r15,%r10,1) | |
| 4fa3: 43 0f 11 4c 17 50 movups %xmm1,0x50(%r15,%r10,1) | |
| 4fa9: 43 0f 10 44 14 60 movups 0x60(%r12,%r10,1),%xmm0 | |
| 4faf: 43 0f 10 4c 14 70 movups 0x70(%r12,%r10,1),%xmm1 | |
| 4fb5: 43 0f 11 44 17 60 movups %xmm0,0x60(%r15,%r10,1) | |
| 4fbb: 43 0f 11 4c 17 70 movups %xmm1,0x70(%r15,%r10,1) | |
| 4fc1: 49 83 ea 80 sub $0xffffffffffffff80,%r10 | |
| 4fc5: 48 83 c6 04 add $0x4,%rsi | |
| 4fc9: 75 98 jne 4f63 <ZSTD_execSequenceEnd+0x2e3> | |
| 4fcb: 4d 85 db test %r11,%r11 | |
| 4fce: 74 26 je 4ff6 <ZSTD_execSequenceEnd+0x376> | |
| 4fd0: 49 83 c2 10 add $0x10,%r10 | |
| 4fd4: 49 f7 db neg %r11 | |
| 4fd7: 43 0f 10 44 14 f0 movups -0x10(%r12,%r10,1),%xmm0 | |
| 4fdd: 43 0f 10 0c 14 movups (%r12,%r10,1),%xmm1 | |
| 4fe2: 43 0f 11 44 17 f0 movups %xmm0,-0x10(%r15,%r10,1) | |
| 4fe8: 43 0f 11 0c 17 movups %xmm1,(%r15,%r10,1) | |
| 4fed: 49 83 c2 20 add $0x20,%r10 | |
| 4ff1: 49 ff c3 inc %r11 | |
| 4ff4: 75 e1 jne 4fd7 <ZSTD_execSequenceEnd+0x357> | |
| 4ff6: 48 39 dd cmp %rbx,%rbp | |
| 4ff9: 48 89 ee mov %rbp,%rsi | |
| 4ffc: 49 89 cb mov %rcx,%r11 | |
| 4fff: 48 8b 0c 24 mov (%rsp),%rcx | |
| 5003: 48 8b 6c 24 08 mov 0x8(%rsp),%rbp | |
| 5008: 74 28 je 5032 <ZSTD_execSequenceEnd+0x3b2> | |
| 500a: 49 01 f4 add %rsi,%r12 | |
| 500d: 49 01 f7 add %rsi,%r15 | |
| 5010: 4c 29 fa sub %r15,%rdx | |
| 5013: 48 01 d7 add %rdx,%rdi | |
| 5016: 31 d2 xor %edx,%edx | |
| 5018: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) | |
| 501f: 00 | |
| 5020: 41 0f b6 1c 14 movzbl (%r12,%rdx,1),%ebx | |
| 5025: 41 88 1c 17 mov %bl,(%r15,%rdx,1) | |
| 5029: 48 83 c2 01 add $0x1,%rdx | |
| 502d: 48 39 d7 cmp %rdx,%rdi | |
| 5030: 75 ee jne 5020 <ZSTD_execSequenceEnd+0x3a0> | |
| 5032: 4c 89 eb mov %r13,%rbx | |
| 5035: 4c 29 c3 sub %r8,%rbx | |
| 5038: 48 8b 54 24 10 mov 0x10(%rsp),%rdx | |
| *litPtr = iLitEnd; | |
| 503d: 49 89 11 mov %rdx,(%r9) | |
| if (sequence.offset > (size_t)(oLitEnd - prefixStart)) { | |
| 5040: 4c 89 ea mov %r13,%rdx | |
| 5043: 4c 29 da sub %r11,%rdx | |
| 5046: 4c 39 c2 cmp %r8,%rdx | |
| 5049: 73 4a jae 5095 <ZSTD_execSequenceEnd+0x415> | |
| RETURN_ERROR_IF(sequence.offset > (size_t)(oLitEnd - virtualStart), corruption_detected, ""); | |
| 504b: 4c 89 ea mov %r13,%rdx | |
| 504e: 48 2b 54 24 60 sub 0x60(%rsp),%rdx | |
| 5053: 4c 39 c2 cmp %r8,%rdx | |
| 5056: 0f 82 f8 05 00 00 jb 5654 <ZSTD_execSequenceEnd+0x9d4> | |
| 505c: 48 8b 44 24 68 mov 0x68(%rsp),%rax | |
| match = dictEnd - (prefixStart-match); | |
| 5061: 4c 29 db sub %r11,%rbx | |
| 5064: 48 8d 34 18 lea (%rax,%rbx,1),%rsi | |
| if (match + sequence.matchLength <= dictEnd) { | |
| 5068: 48 8d 14 0e lea (%rsi,%rcx,1),%rdx | |
| 506c: 48 39 c2 cmp %rax,%rdx | |
| 506f: 0f 86 79 01 00 00 jbe 51ee <ZSTD_execSequenceEnd+0x56e> | |
| { size_t const length1 = dictEnd - match; | |
| 5075: 48 89 da mov %rbx,%rdx | |
| 5078: 48 f7 da neg %rdx | |
| ZSTD_memmove(oLitEnd, match, length1); | |
| 507b: 4c 89 ef mov %r13,%rdi | |
| 507e: 4d 89 df mov %r11,%r15 | |
| 5081: 49 89 cc mov %rcx,%r12 | |
| 5084: e8 00 00 00 00 callq 5089 <ZSTD_execSequenceEnd+0x409> | |
| 5089: 4c 89 e1 mov %r12,%rcx | |
| op = oLitEnd + length1; | |
| 508c: 49 29 dd sub %rbx,%r13 | |
| sequence.matchLength -= length1; | |
| 508f: 48 01 d9 add %rbx,%rcx | |
| ptrdiff_t const diff = op - ip; | |
| 5092: 4c 89 fb mov %r15,%rbx | |
| 5095: 4c 89 e8 mov %r13,%rax | |
| BYTE* const oend = op + length; | |
| 5098: 4e 8d 3c 29 lea (%rcx,%r13,1),%r15 | |
| if (length < 8) { | |
| 509c: 48 83 f9 07 cmp $0x7,%rcx | |
| 50a0: 7f 71 jg 5113 <ZSTD_execSequenceEnd+0x493> | |
| while (op < oend) *op++ = *ip++; | |
| 50a2: 48 85 c9 test %rcx,%rcx | |
| 50a5: 0f 8e a6 05 00 00 jle 5651 <ZSTD_execSequenceEnd+0x9d1> | |
| 50ab: 49 8d 55 01 lea 0x1(%r13),%rdx | |
| 50af: 49 39 d7 cmp %rdx,%r15 | |
| 50b2: 48 89 d0 mov %rdx,%rax | |
| 50b5: 49 0f 47 c7 cmova %r15,%rax | |
| 50b9: 4c 29 e8 sub %r13,%rax | |
| 50bc: 48 83 f8 20 cmp $0x20,%rax | |
| 50c0: 0f 82 ba 02 00 00 jb 5380 <ZSTD_execSequenceEnd+0x700> | |
| 50c6: 49 39 d7 cmp %rdx,%r15 | |
| 50c9: 49 0f 47 d7 cmova %r15,%rdx | |
| 50cd: 48 89 d6 mov %rdx,%rsi | |
| 50d0: 4c 29 ee sub %r13,%rsi | |
| 50d3: 48 01 de add %rbx,%rsi | |
| 50d6: 49 39 f5 cmp %rsi,%r13 | |
| 50d9: 73 09 jae 50e4 <ZSTD_execSequenceEnd+0x464> | |
| 50db: 48 39 d3 cmp %rdx,%rbx | |
| 50de: 0f 82 9c 02 00 00 jb 5380 <ZSTD_execSequenceEnd+0x700> | |
| 50e4: 4d 89 f0 mov %r14,%r8 | |
| 50e7: 48 89 c2 mov %rax,%rdx | |
| 50ea: 48 83 e2 e0 and $0xffffffffffffffe0,%rdx | |
| 50ee: 48 8d 7a e0 lea -0x20(%rdx),%rdi | |
| 50f2: 48 89 fe mov %rdi,%rsi | |
| 50f5: 48 c1 ee 05 shr $0x5,%rsi | |
| 50f9: 48 83 c6 01 add $0x1,%rsi | |
| 50fd: 89 f5 mov %esi,%ebp | |
| 50ff: 83 e5 03 and $0x3,%ebp | |
| 5102: 48 83 ff 60 cmp $0x60,%rdi | |
| 5106: 0f 83 ba 01 00 00 jae 52c6 <ZSTD_execSequenceEnd+0x646> | |
| 510c: 31 ff xor %edi,%edi | |
| 510e: e9 1d 02 00 00 jmpq 5330 <ZSTD_execSequenceEnd+0x6b0> | |
| 5113: 48 29 d8 sub %rbx,%rax | |
| if (offset < 8) { | |
| 5116: 48 83 f8 07 cmp $0x7,%rax | |
| 511a: 0f 87 ad 00 00 00 ja 51cd <ZSTD_execSequenceEnd+0x54d> | |
| int const sub2 = dec64table[offset]; | |
| 5120: 48 63 34 85 00 00 00 movslq 0x0(,%rax,4),%rsi | |
| 5127: 00 | |
| (*op)[0] = (*ip)[0]; | |
| 5128: 8a 13 mov (%rbx),%dl | |
| 512a: 41 88 55 00 mov %dl,0x0(%r13) | |
| (*op)[1] = (*ip)[1]; | |
| 512e: 8a 53 01 mov 0x1(%rbx),%dl | |
| 5131: 41 88 55 01 mov %dl,0x1(%r13) | |
| (*op)[2] = (*ip)[2]; | |
| 5135: 8a 53 02 mov 0x2(%rbx),%dl | |
| 5138: 41 88 55 02 mov %dl,0x2(%r13) | |
| (*op)[3] = (*ip)[3]; | |
| 513c: 8a 53 03 mov 0x3(%rbx),%dl | |
| 513f: 41 88 55 03 mov %dl,0x3(%r13) | |
| *ip += dec32table[offset]; | |
| 5143: 8b 04 85 00 00 00 00 mov 0x0(,%rax,4),%eax | |
| static void ZSTD_copy4(void* dst, const void* src) { ZSTD_memcpy(dst, src, 4); } | |
| 514a: 8b 14 03 mov (%rbx,%rax,1),%edx | |
| *ip += dec32table[offset]; | |
| 514d: 48 01 c3 add %rax,%rbx | |
| *ip -= sub2; | |
| 5150: 48 29 f3 sub %rsi,%rbx | |
| static void ZSTD_copy4(void* dst, const void* src) { ZSTD_memcpy(dst, src, 4); } | |
| 5153: 41 89 55 04 mov %edx,0x4(%r13) | |
| *ip += 8; | |
| 5157: 48 8d 43 08 lea 0x8(%rbx),%rax | |
| *op += 8; | |
| 515b: 49 8d 55 08 lea 0x8(%r13),%rdx | |
| if (oend <= oend_w) { | |
| 515f: 49 39 ef cmp %rbp,%r15 | |
| 5162: 77 7d ja 51e1 <ZSTD_execSequenceEnd+0x561> | |
| ptrdiff_t diff = (BYTE*)dst - (const BYTE*)src; | |
| 5164: 48 89 d6 mov %rdx,%rsi | |
| 5167: 48 29 c6 sub %rax,%rsi | |
| BYTE* const oend = op + length; | |
| 516a: 4c 8d 1c 0a lea (%rdx,%rcx,1),%r11 | |
| 516e: 48 83 fe 0f cmp $0xf,%rsi | |
| if (ovtype == ZSTD_overlap_src_before_dst && diff < WILDCOPY_VECLEN) { | |
| 5172: 0f 8f 86 00 00 00 jg 51fe <ZSTD_execSequenceEnd+0x57e> | |
| do { | |
| 5178: 49 8d 7d 10 lea 0x10(%r13),%rdi | |
| 517c: 49 39 fb cmp %rdi,%r11 | |
| 517f: 48 89 fe mov %rdi,%rsi | |
| 5182: 49 0f 47 f3 cmova %r11,%rsi | |
| 5186: 4c 29 ee sub %r13,%rsi | |
| 5189: 48 83 c6 f7 add $0xfffffffffffffff7,%rsi | |
| 518d: 48 83 fe 18 cmp $0x18,%rsi | |
| 5191: 0f 82 49 03 00 00 jb 54e0 <ZSTD_execSequenceEnd+0x860> | |
| 5197: 4d 89 f2 mov %r14,%r10 | |
| 519a: 49 39 fb cmp %rdi,%r11 | |
| 519d: 49 0f 47 fb cmova %r11,%rdi | |
| 51a1: 4c 29 ef sub %r13,%rdi | |
| 51a4: 48 83 c7 07 add $0x7,%rdi | |
| 51a8: 48 83 e7 f8 and $0xfffffffffffffff8,%rdi | |
| 51ac: 48 8d 2c 3b lea (%rbx,%rdi,1),%rbp | |
| 51b0: 48 39 ea cmp %rbp,%rdx | |
| 51b3: 0f 83 e0 01 00 00 jae 5399 <ZSTD_execSequenceEnd+0x719> | |
| 51b9: 4c 01 ef add %r13,%rdi | |
| 51bc: 48 39 f8 cmp %rdi,%rax | |
| 51bf: 0f 83 d4 01 00 00 jae 5399 <ZSTD_execSequenceEnd+0x719> | |
| 51c5: 4d 89 d6 mov %r10,%r14 | |
| 51c8: e9 13 03 00 00 jmpq 54e0 <ZSTD_execSequenceEnd+0x860> | |
| ZSTD_memcpy(dst, src, 8); | |
| 51cd: 48 8b 03 mov (%rbx),%rax | |
| 51d0: 49 89 45 00 mov %rax,0x0(%r13) | |
| *ip += 8; | |
| 51d4: 48 8d 43 08 lea 0x8(%rbx),%rax | |
| *op += 8; | |
| 51d8: 49 8d 55 08 lea 0x8(%r13),%rdx | |
| if (oend <= oend_w) { | |
| 51dc: 49 39 ef cmp %rbp,%r15 | |
| 51df: 76 83 jbe 5164 <ZSTD_execSequenceEnd+0x4e4> | |
| if (op <= oend_w) { | |
| 51e1: 48 39 ea cmp %rbp,%rdx | |
| 51e4: 76 65 jbe 524b <ZSTD_execSequenceEnd+0x5cb> | |
| 51e6: 48 89 d5 mov %rdx,%rbp | |
| 51e9: e9 58 03 00 00 jmpq 5546 <ZSTD_execSequenceEnd+0x8c6> | |
| ZSTD_memmove(oLitEnd, match, sequence.matchLength); | |
| 51ee: 4c 89 ef mov %r13,%rdi | |
| 51f1: 48 89 ca mov %rcx,%rdx | |
| 51f4: e8 00 00 00 00 callq 51f9 <ZSTD_execSequenceEnd+0x579> | |
| 51f9: e9 53 04 00 00 jmpq 5651 <ZSTD_execSequenceEnd+0x9d1> | |
| ZSTD_memcpy(dst, src, 16); | |
| 51fe: 0f 10 00 movups (%rax),%xmm0 | |
| 5201: 0f 11 02 movups %xmm0,(%rdx) | |
| if (16 >= length) return; | |
| 5204: 48 83 f9 11 cmp $0x11,%rcx | |
| 5208: 0f 8c 43 04 00 00 jl 5651 <ZSTD_execSequenceEnd+0x9d1> | |
| op += 16; | |
| 520e: 49 83 c5 18 add $0x18,%r13 | |
| do { | |
| 5212: 48 83 c3 28 add $0x28,%rbx | |
| 5216: 31 c0 xor %eax,%eax | |
| 5218: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1) | |
| 521f: 00 | |
| ZSTD_memcpy(dst, src, 16); | |
| 5220: 0f 10 44 03 f0 movups -0x10(%rbx,%rax,1),%xmm0 | |
| 5225: 41 0f 11 44 05 00 movups %xmm0,0x0(%r13,%rax,1) | |
| 522b: 0f 10 04 03 movups (%rbx,%rax,1),%xmm0 | |
| 522f: 41 0f 11 44 05 10 movups %xmm0,0x10(%r13,%rax,1) | |
| while (op < oend); | |
| 5235: 4a 8d 14 28 lea (%rax,%r13,1),%rdx | |
| 5239: 48 83 c2 20 add $0x20,%rdx | |
| 523d: 48 83 c0 20 add $0x20,%rax | |
| 5241: 4c 39 da cmp %r11,%rdx | |
| } | |
| 5244: 72 da jb 5220 <ZSTD_execSequenceEnd+0x5a0> | |
| 5246: e9 06 04 00 00 jmpq 5651 <ZSTD_execSequenceEnd+0x9d1> | |
| ZSTD_wildcopy(op, ip, oend_w - op, ovtype); | |
| 524b: 49 89 ea mov %rbp,%r10 | |
| 524e: 49 29 d2 sub %rdx,%r10 | |
| ptrdiff_t diff = (BYTE*)dst - (const BYTE*)src; | |
| 5251: 48 89 d6 mov %rdx,%rsi | |
| 5254: 48 29 c6 sub %rax,%rsi | |
| 5257: 48 83 fe 0f cmp $0xf,%rsi | |
| if (ovtype == ZSTD_overlap_src_before_dst && diff < WILDCOPY_VECLEN) { | |
| 525b: 7f 27 jg 5284 <ZSTD_execSequenceEnd+0x604> | |
| do { | |
| 525d: 49 8d 75 10 lea 0x10(%r13),%rsi | |
| 5261: 48 39 f5 cmp %rsi,%rbp | |
| 5264: 48 89 f7 mov %rsi,%rdi | |
| 5267: 48 0f 47 fd cmova %rbp,%rdi | |
| 526b: 4c 29 ef sub %r13,%rdi | |
| 526e: 48 83 c7 f7 add $0xfffffffffffffff7,%rdi | |
| 5272: 48 83 ff 18 cmp $0x18,%rdi | |
| 5276: 0f 83 8b 01 00 00 jae 5407 <ZSTD_execSequenceEnd+0x787> | |
| 527c: 48 89 c6 mov %rax,%rsi | |
| 527f: e9 ac 02 00 00 jmpq 5530 <ZSTD_execSequenceEnd+0x8b0> | |
| ZSTD_memcpy(dst, src, 16); | |
| 5284: 0f 10 00 movups (%rax),%xmm0 | |
| 5287: 0f 11 02 movups %xmm0,(%rdx) | |
| if (16 >= length) return; | |
| 528a: 49 83 fa 11 cmp $0x11,%r10 | |
| 528e: 0f 8c af 02 00 00 jl 5543 <ZSTD_execSequenceEnd+0x8c3> | |
| op += 16; | |
| 5294: 49 8d 55 18 lea 0x18(%r13),%rdx | |
| do { | |
| 5298: 48 83 c3 28 add $0x28,%rbx | |
| 529c: 31 f6 xor %esi,%esi | |
| ZSTD_memcpy(dst, src, 16); | |
| 529e: 0f 10 44 33 f0 movups -0x10(%rbx,%rsi,1),%xmm0 | |
| 52a3: 0f 11 04 32 movups %xmm0,(%rdx,%rsi,1) | |
| 52a7: 0f 10 04 33 movups (%rbx,%rsi,1),%xmm0 | |
| 52ab: 0f 11 44 32 10 movups %xmm0,0x10(%rdx,%rsi,1) | |
| while (op < oend); | |
| 52b0: 48 8d 3c 32 lea (%rdx,%rsi,1),%rdi | |
| 52b4: 48 83 c7 20 add $0x20,%rdi | |
| 52b8: 48 83 c6 20 add $0x20,%rsi | |
| 52bc: 48 39 ef cmp %rbp,%rdi | |
| } | |
| 52bf: 72 dd jb 529e <ZSTD_execSequenceEnd+0x61e> | |
| 52c1: e9 7d 02 00 00 jmpq 5543 <ZSTD_execSequenceEnd+0x8c3> | |
| while (op < oend) *op++ = *ip++; | |
| 52c6: 48 83 e6 fc and $0xfffffffffffffffc,%rsi | |
| 52ca: 48 f7 de neg %rsi | |
| 52cd: 31 ff xor %edi,%edi | |
| 52cf: 0f 10 04 3b movups (%rbx,%rdi,1),%xmm0 | |
| 52d3: 0f 10 4c 3b 10 movups 0x10(%rbx,%rdi,1),%xmm1 | |
| 52d8: 41 0f 11 44 3d 00 movups %xmm0,0x0(%r13,%rdi,1) | |
| 52de: 41 0f 11 4c 3d 10 movups %xmm1,0x10(%r13,%rdi,1) | |
| 52e4: 0f 10 44 3b 20 movups 0x20(%rbx,%rdi,1),%xmm0 | |
| 52e9: 0f 10 4c 3b 30 movups 0x30(%rbx,%rdi,1),%xmm1 | |
| 52ee: 41 0f 11 44 3d 20 movups %xmm0,0x20(%r13,%rdi,1) | |
| 52f4: 41 0f 11 4c 3d 30 movups %xmm1,0x30(%r13,%rdi,1) | |
| 52fa: 0f 10 44 3b 40 movups 0x40(%rbx,%rdi,1),%xmm0 | |
| 52ff: 0f 10 4c 3b 50 movups 0x50(%rbx,%rdi,1),%xmm1 | |
| 5304: 41 0f 11 44 3d 40 movups %xmm0,0x40(%r13,%rdi,1) | |
| 530a: 41 0f 11 4c 3d 50 movups %xmm1,0x50(%r13,%rdi,1) | |
| 5310: 0f 10 44 3b 60 movups 0x60(%rbx,%rdi,1),%xmm0 | |
| 5315: 0f 10 4c 3b 70 movups 0x70(%rbx,%rdi,1),%xmm1 | |
| 531a: 41 0f 11 44 3d 60 movups %xmm0,0x60(%r13,%rdi,1) | |
| 5320: 41 0f 11 4c 3d 70 movups %xmm1,0x70(%r13,%rdi,1) | |
| 5326: 48 83 ef 80 sub $0xffffffffffffff80,%rdi | |
| 532a: 48 83 c6 04 add $0x4,%rsi | |
| 532e: 75 9f jne 52cf <ZSTD_execSequenceEnd+0x64f> | |
| 5330: 48 85 ed test %rbp,%rbp | |
| 5333: 74 29 je 535e <ZSTD_execSequenceEnd+0x6de> | |
| 5335: 48 83 c7 10 add $0x10,%rdi | |
| 5339: 48 f7 dd neg %rbp | |
| 533c: 0f 1f 40 00 nopl 0x0(%rax) | |
| 5340: 0f 10 44 3b f0 movups -0x10(%rbx,%rdi,1),%xmm0 | |
| 5345: 0f 10 0c 3b movups (%rbx,%rdi,1),%xmm1 | |
| 5349: 41 0f 11 44 3d f0 movups %xmm0,-0x10(%r13,%rdi,1) | |
| 534f: 41 0f 11 4c 3d 00 movups %xmm1,0x0(%r13,%rdi,1) | |
| 5355: 48 83 c7 20 add $0x20,%rdi | |
| 5359: 48 ff c5 inc %rbp | |
| 535c: 75 e2 jne 5340 <ZSTD_execSequenceEnd+0x6c0> | |
| 535e: 48 39 d0 cmp %rdx,%rax | |
| 5361: 75 08 jne 536b <ZSTD_execSequenceEnd+0x6eb> | |
| 5363: 4c 89 c0 mov %r8,%rax | |
| 5366: e9 e9 02 00 00 jmpq 5654 <ZSTD_execSequenceEnd+0x9d4> | |
| 536b: 48 01 d3 add %rdx,%rbx | |
| 536e: 49 01 d5 add %rdx,%r13 | |
| 5371: 4d 89 c6 mov %r8,%r14 | |
| 5374: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) | |
| 537b: 00 00 00 | |
| 537e: 66 90 xchg %ax,%ax | |
| 5380: 0f b6 03 movzbl (%rbx),%eax | |
| 5383: 48 83 c3 01 add $0x1,%rbx | |
| 5387: 41 88 45 00 mov %al,0x0(%r13) | |
| 538b: 49 83 c5 01 add $0x1,%r13 | |
| 538f: 4d 39 fd cmp %r15,%r13 | |
| 5392: 72 ec jb 5380 <ZSTD_execSequenceEnd+0x700> | |
| 5394: e9 b8 02 00 00 jmpq 5651 <ZSTD_execSequenceEnd+0x9d1> | |
| do { | |
| 5399: 48 c1 ee 03 shr $0x3,%rsi | |
| 539d: 48 83 c6 01 add $0x1,%rsi | |
| 53a1: 49 89 f0 mov %rsi,%r8 | |
| 53a4: 49 83 e0 fc and $0xfffffffffffffffc,%r8 | |
| 53a8: 49 8d 78 fc lea -0x4(%r8),%rdi | |
| 53ac: 49 89 f9 mov %rdi,%r9 | |
| 53af: 49 c1 e9 02 shr $0x2,%r9 | |
| 53b3: 49 83 c1 01 add $0x1,%r9 | |
| 53b7: 48 85 ff test %rdi,%rdi | |
| 53ba: 0f 84 e9 00 00 00 je 54a9 <ZSTD_execSequenceEnd+0x829> | |
| 53c0: 4c 89 cd mov %r9,%rbp | |
| 53c3: 48 83 e5 fe and $0xfffffffffffffffe,%rbp | |
| 53c7: 48 f7 dd neg %rbp | |
| 53ca: 31 ff xor %edi,%edi | |
| ZSTD_memcpy(dst, src, 8); | |
| 53cc: 0f 10 44 3b 08 movups 0x8(%rbx,%rdi,1),%xmm0 | |
| 53d1: 0f 10 4c 3b 18 movups 0x18(%rbx,%rdi,1),%xmm1 | |
| 53d6: 41 0f 11 44 3d 08 movups %xmm0,0x8(%r13,%rdi,1) | |
| 53dc: 41 0f 11 4c 3d 18 movups %xmm1,0x18(%r13,%rdi,1) | |
| 53e2: 0f 10 44 3b 28 movups 0x28(%rbx,%rdi,1),%xmm0 | |
| 53e7: 0f 10 4c 3b 38 movups 0x38(%rbx,%rdi,1),%xmm1 | |
| 53ec: 41 0f 11 44 3d 28 movups %xmm0,0x28(%r13,%rdi,1) | |
| 53f2: 41 0f 11 4c 3d 38 movups %xmm1,0x38(%r13,%rdi,1) | |
| 53f8: 48 83 c7 40 add $0x40,%rdi | |
| 53fc: 48 83 c5 02 add $0x2,%rbp | |
| 5400: 75 ca jne 53cc <ZSTD_execSequenceEnd+0x74c> | |
| 5402: e9 a4 00 00 00 jmpq 54ab <ZSTD_execSequenceEnd+0x82b> | |
| 5407: 4d 89 f3 mov %r14,%r11 | |
| do { | |
| 540a: 48 39 f5 cmp %rsi,%rbp | |
| 540d: 49 89 ec mov %rbp,%r12 | |
| 5410: 48 0f 47 f5 cmova %rbp,%rsi | |
| 5414: 4c 29 ee sub %r13,%rsi | |
| 5417: 48 83 c6 07 add $0x7,%rsi | |
| 541b: 48 83 e6 f8 and $0xfffffffffffffff8,%rsi | |
| 541f: 48 8d 2c 33 lea (%rbx,%rsi,1),%rbp | |
| 5423: 48 39 ea cmp %rbp,%rdx | |
| 5426: 73 16 jae 543e <ZSTD_execSequenceEnd+0x7be> | |
| 5428: 4c 01 ee add %r13,%rsi | |
| 542b: 48 39 f0 cmp %rsi,%rax | |
| 542e: 73 0e jae 543e <ZSTD_execSequenceEnd+0x7be> | |
| 5430: 48 89 c6 mov %rax,%rsi | |
| 5433: 4d 89 de mov %r11,%r14 | |
| 5436: 4c 89 e5 mov %r12,%rbp | |
| 5439: e9 f2 00 00 00 jmpq 5530 <ZSTD_execSequenceEnd+0x8b0> | |
| 543e: 48 c1 ef 03 shr $0x3,%rdi | |
| 5442: 48 83 c7 01 add $0x1,%rdi | |
| 5446: 49 89 f8 mov %rdi,%r8 | |
| 5449: 49 83 e0 fc and $0xfffffffffffffffc,%r8 | |
| 544d: 49 8d 70 fc lea -0x4(%r8),%rsi | |
| 5451: 49 89 f1 mov %rsi,%r9 | |
| 5454: 49 c1 e9 02 shr $0x2,%r9 | |
| 5458: 49 83 c1 01 add $0x1,%r9 | |
| 545c: 48 85 f6 test %rsi,%rsi | |
| 545f: 0f 84 93 00 00 00 je 54f8 <ZSTD_execSequenceEnd+0x878> | |
| 5465: 4c 89 ce mov %r9,%rsi | |
| 5468: 48 83 e6 fe and $0xfffffffffffffffe,%rsi | |
| 546c: 48 f7 de neg %rsi | |
| 546f: 31 ed xor %ebp,%ebp | |
| ZSTD_memcpy(dst, src, 8); | |
| 5471: 0f 10 44 2b 08 movups 0x8(%rbx,%rbp,1),%xmm0 | |
| 5476: 0f 10 4c 2b 18 movups 0x18(%rbx,%rbp,1),%xmm1 | |
| 547b: 41 0f 11 44 2d 08 movups %xmm0,0x8(%r13,%rbp,1) | |
| 5481: 41 0f 11 4c 2d 18 movups %xmm1,0x18(%r13,%rbp,1) | |
| 5487: 0f 10 44 2b 28 movups 0x28(%rbx,%rbp,1),%xmm0 | |
| 548c: 0f 10 4c 2b 38 movups 0x38(%rbx,%rbp,1),%xmm1 | |
| 5491: 41 0f 11 44 2d 28 movups %xmm0,0x28(%r13,%rbp,1) | |
| 5497: 41 0f 11 4c 2d 38 movups %xmm1,0x38(%r13,%rbp,1) | |
| 549d: 48 83 c5 40 add $0x40,%rbp | |
| 54a1: 48 83 c6 02 add $0x2,%rsi | |
| 54a5: 75 ca jne 5471 <ZSTD_execSequenceEnd+0x7f1> | |
| 54a7: eb 51 jmp 54fa <ZSTD_execSequenceEnd+0x87a> | |
| 54a9: 31 ff xor %edi,%edi | |
| 54ab: 41 f6 c1 01 test $0x1,%r9b | |
| 54af: 74 12 je 54c3 <ZSTD_execSequenceEnd+0x843> | |
| 54b1: 0f 10 04 38 movups (%rax,%rdi,1),%xmm0 | |
| 54b5: 0f 10 4c 38 10 movups 0x10(%rax,%rdi,1),%xmm1 | |
| 54ba: 0f 11 04 3a movups %xmm0,(%rdx,%rdi,1) | |
| 54be: 0f 11 4c 3a 10 movups %xmm1,0x10(%rdx,%rdi,1) | |
| } while (op < oend); | |
| 54c3: 4c 39 c6 cmp %r8,%rsi | |
| 54c6: 4d 89 d6 mov %r10,%r14 | |
| 54c9: 0f 84 82 01 00 00 je 5651 <ZSTD_execSequenceEnd+0x9d1> | |
| 54cf: 4a 8d 14 c2 lea (%rdx,%r8,8),%rdx | |
| 54d3: 4a 8d 04 c0 lea (%rax,%r8,8),%rax | |
| 54d7: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) | |
| 54de: 00 00 | |
| ZSTD_memcpy(dst, src, 8); | |
| 54e0: 48 8b 30 mov (%rax),%rsi | |
| 54e3: 48 89 32 mov %rsi,(%rdx) | |
| COPY8(op, ip) | |
| 54e6: 48 83 c2 08 add $0x8,%rdx | |
| 54ea: 48 83 c0 08 add $0x8,%rax | |
| } while (op < oend); | |
| 54ee: 4c 39 da cmp %r11,%rdx | |
| 54f1: 72 ed jb 54e0 <ZSTD_execSequenceEnd+0x860> | |
| 54f3: e9 59 01 00 00 jmpq 5651 <ZSTD_execSequenceEnd+0x9d1> | |
| 54f8: 31 ed xor %ebp,%ebp | |
| 54fa: 41 f6 c1 01 test $0x1,%r9b | |
| 54fe: 74 12 je 5512 <ZSTD_execSequenceEnd+0x892> | |
| ZSTD_memcpy(dst, src, 8); | |
| 5500: 0f 10 04 28 movups (%rax,%rbp,1),%xmm0 | |
| 5504: 0f 10 4c 28 10 movups 0x10(%rax,%rbp,1),%xmm1 | |
| 5509: 0f 11 04 2a movups %xmm0,(%rdx,%rbp,1) | |
| 550d: 0f 11 4c 2a 10 movups %xmm1,0x10(%rdx,%rbp,1) | |
| } while (op < oend); | |
| 5512: 4c 39 c7 cmp %r8,%rdi | |
| 5515: 4d 89 de mov %r11,%r14 | |
| 5518: 4c 89 e5 mov %r12,%rbp | |
| 551b: 74 26 je 5543 <ZSTD_execSequenceEnd+0x8c3> | |
| 551d: 4a 8d 14 c2 lea (%rdx,%r8,8),%rdx | |
| 5521: 4a 8d 34 c0 lea (%rax,%r8,8),%rsi | |
| 5525: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) | |
| 552c: 00 00 00 | |
| 552f: 90 nop | |
| ZSTD_memcpy(dst, src, 8); | |
| 5530: 48 8b 3e mov (%rsi),%rdi | |
| 5533: 48 89 3a mov %rdi,(%rdx) | |
| COPY8(op, ip) | |
| 5536: 48 83 c2 08 add $0x8,%rdx | |
| 553a: 48 83 c6 08 add $0x8,%rsi | |
| } while (op < oend); | |
| 553e: 48 39 ea cmp %rbp,%rdx | |
| 5541: 72 ed jb 5530 <ZSTD_execSequenceEnd+0x8b0> | |
| ip += oend_w - op; | |
| 5543: 4c 01 d0 add %r10,%rax | |
| while (op < oend) *op++ = *ip++; | |
| 5546: 49 39 ef cmp %rbp,%r15 | |
| 5549: 0f 86 02 01 00 00 jbe 5651 <ZSTD_execSequenceEnd+0x9d1> | |
| 554f: 48 89 ce mov %rcx,%rsi | |
| 5552: 48 29 ee sub %rbp,%rsi | |
| 5555: 4a 8d 14 2e lea (%rsi,%r13,1),%rdx | |
| 5559: 48 83 fa 20 cmp $0x20,%rdx | |
| 555d: 0f 82 ce 00 00 00 jb 5631 <ZSTD_execSequenceEnd+0x9b1> | |
| 5563: 48 01 c6 add %rax,%rsi | |
| 5566: 4c 01 ee add %r13,%rsi | |
| 5569: 48 39 f5 cmp %rsi,%rbp | |
| 556c: 73 09 jae 5577 <ZSTD_execSequenceEnd+0x8f7> | |
| 556e: 4c 39 f8 cmp %r15,%rax | |
| 5571: 0f 82 ba 00 00 00 jb 5631 <ZSTD_execSequenceEnd+0x9b1> | |
| 5577: 49 89 d0 mov %rdx,%r8 | |
| 557a: 49 83 e0 e0 and $0xffffffffffffffe0,%r8 | |
| 557e: 49 8d 78 e0 lea -0x20(%r8),%rdi | |
| 5582: 48 89 fe mov %rdi,%rsi | |
| 5585: 48 c1 ee 05 shr $0x5,%rsi | |
| 5589: 48 83 c6 01 add $0x1,%rsi | |
| 558d: 89 f3 mov %esi,%ebx | |
| 558f: 83 e3 03 and $0x3,%ebx | |
| 5592: 48 83 ff 60 cmp $0x60,%rdi | |
| 5596: 73 04 jae 559c <ZSTD_execSequenceEnd+0x91c> | |
| 5598: 31 ff xor %edi,%edi | |
| 559a: eb 62 jmp 55fe <ZSTD_execSequenceEnd+0x97e> | |
| 559c: 48 83 e6 fc and $0xfffffffffffffffc,%rsi | |
| 55a0: 48 f7 de neg %rsi | |
| 55a3: 31 ff xor %edi,%edi | |
| 55a5: 0f 10 04 38 movups (%rax,%rdi,1),%xmm0 | |
| 55a9: 0f 10 4c 38 10 movups 0x10(%rax,%rdi,1),%xmm1 | |
| 55ae: 0f 11 44 3d 00 movups %xmm0,0x0(%rbp,%rdi,1) | |
| 55b3: 0f 11 4c 3d 10 movups %xmm1,0x10(%rbp,%rdi,1) | |
| 55b8: 0f 10 44 38 20 movups 0x20(%rax,%rdi,1),%xmm0 | |
| 55bd: 0f 10 4c 38 30 movups 0x30(%rax,%rdi,1),%xmm1 | |
| 55c2: 0f 11 44 3d 20 movups %xmm0,0x20(%rbp,%rdi,1) | |
| 55c7: 0f 11 4c 3d 30 movups %xmm1,0x30(%rbp,%rdi,1) | |
| 55cc: 0f 10 44 38 40 movups 0x40(%rax,%rdi,1),%xmm0 | |
| 55d1: 0f 10 4c 38 50 movups 0x50(%rax,%rdi,1),%xmm1 | |
| 55d6: 0f 11 44 3d 40 movups %xmm0,0x40(%rbp,%rdi,1) | |
| 55db: 0f 11 4c 3d 50 movups %xmm1,0x50(%rbp,%rdi,1) | |
| 55e0: 0f 10 44 38 60 movups 0x60(%rax,%rdi,1),%xmm0 | |
| 55e5: 0f 10 4c 38 70 movups 0x70(%rax,%rdi,1),%xmm1 | |
| 55ea: 0f 11 44 3d 60 movups %xmm0,0x60(%rbp,%rdi,1) | |
| 55ef: 0f 11 4c 3d 70 movups %xmm1,0x70(%rbp,%rdi,1) | |
| 55f4: 48 83 ef 80 sub $0xffffffffffffff80,%rdi | |
| 55f8: 48 83 c6 04 add $0x4,%rsi | |
| 55fc: 75 a7 jne 55a5 <ZSTD_execSequenceEnd+0x925> | |
| 55fe: 48 85 db test %rbx,%rbx | |
| 5601: 74 23 je 5626 <ZSTD_execSequenceEnd+0x9a6> | |
| 5603: 48 83 c7 10 add $0x10,%rdi | |
| 5607: 48 f7 db neg %rbx | |
| 560a: 0f 10 44 38 f0 movups -0x10(%rax,%rdi,1),%xmm0 | |
| 560f: 0f 10 0c 38 movups (%rax,%rdi,1),%xmm1 | |
| 5613: 0f 11 44 3d f0 movups %xmm0,-0x10(%rbp,%rdi,1) | |
| 5618: 0f 11 4c 3d 00 movups %xmm1,0x0(%rbp,%rdi,1) | |
| 561d: 48 83 c7 20 add $0x20,%rdi | |
| 5621: 48 ff c3 inc %rbx | |
| 5624: 75 e4 jne 560a <ZSTD_execSequenceEnd+0x98a> | |
| 5626: 49 39 d0 cmp %rdx,%r8 | |
| 5629: 74 26 je 5651 <ZSTD_execSequenceEnd+0x9d1> | |
| 562b: 4c 01 c0 add %r8,%rax | |
| 562e: 4c 01 c5 add %r8,%rbp | |
| 5631: 48 29 e9 sub %rbp,%rcx | |
| 5634: 49 01 cd add %rcx,%r13 | |
| 5637: 31 c9 xor %ecx,%ecx | |
| 5639: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) | |
| 5640: 0f b6 14 08 movzbl (%rax,%rcx,1),%edx | |
| 5644: 88 54 0d 00 mov %dl,0x0(%rbp,%rcx,1) | |
| 5648: 48 83 c1 01 add $0x1,%rcx | |
| 564c: 49 39 cd cmp %rcx,%r13 | |
| 564f: 75 ef jne 5640 <ZSTD_execSequenceEnd+0x9c0> | |
| 5651: 4c 89 f0 mov %r14,%rax | |
| } | |
| 5654: 48 83 c4 18 add $0x18,%rsp | |
| 5658: 5b pop %rbx | |
| 5659: 41 5c pop %r12 | |
| 565b: 41 5d pop %r13 | |
| 565d: 41 5e pop %r14 | |
| 565f: 41 5f pop %r15 | |
| 5661: 5d pop %rbp | |
| 5662: c3 retq | |
| 5663: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) | |
| 566a: 00 00 00 | |
| 566d: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) | |
| 5674: 00 00 00 | |
| 5677: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) | |
| 567e: 00 00 | |
| 0000000000005680 <ZSTD_decompressSequences_bmi2>: | |
| { | |
| 5680: 55 push %rbp | |
| 5681: 41 57 push %r15 | |
| 5683: 41 56 push %r14 | |
| 5685: 41 55 push %r13 | |
| 5687: 41 54 push %r12 | |
| 5689: 53 push %rbx | |
| 568a: 48 81 ec d8 00 00 00 sub $0xd8,%rsp | |
| 5691: 49 89 f2 mov %rsi,%r10 | |
| BYTE* const oend = ostart + maxDstSize; | |
| 5694: 48 01 f2 add %rsi,%rdx | |
| const BYTE* litPtr = dctx->litPtr; | |
| 5697: 48 8b b7 a0 75 00 00 mov 0x75a0(%rdi),%rsi | |
| 569e: 48 89 b4 24 88 00 00 mov %rsi,0x88(%rsp) | |
| 56a5: 00 | |
| 56a6: 48 8b af c0 75 00 00 mov 0x75c0(%rdi),%rbp | |
| const BYTE* const litEnd = litPtr + dctx->litSize; | |
| 56ad: 48 01 f5 add %rsi,%rbp | |
| 56b0: 4c 89 54 24 08 mov %r10,0x8(%rsp) | |
| if (nbSeq) { | |
| 56b5: 45 85 c9 test %r9d,%r9d | |
| 56b8: 0f 84 ea 0a 00 00 je 61a8 <ZSTD_decompressSequences_bmi2+0xb28> | |
| 56be: 48 8b b7 c8 74 00 00 mov 0x74c8(%rdi),%rsi | |
| 56c5: 48 8b 87 d0 74 00 00 mov 0x74d0(%rdi),%rax | |
| 56cc: 48 89 84 24 b0 00 00 mov %rax,0xb0(%rsp) | |
| 56d3: 00 | |
| 56d4: 48 8b 87 d8 74 00 00 mov 0x74d8(%rdi),%rax | |
| 56db: 48 89 84 24 a8 00 00 mov %rax,0xa8(%rsp) | |
| 56e2: 00 | |
| dctx->fseEntropy = 1; | |
| 56e3: c7 87 2c 75 00 00 01 movl $0x1,0x752c(%rdi) | |
| 56ea: 00 00 00 | |
| { U32 i; for (i=0; i<ZSTD_REP_NUM; i++) seqState.prevOffset[i] = dctx->entropy.rep[i]; } | |
| 56ed: f2 0f 10 8f 3c 68 00 movsd 0x683c(%rdi),%xmm1 | |
| 56f4: 00 | |
| 56f5: 0f 57 c0 xorps %xmm0,%xmm0 | |
| 56f8: 0f 14 c8 unpcklps %xmm0,%xmm1 | |
| 56fb: 0f 11 4c 24 68 movups %xmm1,0x68(%rsp) | |
| 5700: 8b 87 44 68 00 00 mov 0x6844(%rdi),%eax | |
| 5706: 48 89 44 24 78 mov %rax,0x78(%rsp) | |
| if (srcSize < 1) { ZSTD_memset(bitD, 0, sizeof(*bitD)); return ERROR(srcSize_wrong); } | |
| 570b: 4d 85 c0 test %r8,%r8 | |
| 570e: 74 7f je 578f <ZSTD_decompressSequences_bmi2+0x10f> | |
| bitD->start = (const char*)srcBuffer; | |
| 5710: 48 89 4c 24 28 mov %rcx,0x28(%rsp) | |
| bitD->limitPtr = bitD->start + sizeof(bitD->bitContainer); | |
| 5715: 48 8d 41 08 lea 0x8(%rcx),%rax | |
| 5719: 48 89 44 24 30 mov %rax,0x30(%rsp) | |
| if (srcSize >= sizeof(bitD->bitContainer)) { /* normal case */ | |
| 571e: 49 83 f8 08 cmp $0x8,%r8 | |
| 5722: 48 89 b4 24 b8 00 00 mov %rsi,0xb8(%rsp) | |
| 5729: 00 | |
| 572a: 72 7b jb 57a7 <ZSTD_decompressSequences_bmi2+0x127> | |
| bitD->ptr = (const char*)srcBuffer + srcSize - sizeof(bitD->bitContainer); | |
| 572c: 4a 8d 04 01 lea (%rcx,%r8,1),%rax | |
| 5730: 48 83 c0 f8 add $0xfffffffffffffff8,%rax | |
| 5734: 48 89 44 24 20 mov %rax,0x20(%rsp) | |
| 5739: 4e 8b 74 01 f8 mov -0x8(%rcx,%r8,1),%r14 | |
| bitD->bitContainer = MEM_readLEST(bitD->ptr); | |
| 573e: 4c 89 74 24 10 mov %r14,0x10(%rsp) | |
| { BYTE const lastByte = ((const BYTE*)srcBuffer)[srcSize-1]; | |
| 5743: 41 0f b6 44 08 ff movzbl -0x1(%r8,%rcx,1),%eax | |
| 5749: 85 c0 test %eax,%eax | |
| bitD->bitsConsumed = lastByte ? 8 - BIT_highbit32(lastByte) : 0; /* ensures bitsConsumed is always set */ | |
| 574b: 0f 84 76 01 00 00 je 58c7 <ZSTD_decompressSequences_bmi2+0x247> | |
| 5751: 4c 89 94 24 90 00 00 mov %r10,0x90(%rsp) | |
| 5758: 00 | |
| return __builtin_clz (val) ^ 31; | |
| 5759: 44 0f bd d8 bsr %eax,%r11d | |
| 575d: 41 f7 d3 not %r11d | |
| 5760: 41 83 cb e0 or $0xffffffe0,%r11d | |
| bitD->bitsConsumed = lastByte ? 8 - BIT_highbit32(lastByte) : 0; /* ensures bitsConsumed is always set */ | |
| 5764: 41 83 c3 09 add $0x9,%r11d | |
| 5768: 44 89 5c 24 18 mov %r11d,0x18(%rsp) | |
| 576d: 49 c7 c7 ec ff ff ff mov $0xffffffffffffffec,%r15 | |
| 5774: 49 83 f8 88 cmp $0xffffffffffffff88,%r8 | |
| RETURN_ERROR_IF( | |
| 5778: 0f 87 58 01 00 00 ja 58d6 <ZSTD_decompressSequences_bmi2+0x256> | |
| 577e: 48 89 ac 24 80 00 00 mov %rbp,0x80(%rsp) | |
| 5785: 00 | |
| 5786: 49 83 c0 f8 add $0xfffffffffffffff8,%r8 | |
| 578a: e9 d3 00 00 00 jmpq 5862 <ZSTD_decompressSequences_bmi2+0x1e2> | |
| if (srcSize < 1) { ZSTD_memset(bitD, 0, sizeof(*bitD)); return ERROR(srcSize_wrong); } | |
| 578f: 0f 29 44 24 20 movaps %xmm0,0x20(%rsp) | |
| 5794: 0f 29 44 24 10 movaps %xmm0,0x10(%rsp) | |
| 5799: 48 c7 44 24 30 00 00 movq $0x0,0x30(%rsp) | |
| 57a0: 00 00 | |
| 57a2: e9 28 01 00 00 jmpq 58cf <ZSTD_decompressSequences_bmi2+0x24f> | |
| bitD->ptr = bitD->start; | |
| 57a7: 48 89 4c 24 20 mov %rcx,0x20(%rsp) | |
| bitD->bitContainer = *(const BYTE*)(bitD->start); | |
| 57ac: 44 0f b6 31 movzbl (%rcx),%r14d | |
| 57b0: 4c 89 74 24 10 mov %r14,0x10(%rsp) | |
| switch(srcSize) | |
| 57b5: 49 8d 40 fe lea -0x2(%r8),%rax | |
| 57b9: 48 83 f8 05 cmp $0x5,%rax | |
| 57bd: 48 89 ac 24 80 00 00 mov %rbp,0x80(%rsp) | |
| 57c4: 00 | |
| 57c5: 77 67 ja 582e <ZSTD_decompressSequences_bmi2+0x1ae> | |
| 57c7: ff 24 c5 00 00 00 00 jmpq *0x0(,%rax,8) | |
| case 7: bitD->bitContainer += (size_t)(((const BYTE*)(srcBuffer))[6]) << (sizeof(bitD->bitContainer)*8 - 16); | |
| 57ce: 0f b6 41 06 movzbl 0x6(%rcx),%eax | |
| 57d2: 48 c1 e0 30 shl $0x30,%rax | |
| 57d6: 49 09 c6 or %rax,%r14 | |
| 57d9: 4c 89 74 24 10 mov %r14,0x10(%rsp) | |
| case 6: bitD->bitContainer += (size_t)(((const BYTE*)(srcBuffer))[5]) << (sizeof(bitD->bitContainer)*8 - 24); | |
| 57de: 0f b6 41 05 movzbl 0x5(%rcx),%eax | |
| 57e2: 48 c1 e0 28 shl $0x28,%rax | |
| 57e6: 49 01 c6 add %rax,%r14 | |
| 57e9: 4c 89 74 24 10 mov %r14,0x10(%rsp) | |
| case 5: bitD->bitContainer += (size_t)(((const BYTE*)(srcBuffer))[4]) << (sizeof(bitD->bitContainer)*8 - 32); | |
| 57ee: 0f b6 41 04 movzbl 0x4(%rcx),%eax | |
| 57f2: 48 c1 e0 20 shl $0x20,%rax | |
| 57f6: 49 01 c6 add %rax,%r14 | |
| 57f9: 4c 89 74 24 10 mov %r14,0x10(%rsp) | |
| case 4: bitD->bitContainer += (size_t)(((const BYTE*)(srcBuffer))[3]) << 24; | |
| 57fe: 0f b6 41 03 movzbl 0x3(%rcx),%eax | |
| 5802: 48 c1 e0 18 shl $0x18,%rax | |
| 5806: 49 01 c6 add %rax,%r14 | |
| 5809: 4c 89 74 24 10 mov %r14,0x10(%rsp) | |
| case 3: bitD->bitContainer += (size_t)(((const BYTE*)(srcBuffer))[2]) << 16; | |
| 580e: 0f b6 41 02 movzbl 0x2(%rcx),%eax | |
| 5812: 48 c1 e0 10 shl $0x10,%rax | |
| 5816: 49 01 c6 add %rax,%r14 | |
| 5819: 4c 89 74 24 10 mov %r14,0x10(%rsp) | |
| case 2: bitD->bitContainer += (size_t)(((const BYTE*)(srcBuffer))[1]) << 8; | |
| 581e: 0f b6 41 01 movzbl 0x1(%rcx),%eax | |
| 5822: 48 c1 e0 08 shl $0x8,%rax | |
| 5826: 49 01 c6 add %rax,%r14 | |
| 5829: 4c 89 74 24 10 mov %r14,0x10(%rsp) | |
| { BYTE const lastByte = ((const BYTE*)srcBuffer)[srcSize-1]; | |
| 582e: 41 0f b6 44 08 ff movzbl -0x1(%r8,%rcx,1),%eax | |
| 5834: 85 c0 test %eax,%eax | |
| bitD->bitsConsumed = lastByte ? 8 - BIT_highbit32(lastByte) : 0; | |
| 5836: 0f 84 8b 00 00 00 je 58c7 <ZSTD_decompressSequences_bmi2+0x247> | |
| 583c: 4c 89 94 24 90 00 00 mov %r10,0x90(%rsp) | |
| 5843: 00 | |
| return __builtin_clz (val) ^ 31; | |
| 5844: 44 0f bd d8 bsr %eax,%r11d | |
| 5848: 41 f7 d3 not %r11d | |
| 584b: 41 83 cb e0 or $0xffffffe0,%r11d | |
| bitD->bitsConsumed += (U32)(sizeof(bitD->bitContainer) - srcSize)*8; | |
| 584f: 41 c1 e0 03 shl $0x3,%r8d | |
| 5853: 45 29 c3 sub %r8d,%r11d | |
| 5856: 41 83 c3 49 add $0x49,%r11d | |
| 585a: 44 89 5c 24 18 mov %r11d,0x18(%rsp) | |
| 585f: 45 31 c0 xor %r8d,%r8d | |
| ZSTD_initFseState(&seqState.stateLL, &seqState.DStream, dctx->LLTptr); | |
| 5862: 4c 8b 17 mov (%rdi),%r10 | |
| DStatePtr->state = BIT_readBits(bitD, DTableH->tableLog); | |
| 5865: 41 8b 72 04 mov 0x4(%r10),%esi | |
| return BIT_getMiddleBits(bitD->bitContainer, (sizeof(bitD->bitContainer)*8) - bitD->bitsConsumed - nbBits, nbBits); | |
| 5869: 41 01 f3 add %esi,%r11d | |
| return (bitContainer >> (start & regMask)) & BIT_mask[nbBits]; | |
| 586c: 44 89 d8 mov %r11d,%eax | |
| 586f: f6 d8 neg %al | |
| 5871: c4 42 fb f7 e6 shrx %rax,%r14,%r12 | |
| 5876: 44 23 24 b5 00 00 00 and 0x0(,%rsi,4),%r12d | |
| 587d: 00 | |
| bitD->bitsConsumed += nbBits; | |
| 587e: 44 89 5c 24 18 mov %r11d,0x18(%rsp) | |
| 5883: 4c 89 64 24 38 mov %r12,0x38(%rsp) | |
| if (bitD->bitsConsumed > (sizeof(bitD->bitContainer)*8)) /* overflow detected, like end of stream */ | |
| 5888: 41 83 fb 40 cmp $0x40,%r11d | |
| 588c: 77 74 ja 5902 <ZSTD_decompressSequences_bmi2+0x282> | |
| if (bitD->ptr >= bitD->limitPtr) { | |
| 588e: 49 83 f8 08 cmp $0x8,%r8 | |
| 5892: 7d 4a jge 58de <ZSTD_decompressSequences_bmi2+0x25e> | |
| if (bitD->ptr == bitD->start) { | |
| 5894: 4d 85 c0 test %r8,%r8 | |
| 5897: 0f 84 c1 09 00 00 je 625e <ZSTD_decompressSequences_bmi2+0xbde> | |
| 589d: 4a 8d 34 01 lea (%rcx,%r8,1),%rsi | |
| { U32 nbBytes = bitD->bitsConsumed >> 3; | |
| 58a1: 44 89 d8 mov %r11d,%eax | |
| 58a4: c1 e8 03 shr $0x3,%eax | |
| if (bitD->ptr - nbBytes < bitD->start) { | |
| 58a7: 48 29 c6 sub %rax,%rsi | |
| 58aa: 48 39 ce cmp %rcx,%rsi | |
| 58ad: 44 89 c6 mov %r8d,%esi | |
| 58b0: 0f 43 f0 cmovae %eax,%esi | |
| bitD->ptr -= nbBytes; | |
| 58b3: 49 29 f0 sub %rsi,%r8 | |
| 58b6: 4a 8d 04 01 lea (%rcx,%r8,1),%rax | |
| 58ba: 48 89 44 24 20 mov %rax,0x20(%rsp) | |
| bitD->bitsConsumed -= nbBytes*8; | |
| 58bf: c1 e6 03 shl $0x3,%esi | |
| 58c2: 41 29 f3 sub %esi,%r11d | |
| 58c5: eb 2d jmp 58f4 <ZSTD_decompressSequences_bmi2+0x274> | |
| 58c7: c7 44 24 18 00 00 00 movl $0x0,0x18(%rsp) | |
| 58ce: 00 | |
| 58cf: 49 c7 c7 ec ff ff ff mov $0xffffffffffffffec,%r15 | |
| 58d6: 4c 89 f8 mov %r15,%rax | |
| 58d9: e9 09 09 00 00 jmpq 61e7 <ZSTD_decompressSequences_bmi2+0xb67> | |
| bitD->ptr -= bitD->bitsConsumed >> 3; | |
| 58de: 44 89 de mov %r11d,%esi | |
| 58e1: c1 ee 03 shr $0x3,%esi | |
| 58e4: 49 29 f0 sub %rsi,%r8 | |
| 58e7: 4a 8d 34 01 lea (%rcx,%r8,1),%rsi | |
| 58eb: 48 89 74 24 20 mov %rsi,0x20(%rsp) | |
| bitD->bitsConsumed &= 7; | |
| 58f0: 41 83 e3 07 and $0x7,%r11d | |
| 58f4: 44 89 5c 24 18 mov %r11d,0x18(%rsp) | |
| 58f9: 4e 8b 34 01 mov (%rcx,%r8,1),%r14 | |
| 58fd: 4c 89 74 24 10 mov %r14,0x10(%rsp) | |
| DStatePtr->table = dt + 1; | |
| 5902: 49 83 c2 08 add $0x8,%r10 | |
| 5906: 4c 89 54 24 40 mov %r10,0x40(%rsp) | |
| 590b: 48 89 bc 24 a0 00 00 mov %rdi,0xa0(%rsp) | |
| 5912: 00 | |
| ZSTD_initFseState(&seqState.stateOffb, &seqState.DStream, dctx->OFTptr); | |
| 5913: 4c 8b 6f 10 mov 0x10(%rdi),%r13 | |
| DStatePtr->state = BIT_readBits(bitD, DTableH->tableLog); | |
| 5917: 41 8b 75 04 mov 0x4(%r13),%esi | |
| return BIT_getMiddleBits(bitD->bitContainer, (sizeof(bitD->bitContainer)*8) - bitD->bitsConsumed - nbBits, nbBits); | |
| 591b: 41 01 f3 add %esi,%r11d | |
| return (bitContainer >> (start & regMask)) & BIT_mask[nbBits]; | |
| 591e: 44 89 d8 mov %r11d,%eax | |
| 5921: f6 d8 neg %al | |
| 5923: c4 42 fb f7 fe shrx %rax,%r14,%r15 | |
| 5928: 44 23 3c b5 00 00 00 and 0x0(,%rsi,4),%r15d | |
| 592f: 00 | |
| bitD->bitsConsumed += nbBits; | |
| 5930: 44 89 5c 24 18 mov %r11d,0x18(%rsp) | |
| 5935: 4c 89 7c 24 48 mov %r15,0x48(%rsp) | |
| if (bitD->bitsConsumed > (sizeof(bitD->bitContainer)*8)) /* overflow detected, like end of stream */ | |
| 593a: 41 83 fb 40 cmp $0x40,%r11d | |
| 593e: 77 5d ja 599d <ZSTD_decompressSequences_bmi2+0x31d> | |
| if (bitD->ptr >= bitD->limitPtr) { | |
| 5940: 49 83 f8 08 cmp $0x8,%r8 | |
| 5944: 7d 33 jge 5979 <ZSTD_decompressSequences_bmi2+0x2f9> | |
| if (bitD->ptr == bitD->start) { | |
| 5946: 4d 85 c0 test %r8,%r8 | |
| 5949: 0f 84 17 09 00 00 je 6266 <ZSTD_decompressSequences_bmi2+0xbe6> | |
| 594f: 4a 8d 04 01 lea (%rcx,%r8,1),%rax | |
| { U32 nbBytes = bitD->bitsConsumed >> 3; | |
| 5953: 44 89 de mov %r11d,%esi | |
| 5956: c1 ee 03 shr $0x3,%esi | |
| if (bitD->ptr - nbBytes < bitD->start) { | |
| 5959: 48 29 f0 sub %rsi,%rax | |
| 595c: 48 39 c8 cmp %rcx,%rax | |
| 595f: 44 89 c0 mov %r8d,%eax | |
| 5962: 0f 43 c6 cmovae %esi,%eax | |
| bitD->ptr -= nbBytes; | |
| 5965: 49 29 c0 sub %rax,%r8 | |
| 5968: 4a 8d 34 01 lea (%rcx,%r8,1),%rsi | |
| 596c: 48 89 74 24 20 mov %rsi,0x20(%rsp) | |
| bitD->bitsConsumed -= nbBytes*8; | |
| 5971: c1 e0 03 shl $0x3,%eax | |
| 5974: 41 29 c3 sub %eax,%r11d | |
| 5977: eb 16 jmp 598f <ZSTD_decompressSequences_bmi2+0x30f> | |
| bitD->ptr -= bitD->bitsConsumed >> 3; | |
| 5979: 44 89 d8 mov %r11d,%eax | |
| 597c: c1 e8 03 shr $0x3,%eax | |
| 597f: 49 29 c0 sub %rax,%r8 | |
| 5982: 4a 8d 04 01 lea (%rcx,%r8,1),%rax | |
| 5986: 48 89 44 24 20 mov %rax,0x20(%rsp) | |
| bitD->bitsConsumed &= 7; | |
| 598b: 41 83 e3 07 and $0x7,%r11d | |
| 598f: 44 89 5c 24 18 mov %r11d,0x18(%rsp) | |
| 5994: 4e 8b 34 01 mov (%rcx,%r8,1),%r14 | |
| 5998: 4c 89 74 24 10 mov %r14,0x10(%rsp) | |
| DStatePtr->table = dt + 1; | |
| 599d: 49 83 c5 08 add $0x8,%r13 | |
| 59a1: 4c 89 6c 24 50 mov %r13,0x50(%rsp) | |
| 59a6: 48 8b 84 24 a0 00 00 mov 0xa0(%rsp),%rax | |
| 59ad: 00 | |
| ZSTD_initFseState(&seqState.stateML, &seqState.DStream, dctx->MLTptr); | |
| 59ae: 48 8b 70 08 mov 0x8(%rax),%rsi | |
| DStatePtr->state = BIT_readBits(bitD, DTableH->tableLog); | |
| 59b2: 8b 46 04 mov 0x4(%rsi),%eax | |
| return BIT_getMiddleBits(bitD->bitContainer, (sizeof(bitD->bitContainer)*8) - bitD->bitsConsumed - nbBits, nbBits); | |
| 59b5: 41 01 c3 add %eax,%r11d | |
| return (bitContainer >> (start & regMask)) & BIT_mask[nbBits]; | |
| 59b8: 44 89 df mov %r11d,%edi | |
| 59bb: 40 f6 df neg %dil | |
| 59be: c4 c2 c3 f7 fe shrx %rdi,%r14,%rdi | |
| 59c3: 23 3c 85 00 00 00 00 and 0x0(,%rax,4),%edi | |
| bitD->bitsConsumed += nbBits; | |
| 59ca: 44 89 5c 24 18 mov %r11d,0x18(%rsp) | |
| 59cf: 48 89 7c 24 58 mov %rdi,0x58(%rsp) | |
| if (bitD->bitsConsumed > (sizeof(bitD->bitContainer)*8)) /* overflow detected, like end of stream */ | |
| 59d4: 41 83 fb 40 cmp $0x40,%r11d | |
| 59d8: 44 89 4c 24 04 mov %r9d,0x4(%rsp) | |
| 59dd: 77 53 ja 5a32 <ZSTD_decompressSequences_bmi2+0x3b2> | |
| 59df: 4a 8d 1c 01 lea (%rcx,%r8,1),%rbx | |
| if (bitD->ptr >= bitD->limitPtr) { | |
| 59e3: 49 83 f8 08 cmp $0x8,%r8 | |
| 59e7: 7d 2a jge 5a13 <ZSTD_decompressSequences_bmi2+0x393> | |
| if (bitD->ptr == bitD->start) { | |
| 59e9: 4d 85 c0 test %r8,%r8 | |
| 59ec: 74 44 je 5a32 <ZSTD_decompressSequences_bmi2+0x3b2> | |
| { U32 nbBytes = bitD->bitsConsumed >> 3; | |
| 59ee: 45 89 de mov %r11d,%r14d | |
| 59f1: 41 c1 ee 03 shr $0x3,%r14d | |
| if (bitD->ptr - nbBytes < bitD->start) { | |
| 59f5: 48 89 d8 mov %rbx,%rax | |
| 59f8: 4c 29 f0 sub %r14,%rax | |
| 59fb: 48 39 c8 cmp %rcx,%rax | |
| 59fe: 45 0f 43 c6 cmovae %r14d,%r8d | |
| bitD->ptr -= nbBytes; | |
| 5a02: 4c 29 c3 sub %r8,%rbx | |
| 5a05: 48 89 5c 24 20 mov %rbx,0x20(%rsp) | |
| bitD->bitsConsumed -= nbBytes*8; | |
| 5a0a: 41 c1 e0 03 shl $0x3,%r8d | |
| 5a0e: 45 29 c3 sub %r8d,%r11d | |
| 5a11: eb 12 jmp 5a25 <ZSTD_decompressSequences_bmi2+0x3a5> | |
| bitD->ptr -= bitD->bitsConsumed >> 3; | |
| 5a13: 44 89 d8 mov %r11d,%eax | |
| 5a16: c1 e8 03 shr $0x3,%eax | |
| 5a19: 48 29 c3 sub %rax,%rbx | |
| 5a1c: 48 89 5c 24 20 mov %rbx,0x20(%rsp) | |
| bitD->bitsConsumed &= 7; | |
| 5a21: 41 83 e3 07 and $0x7,%r11d | |
| 5a25: 44 89 5c 24 18 mov %r11d,0x18(%rsp) | |
| 5a2a: 48 8b 03 mov (%rbx),%rax | |
| 5a2d: 48 89 44 24 10 mov %rax,0x10(%rsp) | |
| DStatePtr->table = dt + 1; | |
| 5a32: 48 83 c6 08 add $0x8,%rsi | |
| 5a36: 48 89 74 24 60 mov %rsi,0x60(%rsp) | |
| 5a3b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) | |
| __asm__("nop"); | |
| 5a40: 90 nop | |
| 5a41: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) | |
| 5a48: 00 00 00 | |
| 5a4b: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) | |
| 5a52: 00 00 00 | |
| 5a55: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) | |
| 5a5c: 00 00 00 | |
| 5a5f: 90 nop | |
| __asm__("nop"); | |
| 5a60: 90 nop | |
| 5a61: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) | |
| 5a68: 00 00 00 | |
| 5a6b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) | |
| __asm__(".p2align 4"); | |
| 5a70: 48 89 94 24 98 00 00 mov %rdx,0x98(%rsp) | |
| 5a77: 00 | |
| 5a78: 48 8d 42 e0 lea -0x20(%rdx),%rax | |
| 5a7c: 48 89 84 24 c0 00 00 mov %rax,0xc0(%rsp) | |
| 5a83: 00 | |
| 5a84: 48 8b 84 24 90 00 00 mov 0x90(%rsp),%rax | |
| 5a8b: 00 | |
| 5a8c: 48 89 44 24 08 mov %rax,0x8(%rsp) | |
| 5a91: eb 4b jmp 5ade <ZSTD_decompressSequences_bmi2+0x45e> | |
| 5a93: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) | |
| 5a9a: 00 00 00 | |
| 5a9d: 0f 1f 00 nopl (%rax) | |
| bitD->ptr -= bitD->bitsConsumed >> 3; | |
| 5aa0: 4c 89 d8 mov %r11,%rax | |
| 5aa3: 48 c1 e8 03 shr $0x3,%rax | |
| 5aa7: 48 29 c1 sub %rax,%rcx | |
| 5aaa: 48 89 4c 24 20 mov %rcx,0x20(%rsp) | |
| bitD->bitsConsumed &= 7; | |
| 5aaf: 41 83 e3 07 and $0x7,%r11d | |
| 5ab3: 44 89 5c 24 18 mov %r11d,0x18(%rsp) | |
| 5ab8: 48 8b 01 mov (%rcx),%rax | |
| 5abb: 48 89 44 24 10 mov %rax,0x10(%rsp) | |
| ZSTD_seqSymbol const llDInfo = seqState->stateLL.table[seqState->stateLL.state]; | |
| 5ac0: 4c 8b 64 24 38 mov 0x38(%rsp),%r12 | |
| 5ac5: 4c 8b 54 24 40 mov 0x40(%rsp),%r10 | |
| ZSTD_seqSymbol const mlDInfo = seqState->stateML.table[seqState->stateML.state]; | |
| 5aca: 48 8b 74 24 60 mov 0x60(%rsp),%rsi | |
| 5acf: 48 8b 7c 24 58 mov 0x58(%rsp),%rdi | |
| ZSTD_seqSymbol const ofDInfo = seqState->stateOffb.table[seqState->stateOffb.state]; | |
| 5ad4: 4c 8b 6c 24 50 mov 0x50(%rsp),%r13 | |
| 5ad9: 4c 8b 7c 24 48 mov 0x48(%rsp),%r15 | |
| ZSTD_seqSymbol const llDInfo = seqState->stateLL.table[seqState->stateLL.state]; | |
| 5ade: 43 0f b7 1c e2 movzwl (%r10,%r12,8),%ebx | |
| 5ae3: 47 0f b6 4c e2 02 movzbl 0x2(%r10,%r12,8),%r9d | |
| 5ae9: 47 0f b6 44 e2 03 movzbl 0x3(%r10,%r12,8),%r8d | |
| 5aef: 43 8b 54 e2 04 mov 0x4(%r10,%r12,8),%edx | |
| ZSTD_seqSymbol const mlDInfo = seqState->stateML.table[seqState->stateML.state]; | |
| 5af4: 0f b7 2c fe movzwl (%rsi,%rdi,8),%ebp | |
| 5af8: 0f b6 4c fe 02 movzbl 0x2(%rsi,%rdi,8),%ecx | |
| 5afd: 44 0f b6 64 fe 03 movzbl 0x3(%rsi,%rdi,8),%r12d | |
| 5b03: 44 8b 74 fe 04 mov 0x4(%rsi,%rdi,8),%r14d | |
| ZSTD_seqSymbol const ofDInfo = seqState->stateOffb.table[seqState->stateOffb.state]; | |
| 5b08: 43 0f b7 44 fd 00 movzwl 0x0(%r13,%r15,8),%eax | |
| 5b0e: 43 0f b6 7c fd 02 movzbl 0x2(%r13,%r15,8),%edi | |
| BYTE const totalBits = llBits+mlBits+ofBits; | |
| 5b14: 42 8d 34 09 lea (%rcx,%r9,1),%esi | |
| ZSTD_seqSymbol const ofDInfo = seqState->stateOffb.table[seqState->stateOffb.state]; | |
| 5b18: 47 0f b6 54 fd 03 movzbl 0x3(%r13,%r15,8),%r10d | |
| 5b1e: 47 8b 7c fd 04 mov 0x4(%r13,%r15,8),%r15d | |
| 5b23: 83 ff 02 cmp $0x2,%edi | |
| 5b26: 48 89 84 24 d0 00 00 mov %rax,0xd0(%rsp) | |
| 5b2d: 00 | |
| 5b2e: 48 89 ac 24 c8 00 00 mov %rbp,0xc8(%rsp) | |
| 5b35: 00 | |
| if (ofBits > 1) { | |
| 5b36: 0f 82 04 02 00 00 jb 5d40 <ZSTD_decompressSequences_bmi2+0x6c0> | |
| 5b3c: 45 89 c5 mov %r8d,%r13d | |
| return (bitD->bitContainer << (bitD->bitsConsumed & regMask)) >> (((regMask+1)-nbBits) & regMask); | |
| 5b3f: c4 e2 a1 f7 6c 24 10 shlx %r11,0x10(%rsp),%rbp | |
| 5b46: 89 f8 mov %edi,%eax | |
| 5b48: f6 d8 neg %al | |
| 5b4a: c4 62 fb f7 c5 shrx %rax,%rbp,%r8 | |
| bitD->bitsConsumed += nbBits; | |
| 5b4f: 41 01 fb add %edi,%r11d | |
| 5b52: 44 89 5c 24 18 mov %r11d,0x18(%rsp) | |
| offset = ofBase + BIT_readBitsFast(&seqState->DStream, ofBits/*>0*/); /* <= (ZSTD_WINDOWLOG_MAX-1) bits */ | |
| 5b57: 4d 01 f8 add %r15,%r8 | |
| seqState->prevOffset[1] = seqState->prevOffset[0]; | |
| 5b5a: 0f 10 44 24 68 movups 0x68(%rsp),%xmm0 | |
| 5b5f: 0f 11 44 24 70 movups %xmm0,0x70(%rsp) | |
| 5b64: 4c 89 44 24 68 mov %r8,0x68(%rsp) | |
| 5b69: 40 00 fe add %dil,%sil | |
| if (mlBits > 0) | |
| 5b6c: 84 c9 test %cl,%cl | |
| 5b6e: 74 1c je 5b8c <ZSTD_decompressSequences_bmi2+0x50c> | |
| return (bitD->bitContainer << (bitD->bitsConsumed & regMask)) >> (((regMask+1)-nbBits) & regMask); | |
| 5b70: c4 e2 a1 f7 44 24 10 shlx %r11,0x10(%rsp),%rax | |
| 5b77: 89 cf mov %ecx,%edi | |
| 5b79: 40 f6 df neg %dil | |
| 5b7c: c4 e2 c3 f7 c0 shrx %rdi,%rax,%rax | |
| bitD->bitsConsumed += nbBits; | |
| 5b81: 41 01 cb add %ecx,%r11d | |
| 5b84: 44 89 5c 24 18 mov %r11d,0x18(%rsp) | |
| seq.matchLength += BIT_readBitsFast(&seqState->DStream, mlBits/*>0*/); | |
| 5b89: 49 01 c6 add %rax,%r14 | |
| if (MEM_64bits() && UNLIKELY(totalBits >= STREAM_ACCUMULATOR_MIN_64-(LLFSELog+MLFSELog+OffFSELog))) | |
| 5b8c: 40 80 fe 1f cmp $0x1f,%sil | |
| 5b90: 72 0a jb 5b9c <ZSTD_decompressSequences_bmi2+0x51c> | |
| 5b92: 41 83 fb 40 cmp $0x40,%r11d | |
| 5b96: 0f 86 46 03 00 00 jbe 5ee2 <ZSTD_decompressSequences_bmi2+0x862> | |
| 5b9c: 48 8b 74 24 10 mov 0x10(%rsp),%rsi | |
| if (llBits > 0) | |
| 5ba1: 45 84 c9 test %r9b,%r9b | |
| 5ba4: 74 1b je 5bc1 <ZSTD_decompressSequences_bmi2+0x541> | |
| return (bitD->bitContainer << (bitD->bitsConsumed & regMask)) >> (((regMask+1)-nbBits) & regMask); | |
| 5ba6: c4 e2 a1 f7 c6 shlx %r11,%rsi,%rax | |
| 5bab: 44 89 cf mov %r9d,%edi | |
| 5bae: 40 f6 df neg %dil | |
| 5bb1: c4 e2 c3 f7 c0 shrx %rdi,%rax,%rax | |
| bitD->bitsConsumed += nbBits; | |
| 5bb6: 45 01 cb add %r9d,%r11d | |
| 5bb9: 44 89 5c 24 18 mov %r11d,0x18(%rsp) | |
| seq.litLength += BIT_readBitsFast(&seqState->DStream, llBits/*>0*/); | |
| 5bbe: 48 01 c2 add %rax,%rdx | |
| return BIT_getMiddleBits(bitD->bitContainer, (sizeof(bitD->bitContainer)*8) - bitD->bitsConsumed - nbBits, nbBits); | |
| 5bc1: 45 01 eb add %r13d,%r11d | |
| return (bitContainer >> (start & regMask)) & BIT_mask[nbBits]; | |
| 5bc4: 44 89 d8 mov %r11d,%eax | |
| 5bc7: f6 d8 neg %al | |
| 5bc9: c4 e2 fb f7 c6 shrx %rax,%rsi,%rax | |
| 5bce: 44 89 e9 mov %r13d,%ecx | |
| 5bd1: 23 04 8d 00 00 00 00 and 0x0(,%rcx,4),%eax | |
| DStatePtr->state = DInfo.nextState + lowBits; | |
| 5bd8: 48 01 d8 add %rbx,%rax | |
| 5bdb: 48 89 44 24 38 mov %rax,0x38(%rsp) | |
| return BIT_getMiddleBits(bitD->bitContainer, (sizeof(bitD->bitContainer)*8) - bitD->bitsConsumed - nbBits, nbBits); | |
| 5be0: 45 01 e3 add %r12d,%r11d | |
| return (bitContainer >> (start & regMask)) & BIT_mask[nbBits]; | |
| 5be3: 44 89 d8 mov %r11d,%eax | |
| 5be6: f6 d8 neg %al | |
| 5be8: c4 e2 fb f7 c6 shrx %rax,%rsi,%rax | |
| 5bed: 44 89 e1 mov %r12d,%ecx | |
| 5bf0: 23 04 8d 00 00 00 00 and 0x0(,%rcx,4),%eax | |
| 5bf7: 48 03 84 24 c8 00 00 add 0xc8(%rsp),%rax | |
| 5bfe: 00 | |
| 5bff: 48 89 44 24 58 mov %rax,0x58(%rsp) | |
| return BIT_getMiddleBits(bitD->bitContainer, (sizeof(bitD->bitContainer)*8) - bitD->bitsConsumed - nbBits, nbBits); | |
| 5c04: 45 01 d3 add %r10d,%r11d | |
| return (bitContainer >> (start & regMask)) & BIT_mask[nbBits]; | |
| 5c07: 44 89 d8 mov %r11d,%eax | |
| 5c0a: f6 d8 neg %al | |
| 5c0c: c4 e2 fb f7 c6 shrx %rax,%rsi,%rax | |
| 5c11: 44 89 d1 mov %r10d,%ecx | |
| 5c14: 23 04 8d 00 00 00 00 and 0x0(,%rcx,4),%eax | |
| 5c1b: 48 03 84 24 d0 00 00 add 0xd0(%rsp),%rax | |
| 5c22: 00 | |
| bitD->bitsConsumed += nbBits; | |
| 5c23: 44 89 5c 24 18 mov %r11d,0x18(%rsp) | |
| 5c28: 48 89 44 24 48 mov %rax,0x48(%rsp) | |
| size_t const sequenceLength = sequence.litLength + sequence.matchLength; | |
| 5c2d: 4e 8d 3c 32 lea (%rdx,%r14,1),%r15 | |
| 5c31: 48 8b 44 24 08 mov 0x8(%rsp),%rax | |
| 5c36: 4c 01 f8 add %r15,%rax | |
| 5c39: 48 3b 84 24 c0 00 00 cmp 0xc0(%rsp),%rax | |
| 5c40: 00 | |
| if (UNLIKELY( | |
| 5c41: 0f 87 ab 01 00 00 ja 5df2 <ZSTD_decompressSequences_bmi2+0x772> | |
| 5c47: 48 8b 8c 24 88 00 00 mov 0x88(%rsp),%rcx | |
| 5c4e: 00 | |
| 5c4f: 48 8d 04 11 lea (%rcx,%rdx,1),%rax | |
| 5c53: 48 3b 84 24 80 00 00 cmp 0x80(%rsp),%rax | |
| 5c5a: 00 | |
| 5c5b: 0f 87 91 01 00 00 ja 5df2 <ZSTD_decompressSequences_bmi2+0x772> | |
| 5c61: 48 8b 74 24 08 mov 0x8(%rsp),%rsi | |
| 5c66: 4c 8d 2c 16 lea (%rsi,%rdx,1),%r13 | |
| 5c6a: 4c 89 ed mov %r13,%rbp | |
| 5c6d: 4c 29 c5 sub %r8,%rbp | |
| ZSTD_memcpy(dst, src, 16); | |
| 5c70: 0f 10 01 movups (%rcx),%xmm0 | |
| 5c73: 0f 11 06 movups %xmm0,(%rsi) | |
| if (UNLIKELY(sequence.litLength > 16)) { | |
| 5c76: 48 83 fa 11 cmp $0x11,%rdx | |
| 5c7a: 0f 83 b7 01 00 00 jae 5e37 <ZSTD_decompressSequences_bmi2+0x7b7> | |
| *litPtr = iLitEnd; /* update for next sequence */ | |
| 5c80: 48 89 84 24 88 00 00 mov %rax,0x88(%rsp) | |
| 5c87: 00 | |
| if (sequence.offset > (size_t)(oLitEnd - prefixStart)) { | |
| 5c88: 4c 89 e8 mov %r13,%rax | |
| 5c8b: 4c 8b a4 24 b8 00 00 mov 0xb8(%rsp),%r12 | |
| 5c92: 00 | |
| 5c93: 4c 29 e0 sub %r12,%rax | |
| 5c96: 4c 39 c0 cmp %r8,%rax | |
| 5c99: 73 4d jae 5ce8 <ZSTD_decompressSequences_bmi2+0x668> | |
| RETURN_ERROR_IF(UNLIKELY(sequence.offset > (size_t)(oLitEnd - virtualStart)), corruption_detected, ""); | |
| 5c9b: 4c 89 e8 mov %r13,%rax | |
| 5c9e: 48 2b 84 24 b0 00 00 sub 0xb0(%rsp),%rax | |
| 5ca5: 00 | |
| 5ca6: 4c 39 c0 cmp %r8,%rax | |
| 5ca9: 0f 82 20 fc ff ff jb 58cf <ZSTD_decompressSequences_bmi2+0x24f> | |
| match = dictEnd + (match - prefixStart); | |
| 5caf: 4c 29 e5 sub %r12,%rbp | |
| 5cb2: 48 8b 8c 24 a8 00 00 mov 0xa8(%rsp),%rcx | |
| 5cb9: 00 | |
| 5cba: 48 8d 34 29 lea (%rcx,%rbp,1),%rsi | |
| if (match + sequence.matchLength <= dictEnd) { | |
| 5cbe: 4a 8d 04 36 lea (%rsi,%r14,1),%rax | |
| 5cc2: 48 39 c8 cmp %rcx,%rax | |
| 5cc5: 0f 86 a5 00 00 00 jbe 5d70 <ZSTD_decompressSequences_bmi2+0x6f0> | |
| { size_t const length1 = dictEnd - match; | |
| 5ccb: 48 89 ea mov %rbp,%rdx | |
| 5cce: 48 f7 da neg %rdx | |
| ZSTD_memmove(oLitEnd, match, length1); | |
| 5cd1: 4c 89 ef mov %r13,%rdi | |
| 5cd4: 4c 89 c3 mov %r8,%rbx | |
| 5cd7: e8 00 00 00 00 callq 5cdc <ZSTD_decompressSequences_bmi2+0x65c> | |
| 5cdc: 49 89 d8 mov %rbx,%r8 | |
| op = oLitEnd + length1; | |
| 5cdf: 49 29 ed sub %rbp,%r13 | |
| sequence.matchLength -= length1; | |
| 5ce2: 49 01 ee add %rbp,%r14 | |
| 5ce5: 4c 89 e5 mov %r12,%rbp | |
| if (LIKELY(sequence.offset >= WILDCOPY_VECLEN)) { | |
| 5ce8: 49 83 f8 10 cmp $0x10,%r8 | |
| 5cec: 0f 82 a6 01 00 00 jb 5e98 <ZSTD_decompressSequences_bmi2+0x818> | |
| 5cf2: 0f 10 45 00 movups 0x0(%rbp),%xmm0 | |
| 5cf6: 41 0f 11 45 00 movups %xmm0,0x0(%r13) | |
| if (16 >= length) return; | |
| 5cfb: 49 83 fe 11 cmp $0x11,%r14 | |
| 5cff: 7c 7a jl 5d7b <ZSTD_decompressSequences_bmi2+0x6fb> | |
| 5d01: 4d 01 ee add %r13,%r14 | |
| do { | |
| 5d04: 48 83 c5 10 add $0x10,%rbp | |
| 5d08: b8 10 00 00 00 mov $0x10,%eax | |
| 5d0d: 0f 1f 00 nopl (%rax) | |
| ZSTD_memcpy(dst, src, 16); | |
| 5d10: 0f 10 44 05 f0 movups -0x10(%rbp,%rax,1),%xmm0 | |
| 5d15: 41 0f 11 44 05 00 movups %xmm0,0x0(%r13,%rax,1) | |
| 5d1b: 0f 10 44 05 00 movups 0x0(%rbp,%rax,1),%xmm0 | |
| 5d20: 41 0f 11 44 05 10 movups %xmm0,0x10(%r13,%rax,1) | |
| while (op < oend); | |
| 5d26: 4a 8d 0c 28 lea (%rax,%r13,1),%rcx | |
| 5d2a: 48 83 c1 20 add $0x20,%rcx | |
| 5d2e: 48 83 c0 20 add $0x20,%rax | |
| 5d32: 4c 39 f1 cmp %r14,%rcx | |
| } | |
| 5d35: 72 d9 jb 5d10 <ZSTD_decompressSequences_bmi2+0x690> | |
| 5d37: eb 42 jmp 5d7b <ZSTD_decompressSequences_bmi2+0x6fb> | |
| 5d39: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) | |
| if (LIKELY((ofBits == 0))) { | |
| 5d40: 40 84 ff test %dil,%dil | |
| 5d43: 0f 85 e0 01 00 00 jne 5f29 <ZSTD_decompressSequences_bmi2+0x8a9> | |
| 5d49: 45 89 c5 mov %r8d,%r13d | |
| U32 const ll0 = (llBase == 0); | |
| 5d4c: 85 d2 test %edx,%edx | |
| if (LIKELY(!ll0)) | |
| 5d4e: 0f 84 16 02 00 00 je 5f6a <ZSTD_decompressSequences_bmi2+0x8ea> | |
| offset = seqState->prevOffset[0]; | |
| 5d54: 4c 8b 44 24 68 mov 0x68(%rsp),%r8 | |
| 5d59: 40 00 fe add %dil,%sil | |
| if (mlBits > 0) | |
| 5d5c: 84 c9 test %cl,%cl | |
| 5d5e: 0f 85 0c fe ff ff jne 5b70 <ZSTD_decompressSequences_bmi2+0x4f0> | |
| 5d64: e9 23 fe ff ff jmpq 5b8c <ZSTD_decompressSequences_bmi2+0x50c> | |
| 5d69: 0f 1f 80 00 00 00 00 nopl 0x0(%rax) | |
| ZSTD_memmove(oLitEnd, match, sequence.matchLength); | |
| 5d70: 4c 89 ef mov %r13,%rdi | |
| 5d73: 4c 89 f2 mov %r14,%rdx | |
| 5d76: e8 00 00 00 00 callq 5d7b <ZSTD_decompressSequences_bmi2+0x6fb> | |
| 5d7b: 8b 44 24 04 mov 0x4(%rsp),%eax | |
| 5d7f: 49 83 ff 88 cmp $0xffffffffffffff88,%r15 | |
| if (UNLIKELY(ZSTD_isError(oneSeqSize))) | |
| 5d83: 0f 87 4d fb ff ff ja 58d6 <ZSTD_decompressSequences_bmi2+0x256> | |
| op += oneSeqSize; | |
| 5d89: 4c 01 7c 24 08 add %r15,0x8(%rsp) | |
| 5d8e: 44 8b 5c 24 18 mov 0x18(%rsp),%r11d | |
| if (UNLIKELY(!--nbSeq)) | |
| 5d93: 83 c0 ff add $0xffffffff,%eax | |
| 5d96: 0f 84 bc 03 00 00 je 6158 <ZSTD_decompressSequences_bmi2+0xad8> | |
| 5d9c: 41 83 fb 40 cmp $0x40,%r11d | |
| 5da0: 89 44 24 04 mov %eax,0x4(%rsp) | |
| if (bitD->bitsConsumed > (sizeof(bitD->bitContainer)*8)) /* overflow detected, like end of stream */ | |
| 5da4: 0f 87 16 fd ff ff ja 5ac0 <ZSTD_decompressSequences_bmi2+0x440> | |
| if (bitD->ptr >= bitD->limitPtr) { | |
| 5daa: 48 8b 4c 24 20 mov 0x20(%rsp),%rcx | |
| 5daf: 48 3b 4c 24 30 cmp 0x30(%rsp),%rcx | |
| 5db4: 0f 83 e6 fc ff ff jae 5aa0 <ZSTD_decompressSequences_bmi2+0x420> | |
| if (bitD->ptr == bitD->start) { | |
| 5dba: 48 8b 54 24 28 mov 0x28(%rsp),%rdx | |
| 5dbf: 48 39 d1 cmp %rdx,%rcx | |
| 5dc2: 0f 84 f8 fc ff ff je 5ac0 <ZSTD_decompressSequences_bmi2+0x440> | |
| { U32 nbBytes = bitD->bitsConsumed >> 3; | |
| 5dc8: 4c 89 d8 mov %r11,%rax | |
| 5dcb: 48 c1 e8 03 shr $0x3,%rax | |
| if (bitD->ptr - nbBytes < bitD->start) { | |
| 5dcf: 48 89 ce mov %rcx,%rsi | |
| 5dd2: 48 29 c6 sub %rax,%rsi | |
| 5dd5: 89 cf mov %ecx,%edi | |
| 5dd7: 29 d7 sub %edx,%edi | |
| 5dd9: 48 39 d6 cmp %rdx,%rsi | |
| 5ddc: 0f 43 f8 cmovae %eax,%edi | |
| bitD->ptr -= nbBytes; | |
| 5ddf: 48 29 f9 sub %rdi,%rcx | |
| 5de2: 48 89 4c 24 20 mov %rcx,0x20(%rsp) | |
| bitD->bitsConsumed -= nbBytes*8; | |
| 5de7: c1 e7 03 shl $0x3,%edi | |
| 5dea: 41 29 fb sub %edi,%r11d | |
| 5ded: e9 c1 fc ff ff jmpq 5ab3 <ZSTD_decompressSequences_bmi2+0x433> | |
| 5df2: 48 8b 7c 24 08 mov 0x8(%rsp),%rdi | |
| 5df7: 48 8b b4 24 98 00 00 mov 0x98(%rsp),%rsi | |
| 5dfe: 00 | |
| return ZSTD_execSequenceEnd(op, oend, sequence, litPtr, litLimit, prefixStart, virtualStart, dictEnd); | |
| 5dff: 4c 89 f1 mov %r14,%rcx | |
| 5e02: 4c 8d 8c 24 88 00 00 lea 0x88(%rsp),%r9 | |
| 5e09: 00 | |
| 5e0a: ff b4 24 a8 00 00 00 pushq 0xa8(%rsp) | |
| 5e11: ff b4 24 b8 00 00 00 pushq 0xb8(%rsp) | |
| 5e18: ff b4 24 c8 00 00 00 pushq 0xc8(%rsp) | |
| 5e1f: ff b4 24 98 00 00 00 pushq 0x98(%rsp) | |
| 5e26: e8 55 ee ff ff callq 4c80 <ZSTD_execSequenceEnd> | |
| 5e2b: 48 83 c4 20 add $0x20,%rsp | |
| 5e2f: 49 89 c7 mov %rax,%r15 | |
| 5e32: e9 44 ff ff ff jmpq 5d7b <ZSTD_decompressSequences_bmi2+0x6fb> | |
| ZSTD_wildcopy(op+16, (*litPtr)+16, sequence.litLength-16, ZSTD_no_overlap); | |
| 5e37: 48 83 c2 f0 add $0xfffffffffffffff0,%rdx | |
| ZSTD_memcpy(dst, src, 16); | |
| 5e3b: 0f 10 41 10 movups 0x10(%rcx),%xmm0 | |
| 5e3f: 48 8b 74 24 08 mov 0x8(%rsp),%rsi | |
| 5e44: 0f 11 46 10 movups %xmm0,0x10(%rsi) | |
| if (16 >= length) return; | |
| 5e48: 48 83 fa 11 cmp $0x11,%rdx | |
| 5e4c: 0f 8c 2e fe ff ff jl 5c80 <ZSTD_decompressSequences_bmi2+0x600> | |
| 5e52: 48 8b 54 24 08 mov 0x8(%rsp),%rdx | |
| op += 16; | |
| 5e57: 48 83 c2 20 add $0x20,%rdx | |
| do { | |
| 5e5b: 48 83 c1 30 add $0x30,%rcx | |
| 5e5f: 31 f6 xor %esi,%esi | |
| 5e61: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) | |
| 5e68: 00 00 00 | |
| 5e6b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) | |
| ZSTD_memcpy(dst, src, 16); | |
| 5e70: 0f 10 44 31 f0 movups -0x10(%rcx,%rsi,1),%xmm0 | |
| 5e75: 0f 11 04 32 movups %xmm0,(%rdx,%rsi,1) | |
| 5e79: 0f 10 04 31 movups (%rcx,%rsi,1),%xmm0 | |
| 5e7d: 0f 11 44 32 10 movups %xmm0,0x10(%rdx,%rsi,1) | |
| while (op < oend); | |
| 5e82: 48 8d 3c 32 lea (%rdx,%rsi,1),%rdi | |
| 5e86: 48 83 c7 20 add $0x20,%rdi | |
| 5e8a: 48 83 c6 20 add $0x20,%rsi | |
| 5e8e: 4c 39 ef cmp %r13,%rdi | |
| } | |
| 5e91: 72 dd jb 5e70 <ZSTD_decompressSequences_bmi2+0x7f0> | |
| 5e93: e9 e8 fd ff ff jmpq 5c80 <ZSTD_decompressSequences_bmi2+0x600> | |
| if (offset < 8) { | |
| 5e98: 49 83 f8 07 cmp $0x7,%r8 | |
| 5e9c: 0f 87 d7 00 00 00 ja 5f79 <ZSTD_decompressSequences_bmi2+0x8f9> | |
| int const sub2 = dec64table[offset]; | |
| 5ea2: 4a 63 04 85 00 00 00 movslq 0x0(,%r8,4),%rax | |
| 5ea9: 00 | |
| (*op)[0] = (*ip)[0]; | |
| 5eaa: 8a 4d 00 mov 0x0(%rbp),%cl | |
| 5ead: 41 88 4d 00 mov %cl,0x0(%r13) | |
| (*op)[1] = (*ip)[1]; | |
| 5eb1: 8a 4d 01 mov 0x1(%rbp),%cl | |
| 5eb4: 41 88 4d 01 mov %cl,0x1(%r13) | |
| (*op)[2] = (*ip)[2]; | |
| 5eb8: 8a 4d 02 mov 0x2(%rbp),%cl | |
| 5ebb: 41 88 4d 02 mov %cl,0x2(%r13) | |
| (*op)[3] = (*ip)[3]; | |
| 5ebf: 8a 4d 03 mov 0x3(%rbp),%cl | |
| 5ec2: 41 88 4d 03 mov %cl,0x3(%r13) | |
| *ip += dec32table[offset]; | |
| 5ec6: 42 8b 0c 85 00 00 00 mov 0x0(,%r8,4),%ecx | |
| 5ecd: 00 | |
| 5ece: 48 8d 34 29 lea (%rcx,%rbp,1),%rsi | |
| *ip -= sub2; | |
| 5ed2: 48 29 c6 sub %rax,%rsi | |
| static void ZSTD_copy4(void* dst, const void* src) { ZSTD_memcpy(dst, src, 4); } | |
| 5ed5: 8b 44 0d 00 mov 0x0(%rbp,%rcx,1),%eax | |
| 5ed9: 41 89 45 04 mov %eax,0x4(%r13) | |
| 5edd: e9 a2 00 00 00 jmpq 5f84 <ZSTD_decompressSequences_bmi2+0x904> | |
| if (bitD->ptr >= bitD->limitPtr) { | |
| 5ee2: 48 8b 74 24 20 mov 0x20(%rsp),%rsi | |
| 5ee7: 48 3b 74 24 30 cmp 0x30(%rsp),%rsi | |
| 5eec: 0f 83 dc 00 00 00 jae 5fce <ZSTD_decompressSequences_bmi2+0x94e> | |
| if (bitD->ptr == bitD->start) { | |
| 5ef2: 48 8b 7c 24 28 mov 0x28(%rsp),%rdi | |
| 5ef7: 48 39 fe cmp %rdi,%rsi | |
| 5efa: 0f 84 9c fc ff ff je 5b9c <ZSTD_decompressSequences_bmi2+0x51c> | |
| { U32 nbBytes = bitD->bitsConsumed >> 3; | |
| 5f00: 44 89 d8 mov %r11d,%eax | |
| 5f03: c1 e8 03 shr $0x3,%eax | |
| if (bitD->ptr - nbBytes < bitD->start) { | |
| 5f06: 48 89 f5 mov %rsi,%rbp | |
| 5f09: 48 29 c5 sub %rax,%rbp | |
| 5f0c: 89 f1 mov %esi,%ecx | |
| 5f0e: 29 f9 sub %edi,%ecx | |
| 5f10: 48 39 fd cmp %rdi,%rbp | |
| 5f13: 0f 43 c8 cmovae %eax,%ecx | |
| bitD->ptr -= nbBytes; | |
| 5f16: 48 29 ce sub %rcx,%rsi | |
| 5f19: 48 89 74 24 20 mov %rsi,0x20(%rsp) | |
| bitD->bitsConsumed -= nbBytes*8; | |
| 5f1e: c1 e1 03 shl $0x3,%ecx | |
| 5f21: 41 29 cb sub %ecx,%r11d | |
| 5f24: e9 b7 00 00 00 jmpq 5fe0 <ZSTD_decompressSequences_bmi2+0x960> | |
| offset = ofBase + ll0 + BIT_readBitsFast(&seqState->DStream, 1); | |
| 5f29: 83 fa 01 cmp $0x1,%edx | |
| 5f2c: 41 83 d7 00 adc $0x0,%r15d | |
| return (bitD->bitContainer << (bitD->bitsConsumed & regMask)) >> (((regMask+1)-nbBits) & regMask); | |
| 5f30: c4 62 a1 f7 6c 24 10 shlx %r11,0x10(%rsp),%r13 | |
| 5f37: 49 c1 ed 3f shr $0x3f,%r13 | |
| bitD->bitsConsumed += nbBits; | |
| 5f3b: 41 83 c3 01 add $0x1,%r11d | |
| 5f3f: 44 89 5c 24 18 mov %r11d,0x18(%rsp) | |
| 5f44: 4d 01 fd add %r15,%r13 | |
| { size_t temp = (offset==3) ? seqState->prevOffset[0] - 1 : seqState->prevOffset[offset]; | |
| 5f47: 49 83 fd 03 cmp $0x3,%r13 | |
| 5f4b: 0f 85 a1 00 00 00 jne 5ff2 <ZSTD_decompressSequences_bmi2+0x972> | |
| 5f51: 45 89 c5 mov %r8d,%r13d | |
| 5f54: 4c 8b 44 24 68 mov 0x68(%rsp),%r8 | |
| 5f59: 49 83 c0 ff add $0xffffffffffffffff,%r8 | |
| temp += !temp; /* 0 is not valid; input is corrupted; force offset to 1 */ | |
| 5f5d: 49 83 f8 01 cmp $0x1,%r8 | |
| 5f61: 49 83 d0 00 adc $0x0,%r8 | |
| 5f65: e9 a1 00 00 00 jmpq 600b <ZSTD_decompressSequences_bmi2+0x98b> | |
| seqState->prevOffset[1] = seqState->prevOffset[0]; | |
| 5f6a: 48 8b 44 24 68 mov 0x68(%rsp),%rax | |
| offset = seqState->prevOffset[1]; | |
| 5f6f: 4c 8b 44 24 70 mov 0x70(%rsp),%r8 | |
| 5f74: e9 a1 00 00 00 jmpq 601a <ZSTD_decompressSequences_bmi2+0x99a> | |
| ZSTD_memcpy(dst, src, 8); | |
| 5f79: 48 8b 45 00 mov 0x0(%rbp),%rax | |
| 5f7d: 49 89 45 00 mov %rax,0x0(%r13) | |
| *ip += 8; | |
| 5f81: 48 89 ee mov %rbp,%rsi | |
| if (sequence.matchLength > 8) { | |
| 5f84: 49 83 fe 09 cmp $0x9,%r14 | |
| 5f88: 0f 82 ed fd ff ff jb 5d7b <ZSTD_decompressSequences_bmi2+0x6fb> | |
| 5f8e: 48 8d 4e 08 lea 0x8(%rsi),%rcx | |
| 5f92: 49 8d 55 08 lea 0x8(%r13),%rdx | |
| ptrdiff_t diff = (BYTE*)dst - (const BYTE*)src; | |
| 5f96: 48 89 d7 mov %rdx,%rdi | |
| 5f99: 48 29 cf sub %rcx,%rdi | |
| BYTE* const oend = op + length; | |
| 5f9c: 4f 8d 1c 2e lea (%r14,%r13,1),%r11 | |
| 5fa0: 48 83 ff 0f cmp $0xf,%rdi | |
| if (ovtype == ZSTD_overlap_src_before_dst && diff < WILDCOPY_VECLEN) { | |
| 5fa4: 7f 7e jg 6024 <ZSTD_decompressSequences_bmi2+0x9a4> | |
| do { | |
| 5fa6: 49 8d 7d 10 lea 0x10(%r13),%rdi | |
| 5faa: 49 39 fb cmp %rdi,%r11 | |
| 5fad: 49 89 fa mov %rdi,%r10 | |
| 5fb0: 4d 0f 47 d3 cmova %r11,%r10 | |
| 5fb4: 4d 29 ea sub %r13,%r10 | |
| 5fb7: 49 83 c2 f7 add $0xfffffffffffffff7,%r10 | |
| 5fbb: 49 83 fa 18 cmp $0x18,%r10 | |
| 5fbf: 0f 83 a6 00 00 00 jae 606b <ZSTD_decompressSequences_bmi2+0x9eb> | |
| 5fc5: 8b 44 24 04 mov 0x4(%rsp),%eax | |
| 5fc9: e9 72 01 00 00 jmpq 6140 <ZSTD_decompressSequences_bmi2+0xac0> | |
| bitD->ptr -= bitD->bitsConsumed >> 3; | |
| 5fce: 44 89 d8 mov %r11d,%eax | |
| 5fd1: c1 e8 03 shr $0x3,%eax | |
| 5fd4: 48 29 c6 sub %rax,%rsi | |
| 5fd7: 48 89 74 24 20 mov %rsi,0x20(%rsp) | |
| bitD->bitsConsumed &= 7; | |
| 5fdc: 41 83 e3 07 and $0x7,%r11d | |
| 5fe0: 44 89 5c 24 18 mov %r11d,0x18(%rsp) | |
| 5fe5: 48 8b 06 mov (%rsi),%rax | |
| 5fe8: 48 89 44 24 10 mov %rax,0x10(%rsp) | |
| 5fed: e9 aa fb ff ff jmpq 5b9c <ZSTD_decompressSequences_bmi2+0x51c> | |
| 5ff2: 4d 89 ef mov %r13,%r15 | |
| 5ff5: 45 89 c5 mov %r8d,%r13d | |
| { size_t temp = (offset==3) ? seqState->prevOffset[0] - 1 : seqState->prevOffset[offset]; | |
| 5ff8: 4e 8b 44 fc 68 mov 0x68(%rsp,%r15,8),%r8 | |
| temp += !temp; /* 0 is not valid; input is corrupted; force offset to 1 */ | |
| 5ffd: 49 83 f8 01 cmp $0x1,%r8 | |
| 6001: 49 83 d0 00 adc $0x0,%r8 | |
| if (offset != 1) seqState->prevOffset[2] = seqState->prevOffset[1]; | |
| 6005: 49 83 ff 01 cmp $0x1,%r15 | |
| 6009: 74 0a je 6015 <ZSTD_decompressSequences_bmi2+0x995> | |
| 600b: 48 8b 44 24 70 mov 0x70(%rsp),%rax | |
| 6010: 48 89 44 24 78 mov %rax,0x78(%rsp) | |
| seqState->prevOffset[1] = seqState->prevOffset[0]; | |
| 6015: 48 8b 44 24 68 mov 0x68(%rsp),%rax | |
| 601a: 48 89 44 24 70 mov %rax,0x70(%rsp) | |
| 601f: e9 40 fb ff ff jmpq 5b64 <ZSTD_decompressSequences_bmi2+0x4e4> | |
| ZSTD_memcpy(dst, src, 16); | |
| 6024: 0f 10 01 movups (%rcx),%xmm0 | |
| 6027: 0f 11 02 movups %xmm0,(%rdx) | |
| if (16 >= length) return; | |
| 602a: 49 83 fe 19 cmp $0x19,%r14 | |
| 602e: 0f 8c 47 fd ff ff jl 5d7b <ZSTD_decompressSequences_bmi2+0x6fb> | |
| op += 16; | |
| 6034: 49 83 c5 18 add $0x18,%r13 | |
| do { | |
| 6038: 48 83 c6 28 add $0x28,%rsi | |
| 603c: 31 c9 xor %ecx,%ecx | |
| 603e: 66 90 xchg %ax,%ax | |
| ZSTD_memcpy(dst, src, 16); | |
| 6040: 0f 10 44 0e f0 movups -0x10(%rsi,%rcx,1),%xmm0 | |
| 6045: 41 0f 11 44 0d 00 movups %xmm0,0x0(%r13,%rcx,1) | |
| 604b: 0f 10 04 0e movups (%rsi,%rcx,1),%xmm0 | |
| 604f: 41 0f 11 44 0d 10 movups %xmm0,0x10(%r13,%rcx,1) | |
| while (op < oend); | |
| 6055: 4a 8d 14 29 lea (%rcx,%r13,1),%rdx | |
| 6059: 48 83 c2 20 add $0x20,%rdx | |
| 605d: 48 83 c1 20 add $0x20,%rcx | |
| 6061: 4c 39 da cmp %r11,%rdx | |
| } | |
| 6064: 72 da jb 6040 <ZSTD_decompressSequences_bmi2+0x9c0> | |
| 6066: e9 10 fd ff ff jmpq 5d7b <ZSTD_decompressSequences_bmi2+0x6fb> | |
| do { | |
| 606b: 49 39 fb cmp %rdi,%r11 | |
| 606e: 49 0f 47 fb cmova %r11,%rdi | |
| 6072: 4c 29 ef sub %r13,%rdi | |
| 6075: 48 83 c7 f7 add $0xfffffffffffffff7,%rdi | |
| 6079: 48 83 e7 f8 and $0xfffffffffffffff8,%rdi | |
| 607d: 48 8d 2c 3e lea (%rsi,%rdi,1),%rbp | |
| 6081: 48 83 c5 10 add $0x10,%rbp | |
| 6085: 48 39 ea cmp %rbp,%rdx | |
| 6088: 73 15 jae 609f <ZSTD_decompressSequences_bmi2+0xa1f> | |
| 608a: 4c 01 ef add %r13,%rdi | |
| 608d: 48 83 c7 10 add $0x10,%rdi | |
| 6091: 48 39 f9 cmp %rdi,%rcx | |
| 6094: 73 09 jae 609f <ZSTD_decompressSequences_bmi2+0xa1f> | |
| 6096: 8b 44 24 04 mov 0x4(%rsp),%eax | |
| 609a: e9 a1 00 00 00 jmpq 6140 <ZSTD_decompressSequences_bmi2+0xac0> | |
| 609f: 49 c1 ea 03 shr $0x3,%r10 | |
| 60a3: 49 83 c2 01 add $0x1,%r10 | |
| 60a7: 4d 89 d0 mov %r10,%r8 | |
| 60aa: 49 83 e0 fc and $0xfffffffffffffffc,%r8 | |
| 60ae: 49 8d 78 fc lea -0x4(%r8),%rdi | |
| 60b2: 49 89 f9 mov %rdi,%r9 | |
| 60b5: 49 c1 e9 02 shr $0x2,%r9 | |
| 60b9: 49 83 c1 01 add $0x1,%r9 | |
| 60bd: 48 85 ff test %rdi,%rdi | |
| 60c0: 8b 44 24 04 mov 0x4(%rsp),%eax | |
| 60c4: 74 44 je 610a <ZSTD_decompressSequences_bmi2+0xa8a> | |
| 60c6: 4c 89 cf mov %r9,%rdi | |
| 60c9: 48 83 e7 fe and $0xfffffffffffffffe,%rdi | |
| 60cd: 48 f7 df neg %rdi | |
| 60d0: 31 ed xor %ebp,%ebp | |
| ZSTD_memcpy(dst, src, 8); | |
| 60d2: 0f 10 44 ee 08 movups 0x8(%rsi,%rbp,8),%xmm0 | |
| 60d7: 0f 10 4c ee 18 movups 0x18(%rsi,%rbp,8),%xmm1 | |
| 60dc: 41 0f 11 44 ed 08 movups %xmm0,0x8(%r13,%rbp,8) | |
| 60e2: 41 0f 11 4c ed 18 movups %xmm1,0x18(%r13,%rbp,8) | |
| 60e8: 0f 10 44 ee 28 movups 0x28(%rsi,%rbp,8),%xmm0 | |
| 60ed: 0f 10 4c ee 38 movups 0x38(%rsi,%rbp,8),%xmm1 | |
| 60f2: 41 0f 11 44 ed 28 movups %xmm0,0x28(%r13,%rbp,8) | |
| 60f8: 41 0f 11 4c ed 38 movups %xmm1,0x38(%r13,%rbp,8) | |
| 60fe: 48 83 c5 08 add $0x8,%rbp | |
| 6102: 48 83 c7 02 add $0x2,%rdi | |
| 6106: 75 ca jne 60d2 <ZSTD_decompressSequences_bmi2+0xa52> | |
| 6108: eb 02 jmp 610c <ZSTD_decompressSequences_bmi2+0xa8c> | |
| 610a: 31 ed xor %ebp,%ebp | |
| 610c: 41 f6 c1 01 test $0x1,%r9b | |
| 6110: 74 12 je 6124 <ZSTD_decompressSequences_bmi2+0xaa4> | |
| 6112: 0f 10 04 e9 movups (%rcx,%rbp,8),%xmm0 | |
| 6116: 0f 10 4c e9 10 movups 0x10(%rcx,%rbp,8),%xmm1 | |
| 611b: 0f 11 04 ea movups %xmm0,(%rdx,%rbp,8) | |
| 611f: 0f 11 4c ea 10 movups %xmm1,0x10(%rdx,%rbp,8) | |
| } while (op < oend); | |
| 6124: 4d 39 c2 cmp %r8,%r10 | |
| 6127: 0f 84 52 fc ff ff je 5d7f <ZSTD_decompressSequences_bmi2+0x6ff> | |
| 612d: 4a 8d 14 c2 lea (%rdx,%r8,8),%rdx | |
| 6131: 4a 8d 0c c1 lea (%rcx,%r8,8),%rcx | |
| 6135: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1) | |
| 613c: 00 00 00 | |
| 613f: 90 nop | |
| ZSTD_memcpy(dst, src, 8); | |
| 6140: 48 8b 31 mov (%rcx),%rsi | |
| 6143: 48 89 32 mov %rsi,(%rdx) | |
| COPY8(op, ip) | |
| 6146: 48 83 c2 08 add $0x8,%rdx | |
| 614a: 48 83 c1 08 add $0x8,%rcx | |
| } while (op < oend); | |
| 614e: 4c 39 da cmp %r11,%rdx | |
| 6151: 72 ed jb 6140 <ZSTD_decompressSequences_bmi2+0xac0> | |
| 6153: e9 27 fc ff ff jmpq 5d7f <ZSTD_decompressSequences_bmi2+0x6ff> | |
| 6158: 41 83 fb 40 cmp $0x40,%r11d | |
| 615c: 48 8b ac 24 80 00 00 mov 0x80(%rsp),%rbp | |
| 6163: 00 | |
| 6164: 48 8b 94 24 98 00 00 mov 0x98(%rsp),%rdx | |
| 616b: 00 | |
| if (bitD->bitsConsumed > (sizeof(bitD->bitContainer)*8)) /* overflow detected, like end of stream */ | |
| 616c: 0f 86 87 00 00 00 jbe 61f9 <ZSTD_decompressSequences_bmi2+0xb79> | |
| { U32 i; for (i=0; i<ZSTD_REP_NUM; i++) dctx->entropy.rep[i] = (U32)(seqState.prevOffset[i]); } | |
| 6172: 8b 44 24 68 mov 0x68(%rsp),%eax | |
| 6176: 48 8b 8c 24 a0 00 00 mov 0xa0(%rsp),%rcx | |
| 617d: 00 | |
| 617e: 89 81 3c 68 00 00 mov %eax,0x683c(%rcx) | |
| 6184: 8b 44 24 70 mov 0x70(%rsp),%eax | |
| 6188: 89 81 40 68 00 00 mov %eax,0x6840(%rcx) | |
| 618e: 8b 44 24 78 mov 0x78(%rsp),%eax | |
| 6192: 89 81 44 68 00 00 mov %eax,0x6844(%rcx) | |
| { size_t const lastLLSize = litEnd - litPtr; | |
| 6198: 48 8b b4 24 88 00 00 mov 0x88(%rsp),%rsi | |
| 619f: 00 | |
| 61a0: 4c 8b 94 24 90 00 00 mov 0x90(%rsp),%r10 | |
| 61a7: 00 | |
| 61a8: 48 29 f5 sub %rsi,%rbp | |
| RETURN_ERROR_IF(lastLLSize > (size_t)(oend-op), dstSize_tooSmall, ""); | |
| 61ab: 48 2b 54 24 08 sub 0x8(%rsp),%rdx | |
| 61b0: 48 c7 c0 ba ff ff ff mov $0xffffffffffffffba,%rax | |
| 61b7: 48 39 d5 cmp %rdx,%rbp | |
| 61ba: 77 2b ja 61e7 <ZSTD_decompressSequences_bmi2+0xb67> | |
| if (op != NULL) { | |
| 61bc: 48 83 7c 24 08 00 cmpq $0x0,0x8(%rsp) | |
| 61c2: 74 1e je 61e2 <ZSTD_decompressSequences_bmi2+0xb62> | |
| 61c4: 48 8b 5c 24 08 mov 0x8(%rsp),%rbx | |
| ZSTD_memcpy(op, litPtr, lastLLSize); | |
| 61c9: 48 89 df mov %rbx,%rdi | |
| 61cc: 48 89 ea mov %rbp,%rdx | |
| 61cf: 4d 89 d6 mov %r10,%r14 | |
| 61d2: e8 00 00 00 00 callq 61d7 <ZSTD_decompressSequences_bmi2+0xb57> | |
| 61d7: 4d 89 f2 mov %r14,%r10 | |
| op += lastLLSize; | |
| 61da: 48 01 eb add %rbp,%rbx | |
| 61dd: 48 89 d8 mov %rbx,%rax | |
| 61e0: eb 02 jmp 61e4 <ZSTD_decompressSequences_bmi2+0xb64> | |
| 61e2: 31 c0 xor %eax,%eax | |
| return op-ostart; | |
| 61e4: 4c 29 d0 sub %r10,%rax | |
| return ZSTD_decompressSequences_body(dctx, dst, maxDstSize, seqStart, seqSize, nbSeq, isLongOffset, frame); | |
| 61e7: 48 81 c4 d8 00 00 00 add $0xd8,%rsp | |
| 61ee: 5b pop %rbx | |
| 61ef: 41 5c pop %r12 | |
| 61f1: 41 5d pop %r13 | |
| 61f3: 41 5e pop %r14 | |
| 61f5: 41 5f pop %r15 | |
| 61f7: 5d pop %rbp | |
| 61f8: c3 retq | |
| if (bitD->ptr >= bitD->limitPtr) { | |
| 61f9: 48 8b 4c 24 20 mov 0x20(%rsp),%rcx | |
| 61fe: 48 3b 4c 24 30 cmp 0x30(%rsp),%rcx | |
| 6203: 73 34 jae 6239 <ZSTD_decompressSequences_bmi2+0xbb9> | |
| 6205: 48 89 e8 mov %rbp,%rax | |
| if (bitD->ptr == bitD->start) { | |
| 6208: 48 8b 6c 24 28 mov 0x28(%rsp),%rbp | |
| 620d: 48 39 e9 cmp %rbp,%rcx | |
| 6210: 74 5c je 626e <ZSTD_decompressSequences_bmi2+0xbee> | |
| { U32 nbBytes = bitD->bitsConsumed >> 3; | |
| 6212: 4c 89 d8 mov %r11,%rax | |
| 6215: 48 c1 e8 03 shr $0x3,%rax | |
| if (bitD->ptr - nbBytes < bitD->start) { | |
| 6219: 48 89 ce mov %rcx,%rsi | |
| 621c: 48 29 c6 sub %rax,%rsi | |
| 621f: 89 cf mov %ecx,%edi | |
| 6221: 29 ef sub %ebp,%edi | |
| 6223: 48 39 ee cmp %rbp,%rsi | |
| 6226: 0f 43 f8 cmovae %eax,%edi | |
| bitD->ptr -= nbBytes; | |
| 6229: 48 29 f9 sub %rdi,%rcx | |
| 622c: 48 89 4c 24 20 mov %rcx,0x20(%rsp) | |
| bitD->bitsConsumed -= nbBytes*8; | |
| 6231: c1 e7 03 shl $0x3,%edi | |
| 6234: 41 29 fb sub %edi,%r11d | |
| 6237: eb 13 jmp 624c <ZSTD_decompressSequences_bmi2+0xbcc> | |
| bitD->ptr -= bitD->bitsConsumed >> 3; | |
| 6239: 4c 89 d8 mov %r11,%rax | |
| 623c: 48 c1 e8 03 shr $0x3,%rax | |
| 6240: 48 29 c1 sub %rax,%rcx | |
| 6243: 48 89 4c 24 20 mov %rcx,0x20(%rsp) | |
| bitD->bitsConsumed &= 7; | |
| 6248: 41 83 e3 07 and $0x7,%r11d | |
| 624c: 44 89 5c 24 18 mov %r11d,0x18(%rsp) | |
| 6251: 48 8b 01 mov (%rcx),%rax | |
| 6254: 48 89 44 24 10 mov %rax,0x10(%rsp) | |
| 6259: e9 71 f6 ff ff jmpq 58cf <ZSTD_decompressSequences_bmi2+0x24f> | |
| 625e: 45 31 c0 xor %r8d,%r8d | |
| 6261: e9 9c f6 ff ff jmpq 5902 <ZSTD_decompressSequences_bmi2+0x282> | |
| 6266: 45 31 c0 xor %r8d,%r8d | |
| 6269: e9 2f f7 ff ff jmpq 599d <ZSTD_decompressSequences_bmi2+0x31d> | |
| 626e: 49 c7 c7 ec ff ff ff mov $0xffffffffffffffec,%r15 | |
| if (bitD->bitsConsumed < sizeof(bitD->bitContainer)*8) return BIT_DStream_endOfBuffer; | |
| 6275: 41 83 fb 40 cmp $0x40,%r11d | |
| 6279: 48 89 c5 mov %rax,%rbp | |
| 627c: 0f 82 54 f6 ff ff jb 58d6 <ZSTD_decompressSequences_bmi2+0x256> | |
| 6282: e9 eb fe ff ff jmpq 6172 <ZSTD_decompressSequences_bmi2+0xaf2> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment