Function at 0x1001de50
Capabilities:
Encode data using xor
Hash data using djb2

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x94
mov esi, dword [esp + 0xb4]
push 0x11
push 2
push 2
call dword [esi + 0x84]
cmp eax, 0xffffffff
je 0x1001e348
mov ebp, eax
mov edi, dword [esp + 0xac]
mov eax, dword [esp + 0xb0]
mov ecx, eax
shr ecx, 0x10
mov dword [esp + 0x44], ecx
shr eax, 0x18
mov dword [esp + 0x40], eax
mov dword [esp + 0x50], 0x2710
lea eax, [esp + 0x50]
push 4
push eax
push 0x1006
push 0xffff
push ebp
call dword [esi + 0x88]
mov dword [esp + 0x5c], 0
mov dword [esp + 0x60], 0
lea eax, [edi + 0x543]
mov ecx, 0x309e0185
mul ecx
mov dword [esp + 0x54], 0x35000002
mov dword [esp + 0x58], 0x72737857
mov eax, edx
shr eax, 8
mov dword [esp + 0x1c], eax
mov eax, edx
shr eax, 0x10
mov dword [esp + 0x38], eax
shr edx, 0x18
mov dword [esp + 0x3c], edx
call dword [esi + 0x28]
mov ecx, eax
shr ecx, 0x10
mov dword [esp + 0x30], ecx
mov dword [esp + 0x34], eax
shr eax, 0x18
mov dword [esp + 8], eax
test edi, edi
je 0x1001df2d
mov eax, edi
and eax, 3
mov dword [esp], eax
cmp edi, 4
jae 0x1001df37
mov esi, 0x1505
xor ecx, ecx
jmp 0x1001df88
mov eax, 0x1505
jmp 0x1001dfc2
mov edx, edi
and edx, 0xfffffffc
mov esi, 0x1505
xor ecx, ecx
mov eax, dword [esp + 0xa8]
nop word [eax + eax]
mov ebx, esi
shl ebx, 5
add ebx, esi
movsx edi, byte [eax + ecx]
add edi, ebx
movsx esi, byte [eax + ecx + 1]
add esi, edi
shl edi, 5
add esi, edi
movsx edi, byte [eax + ecx + 2]
add edi, esi
shl esi, 5
add edi, esi
movsx esi, byte [eax + ecx + 3]
add esi, edi
shl edi, 5
add esi, edi
add ecx, 4
cmp edx, ecx
jne 0x1001df50
mov ebx, dword [esp]
test ebx, ebx
mov edi, dword [esp + 0xac]
mov eax, esi
je 0x1001dfc2
add ecx, dword [esp + 0xa8]
xor edx, edx
nop word cs:[eax + eax]
mov esi, eax
shl esi, 5
add esi, eax
movsx eax, byte [ecx + edx]
add eax, esi
inc edx
cmp ebx, edx
jne 0x1001dfb0
mov dword [esp + 0x18], eax
mov eax, dword [esp + 8]
and al, 0x7f
mov dword [esp + 8], eax
mov eax, dword [esp + 0x18]
mov ecx, eax
shr ecx, 0x10
mov dword [esp + 0x2c], ecx
shr eax, 0x18
mov dword [esp + 0x28], eax
mov eax, 8
mov esi, dword [esp + 0xb4]
mov dword [esp + 4], ebp
jmp 0x1001e016
cmp byte [esp + 0xc], 0
mov eax, dword [esp + 0x24]
jne 0x1001e341
dec eax
je 0x1001e341
test edi, edi
je 0x1001e00f
mov dword [esp + 0x24], eax
xor edx, edx
xor eax, eax
xor ebx, ebx
xor ecx, ecx
mov dword [esp + 0xc], 0
mov dword [esp + 0x14], 0
jmp 0x1001e072
mov ebp, dword [esp + 4]
push edi
push 0
push dword [esi + 0xa8]
call dword [esi + 0x34]
mov ecx, dword [esp + 0x20]
add ecx, dword [esp]
mov eax, ebx
shr eax, 0x10
mov edx, ebx
shr ebx, 0x18
mov dword [esp + 0x14], edx
mov dl, dh
mov edi, dword [esp + 0xac]
cmp ecx, edi
jae 0x1001e000
mov dword [esp + 0x10], edx
mov dword [esp], eax
mov dword [esp + 0x20], ecx
mov ebp, edi
sub ebp, ecx
cmp ebp, 0x544
mov eax, 0x544
cmovae ebp, eax
lea eax, [ebp + 0x34]
mov dword [esp + 0x48], eax
push eax
push 8
push dword [esi + 0xa8]
call dword [esi + 0x2c]
mov edi, eax
call dword [esi + 0x28]
rol ax, 8
mov word [edi], ax
mov dword [edi + 2], 0x1000001
mov eax, dword [esi + 0x1c]
movzx ecx, byte [eax]
mov byte [edi + 0xc], cl
movzx ecx, byte [eax + 1]
mov byte [edi + 0xd], cl
movzx ecx, byte [eax + 2]
mov byte [edi + 0xe], cl
movzx ecx, byte [eax + 3]
mov byte [edi + 0xf], cl
movzx ecx, byte [eax + 4]
mov byte [edi + 0x10], cl
movzx ecx, byte [eax + 5]
mov byte [edi + 0x11], cl
movzx ecx, byte [eax + 6]
mov byte [edi + 0x12], cl
movzx ecx, byte [eax + 7]
mov byte [edi + 0x13], cl
movzx ecx, byte [eax + 8]
mov byte [edi + 0x14], cl
movzx ecx, byte [eax + 9]
mov byte [edi + 0x15], cl
movzx ecx, byte [eax + 0xa]
mov byte [edi + 0x16], cl
movzx eax, byte [eax + 0xb]
mov byte [edi + 0x17], al
mov dword [edi + 0x18], 0x1000100
movzx eax, byte [esi + 0xcc]
mov byte [edi + 0x1c], al
movzx eax, byte [esi + 0xcd]
mov byte [edi + 0x1d], al
movzx eax, byte [esi + 0xce]
mov byte [edi + 0x1e], al
movzx eax, byte [esi + 0xcf]
mov byte [edi + 0x1f], al
mov eax, dword [esp + 0x1c]
mov byte [edi + 0x20], al
mov eax, dword [esp + 0x38]
mov byte [edi + 0x21], al
mov eax, dword [esp + 0x3c]
mov byte [edi + 0x22], al
mov byte [edi + 0x23], 0
mov eax, dword [esp + 0x14]
mov byte [edi + 0x24], al
mov eax, dword [esp + 0x10]
mov byte [edi + 0x25], al
mov eax, dword [esp]
mov byte [edi + 0x26], al
mov byte [edi + 0x27], bl
mov eax, dword [esp + 0x34]
mov byte [edi + 0x28], al
mov byte [edi + 0x29], ah
mov eax, dword [esp + 0x30]
mov byte [edi + 0x2a], al
mov eax, dword [esp + 8]
mov byte [edi + 0x2b], al
mov eax, dword [esp + 0xb0]
mov byte [edi + 0x2c], al
mov byte [edi + 0x2d], ah
mov eax, dword [esp + 0x44]
mov byte [edi + 0x2e], al
mov eax, dword [esp + 0x40]
mov byte [edi + 0x2f], al
mov eax, dword [esp + 0x18]
mov byte [edi + 0x30], al
mov byte [edi + 0x31], ah
mov eax, dword [esp + 0x2c]
mov byte [edi + 0x32], al
mov eax, dword [esp + 0x28]
mov byte [edi + 0x33], al
mov eax, dword [esp + 0xa8]
mov ecx, dword [esp + 0x20]
add ecx, eax
mov eax, ebp
lea ebp, [edi + 0x34]
mov edx, eax
and edx, 7
je 0x1001e1f0
xor esi, esi
movzx ebx, byte [ecx + esi]
mov byte [ebp + esi], bl
inc esi
cmp edx, esi
jne 0x1001e1d0
add ecx, esi
lea edx, [esi + ebp]
mov ebx, eax
sub ebx, esi
jmp 0x1001e1f4
mov edx, ebp
mov ebx, eax
mov dword [esp], eax
dec eax
mov dword [esp + 0x10], eax
cmp eax, 7
jb 0x1001e25d
xor esi, esi
nop word cs:[eax + eax]
movzx eax, byte [ecx + esi]
mov byte [edx + esi], al
movzx eax, byte [ecx + esi + 1]
mov byte [edx + esi + 1], al
movzx eax, byte [ecx + esi + 2]
mov byte [edx + esi + 2], al
movzx eax, byte [ecx + esi + 3]
mov byte [edx + esi + 3], al
movzx eax, byte [ecx + esi + 4]
mov byte [edx + esi + 4], al
movzx eax, byte [ecx + esi + 5]
mov byte [edx + esi + 5], al
movzx eax, byte [ecx + esi + 6]
mov byte [edx + esi + 6], al
movzx eax, byte [ecx + esi + 7]
mov byte [edx + esi + 7], al
add esi, 8
cmp ebx, esi
jne 0x1001e210
mov esi, dword [esp + 0xb4]
mov ecx, dword [esi + 0x18]
cmp dword [esp + 0x10], 0
je 0x1001e330
mov ebx, dword [esp]
and ebx, 0x7fe
xor edx, edx
nop dword [eax]
mov eax, edx
and eax, 0x1e
movzx eax, byte [ecx + eax]
xor byte [edi + edx + 0x34], al
lea eax, [edx + 1]
and eax, 0x1f
movzx eax, byte [ecx + eax]
xor byte [edi + edx + 0x35], al
add edx, 2
cmp ebx, edx
jne 0x1001e280
test byte [esp], 1
je 0x1001e2b5
mov eax, edx
and eax, 0x1f
movzx eax, byte [ecx + eax]
xor byte [ebp + edx], al
push 0x10
lea eax, [esp + 0x58]
push eax
push 0
mov ebp, dword [esp + 0x54]
push ebp
push edi
push dword [esp + 0x18]
call dword [esi + 0x90]
mov ebx, dword [esp + 0x14]
inc ebx
cmp eax, ebp
jne 0x1001e040
cmp ebx, dword [esp + 0x1c]
jne 0x1001e040
mov dword [esp + 0x4c], 0x10
lea eax, [esp + 0x4c]
push eax
lea eax, [esp + 0x58]
push eax
push 0
push 0x2d
lea eax, [esp + 0x77]
push eax
mov ebp, dword [esp + 0x18]
push ebp
call dword [esi + 0x8c]
cmp eax, 0x2d
movzx eax, byte [esp + 0xc]
movzx ecx, byte [esp + 0x93]
cmovne ecx, eax
mov dword [esp + 0xc], ecx
jmp 0x1001e044
xor edx, edx
test byte [esp], 1
jne 0x1001e2a8
jmp 0x1001e2b5
push ebp
call dword [esi + 0x9c]
add esp, 0x94
pop esi
pop edi
pop ebx
pop ebp
ret