Function at 0x487ce0
Capabilities:
Encrypt data using speck

Disassembly:
sbb al, 0
cmp byte [esi + 0x38], bl
je 0x487bc7
push 1
push ebx
adc al, 0x36
call dword [0xfe28f658]
xor al, al
pop ebx
pop esi
mov ebx, ecx
mov eax, edx
adc byte [eax], al
ror byte [ebx + 0x28458bf1], cl
mov bh, byte [edi + 0x32]
fist dword [edi - 0x7d]
clc
push dword [ebp + 3]
push 0x37
pop eax
or eax, 0x660146b0
push eax
call fcn.0048b8c8
mov ecx, eax
mov edx, 0x33020100
xor eax, eax
inc eax
test edx, ecx
je 0x487c01
xor ecx, edx
mov bl, al
mov eax, dword [ebp + 0x2c]
mov edi, 0x1e070096
xor esi, dword [ebp + 0x20]
inc eax
neg eax
sbb eax, eax
and eax, dword [ebp + 0x2c]
cmp esi, 0xffffffff
jne 0x487c1b
mov esi, edi
mov edx, dword [ebp + 0x24]
cmp edx, 0xffffffff
jne 0x487c25
xor edx, edi
push 0
push ecx
inc ebp
jne 0x487c3b
push edx
push esi
inc ebp
jne 0x487c4c
mov ecx, dword [ecx + 8]
push dword [ebp + 0x18]
push ecx
add dword [edi - 0x18], edx
sub dh, bh
push 0x4bb868
push eax
push esi
call fcn.00401d51
add dl, dh
dec dword [ecx + 0x75008507]
pop es
invalid
pop es
test dword [eax], eax
jne 0x487c58
xor al, al
jmp 0x3bae7cf5
xor ecx, ecx
cmp dword [esi + 0x188], ecx
je 0x487c70
push 0x13
push ecx
push ecx
push ecx
push ecx
push ecx
push eax
call dword [0x48f4d4]
mov eax, dword [edi]
mov dword [esi + 0x1ac], eax
test bl, bl
je 0x487c9d
push 0xfffffffffffffff0
push dword [edi]
mov byte [edi + 0x46b00490], 0x10
push dword [edi + 8]
not byte [edi - 0x3c]
or eax, 0x1b0
push eax
push 0xfffffffffffffff0
push dword [edi]
push dword [edi + 0x10]
cmc
sub dh, bh
cmp byte [esi + 0x38], 0
je 0x487cd4
mov ebx, dword [esi + 0x1c]
lea eax, [ebp + 0x28]
push eax
dec ecx
sub al, 0xb9
mov al, 0x67
dec esp
add byte [eax + 0x45], dl
jne 0x487cc6
call fcn.0040241e
push dword [ebp + 0x28]
push dword [ebp + 0x2c]
call fcn.00402343
cmp ebx, 0xffffffff
je 0x487cd4
push ebx
push dword [ebp + 0x2c]
call fcn.00402343
or dword [esi + 0x1b4], 0xffffffff
xor eax, eax
or dword [esi + 0x1b8], 0xffffffff
add dword [eax], eax
add bh, bh
inc eax
cmp dword [0x4c67b8], 0
jne 0x487cf5
mov word [edi - 0x7b9ff7a], ax
pop edi
xor dword [ebp + 0x5d], 0xffffffc2
sub byte [eax], al
ror byte [ebx + 0x78ec83f1], cl
lea eax, [ebp - 0xc]
mov ecx, 0x4c67b0
push ebx
push esi
push edi
push eax
dec ecx
clc
push eax
inc ebp
jne 0x487d2d
call 0x4640241e
in al, 0
jne 0x487d25
xor al, al
jmp 0x489a15
mov ecx, dword [ebp - 8]
mov eax, dword [0xdb4c6810]
mov eax, dword [eax + ecx*4]
xor ecx, ecx
mov ebx, dword [eax]
cmp dword [ebx + 0x1ac], ecx
je 0x487d1e
mov eax, dword [ebx + 0x1b4]
mov dword [ebp - 0x34], 0x5045eb05
test eax, eax
jns 0x487d55
cmp dword [ebx + 0x1b8], ecx
jl 0x487d62
mov dword [ebp - 0x34], 0x1c27
mov dword [ebp - 0x1c], ecx
mov dword [ebp - 0x18], ecx
test eax, eax
js 0x487d69
clc
mov ebp, eax
or al, 0x83
mov eax, 0x85000001
sar byte [eax + 3], 0xf8
mov esp, esp
mov eax, dword [esp + edx]
lea esi, [ebp - 0x34]
mov dword [ebp - 0x24], eax
lea edi, [ebp - 0x6c]
mov eax, dword [ebp + 0x10]
push 0xa
mov dword [ebp - 0x10], eax
pop ecx
rep movsd dword es:[edi], dword [esi]
mov eax, dword [ebx + 0x1b0]
mov dword [ebp - 0x70], 0xffff0001
cmp dl, 0x74
add ecx, dword [ecx + 0x4d8b9045]
hlt
lds ebx, [eax + eax]
add bl, ch
adc byte [ebx + 0x7e000c7d], al
adc dword [edx], ebp
push eax
jne 0x489a32
push 0x194
push esi
push dword [edi - 0x78]
imul byte [eax]
invalid
xor eax, eax
inc eax
pop esi
mov ebx, ecx
mov eax, edx
or al, 1
jne 0x489a4b
lea edx, [ecx + 0x51]
lea eax, [ebp - 4]
mov ecx, 0x4c67b0
push eax
dec ecx
leave
clc
push eax
inc ebp
jne 0x489a59
call 0x4640241e
in al, 0
jne 0x489a5e
add al, 0x33
shr bl, 0x1b
xor eax, eax
jmp 0x489a79
mov ebp, dword [eax - 4]
mov eax, dword [0xdb4c6824]
push dword [ebp + 0xc]
mov eax, dword [eax + ecx*4]
mov ecx, dword [eax]
add ecx, 0x14
call fcn.004081c3
xor eax, eax
inc eax
mov ebx, ecx
mov eax, edx
or byte [eax], al
ror byte [ebx + 0x1cec83f1], cl
lea eax, [ebp - 0xc]
mov ecx, 0x4c67b0
push eax
dec ecx
cld
push eax
inc ebp
jne 0x489a9d
call 0x4640241e
in al, 0
jne 0x489aa5
pop es
xor eax, eax
jmp 0x39919c0d
mov ebp, dword [eax - 4]
mov eax, dword [0xdb4c6810]
push esi
push edi
add dl, dh
adc al, 0x8b
add al, 0x88
mov ecx, dword [ebp - 0xc]
mov eax, dword [eax]
mov dword [ebp + 8], eax
mov eax, dword [0xdb4c6824]
mov eax, dword [eax + ecx*4]
mov esi, dword [eax]
or eax, 0xffffffff
mov dword [ebp - 0xc], esi
cmp dword [ebp + 0xc], eax
jne 0x489ae4
cmp dword [ebp + 0x10], eax
jne 0x489ae4
cmp edi, eax
jne 0x489ae4
cmp dword [ebp + 0x18], eax
je 0x39919c08
mov eax, dword [esi]
lea ecx, [ebp - 0x1c]
push ecx
push eax
mov dword [ebp + 0x14], eax
call dword [0xfe28f694]
mov edx, dword [ebp - 0x1c]
cmp edi, 0xffffffff
jne 0x489b01
mov edi, dword [ebp - 0x14]
sub edi, edx
cmp dword [ebp + 0x18], 0xffffffff
mov ecx, dword [ebp - 0x18]
jne 0x489b12
mov eax, dword [ebp - 0x10]
sub eax, ecx
mov dword [ebp + 0x18], eax
dec ecx
clc
mov dword [ebp - 8], edx
push eax
xor eax, dword [ebp + 8]
mov dword [ebp - 4], ecx
push dword [eax]
call dword [0xfe28f670]
add byte [eax + 0xc], ch
clc
stc
push dword [ebp + 6]
mov ebp, dword [eax - 8]
mov dword [ebp + 0xc], ecx
mov edx, dword [ebp + 0x10]
cmp edx, 0xffffffff
jne 0x489b40
mov edx, dword [ebp - 4]
mov eax, dword [ebp + 8]
mov dword [eax + 0x58], ecx
mov ecx, dword [ebp + 0x18]
mov dword [eax + 0x5c], edx
mov dword [eax + 0x60], edi
mov dword [eax + 0x64], ecx
movsx eax, word [esi + 0x39490088]
cmp eax, dword [ebp + 0xc]
jne 0x489b83
movsx eax, word [esi + 0x8a]
cmp eax, edx
jne 0x489b83
movsx eax, word [esi + 0x8c]
cmp eax, edi
jne 0x489b83
movsx eax, word [esi + 0x1c8e]
cmp eax, ecx
je 0x489c08
push 1
push ecx
push edi
push edx
push 0x75930438
adc al, 0xff
ja 0x489b91
test dword [eax], 0x4556016a
jne 0x489ba2
call fcn.00401dcf
cmp byte [esi + 0x46b00490], 3
jne 0x489bfd
add al, 0xb0
inc esi
add esi, dword [ebp + 0x55]
mov edx, dword [0xdb4c6834]
push 3
pop edi
cmp edx, edi
jl 0x489bfd
mov esi, dword [ebp + 8]
mov eax, dword [0xdb4c6824]
mov eax, dword [eax + edi*4]
mov ecx, dword [eax]
test ecx, ecx
je 0x489bf5
mov eax, dword [ecx + 4]
cmp eax, dword [esi + 4]
jne 0x489bf5
cmp byte [ecx + 0x46b00490], 0x16
jne 0x489bf5
mov eax, dword [ebp + 0x14]
cmp dword [ecx + 0x34], eax
jne 0x489bf5
push 0
push eax
push 0x469
push dword [ecx]
push dword [edi - 0x78]
imul byte [eax]
dec byte [ebx + 0x4c683415]
fild dword [edi + 0x3b]
cli
inc edi
cmp edi, edx
jle 0x489bb8
mov esi, dword [ebp - 0xc]
push 1
push esi
inc ebp
jne 0x489c0b
call fcn.0048b59b
xor eax, eax
pop edi
inc eax
pop esi
mov ebx, ecx
mov eax, edx
adc al, 0
ror byte [ebx - 0x72aeae0f], cl
inc ebp
cld
mov ecx, 0x4c67b0
push eax
dec ecx
clc
push eax
inc ebp
jne 0x489c30
call 0x4640241e
in al, 0
jne 0x489c35
add al, 0x33
shr bl, 0x6c
xor eax, eax
jmp 0x489ca1
mov edx, dword [0xdb4c6824]
push esi
push edi
add dl, dh
cld
mov eax, dword [edx + edi*4]
mov esi, dword [eax]
xor eax, eax
cmp word [esi - 0x7b9ff7a], ax
je 0x489c5b
mov ecx, dword [ebp + 0xc]
cmp ecx, 0x745b0400
jl 0x489c5f
xor eax, eax
jmp 0x489c9f
test ecx, ecx
jns 0x489c65
mov ecx, eax
lea eax, [ecx - 1]
cmp eax, 0x3fe
ja 0x489c7c
mov word [esi - 0x7b9ff7a], cx
mov edx, dword [0xdb4c6824]
mov ecx, dword [ebp - 8]
mov eax, dword [0xdb4c6810]
mov eax, dword [eax + ecx*4]
mov ecx, dword [eax]
cmp byte [ecx + 0x3a], 0
jne 0x489c9c
mov eax, dword [edx + edi*4]
push 0
push dword [eax]
push ecx
call fcn.00401dcf
xor eax, eax
inc eax
pop edi
or dword [ebx + 0x3fc28bd9], 1
jne 0x489cb6
mov ebx, ecx
mov eax, edx
aas
add dword [ebp + 0xd], esi
lea eax, [ebx - 0x137e7632]
test al, 0
add byte [ecx], al
lea eax, [esp + 0x14]
mov ecx, 0x4c67b0
push esi
push edi
adc al, 0xb9
mov al, 0x67
dec esp
add byte [esi + 0x57], dl
dec byte [ebp + 0x50145024]
inc ebp
jne 0x489ccf
call 0x4640241e
in al, 0
jne 0x489cd7
pop es
xor eax, eax
jmp 0x48a2d9
mov ecx, dword [esp + 0x10]
xor esi, esi
mov eax, dword [0xdb4c6810]
mov edx, dword [esp + 0x1c]
mov dword [esp + 0xc], esi
mov eax, dword [eax + ecx*4]
mov ecx, dword [ebp + 0xc]
mov eax, dword [eax]
add esp, 4
and byte [ecx - 0x24b397dc], ah
mov eax, dword [eax + edx*4]
mov edi, dword [eax]
mov eax, dword [edi]
dec ecx
add al, 0x89
adc al, 0x8a
xchg dword [eax - 0x77b94ffc], edx
inc esp
and al, 0xb
test ecx, ecx
jns 0x489d19
mov ecx, esi
mov dword [ebp + 0xc], ecx
mov eax, ecx
and eax, 0x33020100
add esp, 4
sbb byte [ebp + edx + 0x52], dh
push dword [esp + 0x14]
call 0xe9402343
mov ebp, dword [eax + 0xc]
invalid
pop edi
or dword [ebx + 0x3fc28bd9], 1
jne 0x48a2f0
lea eax, [ebx + 0x65830cec]
cld
clc
dec ecx
clc
push eax
lea eax, [ebp - 0xc]
mov ecx, 0x4c67b0
push eax
inc ebp
jne 0x48a303
inc ebp
hlt
call 0x4640241e
in al, 0
jne 0x48a30b
pop es
xor eax, eax
jmp 0x48a43e
mov ecx, dword [ebp - 0xc]
mov eax, dword [0xdb4c6810]
push ebx
xor byte [eax], al
dec ecx
or al, 0x33
add al, 0x88
mov ecx, dword [ebp - 8]
push edi
mov eax, dword [eax]
mov dword [ebp + 8], eax
mov eax, dword [0xdb4c6824]
mov eax, dword [eax + ecx*4]
mov ecx, dword [0xfe28f688]
mov edi, dword [eax]
mov ebx, dword [edi]
cmp esi, 0xffffffff
je 0x48a3a6
movzx eax, byte [edi + 0x90]
dec eax
dec eax
je 0x48a372
dec eax
je 0x48a375
sub eax, 3
je 0x48a36d
dec eax
je 0x48a368
sub eax, 3
je 0x48a360
sub eax, 0xc
jne 0x48a393
jmp 0xf88ea43b
or esi, 0x400001c
jmp 0x48a393
or esi, 3
jmp 0x48a393
or esi, 0xe
jmp 0x48a393
or esi, 4
push 0
test esi, 0x839
je 0x48a383
push 1
jmp 0x48a38b
or esi, 0x1001c
push 0
push 0xcf
push ebx
call ecx
or esi, 0x5000001c
push esi
push 0xfffffffffffffff0
push ebx
call dword [0xfe28f510]
mov dword [ebp - 4], eax
mov esi, dword [ebp + 0x10]
cmp esi, 0xffffffff
je 0x48a3e3
push esi
push 0xffffffffffffffec
push ebx
call dword [0xfe28f510]
mov ebp, dword [eax - 8]
mov dword [ebp - 4], eax
mov eax, dword [0xdb4c6824]
mov eax, dword [eax + ecx*4]
mov eax, dword [eax]
cmp byte [eax + 0x46b00490], 0x13
jne 0x48a3e3
push esi
push 0
push 0x1036
push ebx
call dword [0xfe28f688]
mov dword [ebp - 4], eax
mov al, byte [edi - 0x4ffb746d]
mov ecx, dword [ebp + 8]
cmp al, 0xff
je 0x48a406
movzx eax, al
cmp eax, dword [ecx + 0x190]
je 0x48a406
push 0
push ebx
call dword [0xfe28f71c]
jmp 0x48a40f
push 1
push edi
push ecx
call fcn.0048b59b
mov al, byte [edi + 0x46b00490]
cmp al, 2
je 0x48a422
cmp al, 3
je 0x48a422
cmp esi, 0xffffffff
je 0x48a433
push 0x27
xor eax, eax
push eax
push eax
push eax
push eax
push eax
push dword [edi]
call dword [0x48f4d4]
xor eax, eax
cmp dword [ebp - 4], eax
setne byte [esi + 8]
mov edx, dword [esi - 0x75]
invalid
mov ebx, ecx
mov eax, edx
or al, 1
jne 0x48a453
lea eax, [ebx - 0x137c7632]
dec eax
lea eax, [esp]
mov ecx, 0x4c67b0
push esi
push edi
dec esp
add byte [esi + 0x57], dl
dec byte [ebp + 0x50105024]
inc ebp
jne 0x48a468
call 0x4640241e
in al, 0
je 0x48a6d6
test byte [ecx + 2], ch
add byte [eax], al
mov ecx, dword [esp + 0xc]
mov eax, dword [0xdb4c6810]
mov eax, dword [eax + ecx*4]
mov ecx, dword [esp + 8]
mov edi, dword [eax]
mov eax, dword [0xdb4c6824]
mov dword [esp + 0xc], edi
mov eax, dword [eax + ecx*4]
mov esi, dword [eax]
mov al, byte [esi + 0x46b00490]
cmp al, 0xe
je 0x48a6d6
cmp al, 0xf
je 0x48a6d6
cmp al, 0xc
je 0x48a6d6
cmp al, 9
je 0x48a6d6
cmp al, 0x14
je 0x48a6d6
cmp al, 0x11
je 0x48a6d6
cmp al, 0x1d
je 0x48a6d6
cmp al, 0x1b
je 0x48a6d6
cmp al, 0x15
je 0x48a6d6
push 0x2c
invalid