Function at 0x14005d980
Capabilities:
Encode data using xor
Hash data with crc32

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0xc8
movaps xmmword [rsp + 0xa0], xmm6
movaps xmmword [rsp + 0xb0], xmm7
mov edi, dword [0x140158134]
movdqa xmm0, xmmword [0x140165830]
mov r14d, dword [rsp + 0x130]
imul r14d, r8d
test edx, edx
mov ebp, r9d
mov qword [rsp + 0x110], rcx
mov dword [rsp + 0x120], r8d
mov dword [rsp + 0x90], 6
mov eax, r14d
lea esi, [r14 + 1]
movaps xmmword [rsp + 0x80], xmm0
cmovne eax, edx
cmp edi, 5
mov dword [rsp + 0x118], eax
mov eax, 0xffffffff
cmovl eax, edi
mov dword [rsp + 0x60], eax
mov eax, esi
imul eax, r9d
movsxd rcx, eax
mov dword [rsp + 0x64], eax
call sym.malloc
mov r15, rax
test rax, rax
je 0x14005e12c
movsxd rax, r14d
mov rcx, rax
mov qword [rsp + 0x48], rax
call sym.malloc
mov rbx, rax
test rax, rax
je 0x14005e124
test ebp, ebp
jle 0x14005de9a
movsxd rax, esi
mov esi, r14d
mov qword [rsp + 0x68], r15
lea r12, [r15 + 1]
mov qword [rsp + 0x50], rax
lea eax, [r14 - 1]
shr esi, 4
xor edi, edi
mov dword [rsp + 0x40], eax
mov eax, r14d
shl rsi, 4
mov r15d, r14d
and eax, 0xfffffff0
add rsi, rbx
mov dword [rsp + 0x44], eax
jmp 0x14005dae3
mov eax, dword [rsp + 0x130]
mov qword [rsp + 0x38], rbx
mov r9d, ebp
mov dword [rsp + 0x30], r14d
mov r8d, dword [rsp + 0x120]
mov dword [rsp + 0x28], eax
mov edx, dword [rsp + 0x118]
mov dword [rsp + 0x20], edi
mov rcx, qword [rsp + 0x110]
call sym.stbiw__encode_png_line_unsigned_char__int__int__int__int__int__int__signed_char_
mov r11d, r14d
mov byte [r12 - 1], r11b
mov r8, qword [rsp + 0x48]
mov rcx, r12
mov rdx, rbx
add edi, 1
call sym.memcpy
mov rax, qword [rsp + 0x50]
add r12, rax
cmp ebp, edi
je 0x14005de95
mov r14d, dword [rsp + 0x60]
test r14d, r14d
jns 0x14005da80
xor r14d, r14d
mov eax, r15d
xor r11d, r11d
mov qword [rsp + 0x58], r12
mov r15d, r14d
mov r13d, 0x7fffffff
pxor xmm7, xmm7
mov r12d, r11d
pxor xmm6, xmm6
mov r14d, eax
nop word [rax + rax]
mov eax, dword [rsp + 0x130]
mov qword [rsp + 0x38], rbx
mov r9d, ebp
mov dword [rsp + 0x30], r15d
mov r8d, dword [rsp + 0x120]
mov dword [rsp + 0x28], eax
mov edx, dword [rsp + 0x118]
mov dword [rsp + 0x20], edi
mov rcx, qword [rsp + 0x110]
call sym.stbiw__encode_png_line_unsigned_char__int__int__int__int__int__int__signed_char_
test r14d, r14d
jle 0x14005de88
cmp dword [rsp + 0x40], 0xe
jbe 0x14005de8c
mov rdx, rbx
pxor xmm0, xmm0
nop dword [rax + rax]
movdqu xmm4, xmmword [rdx]
movdqa xmm2, xmm7
add rdx, 0x10
psubb xmm2, xmm4
pminub xmm2, xmm4
movdqa xmm3, xmm2
punpckhbw xmm2, xmm7
punpcklbw xmm3, xmm7
movdqa xmm1, xmm3
punpckhwd xmm3, xmm6
punpcklwd xmm1, xmm6
paddd xmm0, xmm1
movdqa xmm1, xmm2
punpckhwd xmm2, xmm6
paddd xmm0, xmm3
punpcklwd xmm1, xmm6
paddd xmm0, xmm1
paddd xmm0, xmm2
cmp rsi, rdx
jne 0x14005db70
movdqa xmm1, xmm0
psrldq xmm1, 8
paddd xmm0, xmm1
movdqa xmm1, xmm0
psrldq xmm1, 4
paddd xmm0, xmm1
movd edx, xmm0
test r14b, 0xf
je 0x14005de10
mov ecx, dword [rsp + 0x44]
movsxd r8, ecx
movzx r9d, byte [rbx + r8]
mov r8d, r9d
neg r8b
cmovs r8d, r9d
movzx r8d, r8b
add edx, r8d
lea r8d, [rcx + 1]
cmp r14d, r8d
jle 0x14005de10
movsxd r8, r8d
movzx r9d, byte [rbx + r8]
mov r8d, r9d
neg r8b
cmovs r8d, r9d
movzx r8d, r8b
add edx, r8d
lea r8d, [rcx + 2]
cmp r14d, r8d
jle 0x14005de10
movsxd r8, r8d
movzx r9d, byte [rbx + r8]
mov r8d, r9d
neg r8b
cmovs r8d, r9d
movzx r8d, r8b
add edx, r8d
lea r8d, [rcx + 3]
cmp r14d, r8d
jle 0x14005de10
movsxd r8, r8d
movzx r9d, byte [rbx + r8]
mov r8d, r9d
neg r8b
cmovs r8d, r9d
movzx r8d, r8b
add edx, r8d
lea r8d, [rcx + 4]
cmp r14d, r8d
jle 0x14005de10
movsxd r8, r8d
movzx r9d, byte [rbx + r8]
mov r8d, r9d
neg r8b
cmovs r8d, r9d
movzx r8d, r8b
add edx, r8d
lea r8d, [rcx + 5]
cmp r14d, r8d
jle 0x14005de10
movsxd r8, r8d
movzx r9d, byte [rbx + r8]
mov r8d, r9d
neg r8b
cmovs r8d, r9d
movzx r8d, r8b
add edx, r8d
lea r8d, [rcx + 6]
cmp r14d, r8d
jle 0x14005de10
movsxd r8, r8d
movzx r9d, byte [rbx + r8]
mov r8d, r9d
neg r8b
cmovs r8d, r9d
movzx r8d, r8b
add edx, r8d
lea r8d, [rcx + 7]
cmp r14d, r8d
jle 0x14005de10
movsxd r8, r8d
movzx r9d, byte [rbx + r8]
mov r8d, r9d
neg r8b
cmovs r8d, r9d
movzx r8d, r8b
add edx, r8d
lea r8d, [rcx + 8]
cmp r14d, r8d
jle 0x14005de10
movsxd r8, r8d
movzx r9d, byte [rbx + r8]
mov r8d, r9d
neg r8b
cmovs r8d, r9d
movzx r8d, r8b
add edx, r8d
lea r8d, [rcx + 9]
cmp r14d, r8d
jle 0x14005de10
movsxd r8, r8d
movzx r9d, byte [rbx + r8]
mov r8d, r9d
neg r8b
cmovs r8d, r9d
movzx r8d, r8b
add edx, r8d
lea r8d, [rcx + 0xa]
cmp r14d, r8d
jle 0x14005de10
movsxd r8, r8d
movzx r9d, byte [rbx + r8]
mov r8d, r9d
neg r8b
cmovs r8d, r9d
movzx r8d, r8b
add edx, r8d
lea r8d, [rcx + 0xb]
cmp r14d, r8d
jle 0x14005de10
movsxd r8, r8d
movzx r9d, byte [rbx + r8]
mov r8d, r9d
neg r8b
cmovs r8d, r9d
movzx r8d, r8b
add edx, r8d
lea r8d, [rcx + 0xc]
cmp r14d, r8d
jle 0x14005de10
movsxd r8, r8d
movzx r9d, byte [rbx + r8]
mov r8d, r9d
neg r8b
cmovs r8d, r9d
movzx r8d, r8b
add edx, r8d
lea r8d, [rcx + 0xd]
cmp r14d, r8d
jle 0x14005de10
movsxd r8, r8d
movzx r9d, byte [rbx + r8]
mov r8d, r9d
neg r8b
cmovs r8d, r9d
add ecx, 0xe
movzx r8d, r8b
add edx, r8d
cmp r14d, ecx
jle 0x14005de10
movsxd rcx, ecx
movzx r8d, byte [rbx + rcx]
mov ecx, r8d
neg cl
cmovs ecx, r8d
movzx ecx, cl
add edx, ecx
nop word cs:[rax + rax]
cmp r13d, edx
jle 0x14005de1b
mov r13d, edx
mov r12d, r15d
add r15d, 1
cmp r15d, 5
jne 0x14005db18
mov r11d, r12d
mov r15d, r14d
mov r12, qword [rsp + 0x58]
cmp r11d, 5
je 0x14005dabb
mov eax, dword [rsp + 0x130]
mov dword [rsp + 0x30], r11d
mov r9d, ebp
mov qword [rsp + 0x38], rbx
mov r8d, dword [rsp + 0x120]
mov dword [rsp + 0x28], eax
mov edx, dword [rsp + 0x118]
mov dword [rsp + 0x20], edi
mov rcx, qword [rsp + 0x110]
mov dword [rsp + 0x58], r11d
call sym.stbiw__encode_png_line_unsigned_char__int__int__int__int__int__int__signed_char_
mov r11d, dword [rsp + 0x58]
jmp 0x14005dabb
xor edx, edx
jmp 0x14005de10
xor ecx, ecx
xor edx, edx
jmp 0x14005dbe9
mov r15, qword [rsp + 0x68]
mov rcx, rbx
call sym.free
mov r9d, dword [0x14015813c]
mov edx, dword [rsp + 0x64]
mov rcx, r15
lea r8, [rsp + 0x7c]
call sym.stbi_zlib_compress
mov rcx, r15
mov rsi, rax
call sym.free
test rsi, rsi
je 0x14005e12c
mov r12d, dword [rsp + 0x7c]
lea edi, [r12 + 0x39]
mov r13d, r12d
movsxd rcx, edi
bswap r13d
call sym.malloc
mov rbx, rax
test rax, rax
je 0x14005e12c
mov ecx, ebp
mov r8d, ebp
mov edx, dword [rsp + 0x120]
mov dword [rbx + 0x21], r13d
sar ecx, 0x10
shr r8d, 0x18
movsxd r13, r12d
mov byte [rbx + 0x18], 8
mov rax, qword [rsp + 0x138]
mov r11d, ecx
mov ecx, ebp
mov r9d, dword [rsp + 0x120]
movzx r10d, r11b
shr edx, 0x18
movsxd r14, dword [rsp + 0x130]
mov byte [rbx + 0x1c], 0
mov dword [rax], edi
movzx edi, ch
mov ecx, dword [rsp + 0x120]
sar r9d, 0x10
movabs rax, 0xa1a0a0d474e5089
mov qword [rbx], rax
mov rax, qword [0x140165840]
mov qword [rbx + 8], rax
movzx eax, bpl
shl rax, 8
or rax, rdi
movzx edi, ch
shl rax, 8
or rax, r10
movzx r10d, r8b
shl rax, 8
or rax, r10
movzx r10d, byte [rsp + 0x120]
shl rax, 8
or rax, r10
movzx r10d, r9b
shl rax, 8
or rax, rdi
lea rdi, [0x140164aa0]
shl rax, 8
or rax, r10
movzx r10d, dl
xor dl, 0xf5
shl rax, 8
or rax, r10
mov r10d, dword [rsp + r14*4 + 0x80]
mov qword [rbx + 0x10], rax
xor eax, eax
mov word [rbx + 0x1a], ax
mov eax, edx
mov eax, dword [rdi + rax*4]
mov byte [rbx + 0x19], r10b
xor eax, 0x575e51
mov edx, eax
xor eax, r9d
movzx eax, al
shr edx, 8
xor edx, dword [rdi + rax*4]
mov eax, edx
xor dl, ch
mov ecx, ebp
movzx edx, dl
shr eax, 8
xor eax, dword [rdi + rdx*4]
mov edx, eax
xor al, byte [rsp + 0x120]
movzx eax, al
shr edx, 8
xor edx, dword [rdi + rax*4]
mov eax, edx
xor edx, r8d
mov r8, r13
movzx edx, dl
shr eax, 8
xor eax, dword [rdi + rdx*4]
mov edx, eax
xor eax, r11d
movzx eax, al
shr edx, 8
xor edx, dword [rdi + rax*4]
mov eax, edx
xor dl, ch
movzx edx, dl
shr eax, 8
xor eax, dword [rdi + rdx*4]
mov edx, eax
xor eax, ebp
lea rbp, [rbx + 0x29]
movzx eax, al
shr edx, 8
mov rcx, rbp
add rbp, r13
xor edx, dword [rdi + rax*4]
mov eax, edx
movzx edx, dl
xor rdx, 8
shr eax, 8
xor eax, dword [rdi + rdx*4]
mov edx, eax
xor eax, r10d
movzx eax, al
shr edx, 8
xor edx, dword [rdi + rax*4]
mov eax, edx
shr edx, 8
movzx eax, al
xor edx, dword [rdi + rax*4]
mov eax, edx
movzx edx, dl
shr eax, 8
xor eax, dword [rdi + rdx*4]
mov edx, eax
movzx eax, al
shr edx, 8
xor edx, dword [rdi + rax*4]
not edx
mov eax, edx
mov rdx, rsi
bswap eax
mov dword [rbx + 0x1d], eax
mov dword [rbx + 0x25], 0x54414449
call sym.memmove
mov rcx, rsi
call sym.free
cmp r12d, 0xfffffffd
jl 0x14005e120
lea eax, [r12 + 3]
lea rdx, [rbx + 0x25]
sub rax, r13
lea r8, [rbp + rax - 3]
mov eax, 0xffffffff
nop dword [rax + rax]
mov ecx, eax
xor al, byte [rdx]
add rdx, 1
movzx eax, al
shr ecx, 8
xor ecx, dword [rdi + rax*4]
mov eax, ecx
cmp r8, rdx
jne 0x14005e0c8
not eax
bswap eax
mov dword [rbp], eax
mov rax, qword [0x140165848]
mov dword [rbp + 0xc], 0x826042ae
mov qword [rbp + 4], rax
movaps xmm6, xmmword [rsp + 0xa0]
movaps xmm7, xmmword [rsp + 0xb0]
mov rax, rbx
add rsp, 0xc8
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
xor eax, eax
jmp 0x14005e0e4
mov rcx, r15
call sym.free
xor ebx, ebx
jmp 0x14005e0f9