Function at 0x408870
Capabilities:
Encrypt data using speck
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x90
mov ebx, edx
mov edi, ecx
mov eax, edx
sub eax, ecx
sar eax, 3
imul ecx, eax, 0xc4ec4ec5
mov al, 1
cmp ecx, 5
ja case.default.0x408897
jmp dword [ecx*4 + 0x41f488]
add ebx, 0xffffff98
mov ecx, edi
mov edx, ebx
call fcn.00408bd0
test al, al
je 0x408b92
mov ecx, edi
mov edx, ebx
call fcn.00409310
jmp 0x408b92
lea edx, [edi + 0x68]
add ebx, 0xffffff98
mov ecx, edi
push ebx
call fcn.00408800
mov al, 1
add esp, 4
jmp case.0x408897.0
lea edx, [edi + 0x68]
lea eax, [edi + 0xd0]
lea esi, [edi + 0x138]
add ebx, 0xffffff98
mov ecx, edi
push ebx
push esi
push eax
call fcn.00408770
mov al, 1
add esp, 0xc
jmp case.0x408897.0
lea eax, [edi + 0xd0]
lea edx, [edi + 0x68]
mov ecx, edi
mov dword [esp + 8], edx
mov esi, eax
push eax
call fcn.00408800
add esp, 4
lea edx, [edi + 0x138]
cmp edx, ebx
je 0x408b92
mov dword [esp + 0x18], ebx
mov dword [esp + 0x10], 0
mov dword [esp + 0x14], 0xd0
mov ecx, esi
mov ebx, dword [esp + 8]
jmp 0x408969
mov ecx, esi
lea eax, [esi + 0x68]
add ebx, 0x68
add dword [esp + 0x14], 0x68
mov edx, eax
cmp eax, dword [esp + 0x18]
je 0x408b92
mov esi, edx
call fcn.00408bd0
test al, al
je 0x408950
movzx eax, byte [esi + 0x10]
mov byte [esp + 0x30], al
movups xmm0, xmmword [esi]
movaps xmmword [esp + 0x20], xmm0
mov eax, dword [esi + 0x1c]
lea ecx, [esp + 0x34]
mov dword [ecx + 8], eax
movsd xmm0, qword [esi + 0x14]
movsd qword [ecx], xmm0
xorps xmm2, xmm2
movsd qword [esi + 0x14], xmm2
mov dword [esi + 0x1c], 0
movsd xmm0, qword [esi + 0x50]
movsd qword [ecx + 0x3c], xmm0
movups xmm0, xmmword [esi + 0x40]
movups xmmword [ecx + 0x2c], xmm0
movups xmm0, xmmword [esi + 0x20]
movups xmm1, xmmword [esi + 0x30]
movups xmmword [ecx + 0x1c], xmm1
movups xmmword [ecx + 0xc], xmm0
mov eax, dword [esi + 0x60]
mov dword [ecx + 0x4c], eax
movsd xmm0, qword [esi + 0x58]
movsd qword [ecx + 0x44], xmm0
movsd qword [esi + 0x58], xmm2
mov dword [esi + 0x60], 0
mov ecx, dword [esp + 0x14]
mov dword [esp + 8], ebx
mov dword [esp + 0xc], esi
mov dword [esp + 4], esi
nop word cs:[eax + eax]
mov esi, ecx
movzx eax, byte [edi + ecx + 0x10]
mov byte [edi + ecx + 0x78], al
movups xmm0, xmmword [edi + ecx]
movups xmmword [edi + ecx + 0x68], xmm0
test byte [edi + ecx + 0x7c], 1
je 0x408a2a
push dword [edi + esi + 0x84]
call sub.libc.dll_operator_delete_void_
add esp, 4
lea ecx, [edi + esi]
add ecx, 0x7c
mov eax, dword [ecx - 0x60]
mov dword [ecx + 8], eax
movsd xmm0, qword [ecx - 0x68]
mov dword [esp + 0x1c], ecx
movsd qword [ecx], xmm0
mov word [edi + esi + 0x14], 0
movups xmm0, xmmword [edi + esi + 0x20]
movups xmm1, xmmword [edi + esi + 0x30]
movups xmmword [edi + esi + 0x88], xmm0
movups xmmword [edi + esi + 0x98], xmm1
movups xmm0, xmmword [edi + esi + 0x40]
movups xmmword [edi + esi + 0xa8], xmm0
movsd xmm0, qword [edi + esi + 0x50]
movsd qword [edi + esi + 0xb8], xmm0
test byte [edi + esi + 0xc0], 1
je 0x408a99
push dword [edi + esi + 0xc8]
call sub.libc.dll_operator_delete_void_
add esp, 4
lea eax, [edi + esi]
add eax, 0xc0
mov ecx, dword [edi + esi + 0x60]
mov dword [eax + 8], ecx
movsd xmm0, qword [edi + esi + 0x58]
movsd qword [eax], xmm0
mov word [edi + esi + 0x58], 0
test esi, esi
je 0x408ae0
mov ecx, ebx
lea edx, [esp + 0x20]
call fcn.00408bd0
add dword [esp + 4], 0xffffff98
add ebx, 0xffffff98
lea ecx, [esi - 0x68]
test al, al
jne 0x408a00
jmp 0x408ae4
mov dword [esp + 4], edi
movzx eax, byte [esp + 0x30]
mov ecx, dword [esp + 4]
mov byte [ecx + 0x10], al
movaps xmm0, xmmword [esp + 0x20]
movups xmmword [ecx], xmm0
test byte [edi + esi + 0x14], 1
je 0x408b0e
mov eax, dword [esp + 4]
push dword [eax + 0x1c]
call sub.libc.dll_operator_delete_void_
add esp, 4
add esi, edi
add esi, 0x58
lea ecx, [esp + 0x34]
mov eax, dword [ecx + 8]
mov edx, dword [esp + 0x1c]
mov dword [edx - 0x60], eax
movsd xmm0, qword [ecx]
movsd qword [edx - 0x68], xmm0
movsd xmm0, qword [ecx + 0x3c]
movsd qword [esi - 8], xmm0
movups xmm0, xmmword [ecx + 0x2c]
movups xmmword [esi - 0x18], xmm0
movups xmm0, xmmword [ecx + 0xc]
movups xmm1, xmmword [ecx + 0x1c]
movups xmmword [esi - 0x28], xmm1
movups xmmword [esi - 0x38], xmm0
test byte [esi], 1
mov ebx, dword [esp + 0x18]
je 0x408b64
mov eax, dword [esp + 4]
push dword [eax + 0x60]
call sub.libc.dll_operator_delete_void_
add esp, 4
lea ecx, [esp + 0x34]
mov eax, dword [ecx + 0x4c]
mov dword [esi + 8], eax
movsd xmm0, qword [ecx + 0x44]
movsd qword [esi], xmm0
mov eax, dword [esp + 0x10]
inc eax
cmp eax, 8
je 0x408bb8
mov dword [esp + 0x10], eax
mov ebx, dword [esp + 8]
mov esi, dword [esp + 0xc]
jmp 0x408950
mov al, 1
jmp case.0x408897.0
lea edx, [edi + 0x68]
lea eax, [edi + 0xd0]
add ebx, 0xffffff98
mov ecx, edi
push ebx
push eax
call fcn.00409530
mov al, 1
add esp, 8
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov eax, dword [esp + 0xc]
add eax, 0x68
cmp eax, ebx
sete al
jmp case.0x408897.0