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

Disassembly:
mov edx, dword [esp + 0x10]
movzx eax, word [edx + 2]
push ebx
push ebp
push esi
or ecx, 0xffffffff
push edi
cmp ax, 2
jne 0x10079c35
movzx eax, word [edx + 0xe]
cmp ax, 0x10
jne 0x100799f4
mov edi, dword [esp + 0x14]
mov eax, dword [esp + 0x1c]
mov esi, dword [esp + 0x24]
lea eax, [edi + eax*4]
mov dword [esp + 0x1c], eax
cmp edi, eax
jae 0x10079ddd
mov ebx, dword [esp + 0x18]
sub ebx, edi
mov eax, dword [ebx + edi]
cdq
sub eax, edx
movzx edx, word [edi]
sar eax, 1
sub dx, ax
movzx eax, dx
mov word [esi], ax
mov edx, ecx
movzx ebp, al
and edx, 0xff
xor edx, ebp
movzx ebp, byte [esi + 1]
shr ecx, 8
xor ecx, dword [edx*4 + 0x100b0c70]
inc esi
mov edx, ecx
and edx, 0xff
xor edx, ebp
shr ecx, 8
xor ecx, dword [edx*4 + 0x100b0c70]
movzx edx, word [ebx + edi]
add dx, ax
inc esi
mov word [esi], dx
mov eax, ecx
and eax, 0xff
movzx edx, dl
xor eax, edx
movzx edx, byte [esi + 1]
shr ecx, 8
xor ecx, dword [eax*4 + 0x100b0c70]
inc esi
mov eax, ecx
and eax, 0xff
xor eax, edx
shr ecx, 8
xor ecx, dword [eax*4 + 0x100b0c70]
add edi, 4
inc esi
cmp edi, dword [esp + 0x1c]
jb 0x10079958
mov eax, dword [esp + 0x28]
pop edi
pop esi
not ecx
pop ebp
mov dword [eax], ecx
xor eax, eax
pop ebx
ret 0x20
cmp ax, 8
jne 0x10079b02
cmp dword [esp + 0x30], 0xef6
mov esi, dword [esp + 0x24]
mov eax, dword [esp + 0x1c]
jle 0x10079a8a
test eax, eax
jle 0x10079ddd
mov edi, dword [esp + 0x18]
mov ebp, dword [esp + 0x14]
sub ebp, edi
mov dword [esp + 0x1c], eax
mov eax, dword [edi]
cdq
sub eax, edx
mov edx, eax
mov al, byte [edi + ebp]
sar edx, 1
sub al, dl
sub al, 0x80
mov edx, ecx
movzx ebx, al
mov byte [esi], al
and edx, 0xff
xor edx, ebx
shr ecx, 8
xor ecx, dword [edx*4 + 0x100b0c70]
mov dl, byte [edi]
add dl, al
mov byte [esi + 1], dl
mov eax, ecx
movzx edx, dl
and eax, 0xff
xor eax, edx
shr ecx, 8
xor ecx, dword [eax*4 + 0x100b0c70]
add edi, 4
add esi, 2
sub dword [esp + 0x1c], 1
jne 0x10079a26
mov eax, dword [esp + 0x28]
pop edi
pop esi
not ecx
pop ebp
mov dword [eax], ecx
xor eax, eax
pop ebx
ret 0x20
test eax, eax
jle 0x10079ddd
mov edi, dword [esp + 0x18]
mov ebp, dword [esp + 0x14]
sub ebp, edi
mov dword [esp + 0x1c], eax
mov eax, dword [edi]
cdq
sub eax, edx
mov edx, eax
mov al, byte [edi + ebp]
sar edx, 1
sub al, dl
mov edx, ecx
movzx ebx, al
mov byte [esi], al
and edx, 0xff
xor edx, ebx
shr ecx, 8
xor ecx, dword [edx*4 + 0x100b0c70]
mov dl, byte [edi]
add dl, al
mov byte [esi + 1], dl
mov eax, ecx
movzx edx, dl
and eax, 0xff
xor eax, edx
shr ecx, 8
xor ecx, dword [eax*4 + 0x100b0c70]
add edi, 4
add esi, 2
sub dword [esp + 0x1c], 1
jne 0x10079aa0
mov eax, dword [esp + 0x28]
pop edi
pop esi
not ecx
pop ebp
mov dword [eax], ecx
xor eax, eax
pop ebx
ret 0x20
cmp ax, 0x18
jne 0x10079ddd
mov eax, dword [esp + 0x1c]
mov esi, dword [esp + 0x24]
test eax, eax
jle 0x10079ddd
mov ebp, dword [esp + 0x14]
mov ebx, dword [esp + 0x18]
sub ebp, ebx
mov dword [esp + 0x14], ebp
mov dword [esp + 0x1c], eax
jmp 0x10079b34
mov ebp, dword [esp + 0x14]
mov edi, dword [ebx]
mov eax, edi
cdq
sub eax, edx
mov edx, dword [ebx + ebp]
sar eax, 1
sub edx, eax
lea edi, [edi + edx]
jns 0x10079b53
add edx, 0x800000
or edx, 0x800000
mov eax, ecx
and eax, 0xff
mov byte [esi], dl
movzx ebp, dl
xor eax, ebp
shr ecx, 8
xor ecx, dword [eax*4 + 0x100b0c70]
mov eax, edx
shr eax, 8
mov byte [esi + 1], al
inc esi
mov ebp, ecx
movzx eax, al
and ebp, 0xff
xor ebp, eax
shr ecx, 8
xor ecx, dword [ebp*4 + 0x100b0c70]
inc esi
shr edx, 0x10
mov byte [esi], dl
mov eax, ecx
movzx edx, dl
and ecx, 0xff
xor ecx, edx
shr eax, 8
xor eax, dword [ecx*4 + 0x100b0c70]
inc esi
test edi, edi
jge 0x10079bbb
lea ecx, [edi + 0x800000]
or ecx, 0x800000
jmp 0x10079bbd
mov ecx, edi
mov edx, eax
mov byte [esi], cl
and edx, 0xff
movzx edi, cl
xor edx, edi
shr eax, 8
xor eax, dword [edx*4 + 0x100b0c70]
mov edx, ecx
shr edx, 8
mov byte [esi + 1], dl
inc esi
mov edi, eax
movzx edx, dl
and edi, 0xff
xor edi, edx
shr eax, 8
xor eax, dword [edi*4 + 0x100b0c70]
shr ecx, 0x10
inc esi
mov byte [esi], cl
mov edx, eax
movzx ecx, cl
and edx, 0xff
xor edx, ecx
shr eax, 8
xor eax, dword [edx*4 + 0x100b0c70]
inc esi
add ebx, 4
sub dword [esp + 0x1c], 1
mov ecx, eax
jne 0x10079b30
mov eax, dword [esp + 0x28]
pop edi
pop esi
not ecx
pop ebp
mov dword [eax], ecx
xor eax, eax
pop ebx
ret 0x20
cmp ax, 1
jne 0x10079ddd
movzx eax, word [edx + 0xe]
cmp ax, 8
jne 0x10079ce9
mov esi, dword [esp + 0x1c]
xor eax, eax
cmp dword [esp + 0x30], 0xef6
jle 0x10079ca6
test esi, esi
jle 0x10079ddd
mov edi, dword [esp + 0x24]
mov ebx, dword [esp + 0x14]
lea ecx, [ecx]
mov dl, byte [ebx + eax*4]
sub dl, 0x80
mov byte [eax + edi], dl
mov ebp, ecx
movzx edx, dl
and ebp, 0xff
xor ebp, edx
shr ecx, 8
xor ecx, dword [ebp*4 + 0x100b0c70]
inc eax
cmp eax, esi
jl 0x10079c70
mov eax, dword [esp + 0x28]
pop edi
pop esi
not ecx
pop ebp
mov dword [eax], ecx
xor eax, eax
pop ebx
ret 0x20
test esi, esi
jle 0x10079ddd
mov edi, dword [esp + 0x24]
mov ebx, dword [esp + 0x14]
mov dl, byte [ebx + eax*4]
mov byte [eax + edi], dl
mov ebp, ecx
movzx edx, dl
and ebp, 0xff
xor ebp, edx
shr ecx, 8
xor ecx, dword [ebp*4 + 0x100b0c70]
inc eax
cmp eax, esi
jl 0x10079cb6
mov eax, dword [esp + 0x28]
pop edi
pop esi
not ecx
pop ebp
mov dword [eax], ecx
xor eax, eax
pop ebx
ret 0x20
cmp ax, 0x18
mov eax, dword [esp + 0x24]
jne 0x10079d89
mov edi, dword [esp + 0x1c]
xor esi, esi
test edi, edi
jle 0x10079ddd
mov edx, dword [esp + 0x14]
mov edx, dword [edx + esi*4]
test edx, edx
jge 0x10079d1c
add edx, 0x800000
or edx, 0x800000
mov ebx, ecx
and ebx, 0xff
mov byte [eax], dl
movzx ebp, dl
xor ebx, ebp
shr ecx, 8
xor ecx, dword [ebx*4 + 0x100b0c70]
mov ebx, edx
shr ebx, 8
mov byte [eax + 1], bl
inc eax
mov ebp, ecx
movzx ebx, bl
and ebp, 0xff
xor ebp, ebx
shr ecx, 8
xor ecx, dword [ebp*4 + 0x100b0c70]
inc eax
shr edx, 0x10
mov byte [eax], dl
mov ebx, ecx
movzx edx, dl
and ebx, 0xff
xor ebx, edx
shr ecx, 8
xor ecx, dword [ebx*4 + 0x100b0c70]
inc esi
inc eax
cmp esi, edi
jl 0x10079d05
mov eax, dword [esp + 0x28]
pop edi
pop esi
not ecx
pop ebp
mov dword [eax], ecx
xor eax, eax
pop ebx
ret 0x20
mov esi, dword [esp + 0x1c]
xor edx, edx
test esi, esi
jle 0x10079ddd
mov edi, dword [esp + 0x14]
jmp 0x10079da0
mov bx, word [edi + edx*4]
mov word [eax], bx
movzx ebp, byte [eax]
mov ebx, ecx
and ebx, 0xff
xor ebx, ebp
movzx ebp, byte [eax + 1]
shr ecx, 8
xor ecx, dword [ebx*4 + 0x100b0c70]
inc eax
mov ebx, ecx
and ebx, 0xff
xor ebx, ebp
shr ecx, 8
xor ecx, dword [ebx*4 + 0x100b0c70]
inc edx
inc eax
cmp edx, esi
jl 0x10079da0
mov eax, dword [esp + 0x28]
pop edi
pop esi
not ecx
pop ebp
mov dword [eax], ecx
xor eax, eax
pop ebx
ret 0x20