Function at 0x5152e0
Capabilities:
Resolve function by parsing pe exports

Disassembly:
mov ecx, dword [0x6dded4]
mov ecx, dword fs:[ecx]
mov ecx, dword [ecx]
lea eax, [esp - 0x100]
cmp eax, dword [ecx + 8]
jbe 0x515feb
sub esp, 0x180
mov eax, dword [esp + 0x194]
lea edx, [eax + 5]
mov ecx, dword [esp + 0x18c]
cmp ecx, edx
jg 0x515409
mov ecx, dword [0x6881a0]
mov dword [esp + 0x84], ecx
mov edx, dword [0x6881a4]
mov dword [esp + 0xb8], edx
cmp dword [0x688198], ecx
jne 0x51536b
mov eax, dword [0x68819c]
mov dword [esp], ecx
mov dword [esp + 4], edx
mov dword [esp + 8], eax
call sym.runtime.ifaceeq
movzx eax, byte [esp + 0xc]
test al, al
je 0x51536b
mov ecx, dword [esp + 0x84]
mov eax, dword [esp + 0xb8]
jmp 0x5153d3
lea eax, [0x55bb60]
mov dword [esp], eax
call sym.runtime.newobject
mov eax, dword [esp + 4]
mov ecx, dword [esp + 0x184]
mov edx, dword [ecx + 0x14]
mov ecx, dword [ecx + 0x18]
mov ebx, dword [esp + 0x194]
mov ebp, ebx
sar ebx, 0x1f
add edx, ebp
mov dword [eax], edx
adc ecx, ebx
mov dword [eax + 4], ecx
mov ecx, dword [esp + 0x84]
mov dword [eax + 8], ecx
mov ecx, dword [0x6ddfe0]
test ecx, ecx
jne 0x5153bc
mov ecx, dword [esp + 0xb8]
jmp 0x5153ca
call sym.runtime.gcWriteBarrier1
mov ecx, dword [esp + 0xb8]
mov dword [edi], ecx
mov dword [eax + 0xc], ecx
lea ecx, [0x5b7a28]
mov dword [esp + 0x1ac], 0
mov dword [esp + 0x1b0], 0
mov dword [esp + 0x1b4], 0
mov dword [esp + 0x1b8], ecx
mov dword [esp + 0x1bc], eax
add esp, 0x180
ret
mov edx, dword [esp + 0x198]
cmp edx, 6
jl 0x515b14
cmp ecx, eax
jb 0x515fe5
mov ebx, ecx
sub ebx, eax
mov ebp, dword [esp + 0x190]
sub ebp, eax
mov edi, ebp
xchg ebp, ebx
neg ebx
xchg ebp, ebx
sar ebp, 0x1f
and ebp, eax
cmp ebx, 1
jbe 0x515fd9
lea esi, [eax + 2]
mov edx, dword [esp + 0x188]
movzx ebp, word [ebp + edx]
cmp ecx, esi
jb 0x515fd2
mov dword [esp + 0xa4], edi
mov word [esp + 0x4a], bp
lea ebp, [ebx - 2]
add edi, 0xfffffffe
xchg edi, ebx
neg ebx
xchg edi, ebx
sar edi, 0x1f
and esi, edi
cmp ebp, 1
jbe 0x515fc6
lea ebp, [eax + 4]
movzx esi, word [esi + edx]
cmp ecx, ebp
jb 0x515fbf
add ebx, 0xfffffffc
mov edi, edx
mov edx, dword [esp + 0xa4]
add edx, 0xfffffffc
neg edx
sar edx, 0x1f
and edx, ebp
cmp ebx, 1
jbe 0x515fb3
mov dword [esp + 0xa4], ebp
mov word [esp + 0x48], si
movzx ebx, word [esp + 0x4a]
movzx ebp, bx
movzx ecx, si
mov esi, dword [esp + 0x198]
sar esi, 0x1f
movzx edx, word [edx + edi]
movzx edi, dx
add ebp, ecx
mov ecx, 0
adc ecx, 0
add edi, ebp
adc ecx, 0
mov ebp, dword [esp + 0x198]
add ebp, 0xfffffffa
adc esi, 0xffffffff
cmp esi, ecx
sete cl
xchg esi, ebx
setb bl
xchg esi, ebx
cmp ebp, edi
xchg ebp, ebx
setb bl
xchg ebp, ebx
and ecx, ebp
or esi, ecx
xchg esi, eax
test al, al
xchg esi, eax
je 0x515608
mov ecx, dword [0x6881a0]
mov dword [esp + 0x80], ecx
mov edx, dword [0x6881a4]
mov dword [esp + 0xb4], edx
cmp dword [0x688198], ecx
jne 0x515567
mov eax, dword [0x68819c]
mov dword [esp], ecx
mov dword [esp + 4], edx
mov dword [esp + 8], eax
call sym.runtime.ifaceeq
movzx eax, byte [esp + 0xc]
test al, al
je 0x515567
mov eax, dword [esp + 0x80]
mov ecx, dword [esp + 0xb4]
jmp 0x5155d2
lea eax, [0x55bb60]
mov dword [esp], eax
call sym.runtime.newobject
mov eax, dword [esp + 0x194]
add eax, 6
mov ecx, dword [esp + 4]
mov edx, dword [esp + 0x184]
mov ebx, dword [edx + 0x14]
mov edx, dword [edx + 0x18]
mov ebp, eax
sar eax, 0x1f
add ebp, ebx
mov dword [ecx], ebp
adc eax, edx
mov dword [ecx + 4], eax
mov eax, dword [esp + 0x80]
mov dword [ecx + 8], eax
mov eax, dword [0x6ddfe0]
test eax, eax
jne 0x5155bb
mov eax, dword [esp + 0xb4]
jmp 0x5155c9
call sym.runtime.gcWriteBarrier1
mov eax, dword [esp + 0xb4]
mov dword [edi], eax
mov dword [ecx + 0xc], eax
lea eax, [0x5b7a28]
mov dword [esp + 0x1ac], 0
mov dword [esp + 0x1b0], 0
mov dword [esp + 0x1b4], 0
mov dword [esp + 0x1b8], eax
mov dword [esp + 0x1bc], ecx
add esp, 0x180
ret
mov ecx, dword [esp + 0x198]
sub ecx, edi
mov dword [esp + 0xa0], ecx
movzx ebx, bx
mov dword [esp + 0x9c], ebx
lea ebp, [eax + ebx]
mov dword [esp + 0x98], ebp
lea esi, [eax + ebx + 5]
movzx ebx, word [esp + 0x48]
movzx ebx, bx
mov dword [esp + 0x94], ebx
lea eax, [ebp + ebx]
mov dword [esp + 0x90], eax
movzx edx, dx
mov dword [esp + 0x8c], edx
lea edi, [edx + eax]
mov dword [esp + 0x88], edi
lea edi, [esp + 0x160]
xor eax, eax
call fcn.00460ba8
mov ecx, dword [esp + 0x184]
mov dword [esp], ecx
mov ecx, dword [esp + 0x188]
mov dword [esp + 4], ecx
mov ecx, dword [esp + 0x18c]
mov dword [esp + 8], ecx
mov ecx, dword [esp + 0x190]
mov dword [esp + 0xc], ecx
mov dword [esp + 0x10], esi
mov esi, dword [esp + 0xa4]
mov dword [esp + 0x14], esi
call sym.internal_zstd._Reader_.makeReverseBitReader
mov ecx, dword [esp + 0x38]
mov dword [esp + 0x7c], ecx
mov edx, dword [esp + 0x94]
mov ebx, dword [esp + 0x98]
lea ebp, [ebx + edx + 5]
mov esi, dword [esp + 0x8c]
mov edx, dword [esp + 0x90]
lea edi, [edx + esi + 5]
mov dword [esp + 0x68], edi
mov edx, dword [esp + 0xa0]
mov esi, dword [esp + 0x88]
lea edx, [esi + edx - 1]
mov dword [esp + 0x64], edx
mov esi, dword [esp + 0x38]
mov dword [esp + 0xc4], esi
mov edx, dword [esp + 0x3c]
lea edi, [esp + 0x160]
lea esi, [esp + 0x18]
call fcn.00461070
lea edi, [esp + 0x140]
lea esi, [esp + 0x160]
call fcn.00461070
mov ecx, dword [esp + 0x7c]
test ecx, ecx
jne 0x515ad7
lea edi, [esp + 0x160]
xor eax, eax
call fcn.00460ba8
mov ecx, dword [esp + 0x184]
mov dword [esp], ecx
mov edx, dword [esp + 0x188]
mov dword [esp + 4], edx
mov ebx, dword [esp + 0x18c]
mov dword [esp + 8], ebx
mov esi, dword [esp + 0x190]
mov dword [esp + 0xc], esi
mov dword [esp + 0x10], ebp
mov ebp, dword [esp + 0x9c]
mov esi, dword [esp + 0x194]
lea ebp, [esi + ebp + 4]
mov dword [esp + 0x14], ebp
call sym.internal_zstd._Reader_.makeReverseBitReader
mov ecx, dword [esp + 0x38]
mov dword [esp + 0x7c], ecx
mov edx, dword [esp + 0x38]
mov ebx, dword [esp + 0x3c]
lea edi, [esp + 0x160]
lea esi, [esp + 0x18]
call fcn.00461070
lea edi, [esp + 0x120]
lea esi, [esp + 0x160]
call fcn.00461070
mov ecx, dword [esp + 0x7c]
test ecx, ecx
jne 0x515aa1
lea edi, [esp + 0x160]
xor eax, eax
call fcn.00460ba8
mov ecx, dword [esp + 0x184]
mov dword [esp], ecx
mov edx, dword [esp + 0x188]
mov dword [esp + 4], edx
mov ebx, dword [esp + 0x18c]
mov dword [esp + 8], ebx
mov ebp, dword [esp + 0x190]
mov dword [esp + 0xc], ebp
mov esi, dword [esp + 0x68]
mov dword [esp + 0x10], esi
mov esi, dword [esp + 0x94]
mov ebp, dword [esp + 0x98]
lea ebp, [ebp + esi + 4]
mov dword [esp + 0x14], ebp
call sym.internal_zstd._Reader_.makeReverseBitReader
mov ecx, dword [esp + 0x38]
mov dword [esp + 0x7c], ecx
mov edx, dword [esp + 0x38]
mov ebx, dword [esp + 0x3c]
lea edi, [esp + 0x160]
lea esi, [esp + 0x18]
call fcn.00461070
lea edi, [esp + 0x100]
lea esi, [esp + 0x160]
call fcn.00461070
mov ecx, dword [esp + 0x7c]
test ecx, ecx
jne 0x515a6b
lea edi, [esp + 0x160]
xor eax, eax
call fcn.00460ba8
mov ecx, dword [esp + 0x184]
mov dword [esp], ecx
mov edx, dword [esp + 0x188]
mov dword [esp + 4], edx
mov edx, dword [esp + 0x18c]
mov dword [esp + 8], edx
mov edx, dword [esp + 0x190]
mov dword [esp + 0xc], edx
mov edx, dword [esp + 0x64]
mov dword [esp + 0x10], edx
mov edx, dword [esp + 0x8c]
mov ebx, dword [esp + 0x90]
lea edx, [ebx + edx + 4]
mov dword [esp + 0x14], edx
call sym.internal_zstd._Reader_.makeReverseBitReader
mov ecx, dword [esp + 0x38]
mov dword [esp + 0x7c], ecx
mov edx, dword [esp + 0x38]
mov ebx, dword [esp + 0x3c]
lea edi, [esp + 0x160]
lea esi, [esp + 0x18]
call fcn.00461070
lea edi, [esp + 0xe0]
lea esi, [esp + 0x160]
call fcn.00461070
mov ecx, dword [esp + 0x7c]
test ecx, ecx
jne 0x515a35
mov eax, dword [esp + 0x19c]
lea ecx, [eax + 3]
sar ecx, 0x1f
shr ecx, 0x1e
lea ecx, [ecx + eax + 3]
sar ecx, 2
mov edx, dword [esp + 0x1a4]
lea ebx, [edx + ecx*2]
lea ebp, [ecx + ecx*2]
lea esi, [edx + ecx]
lea edi, [ecx + ebx]
sub eax, ebp
mov ebp, dword [esp + 0x19c]
test ebp, ebp
jl 0x515fae
mov dword [esp + 0x50], ecx
mov dword [esp + 0x5c], esi
mov dword [esp + 0x58], ebx
mov dword [esp + 0x54], edi
mov dword [esp + 0x4c], eax
lea eax, [edx + ebp]
mov ecx, dword [esp + 0x1a8]
cmp ecx, eax
jb 0x515977
mov dword [esp + 0xa8], eax
mov eax, dword [esp + 0x1a0]
mov dword [esp + 0xc0], eax
mov eax, dword [esp + 0xa8]
jmp 0x5159ba
mov edx, dword [esp + 0x1a0]
mov dword [esp], edx
mov dword [esp + 4], eax
mov dword [esp + 8], ecx
mov dword [esp + 0xc], ebp
lea eax, [0x550e00]
mov dword [esp + 0x10], eax
call sym.runtime.growslice
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x1c]
mov ebp, dword [esp + 0x19c]
mov dword [esp + 0xc0], eax
mov eax, ecx
mov ecx, edx
mov dword [esp + 0xa4], eax
mov dword [esp + 0x9c], ecx
sub eax, ebp
mov ebx, dword [esp + 0xc0]
add eax, ebx
mov dword [esp], eax
mov dword [esp + 4], ebp
call sym.runtime.memclrNoHeapPointers
mov eax, dword [esp + 0x184]
mov ecx, dword [eax + 0x44]
mov dword [esp + 0x98], ecx
mov edx, 1
shl edx, cl
mov ebx, dword [eax + 0x38]
mov dword [esp + 0xb0], ebx
mov ebp, dword [eax + 0x3c]
mov dword [esp + 0x70], ebp
mov eax, dword [eax + 0x40]
mov dword [esp + 0x74], eax
cmp ecx, 0x20
sbb esi, esi
and edx, esi
dec edx
mov dword [esp + 0x78], edx
xor esi, esi
mov edi, dword [esp + 0x54]
mov edi, dword [esp + 0x1a4]
mov dword [esp + 0x60], edi
mov edi, dword [esp + 0x54]
jmp 0x515c62
mov dword [esp + 0x1ac], 0
mov dword [esp + 0x1b0], 0
mov dword [esp + 0x1b4], 0
mov dword [esp + 0x1b8], edx
mov dword [esp + 0x1bc], ebx
add esp, 0x180
ret
mov dword [esp + 0x1ac], 0
mov dword [esp + 0x1b0], 0
mov dword [esp + 0x1b4], 0
mov dword [esp + 0x1b8], edx
mov dword [esp + 0x1bc], ebx
add esp, 0x180
ret
mov dword [esp + 0x1ac], 0
mov dword [esp + 0x1b0], 0
mov dword [esp + 0x1b4], 0
mov dword [esp + 0x1b8], edx
mov dword [esp + 0x1bc], ebx
add esp, 0x180
ret
mov dword [esp + 0x1ac], 0
mov dword [esp + 0x1b0], 0
mov dword [esp + 0x1b4], 0
mov eax, dword [esp + 0xc4]
mov dword [esp + 0x1b8], eax
mov dword [esp + 0x1bc], edx
add esp, 0x180
ret
lea eax, [0x555b00]
mov dword [esp], eax
call sym.runtime.newobject
mov eax, dword [esp + 4]
mov dword [esp + 0xbc], eax
mov dword [eax + 4], 0x2b
lea ecx, [0x58ca97]
mov dword [eax], ecx
lea ecx, [0x5b76e0]
cmp dword [0x688198], ecx
jne 0x515b78
mov edx, dword [0x68819c]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], edx
call sym.runtime.ifaceeq
movzx eax, byte [esp + 0xc]
test al, al
je 0x515b78
lea ecx, [0x5b76e0]
mov eax, dword [esp + 0xbc]
jmp 0x515bdf
lea eax, [0x55bb60]
mov dword [esp], eax
call sym.runtime.newobject
mov eax, dword [esp + 4]
mov ecx, dword [esp + 0x184]
mov edx, dword [ecx + 0x14]
mov ecx, dword [ecx + 0x18]
mov ebx, dword [esp + 0x194]
mov ebp, ebx
sar ebx, 0x1f
add edx, ebp
mov dword [eax], edx
adc ecx, ebx
mov dword [eax + 4], ecx
lea ecx, [0x5b76e0]
mov dword [eax + 8], ecx
mov ecx, dword [0x6ddfe0]
test ecx, ecx
jne 0x515bc8
mov ecx, dword [esp + 0xbc]
jmp 0x515bd6
call sym.runtime.gcWriteBarrier1
mov ecx, dword [esp + 0xbc]
mov dword [edi], ecx
mov dword [eax + 0xc], ecx
lea ecx, [0x5b7a28]
mov dword [esp + 0x1ac], 0
mov dword [esp + 0x1b0], 0
mov dword [esp + 0x1b4], 0
mov dword [esp + 0x1b8], ecx
mov dword [esp + 0x1bc], eax
add esp, 0x180
ret
shr cx, 8
mov byte [ebx + esi], cl
movzx ecx, word [esp + 0x42]
and ecx, 0xff
sub dword [esp + 0x11c], ecx
mov ecx, dword [esp + 0x6c]
inc ecx
inc eax
mov edx, dword [esp + 0x5c]
inc edx
inc esi
mov ebx, dword [esp + 0xb0]
mov ebp, dword [esp + 0x70]
mov dword [esp + 0x60], eax
mov dword [esp + 0x5c], edx
mov dword [esp + 0x58], esi
mov eax, dword [esp + 0x74]
mov edx, dword [esp + 0x78]
mov esi, ecx
mov ecx, dword [esp + 0x98]
mov ebx, dword [esp + 0x50]
cmp esi, ebx
jge 0x515f49
mov dword [esp + 0x6c], esi
mov dword [esp + 0x54], edi
lea edi, [esp + 0xc8]
mov ebx, eax
xor eax, eax
call fcn.00460baa
lea ecx, [sym.internal_zstd._Reader_.readLiteralsFourStreams.func1]
mov dword [esp + 0xc8], ecx
mov esi, dword [esp + 0x98]
mov dword [esp + 0xcc], esi
mov dword [esp + 0xd0], edx
mov dword [esp + 0xd8], ebp
mov dword [esp + 0xdc], ebx
mov ebx, dword [esp + 0xb0]
mov dword [esp + 0xd4], ebx
mov ebx, dword [esp + 0xc8]
lea ebp, [esp + 0x140]
mov dword [esp], ebp
lea edx, [esp + 0xc8]
call ebx
mov ecx, dword [esp + 8]
movzx ebx, word [esp + 4]
test ecx, ecx
jne 0x515f0b
mov word [esp + 0x46], bx
mov eax, dword [esp + 0xc8]
lea ecx, [esp + 0x120]
mov dword [esp], ecx
lea edx, [esp + 0xc8]
call eax
mov eax, dword [esp + 8]
movzx ecx, word [esp + 4]
test eax, eax
jne 0x515ecd
mov word [esp + 0x44], cx
mov eax, dword [esp + 0xc8]
lea ecx, [esp + 0x100]
mov dword [esp], ecx
lea edx, [esp + 0xc8]
call eax
mov eax, dword [esp + 8]
movzx ecx, word [esp + 4]
test eax, eax
jne 0x515e8f
mov word [esp + 0x42], cx
mov ebx, dword [esp + 0x6c]
mov ebp, dword [esp + 0x4c]
cmp ebx, ebp
jl 0x515d66
mov edi, dword [esp + 0x54]
jmp 0x515dd1
mov eax, dword [esp + 0xc8]
lea ecx, [esp + 0xe0]
mov dword [esp], ecx
lea edx, [esp + 0xc8]
call eax
mov eax, dword [esp + 8]
test eax, eax
jne 0x515e51
mov eax, dword [esp + 0x54]
mov ecx, dword [esp + 0xa4]
cmp eax, ecx
jae 0x515fa9
movzx ebx, word [esp + 4]
mov ebp, ebx
shr bx, 8
mov esi, dword [esp + 0xc0]
mov byte [esi + eax], bl
and ebp, 0xff
sub dword [esp + 0xfc], ebp
lea edi, [eax + 1]
movzx ecx, word [esp + 0x42]
mov ebx, dword [esp + 0x6c]
mov ebp, dword [esp + 0x4c]
mov eax, dword [esp + 0x60]
mov esi, dword [esp + 0xa4]
cmp eax, esi
jae 0x515fa2
movzx ebp, word [esp + 0x46]
shr bp, 8
mov ebx, dword [esp + 0xc0]
xchg ebp, ecx
mov byte [ebx + eax], cl
xchg ebp, ecx
movzx ebp, word [esp + 0x46]
and ebp, 0xff
sub dword [esp + 0x15c], ebp
mov ebp, dword [esp + 0x5c]
cmp ebp, esi
jae 0x515f99
movzx esi, word [esp + 0x44]
shr si, 8
xchg esi, eax
mov byte [ebx + ebp], al
xchg esi, eax
movzx esi, word [esp + 0x44]
and esi, 0xff
sub dword [esp + 0x13c], esi
mov esi, dword [esp + 0x58]
mov ebp, dword [esp + 0xa4]
cmp esi, ebp
jb 0x515c15
jmp 0x515f90
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0xc]
mov dword [esp + 0x1ac], 0
mov dword [esp + 0x1b0], 0
mov dword [esp + 0x1b4], 0
mov dword [esp + 0x1b8], eax
mov dword [esp + 0x1bc], ecx
add esp, 0x180
ret
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0xc]
mov dword [esp + 0x1ac], 0
mov dword [esp + 0x1b0], 0
mov dword [esp + 0x1b4], 0
mov dword [esp + 0x1b8], eax
mov dword [esp + 0x1bc], ecx
add esp, 0x180
ret
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0xc]
mov dword [esp + 0x1ac], 0
mov dword [esp + 0x1b0], 0
mov dword [esp + 0x1b4], 0
mov dword [esp + 0x1b8], eax
mov dword [esp + 0x1bc], ecx
add esp, 0x180
ret
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0xc]
mov dword [esp + 0x1ac], 0
mov dword [esp + 0x1b0], 0
mov dword [esp + 0x1b4], 0
mov dword [esp + 0x1b8], eax
mov dword [esp + 0x1bc], ecx
add esp, 0x180
ret
mov eax, dword [esp + 0xc0]
mov dword [esp + 0x1ac], eax
mov eax, dword [esp + 0xa4]
mov dword [esp + 0x1b0], eax
mov eax, dword [esp + 0x9c]
mov dword [esp + 0x1b4], eax
mov dword [esp + 0x1b8], 0
mov dword [esp + 0x1bc], 0
add esp, 0x180
ret
mov eax, esi
mov ecx, ebp
call sym.runtime.panicIndex
mov eax, ebp
mov ecx, esi
call sym.runtime.panicIndex
mov ecx, esi
call sym.runtime.panicIndex
call sym.runtime.panicIndex
call sym.runtime.panicmakeslicelen
mov eax, 1
mov ecx, ebx
call sym.runtime.panicIndex
mov eax, ebp
call sym.runtime.panicSliceB
mov eax, 1
mov ecx, ebp
call sym.runtime.panicIndex
mov eax, esi
call sym.runtime.panicSliceB
mov eax, 1
mov ecx, ebx
call sym.runtime.panicIndex
call sym.runtime.panicSliceB
nop
call sym.runtime.morestack_noctxt
jmp sym.internal_zstd._Reader_.readLiteralsFourStreams