Function at 0x14003fa40
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 rsi, [r8 + 0xb8]
mov rbx, r9
mov rdi, r8
mov r14, rdx
mov r15, rcx
test rax, rax
je 0x14003fe78
test rbx, rbx
je 0x14003fe78
cmp rax, 0x21
jae 0x14003fa9f
mov dword [r8 + 0x1f0], 0x1b
mov eax, 0x1b
jmp 0x14003fe88
mov rcx, rsi
call fcn.14003f900
mov rcx, rsi
call fcn.14003f990
cmp byte [rbx], 0x89
jne 0x14003fe67
cmp byte [rbx + 1], 0x50
jne 0x14003fe67
cmp byte [rbx + 2], 0x4e
jne 0x14003fe67
cmp byte [rbx + 3], 0x47
jne 0x14003fe67
cmp byte [rbx + 4], 0xd
jne 0x14003fe67
cmp byte [rbx + 5], 0xa
jne 0x14003fe67
cmp byte [rbx + 6], 0x1a
jne 0x14003fe67
cmp byte [rbx + 7], 0xa
jne 0x14003fe67
movzx eax, byte [rbx + 9]
movzx ecx, byte [rbx + 8]
shl ecx, 8
or ecx, eax
movzx eax, byte [rbx + 0xa]
shl ecx, 8
or ecx, eax
movzx eax, byte [rbx + 0xb]
shl ecx, 8
or ecx, eax
cmp ecx, 0xd
je 0x14003fb36
mov dword [rdi + 0x1f0], 0x5e
mov eax, 0x5e
jmp 0x14003fe88
lea rcx, str.IHDR
mov rax, rcx
inc rax
cmp byte [rax], 0
jne 0x14003fb40
sub rax, rcx
cmp rax, 4
jne 0x14003fe56
cmp byte [rbx + 0xc], 0x49
jne 0x14003fe56
cmp byte [rbx + 0xd], 0x48
jne 0x14003fe56
cmp byte [rbx + 0xe], 0x44
jne 0x14003fe56
cmp byte [rbx + 0xf], 0x52
jne 0x14003fe56
movzx eax, byte [rbx + 0x10]
movzx r9d, byte [rbx + 0x11]
movzx r8d, byte [rbx + 0x14]
shl eax, 8
or r9d, eax
shl r8d, 8
movzx eax, byte [rbx + 0x12]
shl r9d, 8
or r9d, eax
movzx eax, byte [rbx + 0x13]
shl r9d, 8
or r9d, eax
movzx eax, byte [rbx + 0x15]
or r8d, eax
movzx eax, byte [rbx + 0x16]
shl r8d, 8
or r8d, eax
movzx eax, byte [rbx + 0x17]
shl r8d, 8
or r8d, eax
test r15, r15
je 0x14003fbd0
mov dword [r15], r9d
test r14, r14
je 0x14003fbd8
mov dword [r14], r8d
movzx edx, byte [rbx + 0x18]
mov dword [rsi + 0x14], edx
movzx ecx, byte [rbx + 0x19]
mov dword [rsi + 0x10], ecx
movzx r10d, byte [rbx + 0x1a]
mov dword [rsi], r10d
movzx eax, byte [rbx + 0x1b]
mov dword [rsi + 4], eax
movzx eax, byte [rbx + 0x1c]
mov dword [rsi + 8], eax
test r9d, r9d
je 0x14003fe45
test r8d, r8d
je 0x14003fe45
call fcn.14003be20
mov dword [rdi + 0x1f0], eax
test eax, eax
jne 0x14003fe88
test r10d, r10d
je 0x14003fc3a
mov dword [rdi + 0x1f0], 0x20
mov eax, 0x20
jmp 0x14003fe88
cmp dword [rsi + 4], 0
je 0x14003fc54
mov dword [rdi + 0x1f0], 0x21
mov eax, 0x21
jmp 0x14003fe88
cmp dword [rsi + 8], 1
jbe 0x14003fc6e
mov dword [rdi + 0x1f0], 0x22
mov eax, 0x22
jmp 0x14003fe88
cmp dword [rdi + 0x20], 0
jne 0x14003fe41
movzx eax, byte [rbx + 0x1e]
lea r10, [0x14012f7a0]
movzx r9d, byte [rbx + 0x1d]
shl r9d, 8
or r9d, eax
movzx eax, byte [rbx + 0x1f]
shl r9d, 8
or r9d, eax
movzx eax, byte [rbx + 0x20]
shl r9d, 8
or r9d, eax
movzx eax, byte [rbx + 0xc]
not rax
movzx ecx, al
movzx eax, byte [rbx + 0xd]
mov edx, dword [r10 + rcx*4]
xor edx, 0xffffff
mov ecx, edx
shr edx, 8
xor rcx, rax
movzx eax, cl
movzx ecx, byte [rbx + 0xe]
mov r8d, dword [r10 + rax*4]
xor r8d, edx
mov eax, r8d
shr r8d, 8
xor rcx, rax
movzx eax, cl
mov edx, dword [r10 + rax*4]
movzx eax, byte [rbx + 0xf]
xor edx, r8d
mov ecx, edx
shr edx, 8
xor rcx, rax
movzx eax, cl
movzx ecx, byte [rbx + 0x10]
mov r8d, dword [r10 + rax*4]
xor r8d, edx
mov eax, r8d
shr r8d, 8
xor rcx, rax
movzx eax, cl
movzx ecx, byte [rbx + 0x11]
mov edx, dword [r10 + rax*4]
xor edx, r8d
mov eax, edx
shr edx, 8
xor rcx, rax
movzx eax, cl
movzx ecx, byte [rbx + 0x12]
mov r8d, dword [r10 + rax*4]
xor r8d, edx
mov eax, r8d
shr r8d, 8
xor rcx, rax
movzx eax, cl
movzx ecx, byte [rbx + 0x13]
mov edx, dword [r10 + rax*4]
xor edx, r8d
mov eax, edx
shr edx, 8
xor rcx, rax
movzx eax, cl
movzx ecx, byte [rbx + 0x14]
mov r8d, dword [r10 + rax*4]
xor r8d, edx
mov eax, r8d
shr r8d, 8
xor rcx, rax
movzx eax, cl
movzx ecx, byte [rbx + 0x15]
mov edx, dword [r10 + rax*4]
xor edx, r8d
mov eax, edx
shr edx, 8
xor rcx, rax
movzx eax, cl
movzx ecx, byte [rbx + 0x16]
mov r8d, dword [r10 + rax*4]
xor r8d, edx
mov eax, r8d
xor rcx, rax
shr r8d, 8
movzx eax, cl
movzx ecx, byte [rbx + 0x17]
mov edx, dword [r10 + rax*4]
xor edx, r8d
mov eax, edx
shr edx, 8
xor rcx, rax
movzx eax, cl
movzx ecx, byte [rbx + 0x18]
mov r8d, dword [r10 + rax*4]
xor r8d, edx
mov eax, r8d
shr r8d, 8
xor rcx, rax
movzx eax, cl
movzx ecx, byte [rbx + 0x19]
mov edx, dword [r10 + rax*4]
xor edx, r8d
mov eax, edx
shr edx, 8
xor rcx, rax
movzx eax, cl
movzx ecx, byte [rbx + 0x1a]
mov r8d, dword [r10 + rax*4]
xor r8d, edx
mov eax, r8d
shr r8d, 8
xor rcx, rax
movzx eax, cl
movzx ecx, byte [rbx + 0x1b]
mov edx, dword [r10 + rax*4]
xor edx, r8d
mov eax, edx
shr edx, 8
xor rcx, rax
movzx eax, cl
mov r8d, dword [r10 + rax*4]
movzx eax, byte [rbx + 0x1c]
xor r8d, edx
mov ecx, r8d
shr r8d, 8
xor rcx, rax
movzx eax, cl
mov ecx, dword [r10 + rax*4]
xor ecx, r8d
not ecx
cmp r9d, ecx
je 0x14003fe41
mov dword [rdi + 0x1f0], 0x39
mov eax, 0x39
jmp 0x14003fe88
xor eax, eax
jmp 0x14003fe88
mov dword [rdi + 0x1f0], 0x5d
mov eax, 0x5d
jmp 0x14003fe88
mov dword [rdi + 0x1f0], 0x1d
mov eax, 0x1d
jmp 0x14003fe88
mov dword [rdi + 0x1f0], 0x1c
mov eax, 0x1c
jmp 0x14003fe88
mov dword [r8 + 0x1f0], 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