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

Disassembly:
mov ecx, dword [0x7b1178]
mov ecx, dword fs:[ecx]
mov ecx, dword [ecx]
cmp esp, dword [ecx + 8]
jbe 0x53cfaa
sub esp, 0x54
movzx ebx, byte [esp + 0x6c]
mov ebp, ebx
shr bl, 2
and ebx, 3
cmp bl, 1
ja 0x53c9d1
test bl, bl
je 0x53c9d6
mov ecx, dword [esp + 0x60]
mov eax, dword [esp + 0x68]
cmp ecx, eax
jle 0x53c8f8
jbe 0x53cfa4
mov ebx, ebp
xchg ebp, eax
shr al, 4
xchg ebp, eax
xchg ebp, eax
movzx eax, al
xchg ebp, eax
mov esi, dword [esp + 0x5c]
movzx edi, byte [esi + eax]
shl edi, 4
add ebp, edi
lea edi, [eax + 1]
jmp 0x53ca41
mov ecx, dword [0x786148]
mov dword [esp + 0x34], ecx
mov edx, dword [0x78614c]
mov dword [esp + 0x48], edx
cmp dword [0x786140], ecx
jne 0x53c93d
mov eax, dword [0x786144]
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 0x53c93d
mov ecx, dword [esp + 0x34]
mov eax, dword [esp + 0x48]
jmp 0x53c996
lea eax, [0x5faf40]
mov dword [esp], eax
call sym.runtime.newobject
mov eax, dword [esp + 4]
mov ecx, dword [esp + 0x58]
mov edx, dword [ecx + 0x14]
mov ecx, dword [ecx + 0x18]
mov ebx, dword [esp + 0x68]
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 + 0x34]
mov dword [eax + 8], ecx
mov ecx, dword [0x7b12d0]
test ecx, ecx
jne 0x53c982
mov ecx, dword [esp + 0x48]
jmp 0x53c98d
call sym.runtime.gcWriteBarrier1
mov ecx, dword [esp + 0x48]
mov dword [edi], ecx
mov dword [eax + 0xc], ecx
lea ecx, [0x66e4e0]
mov dword [esp + 0x7c], 0
mov dword [esp + 0x80], 0
mov dword [esp + 0x84], 0
mov dword [esp + 0x88], 0
mov dword [esp + 0x8c], ecx
mov dword [esp + 0x90], eax
add esp, 0x54
ret
cmp bl, 2
jne 0x53c9f0
mov ebx, ebp
xchg ebp, eax
shr al, 3
xchg ebp, eax
xchg ebp, eax
movzx eax, al
xchg ebp, eax
mov ecx, dword [esp + 0x60]
mov esi, dword [esp + 0x5c]
mov edi, dword [esp + 0x68]
jmp 0x53ca41
mov eax, dword [esp + 0x68]
lea ebx, [eax + 1]
mov ecx, dword [esp + 0x60]
cmp ecx, ebx
jle 0x53ce16
cmp ecx, eax
jbe 0x53cf9f
mov esi, ebp
xchg ebp, eax
shr al, 4
xchg ebp, eax
xchg ebp, eax
movzx eax, al
xchg ebp, eax
mov edi, dword [esp + 0x5c]
movzx edx, byte [edi + eax]
shl edx, 4
add ebp, edx
cmp ecx, ebx
jbe 0x53cf98
movzx ebx, byte [eax + edi + 1]
shl ebx, 0xc
add ebp, ebx
lea ebx, [eax + 2]
mov eax, ebx
mov ebx, esi
mov esi, edi
mov edi, eax
mov dword [esp + 0x28], edi
cmp ebp, 0x20000
jg 0x53cd22
test bl, 3
je 0x53cb71
cmp ecx, edi
jle 0x53ca7d
jbe 0x53cf91
movzx eax, byte [esi + edi]
mov byte [esp + 0x23], al
mov ecx, dword [esp + 0x74]
mov edx, dword [esp + 0x70]
mov ebx, dword [esp + 0x78]
jmp 0x53cf37
lea eax, [0x5f41a0]
mov dword [esp], eax
call sym.runtime.newobject
mov eax, dword [esp + 4]
mov dword [esp + 0x50], eax
mov dword [eax + 4], 0x13
lea ecx, [0x623c1f]
mov dword [eax], ecx
lea ecx, [0x66e144]
cmp dword [0x786140], ecx
jne 0x53cadb
mov edx, dword [0x786144]
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 0x53cadb
lea ecx, [0x66e144]
mov eax, dword [esp + 0x50]
jmp 0x53cb36
lea eax, [0x5faf40]
mov dword [esp], eax
call sym.runtime.newobject
mov eax, dword [esp + 4]
mov ecx, dword [esp + 0x58]
mov edx, dword [ecx + 0x14]
mov ecx, dword [ecx + 0x18]
mov ebx, dword [esp + 0x28]
mov ebp, ebx
sar ebx, 0x1f
add ebp, edx
mov dword [eax], ebp
adc ecx, ebx
mov dword [eax + 4], ecx
lea ecx, [0x66e144]
mov dword [eax + 8], ecx
mov ecx, dword [0x7b12d0]
test ecx, ecx
jne 0x53cb22
mov ecx, dword [esp + 0x50]
jmp 0x53cb2d
call sym.runtime.gcWriteBarrier1
mov ecx, dword [esp + 0x50]
mov dword [edi], ecx
mov dword [eax + 0xc], ecx
lea ecx, [0x66e4e0]
mov dword [esp + 0x7c], 0
mov dword [esp + 0x80], 0
mov dword [esp + 0x84], 0
mov dword [esp + 0x88], 0
mov dword [esp + 0x8c], ecx
mov dword [esp + 0x90], eax
add esp, 0x54
ret
lea ebx, [edi + ebp]
cmp ecx, ebx
jl 0x53cc2e
mov edx, dword [esp + 0x64]
cmp edx, ebx
jb 0x53cf2b
cmp edi, ebx
ja 0x53cf22
mov dword [esp + 0x40], ebx
mov eax, dword [esp + 0x74]
lea ecx, [eax + ebp]
sub edx, edi
neg edx
sar edx, 0x1f
and edi, edx
lea edx, [esi + edi]
mov esi, dword [esp + 0x78]
cmp esi, ecx
jb 0x53cbb5
mov edi, dword [esp + 0x70]
jmp 0x53cbfb
mov dword [esp + 0x24], ebp
mov dword [esp + 0x4c], edx
mov eax, dword [esp + 0x70]
mov dword [esp], eax
mov dword [esp + 4], ecx
mov dword [esp + 8], esi
mov dword [esp + 0xc], ebp
lea eax, [0x5ed720]
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 + 0x24]
mov edi, eax
mov esi, edx
mov eax, dword [esp + 0x74]
mov edx, dword [esp + 0x4c]
mov dword [esp + 0x3c], esi
mov dword [esp + 0x38], ecx
mov dword [esp + 0x4c], edi
add eax, edi
mov dword [esp], eax
mov dword [esp + 4], edx
mov dword [esp + 8], ebp
call sym.runtime.memmove
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x3c]
mov edx, dword [esp + 0x38]
mov ebx, dword [esp + 0x4c]
jmp 0x53ceef
lea eax, [0x5f41a0]
mov dword [esp], eax
call sym.runtime.newobject
mov eax, dword [esp + 4]
mov dword [esp + 0x50], eax
mov dword [eax + 4], 0x1a
lea ecx, [0x6276dd]
mov dword [eax], ecx
lea ecx, [0x66e144]
cmp dword [0x786140], ecx
jne 0x53cc8c
mov edx, dword [0x786144]
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 0x53cc8c
lea ecx, [0x66e144]
mov eax, dword [esp + 0x50]
jmp 0x53cce7
lea eax, [0x5faf40]
mov dword [esp], eax
call sym.runtime.newobject
mov eax, dword [esp + 4]
mov ecx, dword [esp + 0x58]
mov edx, dword [ecx + 0x14]
mov ecx, dword [ecx + 0x18]
mov ebx, dword [esp + 0x28]
mov ebp, ebx
sar ebx, 0x1f
add ebp, edx
mov dword [eax], ebp
adc ecx, ebx
mov dword [eax + 4], ecx
lea ecx, [0x66e144]
mov dword [eax + 8], ecx
mov ecx, dword [0x7b12d0]
test ecx, ecx
jne 0x53ccd3
mov ecx, dword [esp + 0x50]
jmp 0x53ccde
call sym.runtime.gcWriteBarrier1
mov ecx, dword [esp + 0x50]
mov dword [edi], ecx
mov dword [eax + 0xc], ecx
lea ecx, [0x66e4e0]
mov dword [esp + 0x7c], 0
mov dword [esp + 0x80], 0
mov dword [esp + 0x84], 0
mov dword [esp + 0x88], 0
mov dword [esp + 0x8c], ecx
mov dword [esp + 0x90], eax
add esp, 0x54
ret
lea eax, [0x5f41a0]
mov dword [esp], eax
call sym.runtime.newobject
mov eax, dword [esp + 4]
mov dword [esp + 0x50], eax
mov dword [eax + 4], 0x16
lea ecx, [0x6255fc]
mov dword [eax], ecx
lea ecx, [0x66e144]
cmp dword [0x786140], ecx
jne 0x53cd80
mov edx, dword [0x786144]
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 0x53cd80
lea ecx, [0x66e144]
mov eax, dword [esp + 0x50]
jmp 0x53cddb
lea eax, [0x5faf40]
mov dword [esp], eax
call sym.runtime.newobject
mov eax, dword [esp + 4]
mov ecx, dword [esp + 0x58]
mov edx, dword [ecx + 0x14]
mov ecx, dword [ecx + 0x18]
mov ebx, dword [esp + 0x28]
mov ebp, ebx
sar ebx, 0x1f
add ebp, edx
mov dword [eax], ebp
adc ecx, ebx
mov dword [eax + 4], ecx
lea ecx, [0x66e144]
mov dword [eax + 8], ecx
mov ecx, dword [0x7b12d0]
test ecx, ecx
jne 0x53cdc7
mov ecx, dword [esp + 0x50]
jmp 0x53cdd2
call sym.runtime.gcWriteBarrier1
mov ecx, dword [esp + 0x50]
mov dword [edi], ecx
mov dword [eax + 0xc], ecx
lea ecx, [0x66e4e0]
mov dword [esp + 0x7c], 0
mov dword [esp + 0x80], 0
mov dword [esp + 0x84], 0
mov dword [esp + 0x88], 0
mov dword [esp + 0x8c], ecx
mov dword [esp + 0x90], eax
add esp, 0x54
ret
mov ecx, dword [0x786148]
mov dword [esp + 0x30], ecx
mov edx, dword [0x78614c]
mov dword [esp + 0x44], edx
cmp dword [0x786140], ecx
jne 0x53ce5b
mov eax, dword [0x786144]
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 0x53ce5b
mov ecx, dword [esp + 0x30]
mov eax, dword [esp + 0x44]
jmp 0x53ceb4
lea eax, [0x5faf40]
mov dword [esp], eax
call sym.runtime.newobject
mov eax, dword [esp + 4]
mov ecx, dword [esp + 0x58]
mov edx, dword [ecx + 0x14]
mov ecx, dword [ecx + 0x18]
mov ebx, dword [esp + 0x68]
mov ebp, ebx
sar ebx, 0x1f
add ebp, edx
mov dword [eax], ebp
adc ecx, ebx
mov dword [eax + 4], ecx
mov ecx, dword [esp + 0x30]
mov dword [eax + 8], ecx
mov ecx, dword [0x7b12d0]
test ecx, ecx
jne 0x53cea0
mov ecx, dword [esp + 0x44]
jmp 0x53ceab
call sym.runtime.gcWriteBarrier1
mov ecx, dword [esp + 0x44]
mov dword [edi], ecx
mov dword [eax + 0xc], ecx
lea ecx, [0x66e4e0]
mov dword [esp + 0x7c], 0
mov dword [esp + 0x80], 0
mov dword [esp + 0x84], 0
mov dword [esp + 0x88], 0
mov dword [esp + 0x8c], ecx
mov dword [esp + 0x90], eax
add esp, 0x54
ret
mov dword [esp + 0x7c], eax
mov dword [esp + 0x80], ebx
mov dword [esp + 0x84], edx
mov dword [esp + 0x88], ecx
mov dword [esp + 0x8c], 0
mov dword [esp + 0x90], 0
add esp, 0x54
ret
mov eax, edi
mov ecx, ebx
call sym.runtime.panicSliceB
mov ecx, ebx
call sym.runtime.panicSliceAcap
mov byte [ecx + edx - 1], al
dec ebp
test ebp, ebp
jle 0x53cf81
inc ecx
cmp ebx, ecx
jae 0x53cf32
mov dword [esp + 0x2c], ebp
mov dword [esp], edx
mov dword [esp + 4], ecx
mov dword [esp + 8], ebx
mov dword [esp + 0xc], 1
lea eax, [0x5ed720]
mov dword [esp + 0x10], eax
call sym.runtime.growslice
mov edx, dword [esp + 0x14]
mov ecx, dword [esp + 0x18]
mov ebx, dword [esp + 0x1c]
movzx eax, byte [esp + 0x23]
mov ebp, dword [esp + 0x2c]
mov edi, dword [esp + 0x28]
jmp 0x53cf32
lea eax, [edi + 1]
mov ebp, ecx
mov ecx, ebx
mov ebx, edx
mov edx, ebp
jmp 0x53ceef
mov eax, edi
call sym.runtime.panicIndex
mov eax, ebx
call sym.runtime.panicIndex
call sym.runtime.panicIndex
call sym.runtime.panicIndex
nop
call sym.runtime.morestack_noctxt
jmp sym.internal_zstd._Reader_.readRawRLELiterals