Function at 0x4940c9
Capabilities:
Encrypt data using speck

Disassembly:
test byte [ebx + 0x49c69435], 0x49
je 0x493f9d
test edi, edi
jne 0x493fc3
lea ecx, [ebp - 0x10]
push ecx
push 0
push 0xa2e81009
push eax
call esi
push 4
push dword [ebp - 4]
push ebx
push esi
clc
adc al, 0x75
jne 0x493fd2
push dword [ebp + 0x18]
jne 0x493fd2
push dword [ebp + 0x18]
push 0x24
push dword [ebx]
call dword [0xe449c6bc]
mov ecx, dword [ebp + 0x14]
lea edx, [ebp - 0x20]
push 1
push 1
call fcn.0046ed82
call [ecx + 0x59]
pop ecx
pop ecx
lea eax, [ebp - 0x20]
push eax
push 0
push 0x741002
push dword [ebx]
call esi
cmp dword [0x4d18b8], 0
jne 0x493ff8
mov ecx, 0xe00003e4
mov word [ebx - 0x1b5d177a], cx
mov al, 1
push ss
test edx, edx
leave
adc eax, 0x151fb028
jo 0x493f90
inc ebp
sub byte [ebx + 0x575fff8], al
mov eax, 0xa2e801a2
push ebx
push esi
push edi
or eax, 0xe
push eax
call 0xe4eb8198
xor esi, esi
call [ebp + 8]
push esi
push ecx
adc al, 0x75
adc byte [esi + 0x56], dl
adc al, 0x75
sbb al, 0xff
jne 0x494047
push eax
mov eax, dword [ebp + 0x2c]
inc eax
neg eax
push esi
sbb eax, eax
and eax, dword [ebp + 0x2c]
push 0x49cbf8
push eax
push ebx
call 0xd406077
mov ebp, 0x7890c7d
or al, 0xbd
jge 0x494057
mov dword [edi], eax
mov ecx, dword [edi]
je 0xa331410d
cmp dword [ebp + 0x20], 0xffffffff
and bh, bh
mov eax, 0xe4a2e896
jne 0x494063
mov dword [ebp + 0x20], eax
cmp dword [ebp + 0x24], 0x53
push esi
add ecx, dword [ecx + 0x35392445]
mov eax, 0x75004d18
or al, 0xb8
in al, 3
add al, ah
mov word [edi - 0x1b5d177a], ax
lea eax, [ebp + 0x24]
push eax
lea eax, [ebp + 0x20]
push eax
inc dword [eax]
adc al, 0x57
call 0x494985d8
mov ecx, dword [edi]
je 0x494105
push esi
push dword [ebp + 0x24]
push ebx
push esi
and byte [esi*2 + 0x1875ff1c], dl
push dword [edi]
call dword [0x4949c70c]
push esi
call dword [0x49c0f8]
push 0
push 0
push 0xfe000173
push dword [edi]
mov esi, eax
call dword [0x4949c694]
push eax
push esi
call dword [0x49c120]
ror dword [ecx], 0x6a
add byte [edx], ch
push esi
call dword [0x49c140]
push esi
mov dword [ebp + 0x24], eax
call dword [0x49c144]
push 0xffffffffffffffec
push dword [ebx]
call dword [0x4949c668]
test eax, 0xa208e800
je 0x494101
push 1
push 0x24
push dword [ebp + 0x24]
push dword [ebx]
call dword [0x2492c508]
mov al, 1
jmp 0x49410f
push dword [edi]
call dword [0x4949c648]
xor al, al
push ss
test edx, edx
adc eax, 0x1fb02815
adc eax, 0x28458b70
inc eax
neg eax
push esi
sbb eax, eax
and eax, dword [ebp + 0x28]
push edi
push eax
call 0xe4eb8198
xor esi, esi
push esi
push ecx
adc al, 0x75
adc bh, bh
jne 0x49415a
push ebx
push esi
and byte [esi*2 + 0x1875ff1c], dl
push eax
mov eax, dword [ebp + 0x2c]
inc eax
neg eax
push esi
sbb eax, eax
and eax, dword [ebp + 0x2c]
push 0x4c7ea4
push eax
inc dword [eax]
or al, ch
sbb eax, 0xbd0cf71f
jge 0x494169
mov ebp, 0x7890c7d
mov dword [edi], eax
mov ecx, dword [edi]
jne 0x494167
xor al, al
jmp 0x4941c3
push ebx
mov ebx, 0xffe4a2e8
push ebx
call 0x54492610
push esi
mov esi, dword [0x4949c694]
push 0xa2e82001
push eax
call esi
salc
push ebx
xor ebx, ebx
push ebx
push 0xfe000409
push dword [edi]
call esi
push ebx
push ebx
push 0xfe000402
push dword [edi]
call esi
push 0x640000
push ebx
push 0xfe000401
push dword [edi]
call esi
push ebx
inc ebx
push ebx
push 0xfe000404
push dword [edi]
call esi
cmp dword [0x4d18b8], 0
jne 0x4941c0
mov word [edi - 0x1b5d177a], bx
mov al, bl
pop ebx
pop edi
pop esi
adc eax, 0x1fb02815
adc eax, 0x28458b70
inc eax
neg eax
sbb eax, eax
and eax, dword [ebp + 0x28]
or eax, 9
push eax
call 0xe4eb8198
xor ecx, dword [ebp + 8]
cmp byte [ecx + 0x69], 0
jne 0x4941f2
or eax, 0xe83c00a2
mov byte [ecx + 0x69], 1
push esi
push 1
push ecx
adc al, 0x75
adc bh, bh
jne 0x494220
push ebx
push esi
and byte [esi*2 + 0x1875ff1c], dl
push eax
mov eax, dword [ebp + 0x2c]
inc ebp
sub al, 0xff
add byte [eax + eax*2], dl
neg eax
push 0x4c7e0c
sbb eax, eax
and eax, dword [ebp + 0x2c]
push eax
push ecx
call fcn.00406077
mov esi, dword [ebp + 0xc]
mov dword [esi], eax
mov ecx, dword [edi]
jne 0x49422d
xor al, al
jmp 0x49424f
push 0x12
call dword [0x2492c51c]
mov dword [esi + 0x4c], eax
cmp dword [0x4d18b8], 0
jne 0x49424d
mov ecx, 0xe00002e4
mov word [esi - 0x1b5d177a], cx
mov al, 1
pop esi
adc eax, 0x1fb02815
adc eax, 0x28458b70
xor ecx, ecx
inc ecx
cmp eax, 0xffffffff
jne 0x494264
mov eax, ecx
push ebx
push esi
push edi
push eax
call 0xa3318198
xor edi, edi
mov ebx, eax
mov eax, dword [ebp + 0x2c]
push edi
push ecx
adc al, 0x75
adc byte [eax - 1], al
jne 0x4942a1
neg eax
push ebx
push esi
and byte [ebx], bl
rcl byte [esi*2 + 0x2c45231c], 0xff
add byte [eax], bl
push ebx
push edi
push 0x4c7ec8
push eax
inc dword [eax]
or al, ch
ficomp dword [0x758bfff7]
or al, 0x89
push es
mov ecx, dword [edi]
jne 0x4942aa
xor al, al
jmp 0x4942ef
inc ebp
push edi
push edi
mov edi, dword [0x4949c694]
push 0xa2e80405
push eax
call edi
test bl, 1
je 0x4942dc
push 0x640000
push 0
push 0xa2e80406
push dword [esi]
call edi
push 0
push 0xa
push 0xa2e80414
push dword [esi]
call edi
xor eax, eax
inc eax
cmp dword [0x4d18b8], 0
jne 0x4942ef
mov word [esi - 0x1b5d177a], ax
push ss
test edx, edx
adc eax, 0x1fb02815
adc eax, 0x8bfb5370
jne 0x494331
inc dword [ebx - 0x17c37742]
mov byte [0xba850f00], al
add byte [eax + eax - 0x75], dh
inc ebp
sub byte [eax - 9], al
fcomp dword [ebx]
shl byte [ebx], 0x45
sub byte [0x4014000], cl
push eax
call 0xa3318198
mov ecx, dword [ebp + 0x2c]
mov edx, eax
mov eax, dword [ebp + 0x20]
inc ecx
neg ecx
mov ebx, 0xe4a2e896
sbb ecx, ecx
in al, 0x1b
leave
and ecx, dword [ebp + 0x2c]
cmp eax, 0xffffffff
jne 0x494341
mov eax, ebx
mov dword [ebp + 0x20], eax
mov edi, dword [ebp + 0x24]
or dword [edi + edi*8], 0x24
add cl, byte [ebx + 0x51016afb]
adc al, 0x75
adc byte [edi + 0x50], dl
adc al, 0x75
sbb al, 0xff
jne 0x494371
push edx
push 0x2492e918
push 0x4c7f28
push ecx
push esi
call 0xfb406077
mov ebx, dword [ebp + 0xc]
mov dword [ebx], eax
mov ecx, dword [edi]
je 0x4943c6
pcmpeqb mm2, qword [edx + 0x6a]
and byte [edi + 0x53], dl
push 0x20
push edi
push ebx
push esi
and byte [esi*2 + 0x1875ff1c], dl
push 0xffffffffffffffff
xor al, al