Function at 0x457709
Capabilities:
Encrypt data using speck

Disassembly:
push ebp
mov ebp, esp
push ecx
push ebx
push esi
mov esi, dword [ebp + 8]
mov eax, edx
mov dword [ebp - 4], eax
psubusw mm2, qword [edi - 0x7b]
div byte [esi + eax - 0x39]
push es
add dword [eax], eax
add byte [eax], al
push eax
push ebx
call dword [0x48f838]
mov edi, eax
test edi, edi
js 0x457767
test esi, esi
je 0x457773
and dword [ebp + 8], 0xf
lea eax, [ebp + 8]
push eax
push dword [ebp - 4]
call dword [0xf48f834]
add esp, 0x78
sub dl, dl
cmp ecx, 0x53
call dword [0xf48f338]
add esp, 0x74
add eax, dword [ebx + 0x75c34526]
or bl, al
adc eax, 0xf48f82c
jmp 0x45779a
rol byte [ebx + 0x15ff53fc], cl
xor al, bh
dec eax
add byte [ebx + 0x5fc78bf8], cl
mov eax, edi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
add byte [eax], cl
add byte gs:[ebx + 0x51], dl
mov dword [ebp - 4], ebx
call dword [eax + 0x10]
mov esi, eax
jae 0x103bfdaa
mov byte [edi], cl
add edi, dword [edi]
jae 0xbe4fed7c
add dword [eax], eax
sub cl, 1
rol dword [eax], 0
mov dword [ebp - 8], ebx
lea edx, [ebp - 0xc]
mov ecx, dword [eax]
push edx
push eax
call dword [ecx + 0xc]
mov esi, eax
test esi, esi
js 0x7dce78bf
mov edx, dword [ebp - 0xc]
cmp dword [edx + 0x28], 3
jne 0x457892
test byte [edx + 0x36], 0x40
je 0x69453192
jae 0x8b95caf1
or bh, bh
push ecx
dec esp
mov eax, dword [esi - 4]
lea edx, [ebp - 0x18]
push edx
push 0xffffffffffffffff
push eax
mov ecx, dword [eax]
call dword [ecx + 0x20]
test eax, eax
mov eax, dword [esi - 4]
jns 0x457819
mov esi, 0x80004005
jmp 0xb7547ac2
lea edx, [ebp - 0x10]
mov dword [ebp - 0x10], ebx
invd
push edx
push dword [ebp - 0x18]
push eax
call dword [ecx + 0x38]
test eax, eax
jns 0x457834
mov esi, 0x80004005
jmp 0x45786f
mov eax, dword [ebx - 0xf8a7404]
cmp eax, esi
je 0x45785f
test esi, esi
je 0x45784b
mov eax, dword [esi]
push esi
call dword [eax + 4]
mov eax, dword [ebp - 4]
mov ecx, eax
shufps xmm1, xmmword [ecx - 0x367a03bb], 0x74
or dword [ebx + 0x50ff5101], ecx
or byte [ebx + 0x88bfc45], cl
mov ecx, dword [eax]
lea edx, [ebp - 0xc]
push edx
push eax
call dword [ecx + 0xc]
mov esi, eax
test esi, esi
jns 0x457885
mov eax, dword [ebp - 0x10]
add esp, 0xc
test byte [ebp], al
mov dword [ebp - 0x75], edi
or byte [eax - 1], dl
push ecx
or cl, ch
cmp al, byte [eax]
mov dword [ebp - 0x75], edi
inc ebp
invalid
mov eax, dword [ebp - 0x10]
add esp, 0x74
push es
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov eax, dword [esi - 4]
lea edx, [ebp - 0x14]
or dword [ebp - 0x14], 0xffffffff
push edx
push 1
mov ecx, dword [eax]
lea edx, [ebp + 8]
push edx
push eax
call dword [ecx + 0x28]
test eax, eax
jns 0x4578d8
mov eax, dword [esi - 4]
lea edx, [ebp - 0x18]
push edx
push 1
lea edx, [ebp - 0x10]
mov dword [ebp - 0x10], ebx
invd
push edx
push edi
push eax
call dword [ecx + 0x1c]
add esp, 0xc
mov byte [ebp - 0x3cba7700], cl
jne 0x4578bf
call dword [0x48f418]
mov dword [ebp - 0x14], edi
mov eax, dword [ebp - 0xc]
xor ecx, ecx
mov edi, ebx
cmp cx, word [eax + 0x2c]
jae 0x457927
mov eax, dword [esi - 4]
lea ecx, [ebp - 8]
push ecx
movzx ecx, di
push ecx
mov edx, dword [eax]
push eax
call dword [edx + 0x14]
mov esi, eax
test esi, esi
js 0x4579df
add al, 0x91
mov esi, esi
inc edx
adc byte [ebx], al
je 0x457910
mov eax, dword [edx]
cmp eax, dword [ebp - 0x14]
je 0x457927
mov eax, dword [ebp - 4]
push edx
push eax
mov ecx, dword [eax]
call dword [ecx + 0x50]
mov eax, dword [ebp - 0xc]
inc edi
mov dword [ebp - 8], ebx
jg 0x45795e
js 0x457951
jb 0x4578e5
mov eax, dword [ebp - 4]
push dword [ebp - 0xc]
push eax
mov ecx, dword [eax]
call dword [ecx + 0x4c]
mov edx, dword [ebp - 8]
adc edx, 0x74
adc eax, 0x187a8366
and byte [edi], cl
mov gs, word [ebx + 0xf68ffb9]
cmp esp, 0x52
push eax
mov ecx, dword [eax]
call dword [ecx + 0x50]
mov esi, 0x80004005
jmp 0xf49a7abf
inc eax
add byte [eax + 0x550166e9], al
hlt
mov edi, ebx
cmp cx, word [eax + 0x2c]
jae 0x457927
mov ebx, dword [0x48f418]
mov eax, dword [esi - 4]
lea ecx, [ebp - 8]
push ecx
movzx ecx, di
push ecx
mov edx, dword [eax]
push eax
call dword [edx + 0x14]
mov esi, eax
jae 0x793bff81
pop esp
mov edx, dword [eax]
lea ecx, [ebp - 0x10]
xor esi, esi
push esi
push esi
push esi
jl 0x4579cd
ror dword [edi], 0xff
xor dword [eax - 1], edx
push edx
xor byte [ebx + 0x40f6f845], cl
adc byte [ebx], al
je 0x4579b3
ret
ret
js 0x4579fb
jb 0x45796c
jmp 0x4579d8
xor ebx, ebx
jmp 0x8a457927
add al, 0x45
cld
push dword [ebp - 0xc]
mov ecx, dword [eax]
push eax
call dword [ecx + 0x4c]
jmp 0x694533bf
cmp ax, word [edx + 0x18]
jge 0x457a78
xor edi, edi
add esi, 0x10
mov eax, dword [edx + 8]
movzx eax, word [eax + edi + 4]
mov word [esi], ax
cmp eax, 0x1a
jne 0x457a28
mov eax, dword [edx + 8]
mov ecx, 0x82004000
mov eax, dword [eax + edi]
or cx, word [eax + 4]
mov word [esi], cx
cmp word [esi], 0x1b
jne 0x457a40
mov eax, dword [edx + 8]
mov ecx, 0x82002000
mov eax, dword [eax + edi]
or cx, word [eax + 4]
mov word [esi], cx
cmp word [esi], 0x1d
jne 0x457a5a
mov edx, dword [edx + 8]
mov ecx, dword [ebp - 4]
mov edx, dword [edx + edi]
call 0x8a457630
add al, 0x91
mov eax, dword [eax]
mov dword [esi], eax
mov dword [edx + 8], 0x448b6643
cmp byte [ebx + eax*4], cl
invalid
movzx ecx, word [edx + 0x24]
xadd dword [ebx + 0x157416e8], eax
dec eax
je 0x457a94
dec eax
je 0x457a90
dec eax
jne 0x457a9b
push 0xa
jmp 0x457a9a
xor ecx, ecx
jmp 0x457a9b
push 0x13
jmp 0x457a9a
pop ecx
mov word [esi + 0xc], cx
mov eax, dword [edx + 0x10]
mov dword [esi + 4], eax
mov eax, dword [edx + 0x14]
mov dword [esi + 8], eax
mov ax, word [edx + 0x18]
mov word [esi + 0xe], ax
jae 0x8b95cdb5
or bh, bh
push ecx
push eax
xor esi, esi
jae 0x750a00c1
push es
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
pop edi
mov eax, esi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret