Function at 0x180008f20
Capabilities:
Hash data with crc32

Disassembly:
mov qword [rsp + 8], rbx
mov qword [rsp + 0x10], rsi
mov qword [rsp + 0x18], rdi
mov qword [rsp + 0x20], r14
push r15
sub rsp, 0x20
mov rax, qword [rsp + 0x50]
lea rbx, [r8 + 0xd0]
mov rdi, r9
mov rsi, r8
mov r14, rdx
mov r15, rcx
test rax, rax
je 0x180009434
test r9, r9
je 0x180009434
cmp rax, 0x21
jae 0x180008f7f
mov dword [r8 + 0x208], 0x1b
mov eax, 0x1b
jmp 0x180009444
mov rcx, rbx
call fcn.180007470
xor r10d, r10d
mov dword [rbx + 0x10], 6
mov qword [rbx + 0x28], r10
mov qword [rbx + 0x30], r10
mov qword [rbx + 0x18], r10
mov qword [rbx + 0x20], r10
mov dword [rbx + 0x14], 8
mov qword [rbx + 4], r10
mov dword [rbx], r10d
mov qword [rbx + 0x38], r10
mov qword [rbx + 0x40], r10
mov qword [rbx + 0x48], r10
mov qword [rbx + 0x50], r10
mov qword [rbx + 0x58], r10
mov qword [rbx + 0x60], r10
mov qword [rbx + 0x68], r10
mov qword [rbx + 0x70], r10
mov qword [rbx + 0x78], r10
mov qword [rbx + 0x80], r10
mov dword [rbx + 0x88], r10d
mov dword [rbx + 0xa4], r10d
mov dword [rbx + 0xb4], r10d
mov dword [rbx + 0xbc], r10d
mov dword [rbx + 0xe0], r10d
mov dword [rbx + 0xe8], r10d
mov qword [rbx + 0xf0], r10
mov qword [rbx + 0xf8], r10
mov qword [rbx + 0x108], r10
mov qword [rbx + 0x110], r10
mov qword [rbx + 0x118], r10
mov qword [rbx + 0x120], r10
mov qword [rbx + 0x128], r10
mov qword [rbx + 0x130], r10
cmp byte [rdi], 0x89
jne 0x180009423
cmp byte [rdi + 1], 0x50
jne 0x180009423
cmp byte [rdi + 2], 0x4e
jne 0x180009423
cmp byte [rdi + 3], 0x47
jne 0x180009423
cmp byte [rdi + 4], 0xd
jne 0x180009423
cmp byte [rdi + 5], 0xa
jne 0x180009423
cmp byte [rdi + 6], 0x1a
jne 0x180009423
cmp byte [rdi + 7], 0xa
jne 0x180009423
movzx eax, byte [rdi + 9]
movzx ecx, byte [rdi + 8]
shl ecx, 8
or ecx, eax
movzx eax, byte [rdi + 0xa]
shl ecx, 8
or ecx, eax
movzx eax, byte [rdi + 0xb]
shl ecx, 8
or ecx, eax
cmp ecx, 0xd
je 0x1800090c2
mov dword [rsi + 0x208], 0x5e
lea eax, [r10 + 0x5e]
jmp 0x180009444
lea rcx, str.IHDR
mov rax, rcx
nop dword [rax]
inc rax
cmp byte [rax], r10b
jne 0x1800090d0
sub rax, rcx
cmp rax, 4
jne 0x180009412
cmp byte [rdi + 0xc], 0x49
jne 0x180009412
cmp byte [rdi + 0xd], 0x48
jne 0x180009412
cmp byte [rdi + 0xe], 0x44
jne 0x180009412
cmp byte [rdi + 0xf], 0x52
jne 0x180009412
movzx eax, byte [rdi + 0x11]
movzx r8d, byte [rdi + 0x10]
movzx edx, byte [rdi + 0x14]
shl r8d, 8
or r8d, eax
shl edx, 8
movzx eax, byte [rdi + 0x12]
shl r8d, 8
or r8d, eax
movzx eax, byte [rdi + 0x13]
shl r8d, 8
or r8d, eax
movzx eax, byte [rdi + 0x15]
or edx, eax
movzx eax, byte [rdi + 0x16]
shl edx, 8
or edx, eax
movzx eax, byte [rdi + 0x17]
shl edx, 8
or edx, eax
test r15, r15
je 0x18000915a
mov dword [r15], r8d
test r14, r14
je 0x180009162
mov dword [r14], edx
movzx ecx, byte [rdi + 0x18]
mov dword [rbx + 0x14], ecx
movzx r9d, byte [rdi + 0x19]
mov dword [rbx + 0x10], r9d
movzx eax, byte [rdi + 0x1a]
mov dword [rbx], eax
movzx eax, byte [rdi + 0x1b]
mov dword [rbx + 4], eax
movzx eax, byte [rdi + 0x1c]
mov dword [rbx + 8], eax
test r8d, r8d
je 0x180009401
test edx, edx
je 0x180009401
cmp r9b, 4
ja 0x180009206
je 0x1800091df
test r9d, r9d
je 0x1800091e7
sub r9d, 2
je 0x1800091df
cmp r9d, 1
jne 0x18000920c
cmp cl, 8
ja 0x180009226
mov eax, 0x116
bt eax, ecx
jae 0x180009226
mov dword [rsi + 0x208], r10d
cmp dword [rbx], r10d
je 0x180009236
mov dword [rsi + 0x208], 0x20
mov eax, 0x20
jmp 0x180009444
sub cl, 8
test cl, 0xf7
jmp 0x180009224
cmp cl, 0x10
ja 0x180009226
mov eax, 0x10116
bt eax, ecx
jb 0x1800091bf
mov eax, 0x25
mov dword [rsi + 0x208], eax
jmp 0x180009444
cmp r9b, 6
je 0x18000921c
mov eax, 0x1f
mov dword [rsi + 0x208], eax
jmp 0x180009444
cmp cl, 8
je 0x1800091bf
cmp cl, 0x10
je 0x1800091bf
mov eax, 0x25
mov dword [rsi + 0x208], eax
jmp 0x180009444
cmp dword [rbx + 4], r10d
je 0x180009250
mov dword [rsi + 0x208], 0x21
mov eax, 0x21
jmp 0x180009444
cmp dword [rbx + 8], 1
jbe 0x18000926a
mov dword [rsi + 0x208], 0x22
mov eax, 0x22
jmp 0x180009444
cmp dword [rsi + 0x28], r10d
jne 0x1800093fd
movzx eax, byte [rdi + 0x1e]
lea r9, [0x180029270]
movzx r8d, byte [rdi + 0x1d]
shl r8d, 8
or r8d, eax
movzx eax, byte [rdi + 0x1f]
shl r8d, 8
or r8d, eax
movzx eax, byte [rdi + 0x20]
shl r8d, 8
or r8d, eax
movzx eax, byte [rdi + 0xc]
not rax
movzx ecx, al
mov edx, dword [r9 + rcx*4]
movzx ecx, byte [rdi + 0xd]
xor edx, 0xffffff
mov eax, edx
shr edx, 8
xor rcx, rax
movzx eax, cl
xor edx, dword [r9 + rax*4]
movzx eax, byte [rdi + 0xe]
mov ecx, edx
xor rcx, rax
shr edx, 8
movzx eax, cl
movzx ecx, byte [rdi + 0xf]
xor edx, dword [r9 + rax*4]
mov eax, edx
shr edx, 8
xor rcx, rax
movzx eax, cl
movzx ecx, byte [rdi + 0x10]
xor edx, dword [r9 + rax*4]
mov eax, edx
shr edx, 8
xor rcx, rax
movzx eax, cl
movzx ecx, byte [rdi + 0x11]
xor edx, dword [r9 + rax*4]
mov eax, edx
shr edx, 8
xor rcx, rax
movzx eax, cl
movzx ecx, byte [rdi + 0x12]
xor edx, dword [r9 + rax*4]
mov eax, edx
shr edx, 8
xor rcx, rax
movzx eax, cl
movzx ecx, byte [rdi + 0x13]
xor edx, dword [r9 + rax*4]
mov eax, edx
shr edx, 8
xor rcx, rax
movzx eax, cl
movzx ecx, byte [rdi + 0x14]
xor edx, dword [r9 + rax*4]
mov eax, edx
shr edx, 8
xor rcx, rax
movzx eax, cl
movzx ecx, byte [rdi + 0x15]
xor edx, dword [r9 + rax*4]
mov eax, edx
shr edx, 8
xor rcx, rax
movzx eax, cl
movzx ecx, byte [rdi + 0x16]
xor edx, dword [r9 + rax*4]
mov eax, edx
shr edx, 8
xor rcx, rax
movzx eax, cl
movzx ecx, byte [rdi + 0x17]
xor edx, dword [r9 + rax*4]
mov eax, edx
xor rcx, rax
movzx eax, cl
shr edx, 8
xor edx, dword [r9 + rax*4]
movzx ecx, byte [rdi + 0x18]
mov eax, edx
xor rcx, rax
shr edx, 8
movzx eax, cl
movzx ecx, byte [rdi + 0x19]
xor edx, dword [r9 + rax*4]
mov eax, edx
shr edx, 8
xor rcx, rax
movzx eax, cl
movzx ecx, byte [rdi + 0x1a]
xor edx, dword [r9 + rax*4]
mov eax, edx
shr edx, 8
xor rcx, rax
movzx eax, cl
movzx ecx, byte [rdi + 0x1b]
xor edx, dword [r9 + rax*4]
mov eax, edx
shr edx, 8
xor rcx, rax
movzx eax, cl
movzx ecx, byte [rdi + 0x1c]
xor edx, dword [r9 + rax*4]
mov eax, edx
shr edx, 8
xor rcx, rax
movzx eax, cl
xor edx, dword [r9 + rax*4]
not edx
cmp r8d, edx
je 0x1800093fd
mov dword [rsi + 0x208], 0x39
mov eax, 0x39
jmp 0x180009444
xor eax, eax
jmp 0x180009444
mov dword [rsi + 0x208], 0x5d
mov eax, 0x5d
jmp 0x180009444
mov dword [rsi + 0x208], 0x1d
mov eax, 0x1d
jmp 0x180009444
mov dword [rsi + 0x208], 0x1c
mov eax, 0x1c
jmp 0x180009444
mov dword [r8 + 0x208], 0x30
mov eax, 0x30
mov rbx, qword [rsp + 0x30]
mov rsi, qword [rsp + 0x38]
mov rdi, qword [rsp + 0x40]
mov r14, qword [rsp + 0x48]
add rsp, 0x20
pop r15
ret