Function at 0x88f220
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 0x88f5c2
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 0x88f26a
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 0x88f27e
mov dl, byte [edi + 1]
movsx ecx, al
mov ebp, eax
mov dword [esp + 0xc], edx
movsx edx, dl
call fcn.0088b750
add eax, 0xfffffffb
cmp eax, 0x18
ja case.0x88f286.5
jmp dword [eax*4 + 0xb57af0]
movzx ecx, byte [esp + 0xc]
movzx eax, byte [ebp + 0xb54bcc]
mov edx, ecx
shr edx, 5
lea eax, [edx + eax*8]
mov eax, dword [eax*4 + 0xb5411c]
bt eax, ecx
jb case.0x88f286.22
mov eax, dword [esp]
xor esi, esi
mov dword [eax], edi
jmp 0x88f5c2
mov ebx, dword [esp + 8]
add edi, 2
sub ebx, edi
cmp ebx, 2
jl 0x88f5c2
mov dword [esp + 0xc], 0
movzx eax, byte [edi]
movzx edx, byte [edi + 1]
test eax, eax
jne 0x88f39c
mov ebp, eax
mov eax, dword [esp + 4]
mov esi, edx
movzx eax, byte [eax + edx + 0x48]
jmp 0x88f3ab
mov ebp, dword [esp + 8]
lea ebx, [edi + 2]
mov eax, ebp
sub eax, ebx
cmp eax, 2
jl 0x88f5c2
mov al, byte [ebx]
test al, al
jne 0x88f31d
movzx eax, byte [edi + 3]
mov ecx, dword [esp + 4]
movzx eax, byte [ecx + eax + 0x48]
jmp 0x88f329
movsx edx, byte [edi + 3]
movsx ecx, al
call fcn.0088b750
cmp eax, 0x14
je 0x88f34a
cmp eax, 0x1b
jne 0x88f361
mov ecx, dword [esp + 4]
add edi, 4
mov edx, edi
push dword [esp]
push ebp
call fcn.0088f0a0
jmp 0x88f53c
add edi, 4
mov edx, ebp
mov ecx, edi
push dword [esp]
call fcn.0088f760
add esp, 0x18
jmp 0x88f53f
mov eax, dword [esp]
xor esi, esi
mov dword [eax], ebx
jmp 0x88f5c2
mov ecx, dword [esp + 4]
add edi, 2
mov edx, edi
push dword [esp]
push dword [esp + 0xc]
call fcn.0088eb20
jmp 0x88f53c
mov ecx, dword [esp + 4]
add edi, 2
mov edx, edi
add esp, 0x14
pop esi
pop edi
pop ebx
pop ebp
jmp 0x88f7e0
mov esi, edx
movsx ecx, al
movsx edx, dl
mov ebp, eax
call fcn.0088b750
add eax, 0xfffffffb
cmp eax, 0x18
ja case.0x88f286.5
mov ecx, 2
jmp dword [eax*4 + 0xb57b54]
movzx eax, byte [ebp + 0xb54ccc]
mov edx, esi
shr edx, 5
lea eax, [edx + eax*8]
mov eax, dword [eax*4 + 0xb5411c]
bt eax, esi
jae case.0x88f286.5
mov ebx, dword [esp + 8]
add edi, ecx
sub ebx, edi
cmp ebx, 1
jg 0x88f2d3
mov esi, 0xffffffff
jmp 0x88f5c2
cmp dword [esp + 0xc], 0
jne case.0x88f286.5
mov ebx, dword [esp + 8]
lea eax, [edi + 2]
sub ebx, eax
cmp ebx, 2
jl 0x88f3f3
mov dword [esp + 0x10], eax
movzx eax, byte [edi + 2]
movzx edx, byte [edi + 3]
test eax, eax
jne 0x88f435
mov ebp, eax
mov eax, dword [esp + 4]
mov esi, edx
movzx eax, byte [eax + edx + 0x48]
jmp 0x88f444
mov esi, edx
movsx ecx, al
movsx edx, dl
mov ebp, eax
call fcn.0088b750
add eax, 0xfffffffb
cmp eax, 0x18
ja case.0x88f459.5
mov dword [esp + 0xc], 1
mov ecx, 4
jmp dword [eax*4 + 0xb57c1c]
movzx eax, byte [ebp + 0xb54bcc]
mov edx, esi
shr edx, 5
lea eax, [edx + eax*8]
mov eax, dword [eax*4 + 0xb5411c]
bt eax, esi
jb case.0x88f3bc.22
mov eax, dword [esp]
mov ecx, dword [esp + 0x10]
xor esi, esi
mov dword [eax], ecx
jmp 0x88f5c2
mov esi, 0xfffffffe
cmp ebx, 3
jge case.0x88f459.5
jmp 0x88f5c2
mov esi, 0xfffffffe
cmp ebx, 4
jge case.0x88f459.5
jmp 0x88f5c2
mov ebx, dword [esp + 8]
lea eax, [edi + 2]
sub ebx, eax
cmp ebx, 2
jl 0x88f3f3
mov edx, edi
movzx ecx, byte [edx + 2]
mov edi, eax
movzx eax, byte [edx + 3]
test ecx, ecx
jne 0x88f4e0
mov ebp, ecx
mov ecx, eax
mov eax, dword [esp + 4]
mov esi, ecx
movzx eax, byte [eax + ecx + 0x48]
jmp 0x88f4f7
mov ebp, ecx
mov dword [esp + 0xc], edx
movsx ecx, cl
movsx edx, al
mov esi, eax
call fcn.0088b750
mov edx, dword [esp + 0xc]
add eax, 0xfffffffb
cmp eax, 0x18
ja case.0x88f286.5
jmp dword [eax*4 + 0xb57bb8]
movzx eax, byte [ebp + 0xb54bcc]
mov ecx, esi
shr ecx, 5
lea eax, [ecx + eax*8]
mov eax, dword [eax*4 + 0xb5411c]
bt eax, esi
jae case.0x88f286.5
mov ecx, dword [esp + 4]
add edx, 4
push dword [esp]
push dword [esp + 0xc]
call fcn.0088f9d0
add esp, 0x1c
pop esi
pop edi
pop ebx
pop ebp
ret
mov esi, 0xfffffffe
cmp ebx, 3
jge case.0x88f286.5
jmp 0x88f5c2
mov esi, 0xfffffffe
cmp ebx, 4
jge case.0x88f286.5
jmp 0x88f5c2
mov ebx, dword [esp + 8]
lea eax, [edi + 2]
mov edx, edi
mov esi, 0xffffffff
sub ebx, eax
cmp ebx, 1
jg 0x88f4c1
jmp 0x88f5c2
mov eax, dword [esp]
add edi, 2
mov esi, 2
mov dword [eax], edi
jmp 0x88f5c2
mov ecx, dword [esp + 8]
lea eax, [edi + 2]
mov esi, 0xffffffff
sub ecx, eax
cmp ecx, 2
jl 0x88f5c2
cmp byte [eax], 0
jne 0x88f5ac
cmp byte [edi + 3], 0x3e
je 0x88f5b5
mov ecx, dword [esp]
xor esi, esi
mov dword [ecx], eax
jmp 0x88f5c2
mov eax, dword [esp]
add edi, 4
mov esi, 4
mov dword [eax], edi
mov eax, esi
add esp, 0x14
jmp 0x88f53f
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 0x88f9c6
movzx eax, byte [edi]
mov dword [esp], ecx
test eax, eax
jne 0x88f818
mov esi, eax
movzx eax, byte [edi + 1]
mov ebp, eax
movzx eax, byte [ecx + eax + 0x48]
jmp 0x88f82e
mov dl, byte [edi + 1]
movsx ecx, al
mov esi, eax
mov ebp, edx
movsx edx, dl
call fcn.0088b750
mov edx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x20]
add eax, 0xfffffffb
cmp eax, 0x18
ja case.0x88f83e.5
jmp dword [eax*4 + 0xb57d48]
movzx eax, byte [esi + 0xb54bcc]
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 + 0xb5411c]
bt eax, ecx
jb case.0x88f83e.22
mov dword [esi], edi
xor ebp, ebp
jmp 0x88f9c6
lea eax, [edi + 2]
mov ebp, edx
sub ebp, eax
cmp ebp, 2
jl 0x88f9c1
movzx ebx, byte [edi + 2]
mov esi, eax
movzx eax, byte [edi + 3]
test ebx, ebx
mov dword [esp + 4], eax
jne 0x88f8c8
mov ecx, eax
mov eax, dword [esp]
movzx eax, byte [eax + ecx + 0x48]
jmp 0x88f8d7
mov ebp, 0xfffffffe
cmp ebx, 3
jge case.0x88f83e.5
jmp 0x88f9c6
mov ebp, 0xfffffffe
cmp ebx, 4
jl 0x88f9c6
mov dword [ecx], edi
xor ebp, ebp
jmp 0x88f9c6
movsx ecx, bl
movsx edx, al
call fcn.0088b750
mov edx, dword [esp + 0x1c]
lea ecx, [eax - 0x16]
cmp ecx, 6
jb 0x88f9af
add eax, 0xfffffffb
cmp eax, 0x18
ja case.0x88f8eb.5
jmp dword [eax*4 + 0xb57dac]
mov edi, dword [esp + 4]
movzx eax, byte [ebx + 0xb54ccc]
mov ecx, edi
shr ecx, 5
lea eax, [ecx + eax*8]
mov eax, dword [eax*4 + 0xb5411c]
bt eax, edi
jb 0x88f9af
mov eax, dword [esp + 0x20]
jmp 0x88f92d
cmp ebp, 3
mov eax, dword [esp + 0x20]
mov ebp, 0xfffffffe
jl 0x88f9c6
mov dword [eax], esi
xor ebp, ebp
jmp 0x88f9c6
cmp ebp, 4
jmp 0x88f91e
add edi, 4
mov eax, edx
sub eax, edi
cmp eax, 2
jl 0x88f9c1
mov esi, dword [esp]
mov ebp, 0xffffffff
movzx ecx, byte [edi]
movzx eax, byte [edi + 1]
test cl, cl
jne 0x88f961
movzx eax, byte [esi + eax + 0x48]
jmp 0x88f970
movsx ecx, cl
movsx edx, al
call fcn.0088b750
mov edx, dword [esp + 0x1c]
lea ecx, [eax - 9]
cmp ecx, 2
jb 0x88f99c
cmp eax, 0x15
je 0x88f99c
cmp eax, 0xb
jne 0x88f992
add edi, 2
mov eax, dword [esp + 0x20]
mov ebp, 5
mov dword [eax], edi
jmp 0x88f9c6
mov eax, dword [esp + 0x20]
xor ebp, ebp
mov dword [eax], edi
jmp 0x88f9c6
add edi, 2
mov eax, edx
sub eax, edi
cmp eax, 1
jg 0x88f94f
jmp 0x88f9c6
add edi, 4
jmp 0x88f985
lea eax, [esi + 2]
mov ebp, edx
mov edi, esi
sub ebp, eax
cmp ebp, 1
jg 0x88f884
mov ebp, 0xffffffff
mov eax, ebp
add esp, 8
pop esi
pop edi
pop ebx
pop ebp
ret