Function at 0x4154a7
Capabilities:
Hash data with crc32

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x88
mov qword [rsp + 0x60], 0
mov r13, rcx
mov r12, rdx
mov rbx, r8
mov qword [rsp + 0x68], 0
cmp r9b, 2
je 0x4155e8
ja 0x4154ec
test r9b, r9b
jne 0x415b00
jmp 0x415508
cmp r9b, 3
jne 0x415f50
lea rcx, [rsp + 0x60]
xor r9d, r9d
call fcn.00415164
jmp 0x415f50
cmp r8, 0x12
jle 0x415544
cmp byte [rdx], 0x1f
jne 0x41554a
cmp byte [rdx + 1], 0x8b
jne 0x41554a
cmp byte [rdx + 2], 8
jne 0x41554a
test byte [rdx + 3], 0xe0
jne 0x41554a
lea rcx, [rsp + 0x50]
mov r9d, 2
call fcn.004154a7
movups xmm0, xmmword [rsp + 0x50]
movups xmmword [rsp + 0x60], xmm0
jmp 0x415f50
cmp r8, 6
jle 0x415576
mov al, byte [r12]
mov edx, eax
and edx, 0xf
cmp dl, 8
jne 0x415576
test al, al
js 0x415576
movzx edx, byte [r12 + 1]
shl eax, 8
mov ecx, 0x1f
add eax, edx
xor edx, edx
div cx
test dx, dx
je 0x4155c3
mov ecx, 0x48
lea rdi, [0x00447ee0]
call fcn.00401dfb
lea rdx, str.ZippyError
mov qword [rax + 8], rdi
lea rcx, [rax + 8]
lea rax, [0x00436720]
mov qword [rcx + 0x20], rax
mov qword [rcx + 0x10], rdx
mov qword [rcx + 0x18], 0x27
mov qword [rcx + 8], 0
mov qword [rsp + 0x20], 0x67
jmp 0x415c70
lea rcx, [rsp + 0x50]
mov r9d, 1
mov r8, rbx
mov rdx, r12
call fcn.004154a7
movups xmm1, xmmword [rsp + 0x50]
movups xmmword [rsp + 0x60], xmm1
jmp 0x415f50
cmp r8, 0x11
jle 0x415aa0
cmp byte [rdx], 0x1f
jne 0x415605
cmp byte [rdx + 1], 0x8b
jne 0x415605
cmp byte [rdx + 2], 8
je 0x415652
jmp 0x41565e
mov ecx, 0x48
lea rdi, [0x00447ee0]
call fcn.00401dfb
lea rdx, str.ZippyError
mov qword [rax + 8], rdi
lea rcx, [rax + 8]
lea rax, [0x00436580]
mov qword [rcx + 0x20], rax
mov qword [rcx + 0x10], rdx
mov qword [rcx + 0x18], 0x27
mov qword [rcx + 8], 0
mov qword [rsp + 0x20], 0x17
jmp 0x415ae8
mov sil, byte [rdx + 3]
test sil, 0xe0
je 0x4156ab
jmp 0x4156b3
mov ecx, 0x48
lea rdi, [0x00447ee0]
call fcn.00401dfb
lea rdx, str.ZippyError
mov qword [rax + 8], rdi
lea rcx, [rax + 8]
lea rax, [0x00436540]
mov qword [rcx + 0x20], rax
mov qword [rcx + 0x10], rdx
mov qword [rcx + 0x18], 0x1e
mov qword [rcx + 8], 0
mov qword [rsp + 0x20], 0x1a
jmp 0x415ae8
test sil, 4
je 0x415700
jmp 0x41570e
mov ecx, 0x48
lea rdi, [0x00447ee0]
call fcn.00401dfb
lea rdx, str.ZippyError
mov qword [rax + 8], rdi
lea rcx, [rax + 8]
lea rax, [0x00436520]
mov qword [rcx + 0x20], rax
mov qword [rcx + 0x10], rdx
mov qword [rcx + 0x18], 0x16
mov qword [rcx + 8], 0
mov qword [rsp + 0x20], 0x1d
jmp 0x415ae8
mov r9d, 0xa
test sil, 8
je 0x415780
jmp 0x41575b
mov ecx, 0x48
lea rdi, [0x00447ee0]
call fcn.00401dfb
lea rdx, str.ZippyError
mov qword [rax + 8], rdi
lea rcx, [rax + 8]
lea rax, [0x004364e0]
mov qword [rcx + 0x20], rax
mov qword [rcx + 0x10], rdx
mov qword [rcx + 0x18], 0x23
mov qword [rcx + 8], 0
mov qword [rsp + 0x20], 0x29
jmp 0x415ae8
mov r8d, 0xa
mov rdx, rbx
mov rcx, r12
call fcn.0040f37e
lea r9, [rax + 1]
mov rax, qword [0x0043fa60]
cmp byte [rax], 0
jne 0x415f50
test sil, 0x10
je 0x4157a8
mov rdx, rbx
mov r8, r9
mov rcx, r12
call fcn.0040f37e
mov rdx, qword [0x0043fa60]
cmp byte [rdx], 0
jne 0x415f50
lea r9, [rax + 1]
and sil, 2
je 0x415804
add r9, 2
cmp rbx, r9
jg 0x415804
mov ecx, 0x48
lea rdi, [0x00447ee0]
call fcn.00401dfb
lea rdx, str.ZippyError
mov qword [rax + 8], rdi
lea rcx, [rax + 8]
lea rax, [0x00436760]
mov qword [rcx + 0x20], rax
mov qword [rcx + 0x10], rdx
mov qword [rcx + 0x18], 0x24
mov qword [rcx + 8], 0
mov qword [rsp + 0x20], 0x39
jmp 0x415ae8
lea rax, [r9 + 8]
cmp rbx, rax
jle 0x415823
mov rsi, qword [0x0043fa60]
mov edi, dword [r12 + rbx - 8]
cmp byte [rsi], 0
je 0x415870
jmp 0x415f50
mov ecx, 0x48
lea rdi, [0x00447ee0]
call fcn.00401dfb
lea rdx, str.ZippyError
mov qword [rax + 8], rdi
lea rcx, [rax + 8]
lea rax, [0x00436760]
mov qword [rcx + 0x20], rax
mov qword [rcx + 0x10], rdx
mov qword [rcx + 0x18], 0x24
mov qword [rcx + 8], 0
mov qword [rsp + 0x20], 0x3e
jmp 0x415ae8
lea rcx, [rsp + 0x60]
mov r8, rbx
mov rdx, r12
mov ebp, dword [r12 + rbx - 4]
call fcn.00415164
cmp byte [rsi], 0
jne 0x415f50
mov r14, qword [rsp + 0x60]
mov rax, qword [rsp + 0x68]
lea r12, [0x00433240]
test r14, r14
je 0x4158a8
lea r12, [rax + 8]
lea rcx, [rsp + 0x70]
mov edx, 0x10
call fcn.004017f3
xor ecx, ecx
mov eax, 1
cpuid
cmp byte [rsi], 0
je 0x4158cd
xor r8d, r8d
jmp 0x4159e4
bt ecx, 0x13
jae 0x4158e2
and cl, 2
je 0x4158e2
cmp r14, 0x3f
jg 0x415f2a
xor ebx, ebx
xor r8d, r8d
cmp r14, rbx
jle 0x4159e4
sub r14, rbx
mov r11d, 8
mov ecx, r8d
mov r10b, byte [rsi]
mov rax, r14
mov r9, r14
add rbx, r12
not ecx
cqo
xor r14d, r14d
lea r12, [0x00434460]
idiv r11
mov qword [rsp + 0x38], rax
lea rdx, [r14*8]
cmp qword [rsp + 0x38], r14
jg 0x415939
lea r11, [0x00434460]
jmp 0x4159c1
mov edx, dword [rbx + r14*8]
test r10b, r10b
jne 0x4159e4
mov r11d, dword [rbx + r14*8 + 4]
xor ecx, edx
inc r14
mov r15d, r11d
movzx edx, r11b
mov eax, r11d
shr r11d, 0x10
shr r15d, 0x18
mov edx, dword [r12 + rdx*4 + 0xc00]
movzx eax, ah
movzx r11d, r11b
xor edx, dword [r12 + r15*4]
movzx r15d, cl
xor edx, dword [r12 + r15*4 + 0x1c00]
mov r15d, ecx
shr r15d, 0x18
xor edx, dword [r12 + r15*4 + 0x1000]
xor edx, dword [r12 + rax*4 + 0x800]
movzx eax, ch
shr ecx, 0x10
xor edx, dword [r12 + r11*4 + 0x400]
movzx r11d, cl
xor edx, dword [r12 + rax*4 + 0x1800]
xor edx, dword [r12 + r11*4 + 0x1400]
mov ecx, edx
jmp 0x41591e
cmp r9, rdx
jle 0x4159da
mov al, byte [rbx + rdx]
inc rdx
xor eax, ecx
shr ecx, 8
movzx eax, al
xor ecx, dword [r11 + rax*4]
jmp 0x4159c1
test r10b, r10b
jne 0x4159e4
not ecx
mov r8d, ecx
cmp byte [rsi], 0
jne 0x415f50
cmp edi, r8d
jne 0x415a56
mov rax, qword [rsp + 0x60]
mov ecx, 0x80000000
cqo
idiv rcx
cmp ebp, edx
je 0x415f50
mov ecx, 0x48
lea rdi, [0x00447ee0]
call fcn.00401dfb
lea rdx, str.ZippyError
mov qword [rax + 8], rdi
lea rcx, [rax + 8]
lea rax, [0x00436460]
mov qword [rcx + 0x20], rax
mov qword [rcx + 0x10], rdx
mov qword [rcx + 0x18], 0x18
mov qword [rcx + 8], 0
mov qword [rsp + 0x20], 0x4d
jmp 0x415ae8
mov ecx, 0x48
lea rsi, [0x00447ee0]
call fcn.00401dfb
lea rdx, str.ZippyError
mov qword [rax + 8], rsi
lea rcx, [rax + 8]
lea rax, [0x004364a0]
mov qword [rcx + 0x20], rax
mov qword [rcx + 0x10], rdx
mov qword [rcx + 0x18], 0x1c
mov qword [rcx + 8], 0
mov qword [rsp + 0x20], 0x4a
jmp 0x415ae8
mov ecx, 0x48
lea rsi, [0x00447ee0]
call fcn.00401dfb
lea rdx, str.ZippyError
mov qword [rax + 8], rsi
lea rcx, [rax + 8]
lea rax, [0x00436760]
mov qword [rcx + 0x20], rax
mov qword [rcx + 0x10], rdx
mov qword [rcx + 0x18], 0x24
mov qword [rcx + 8], 0
mov qword [rsp + 0x20], 0xb
lea r9, str.gzip.nim
lea r8, str.uncompressGzip
call fcn.00403205
jmp 0x415f50
cmp r8, 5
jle 0x415b14
mov al, byte [rdx]
mov edx, eax
and edx, 0xf
cmp dl, 8
je 0x415b61
jmp 0x415b67
mov ecx, 0x48
lea rdi, [0x00447ee0]
call fcn.00401dfb
lea rdx, str.ZippyError
mov qword [rax + 8], rdi
lea rcx, [rax + 8]
lea rax, [0x004366e0]
mov qword [rcx + 0x20], rax
mov qword [rcx + 0x10], rdx
mov qword [rcx + 0x18], 0x24
mov qword [rcx + 8], 0
mov qword [rsp + 0x20], 0x6e
jmp 0x415c70
test al, al
jns 0x415bb4
jmp 0x415bd4
mov ecx, 0x48
lea rsi, [0x00447ee0]
call fcn.00401dfb
lea rdx, str.ZippyError
mov qword [rax + 8], rsi
lea rcx, [rax + 8]
lea rax, [0x004366a0]
mov qword [rcx + 0x20], rax
mov qword [rcx + 0x10], rdx
mov qword [rcx + 0x18], 0x1e
mov qword [rcx + 8], 0
mov qword [rsp + 0x20], 0x77
jmp 0x415c70
movzx edx, byte [r12 + 1]
shl eax, 8
mov r8d, 0x1f
add eax, edx
mov ecx, edx
xor edx, edx
div r8w
test dx, dx
je 0x415c1e
jmp 0x415c28
mov ecx, 0x48
lea rdi, [0x00447ee0]
call fcn.00401dfb
lea rdx, str.ZippyError
mov qword [rax + 8], rdi
lea rcx, [rax + 8]
lea rax, [0x00436660]
mov qword [rcx + 0x20], rax
mov qword [rcx + 0x10], rdx
mov qword [rcx + 0x18], 0x18
mov qword [rcx + 8], 0
mov qword [rsp + 0x20], 0x7a
jmp 0x415c70
and cl, 0x20
je 0x415c83
jmp 0x415caa
mov ecx, 0x48
lea rsi, [0x00447ee0]
call fcn.00401dfb
lea rdx, str.ZippyError
mov qword [rax + 8], rsi
lea rcx, [rax + 8]
lea rax, [0x00436630]
mov qword [rcx + 0x20], rax
mov qword [rcx + 0x10], rdx
mov qword [rcx + 0x18], 0xe
mov qword [rcx + 8], 0
mov qword [rsp + 0x20], 0x7d
lea r9, str.zippy.nim
lea r8, str.uncompress
jmp 0x415af6
lea rcx, [rsp + 0x60]
mov r9d, 2
mov r8, rbx
mov rdx, r12
call fcn.00415164
mov rsi, qword [0x0043fa60]
cmp byte [rsi], 0
je 0x415cf7
jmp 0x415f50
mov ecx, 0x48
lea rdi, [0x00447ee0]
call fcn.00401dfb
lea rdx, str.ZippyError
mov qword [rax + 8], rdi
lea rcx, [rax + 8]
lea rax, [0x00436600]
mov qword [rcx + 0x20], rax
mov qword [rcx + 0x10], rdx
mov qword [rcx + 0x18], 0x26
mov qword [rcx + 8], 0
mov qword [rsp + 0x20], pe_nt_image_headers64
jmp 0x415c70
movzx eax, byte [r12 + rbx - 4]
movzx edx, byte [r12 + rbx - 3]
mov r14, qword [rsp + 0x60]
shl edx, 0x10
shl eax, 0x18
or eax, edx
movzx edx, byte [r12 + rbx - 1]
or eax, edx
movzx edx, byte [r12 + rbx - 2]
lea r12, [0x00433240]
shl edx, 8
or eax, edx
mov dword [rsp + 0x38], eax
mov rax, qword [rsp + 0x68]
test r14, r14
je 0x415d3c
lea r12, [rax + 8]
lea rcx, [rsp + 0x70]
mov edx, 0x10
call fcn.004017f3
xor ecx, ecx
mov eax, 1
cpuid
xor edx, edx
cmp byte [rsi], 0
jne 0x415ecb
bt ecx, 9
jb 0x415ebe
lea rax, [r12 + 0x15b0]
xor r8d, r8d
xor r10d, r10d
mov ecx, 1
mov qword [rsp + 0x48], rax
mov r11d, 0xfff1
mov rdx, r14
sub rdx, r8
cmp rdx, 0x15af
jle 0x415e1e
mov rax, qword [rsp + 0x48]
lea rdx, [r12 + r8]
add rax, r8
mov qword [rsp + 0x40], rax
movzx r9d, byte [rdx]
movzx eax, byte [rdx + 1]
add rdx, 8
movzx r15d, byte [rdx - 6]
movzx ebp, byte [rdx - 5]
add r9d, ecx
movzx edi, byte [rdx - 4]
movzx esi, byte [rdx - 3]
add eax, r9d
movzx ebx, byte [rdx - 2]
movzx ecx, byte [rdx - 1]
add r15d, eax
add eax, r9d
add ebp, r15d
add eax, r15d
add edi, ebp
add eax, ebp
add esi, edi
add edi, eax
add ebx, esi
add esi, edi
add ecx, ebx
add ebx, esi
add ebx, ecx
add r10d, ebx
cmp qword [rsp + 0x40], rdx
jne 0x415dab
mov eax, ecx
xor edx, edx
add r8, 0x15b0
div r11d
mov eax, r10d
mov ecx, edx
xor edx, edx
div r11d
mov r10d, edx
jmp 0x415d87
cmp rdx, 7
jle 0x415e84
movzx eax, byte [r12 + r8]
sub rdx, 8
add ecx, eax
movzx eax, byte [r12 + r8 + 1]
add eax, ecx
add ecx, eax
add r10d, ecx
movzx ecx, byte [r12 + r8 + 2]
add eax, ecx
movzx ecx, byte [r12 + r8 + 3]
add r10d, eax
add ecx, eax
movzx eax, byte [r12 + r8 + 4]
add r10d, ecx
add ecx, eax
movzx eax, byte [r12 + r8 + 5]
add r10d, ecx
add eax, ecx
movzx ecx, byte [r12 + r8 + 6]
add r10d, eax
add eax, ecx
movzx ecx, byte [r12 + r8 + 7]
add r8, 8
add r10d, eax
add ecx, eax
add r10d, ecx
jmp 0x415e1e
xor eax, eax
add r8, r12
cmp rdx, rax
jg 0x415eae
mov r9d, 0xfff1
mov eax, r10d
xor edx, edx
div r9d
mov eax, ecx
shl edx, 0x10
mov r8d, edx
xor edx, edx
div r9d
or edx, r8d
jmp 0x415ecb
movzx r9d, byte [r8 + rax]
inc rax
add ecx, r9d
add r10d, ecx
jmp 0x415e89
mov rdx, r14
mov rcx, r12
call fcn.0040f3f9
mov edx, eax
mov rax, qword [0x0043fa60]
cmp byte [rax], 0
jne 0x415f50
cmp dword [rsp + 0x38], edx
je 0x415f50
mov ecx, 0x48
lea rsi, [0x00447ee0]
call fcn.00401dfb
lea rdx, str.ZippyError
mov qword [rax + 8], rsi
lea rcx, [rax + 8]
lea rax, [0x004365c0]
mov qword [rcx + 0x20], rax
mov qword [rcx + 0x10], rdx
mov qword [rcx + 0x18], 0x1c
mov qword [rcx + 8], 0
mov qword [rsp + 0x20], 0x8c
jmp 0x415c70
mov rbx, r14
mov rcx, r12
and rbx, 0xfffffffffffffff0
mov rdx, rbx
call fcn.00418a51
cmp byte [rsi], 0
mov r8d, eax
not r8d
je 0x4158e7
jmp 0x4158c5
movups xmm2, xmmword [rsp + 0x60]
mov rax, r13
movups xmmword [r13], xmm2
add rsp, 0x88
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret