Function at 0x89aab0
Capabilities:
Encrypt data using speck

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x14
mov dword [esp + 4], ecx
mov esi, 0xffffffff
mov eax, dword [esp + 0x28]
mov ebx, eax
sub ebx, edx
cmp ebx, 2
jl 0x89ae52
mov dword [esp + 8], eax
mov edi, edx
mov eax, dword [esp + 0x2c]
mov dword [esp], eax
movzx eax, byte [edx]
test eax, eax
jne 0x89aafa
mov ebp, eax
movzx ecx, byte [edi + 1]
mov eax, dword [esp + 4]
movzx eax, byte [eax + ecx + 0x48]
mov dword [esp + 0xc], ecx
jmp 0x89ab0e
mov dl, byte [edi + 1]
movsx ecx, al
mov ebp, eax
mov dword [esp + 0xc], edx
movsx edx, dl
call fcn.00896fe0
add eax, 0xfffffffb
cmp eax, 0x18
ja case.0x89ab16.5
jmp dword [eax*4 + 0xb60150]
movzx ecx, byte [esp + 0xc]
movzx eax, byte [ebp + 0xb5d22c]
mov edx, ecx
shr edx, 5
lea eax, [edx + eax*8]
mov eax, dword [eax*4 + 0xb5c77c]
bt eax, ecx
jb case.0x89ab16.22
mov eax, dword [esp]
xor esi, esi
mov dword [eax], edi
jmp 0x89ae52
mov ebx, dword [esp + 8]
add edi, 2
sub ebx, edi
cmp ebx, 2
jl 0x89ae52
mov dword [esp + 0xc], 0
movzx eax, byte [edi]
movzx edx, byte [edi + 1]
test eax, eax
jne 0x89ac2c
mov ebp, eax
mov eax, dword [esp + 4]
mov esi, edx
movzx eax, byte [eax + edx + 0x48]
jmp 0x89ac3b
mov ebp, dword [esp + 8]
lea ebx, [edi + 2]
mov eax, ebp
sub eax, ebx
cmp eax, 2
jl 0x89ae52
mov al, byte [ebx]
test al, al
jne 0x89abad
movzx eax, byte [edi + 3]
mov ecx, dword [esp + 4]
movzx eax, byte [ecx + eax + 0x48]
jmp 0x89abb9
movsx edx, byte [edi + 3]
movsx ecx, al
call fcn.00896fe0
cmp eax, 0x14
je 0x89abda
cmp eax, 0x1b
jne 0x89abf1
mov ecx, dword [esp + 4]
add edi, 4
mov edx, edi
push dword [esp]
push ebp
call fcn.0089a930
jmp 0x89adcc
add edi, 4
mov edx, ebp
mov ecx, edi
push dword [esp]
call fcn.0089aff0
add esp, 0x18
jmp 0x89adcf
mov eax, dword [esp]
xor esi, esi
mov dword [eax], ebx
jmp 0x89ae52
mov ecx, dword [esp + 4]
add edi, 2
mov edx, edi
push dword [esp]
push dword [esp + 0xc]
call fcn.0089a3b0
jmp 0x89adcc
mov ecx, dword [esp + 4]
add edi, 2
mov edx, edi
add esp, 0x14
pop esi
pop edi
pop ebx
pop ebp
jmp 0x89b070
mov esi, edx
movsx ecx, al
movsx edx, dl
mov ebp, eax
call fcn.00896fe0
add eax, 0xfffffffb
cmp eax, 0x18
ja case.0x89ab16.5
mov ecx, 2
jmp dword [eax*4 + 0xb601b4]
movzx eax, byte [ebp + 0xb5d32c]
mov edx, esi
shr edx, 5
lea eax, [edx + eax*8]
mov eax, dword [eax*4 + 0xb5c77c]
bt eax, esi
jae case.0x89ab16.5
mov ebx, dword [esp + 8]
add edi, ecx
sub ebx, edi
cmp ebx, 1
jg 0x89ab63
mov esi, 0xffffffff
jmp 0x89ae52
cmp dword [esp + 0xc], 0
jne case.0x89ab16.5
mov ebx, dword [esp + 8]
lea eax, [edi + 2]
sub ebx, eax
cmp ebx, 2
jl 0x89ac83
mov dword [esp + 0x10], eax
movzx eax, byte [edi + 2]
movzx edx, byte [edi + 3]
test eax, eax
jne 0x89acc5
mov ebp, eax
mov eax, dword [esp + 4]
mov esi, edx
movzx eax, byte [eax + edx + 0x48]
jmp 0x89acd4
mov esi, edx
movsx ecx, al
movsx edx, dl
mov ebp, eax
call fcn.00896fe0
add eax, 0xfffffffb
cmp eax, 0x18
ja case.0x89ace9.5
mov dword [esp + 0xc], 1
mov ecx, 4
jmp dword [eax*4 + 0xb6027c]
movzx eax, byte [ebp + 0xb5d22c]
mov edx, esi
shr edx, 5
lea eax, [edx + eax*8]
mov eax, dword [eax*4 + 0xb5c77c]
bt eax, esi
jb case.0x89ac4c.22
mov eax, dword [esp]
mov ecx, dword [esp + 0x10]
xor esi, esi
mov dword [eax], ecx
jmp 0x89ae52
mov esi, 0xfffffffe
cmp ebx, 3
jge case.0x89ace9.5
jmp 0x89ae52
mov esi, 0xfffffffe
cmp ebx, 4
jge case.0x89ace9.5
jmp 0x89ae52
mov ebx, dword [esp + 8]
lea eax, [edi + 2]
sub ebx, eax
cmp ebx, 2
jl 0x89ac83
mov edx, edi
movzx ecx, byte [edx + 2]
mov edi, eax
movzx eax, byte [edx + 3]
test ecx, ecx
jne 0x89ad70
mov ebp, ecx
mov ecx, eax
mov eax, dword [esp + 4]
mov esi, ecx
movzx eax, byte [eax + ecx + 0x48]
jmp 0x89ad87
mov ebp, ecx
mov dword [esp + 0xc], edx
movsx ecx, cl
movsx edx, al
mov esi, eax
call fcn.00896fe0
mov edx, dword [esp + 0xc]
add eax, 0xfffffffb
cmp eax, 0x18
ja case.0x89ab16.5
jmp dword [eax*4 + 0xb60218]
movzx eax, byte [ebp + 0xb5d22c]
mov ecx, esi
shr ecx, 5
lea eax, [ecx + eax*8]
mov eax, dword [eax*4 + 0xb5c77c]
bt eax, esi
jae case.0x89ab16.5
mov ecx, dword [esp + 4]
add edx, 4
push dword [esp]
push dword [esp + 0xc]
call fcn.0089b260
add esp, 0x1c
pop esi
pop edi
pop ebx
pop ebp
ret
mov esi, 0xfffffffe
cmp ebx, 3
jge case.0x89ab16.5
jmp 0x89ae52
mov esi, 0xfffffffe
cmp ebx, 4
jge case.0x89ab16.5
jmp 0x89ae52
mov ebx, dword [esp + 8]
lea eax, [edi + 2]
mov edx, edi
mov esi, 0xffffffff
sub ebx, eax
cmp ebx, 1
jg 0x89ad51
jmp 0x89ae52
mov eax, dword [esp]
add edi, 2
mov esi, 2
mov dword [eax], edi
jmp 0x89ae52
mov ecx, dword [esp + 8]
lea eax, [edi + 2]
mov esi, 0xffffffff
sub ecx, eax
cmp ecx, 2
jl 0x89ae52
cmp byte [eax], 0
jne 0x89ae3c
cmp byte [edi + 3], 0x3e
je 0x89ae45
mov ecx, dword [esp]
xor esi, esi
mov dword [ecx], eax
jmp 0x89ae52
mov eax, dword [esp]
add edi, 4
mov esi, 4
mov dword [eax], edi
mov eax, esi
add esp, 0x14
jmp 0x89adcf
push ebp
push ebx
push edi
push esi
sub esp, 8
mov edi, edx
mov edx, dword [esp + 0x1c]
mov ebp, 0xffffffff
mov ebx, edx
sub ebx, edi
cmp ebx, 2
jl 0x89b256
movzx eax, byte [edi]
mov dword [esp], ecx
test eax, eax
jne 0x89b0a8
mov esi, eax
movzx eax, byte [edi + 1]
mov ebp, eax
movzx eax, byte [ecx + eax + 0x48]
jmp 0x89b0be
mov dl, byte [edi + 1]
movsx ecx, al
mov esi, eax
mov ebp, edx
movsx edx, dl
call fcn.00896fe0
mov edx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x20]
add eax, 0xfffffffb
cmp eax, 0x18
ja case.0x89b0ce.5
jmp dword [eax*4 + 0xb603a8]
movzx eax, byte [esi + 0xb5d22c]
mov esi, ecx
mov ecx, ebp
movzx ecx, cl
mov edx, ecx
shr edx, 5
lea eax, [edx + eax*8]
mov edx, dword [esp + 0x1c]
mov eax, dword [eax*4 + 0xb5c77c]
bt eax, ecx
jb case.0x89b0ce.22
mov dword [esi], edi
xor ebp, ebp
jmp 0x89b256
lea eax, [edi + 2]
mov ebp, edx
sub ebp, eax
cmp ebp, 2
jl 0x89b251
movzx ebx, byte [edi + 2]
mov esi, eax
movzx eax, byte [edi + 3]
test ebx, ebx
mov dword [esp + 4], eax
jne 0x89b158
mov ecx, eax
mov eax, dword [esp]
movzx eax, byte [eax + ecx + 0x48]
jmp 0x89b167
mov ebp, 0xfffffffe
cmp ebx, 3
jge case.0x89b0ce.5
jmp 0x89b256
mov ebp, 0xfffffffe
cmp ebx, 4
jl 0x89b256
mov dword [ecx], edi
xor ebp, ebp
jmp 0x89b256
movsx ecx, bl
movsx edx, al
call fcn.00896fe0
mov edx, dword [esp + 0x1c]
lea ecx, [eax - 0x16]
cmp ecx, 6
jb 0x89b23f
add eax, 0xfffffffb
cmp eax, 0x18
ja case.0x89b17b.5
jmp dword [eax*4 + 0xb6040c]
mov edi, dword [esp + 4]
movzx eax, byte [ebx + 0xb5d32c]
mov ecx, edi
shr ecx, 5
lea eax, [ecx + eax*8]
mov eax, dword [eax*4 + 0xb5c77c]
bt eax, edi
jb 0x89b23f
mov eax, dword [esp + 0x20]
jmp 0x89b1bd
cmp ebp, 3
mov eax, dword [esp + 0x20]
mov ebp, 0xfffffffe
jl 0x89b256
mov dword [eax], esi
xor ebp, ebp
jmp 0x89b256
cmp ebp, 4
jmp 0x89b1ae
add edi, 4
mov eax, edx
sub eax, edi
cmp eax, 2
jl 0x89b251
mov esi, dword [esp]
mov ebp, 0xffffffff
movzx ecx, byte [edi]
movzx eax, byte [edi + 1]
test cl, cl
jne 0x89b1f1
movzx eax, byte [esi + eax + 0x48]
jmp 0x89b200
movsx ecx, cl
movsx edx, al
call fcn.00896fe0
mov edx, dword [esp + 0x1c]
lea ecx, [eax - 9]
cmp ecx, 2
jb 0x89b22c
cmp eax, 0x15
je 0x89b22c
cmp eax, 0xb
jne 0x89b222
add edi, 2
mov eax, dword [esp + 0x20]
mov ebp, 5
mov dword [eax], edi
jmp 0x89b256
mov eax, dword [esp + 0x20]
xor ebp, ebp
mov dword [eax], edi
jmp 0x89b256
add edi, 2
mov eax, edx
sub eax, edi
cmp eax, 1
jg 0x89b1df
jmp 0x89b256
add edi, 4
jmp 0x89b215
lea eax, [esi + 2]
mov ebp, edx
mov edi, esi
sub ebp, eax
cmp ebp, 1
jg 0x89b114
mov ebp, 0xffffffff
mov eax, ebp
add esp, 8
pop esi
pop edi
pop ebx
pop ebp
ret