Function at 0x691490
Capabilities:
Encrypt data using speck

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0xc
mov edx, dword [ebp + 0xc]
mov eax, dword [ebp + 8]
test edx, edx
mov esi, dword [eax]
mov edi, dword [eax + 4]
je 0x6916a9
test esi, esi
je 0x6916b1
mov eax, edi
mov edx, esi
sar eax, 0x1f
mov ebx, eax
sar edx, 0x1f
xor ebx, edi
sub ebx, eax
mov eax, edx
xor eax, esi
sub eax, edx
xor edx, edx
or ebx, eax
cmp ebx, 0xffff
jg 0x6916d6
cmp ebx, 0xff
jle 0x6914e8
sar ebx, 8
add edx, 8
cmp ebx, 0xf
jle 0x6914f3
sar ebx, 4
add edx, 4
cmp ebx, 3
jle 0x6914fe
sar ebx, 2
add edx, 2
xor eax, eax
cmp ebx, 2
setge al
add edx, eax
cmp edx, 0x1b
jle 0x6916bb
lea ecx, [edx - 0x1b]
mov ebx, esi
mov edx, edi
sar ebx, cl
sar edx, cl
neg ecx
mov dword [ebp - 0x18], ecx
jmp 0x69152e
add dword [ebp + 0xc], 0xb40000
neg ebx
neg edx
cmp dword [ebp + 0xc], 0xffa60000
jle 0x691523
cmp dword [ebp + 0xc], 0x5a0000
jle 0x691554
sub dword [ebp + 0xc], 0xb40000
neg ebx
neg edx
cmp dword [ebp + 0xc], 0x5a0000
jg 0x691540
mov eax, dword [ebp + 0xc]
test eax, eax
js 0x6916ec
mov edi, ebx
lea esi, [edx + ebx*2]
mov ebx, dword [ebp + 0xc]
lea eax, [edx + edx]
sub edi, eax
sub ebx, 0x3f6f59
xor ecx, ecx
jmp 0x691591
mov edx, esi
mov eax, edi
sar edx, cl
sar eax, cl
sub edi, edx
sub ebx, dword [ecx*4 + 0xb09004]
add ecx, 1
add esi, eax
cmp ecx, 0x17
je 0x6915b1
test ebx, ebx
jns 0x691576
mov edx, esi
mov eax, edi
sar edx, cl
sar eax, cl
add ebx, dword [ecx*4 + 0xb09004]
add ecx, 1
sub esi, eax
cmp ecx, 0x17
lea edi, [edx + edi]
jne 0x691591
mov edx, edi
sar edx, 0x1f
mov eax, edx
xor eax, edi
sub eax, edx
mov edx, eax
and eax, 0xffff
shr edx, 0x10
imul ecx, edx, 0x4585
imul edx, edx, 0xb9e9
mov dword [ebp - 0x10], ecx
imul ecx, eax, 0x4585
imul eax, eax, 0xb9e9
add edx, ecx
shr eax, 0x10
lea ebx, [eax + edx]
mov ecx, ebx
shr ecx, 0x10
add ecx, dword [ebp - 0x10]
cmp eax, edx
cmovae edx, eax
cmp edx, ebx
mov edx, esi
lea eax, [ecx + 0x10000]
cmova ecx, eax
mov eax, ecx
neg eax
add edi, 1
cmovg eax, ecx
sar edx, 0x1f
mov dword [ebp - 0x14], eax
mov eax, edx
xor eax, esi
sub eax, edx
mov edx, eax
and eax, 0xffff
shr edx, 0x10
imul ecx, eax, 0x4585
imul edi, edx, 0x4585
imul eax, eax, 0xb9e9
imul edx, edx, 0xb9e9
shr eax, 0x10
add edx, ecx
lea ebx, [eax + edx]
mov ecx, ebx
shr ecx, 0x10
add ecx, edi
cmp eax, edx
cmovae edx, eax
cmp edx, ebx
mov ebx, ecx
lea eax, [ecx + 0x10000]
cmova ebx, eax
mov eax, ebx
neg eax
add esi, 1
cmovle ebx, eax
mov eax, dword [ebp - 0x18]
test eax, eax
jle 0x691704
mov ecx, dword [ebp - 0x18]
mov eax, 1
mov edx, dword [ebp - 0x14]
sar dword [ebp - 0x14], 0x1f
sub ecx, 1
shl eax, cl
movzx ecx, byte [ebp - 0x18]
add edx, eax
add edx, dword [ebp - 0x14]
lea eax, [ebx + eax]
sar ebx, 0x1f
sar edx, cl
mov ecx, dword [ebp + 8]
add eax, ebx
mov dword [ecx], edx
movzx ecx, byte [ebp - 0x18]
mov edx, dword [ebp + 8]
sar eax, cl
mov dword [edx + 4], eax
add esp, 0xc
pop ebx
pop esi
pop edi
pop ebp
ret
test edi, edi
jne 0x6914b4
jmp 0x6916a9
mov dword [ebp - 0x18], 0x1b
mov ebx, esi
sub dword [ebp - 0x18], edx
mov edx, edi
movzx ecx, byte [ebp - 0x18]
shl ebx, cl
shl edx, cl
jmp 0x69152e
sar ebx, 0x10
mov dl, 0x10
cmp ebx, 0xff
jle 0x6914e8
jmp 0x6914e2
lea eax, [ebx + ebx]
mov esi, edx
lea edi, [ebx + edx*2]
mov ebx, dword [ebp + 0xc]
sub esi, eax
add ebx, 0x3f6f59
jmp 0x691572
mov ecx, dword [ebp - 0x18]
mov eax, dword [ebp + 8]
neg ecx
shl dword [ebp - 0x14], cl
mov edx, dword [ebp - 0x14]
shl ebx, cl
mov dword [eax + 4], ebx
mov dword [eax], edx
add esp, 0xc
pop ebx
pop esi
pop edi
pop ebp
ret