Function at 0x4576e2
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 0x457740
test esi, esi
je 0x45774c
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 0x457773
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 0x103bfd83
mov byte [edi], cl
add edi, dword [edi]
jae 0xbe4fed55
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 0x7dce7898
mov edx, dword [ebp - 0xc]
cmp dword [edx + 0x28], 3
jne 0x45786b
test byte [edx + 0x36], 0x40
je 0x145316b
jae 0x8b95caca
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 0x4577f2
mov esi, 0x80004005
jmp 0xb7547a9b
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 0x45780d
mov esi, 0x80004005
jmp 0x457848
mov eax, dword [ebx - 0xf8a7404]
cmp eax, esi
je 0x457838
test esi, esi
je 0x457824
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 0x45785e
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 0x4578b1
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 0x457898
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 0x457900
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 0x4579b8
add al, 0x91
mov esi, esi
inc edx
adc byte [ebx], al
je 0x4578e9
mov eax, dword [edx]
cmp eax, dword [ebp - 0x14]
je 0x457900
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 0x457937
js 0x45792a
jb 0x4578be
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 + 0xf00ffb9]
cmp esp, 0x52
push eax
mov ecx, dword [eax]
call dword [ecx + 0x50]
mov esi, 0x80004005
jmp 0xf49a7a98
inc eax
add byte [eax + 0x550166e9], al
hlt
mov edi, ebx
cmp cx, word [eax + 0x2c]
jae 0x457900
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 0x793bff5a
pop esp
mov edx, dword [eax]
lea ecx, [ebp - 0x10]
xor esi, esi
push esi
push esi
push esi
jl 0x4579a6
ror dword [edi], 0xff
xor dword [eax - 1], edx
push edx
xor byte [ebx + 0x40f6f845], cl
adc byte [ebx], al
je 0x45798c
ret
ret
js 0x4579d4
jb 0x457945
jmp 0x4579b1
xor ebx, ebx
jmp 0x8a457900
add al, 0x45
cld
push dword [ebp - 0xc]
mov ecx, dword [eax]
push eax
call dword [ecx + 0x4c]
jmp 0x1453398
cmp ax, word [edx + 0x18]
jge 0x457a51
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 0x457a01
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 0x457a19
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 0x457a33
mov edx, dword [edx + 8]
mov ecx, dword [ebp - 4]
mov edx, dword [edx + edi]
call 0x8a457609
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 0x457a6d
dec eax
je 0x457a69
dec eax
jne 0x457a74
push 0xa
jmp 0x457a73
xor ecx, ecx
jmp 0x457a74
push 0x13
jmp 0x457a73
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 0x8b95cd8e
or bh, bh
push ecx
push eax
xor esi, esi
jae 0x750a009a
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