Function at 0x87631d
Capabilities:
Encrypt data using speck

Disassembly:
shl dword [esp + eax], 0x12
dec dl
bts ax, ax
cbw
adc dword [esp + eax - 1], 0xedb05a29
xor dl, 0x11
and byte [esp + eax - 1], ah
xadd dword [esp + eax*2 - 2], eax
cwde
adc dl, 0x91
neg dword [esp + eax*2 - 0xb400]
xor eax, eax
shr byte [esp + eax + 2], 0xc2
neg dl
xadd dword [esp + eax], eax
ror dl, 1
xor bl, dl
sub dword [esp + eax*2 - 0x24274bfe], eax
pop eax
sub al, al
adc edx, esp
shl al, 0x65
bts ax, 0x8a
sal ax, 7
mov byte [eax + edx], cl
mov edx, 0x2285921c
add eax, esi
jmp eax
mov eax, dword [ebp + ebx*4]
push 0x403b471d
shl byte [esp + 1], 0xc4
jne 0x75c101
mov dword [esp], eax
jae 0x8b4643
mov eax, 0xaa2cd934
movzx edx, ax
mov ecx, dword [edx + edi - 0xd934]
and al, ah
adc dl, ah
cwd
lea edi, [edi + edx*4 - 0x3fff8]
sal eax, 0xaa
xadd dl, dh
xor ecx, ebx
lea ecx, [edx + ecx - 0x622ded93]
not edx
xadd dx, ax
neg edx
bswap ecx
push edx
neg ecx
shl eax, 0xdf
rol ecx, 2
shr al, 0x26
xchg byte [esp + edx - 0xbffd], dl
xor ebx, ecx
or eax, 0xf6b353a4
btc edx, eax
adc esi, ecx
push eax
lea ecx, [eax + 0x6812ae2e]
jmp 0x85e74e
add cl, 0xe
jle 0x8b66f2
lea edi, [edi + ecx*4 - 0x36]
mov word [edi + ecx*4 - 0x38], ax
movzx edx, cl
btr edx, edx
xor cx, 0x2721
jmp esi
call fcn.00c15929
call fcn.00757a62
mov edx, 0x8f3f149e
mov edx, dword [esi]
mov ecx, 0xc1076093
movzx eax, byte [edi]
call fcn.00c19c4e
mov dword [edi], eax
mov eax, 0x312e320c
mov eax, dword [esi + eax - 0x312e320c]
mov ecx, 0xe10354b9
add esi, 4
btc ecx, ecx
rol cx, 0xc8
xor eax, ebx
lea ecx, [ecx*8 - 0x12599a7a]
xor eax, 0x872756b1
rol eax, 3
movsx edx, cx
xadd dx, cx
neg eax
rol edx, cl
sal cx, 0x88
imul ecx, ecx
not eax
bswap eax
btr edx, 5
xor edx, ecx
xor ebx, eax
imul edx, edx
jno fcn.00865a10
add ebp, eax
jmp ebp
mov edx, dword [edx + ebp - 0xbf10]
btr ecx, 0x36
neg ax
mov eax, dword [ebp + ecx - 0x5e8601ce]
bt ecx, ecx
sal cl, 0xc4
adc ecx, ecx
mov cl, byte [ebp + 8]
push 0xbdaf0fbc
not byte [esp + 0xb]
adc ebp, 6
add dword [esp + 8], 0xf18e0b2e
push 0xc89e0b1d
push 0xc097f133
shld edx, eax, cl
mov dword [ebp], edx
mov eax, 0xd3b62e88
pop ecx
mov dword [esp + ecx*2 + 0x7ed01d9a], esi
ret 0xc
or eax, eax
sbb ecx, 0xbb915297
sub eax, 0x4e88c10e
bts dx, 0x97
rol ecx, 1
push eax
or eax, eax
inc ecx
btr dx, 0x38
not ecx
and edx, edx
setle dl
xor ebx, ecx
bswap eax
mov dword [esp + edx - 0x708fd3fc], eax
btc dx, 0xbb
adc edi, ecx
mov ax, word [esi + edx - 0x708fdc00]
mov dx, word [esi + edx - 0x708fdbfe]
mov cl, byte [esi + 4]
add esi, 4
call fcn.008288db
movzx dx, byte [ebp]
mov eax, 0x708f8035
call fcn.008b59d8
mov eax, 0x768503be
mov eax, dword [esi + eax - 0x768503be]
mov edx, 0xaf84f11d
movzx ecx, dx
movzx dx, byte [eax + ecx*2 - 0x1e23a]
neg ecx
movzx eax, cl
lea esi, [esi + eax - 0xe1]
btc ecx, 0xa9
sub al, 0xb0
bts ecx, 0x9d
mov word [esi + eax - 0x33], dx
shl ecx, cl
mov edx, dword [ebp + eax*8 - 0x198]
inc ecx
xchg ecx, eax
btr eax, 8
lea ebp, [ebp + ecx*2 - 0x62]
cwde
xor edx, ebx
rol edx, 3
xor edx, 0x8496a70b
bt ax, 0x8f
rol edx, 3
bswap edx
dec ecx
xchg cx, ax
jno 0xc47f28
push 0xed8dc537
lea esp, [esp + 0x10]
je 0xc15933
mov eax, 0xa6222f94
jmp 0xb63ed5
inc cl
not cl
bswap edx
ror cl, 1
cwd
sub cl, dl
ror edx, 0xc5
inc al
dec eax
xor cl, 0x32
push edx
ror dword [esp], 0x1f
btr eax, edx
xor bl, cl
cdq
rol dl, 0x21
neg dword [esp + edx]
mov word [eax + ebp - 0x2b09829d], cx
xor eax, eax
setae byte [esp + eax]
adc eax, dword [esi + eax*4 - 5]
mov ecx, edx
lea esi, [edx + esi - 5]
add dl, 0x99
xchg edx, ecx
xor eax, ebx
dec eax
not eax
add ecx, edx
neg eax
rol eax, 3
rol cx, 0xa3
not edx
bswap eax
sbb edx, edx
btc dx, dx
inc dl
ror eax, 2
not word [esp + edx]
inc dword [esp + ecx*8 - 0x2640]
pop edx
xor ebx, eax
xor ecx, edx
shr edx, 0xfd
setbe cl
add edi, eax
movsx eax, dx
cwd
inc eax
add dl, byte [ebp + edx*4 - 2]
btc eax, eax
mov cl, byte [ebp + eax*8 - 0x840]
inc al
and dl, cl
bt eax, eax
call fcn.00b7cf5f
mov edx, 0xd1b4eb8c
lea ecx, [edx + edx*8 - 0x7463a849]
mov ecx, dword [ebp]
add ebp, 4
xor ecx, ebx
movsx eax, dx
bt ax, dx
sar edx, 0xb2
rol ecx, 1
not ecx
inc ecx
xor ecx, 0xeb828fb2
neg dl
not ecx
not eax
bswap ecx
cdq
neg ecx
shr eax, 0xbe
shr eax, 0x28
push eax
xor ebx, ecx
cwde
add esi, ecx
bts eax, eax
add edx, dword [edi + edx*2]
movzx ecx, word [esp + eax - 1]
xor eax, eax
pop ecx
adc al, byte [edx + eax*2]
jmp 0x7aa002
push 0x212dfc08
jne 0xc1fc64
mov edx, 0xaf94cb07
movzx ecx, byte [edi]
movzx edi, dx
xor cl, bl
rol cl, 1
sub di, 0x402c
dec cl
imul edx, edx
mov eax, edx
jb 0xbad8be
bswap ecx
xor eax, ebx
movzx edx, cx
not dl
inc eax
btr cx, dx
rol eax, 3
add edx, edx
dec edx
bswap eax
xor eax, 0x63b68cb6
not ecx
ror edx, 0x59
rol dx, 3
xor ebx, eax
sar edx, cl
adc ebp, eax
neg edx
movzx ecx, byte [edi]
adc edi, 0
xor cl, bl
rol edx, 0x10
movzx eax, dx
not cl
btr edx, edx
sal dx, 0xab
shl dl, 0x61
dec cl
add dx, dx
ror cl, 1
neg cl
xor cl, 0xba
sar eax, 0x1d
call fcn.007d504e
mov eax, 0xbb9f8694
mov ecx, eax
bt eax, 0x24
mov edx, dword [esi]
imul ax, ax
jo 0xc4c0be
mov edx, 0xa4ad9c91
push edx
call fcn.00c5e690
mov cl, 0xa7
pop ss
jnp 0x8b4718
pop es
jg 0x8b4708
fidivr dword [ecx + 0x37]
out 0xd6, eax
fidivr dword [ecx - 0x11]
stosd dword es:[edi], eax
xchg esi, eax
fidivr dword [ecx - 0x31]
and edi, ecx
pop edi
fidivr dword [ecx + 0x3f]
movlhps xmm3, xmm2
jl 0x8b4736
dec edi
sbb ebx, dword [esi - 0x26]
jl 0x8b473c
fidivr dword [ecx + 0x67]
push ds
push ds
fidivr dword [ecx + 7]
salc
inc esp
push ds
inc esi
shr dword [esp + ecx*4 - 0x19e422c], 0x2f
mov dh, 0x8a
mov es, word [eax + eax]
add byte [eax], al
sub byte [eax - 0xb3afaea], 0xc
test al, 0x16
add eax, 0x1f0cf4c5
pop ds
test dword [edx + 0x30e07083], edi
test esi, esp
ret
shl byte [esp + eax - 0x62026b2a], 0xe2
rol edx, 2
xor ecx, 0xb7037419
jne 0xc4a21e
jmp 0x73f3f3
xor cl, 0x11
rol cl, 1
shl edi, 0x2d
mul dx
inc edi
inc cl
xor cl, 0xbb
inc edx
btr edx, eax
xor bl, cl
add ecx, esp
not dx
add edx, 0x2da62f91
mov edx, dword [ecx + edx - 0x20c32ce4]
bt edi, 0xb7
movsx ecx, ax
mov edi, edx
xadd ecx, eax
jle 0x7998f8
mov eax, 0xc807d20f
mov eax, dword [ebp]
call eax
mov edx, 0x82afcabb
mov ebp, dword [ebp - 4]
mov esi, 0xf8361533
lea edi, [edx + 0x3097c4b9]
mov dword [ebp], eax
bt dx, si
call fcn.008c25cf
mov eax, 0x6dbf0510
movsx ecx, ax
call fcn.008a5a24
mov edx, dword [ebp]
mov eax, 0xc2282514
sub al, ah
adc ebp, 3
xor edx, ebx
mov ecx, eax
sub ecx, eax
not edx
sal eax, 0x8b
adc edx, ecx
add eax, ecx
ror cl, 0xc6
ror edx, 3
neg edx
push ecx
xor ebx, edx
add esi, edx
add cx, word [edi + ecx*2]
movzx edx, ax
lea edi, [edi + eax - 0x412f77fe]
rol ax, 0x4d
cbw
movzx edx, byte [ebp + edx*4 - 0x1e000]
lea ebp, [ebp + eax - 0x412effff]
add eax, 0xd21e222c
xor dl, bl
sub eax, eax
sbb dl, 0x14
xor dl, 0x33
jmp 0x724d25
dec ebx
push 0xa00c5a01
jmp 0x7e87e8
xor edx, 0x31a2af24
bswap ecx
xor ebx, edx
dec eax
push ecx
dec ax
add edi, edx
sar ecx, 0xa
ror byte [esp + ecx*2 - 0xcb2fd], 0x23
mov dword [esp + ecx - 0x65980], edi
ret
lea edx, [edx + ecx*2 + 0xf510eac]
or dword [esp + ecx - 0xc9f6e2f], eax
mov word [esp + ecx*4 - 0x327db8bb], 0x9f84
xor ebx, edx
add ebp, edx
pop ecx
mov edx, ecx
mov cx, word [eax + edi - 0x62026b2b]
rol al, 0xc6
lea edi, [edi + eax - 0x62026bc8]
add eax, 0xcb937d07
imul ax, ax
rol al, 0x61
movzx eax, byte [esi + eax*2 - 0x5b2af486]
adc esi, 0
rol dl, 0xa1
sbb edx, 0x26008e0c
xor al, bl
btc edx, edx
push edx
adc al, 0x95
neg al
sal edx, 0xc4
xor al, 0x24
rol al, 1
or edx, edx
btc edx, 0xbb
xor bl, al
inc dword [esp]
dec word [esp + 1]
lea eax, [esp + eax + 4]
shr dword [esp], 0xc1
mov byte [eax], cl
pop edx
jmp ebp
adc esi, 3
neg cl
inc eax
xor edx, ebx
rol edx, 3
xadd cx, ax
call fcn.007fd74d
movzx ecx, byte [esi - 1]
mov eax, 0xab09029b
btc eax, 0xf
xor cl, bl
ror cl, 1
lea edx, [eax + eax*8 - 0xc5cdcf9]
sar dx, 9
js 0x87b515
jmp 0x7e88c2