Function at 0x45fd90
Capabilities:
Encode data using xor
Encrypt data using speck

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x18
xor eax, eax
push edi
mov edi, ecx
mov dword [ebp - 0x10], eax
cmp dword [ebp + 0xc], eax
jle 0x460050
mov ecx, dword [sym.imp.api_ms_win_crt_time_l1_1_0.dll__time64]
xorps xmm1, xmm1
push ebx
mov dword [ebp - 0x18], ecx
mov ecx, dword [ebp + 8]
push esi
nop dword [eax + eax]
movss xmm0, dword [ecx + eax*4]
mov bh, byte [edi + 0x45]
mov eax, dword [edi + 0x40]
comiss xmm0, xmm1
seta bl
cmp bh, bl
mov byte [edi + 0x45], bl
sete byte [ebp - 1]
sub eax, 0
je 0x45ff97
sub eax, 1
je 0x45fed7
sub eax, 2
jne 0x460035
mov edx, dword [edi + 0x50]
lea ecx, [edi + 0x50]
mov esi, edx
sar esi, 3
add esi, 0x7c
add esi, edi
lea eax, [edx + 1]
and edx, 7
mov dword [ecx], eax
movzx eax, byte [esi]
cmp bh, bl
jne 0x45fab9
bts eax, edx
jmp 0x45fabc
btr eax, edx
mov edx, dword [ebp + 0x10]
mov byte [esi], al
test byte [edx], 1
je 0x45fad8
movss xmm0, dword [edx + 4]
lea ecx, [edi + 0x50]
addss xmm0, dword [edi + 0x58]
movss dword [edi + 0x58], xmm0
mov eax, dword [edi + 0x54]
cmp bh, bl
jne 0x45fd3d
cmp eax, 5
jne 0x45fd37
test byte [edx], 1
je 0x45fb0a
movd xmm0, dword [edi + 0x50]
movss xmm1, dword [edi + 0x58]
cvtdq2ps xmm0, xmm0
divss xmm1, xmm0
movss dword [edx + 8], xmm1
xorps xmm1, xmm1
mov eax, dword [edi + 0x50]
sub eax, 7
mov dword [ebp - 0x14], eax
cmp eax, 0x10
jle 0x45fcf2
mov edx, 0xffff
xor eax, eax
mov dword [ebp - 0xc], edx
mov bl, 1
mov dword [ebp - 8], eax
nop dword [eax + eax]
shr eax, 3
mov si, dx
shr si, 1
mov edx, 0
test byte [eax + edi + 0x7c], bl
mov eax, esi
setne dl
xor eax, 0x8408
xor dl, byte [ebp - 0xc]
movzx ecx, ax
test dl, 1
movzx eax, si
cmove ecx, eax
mov eax, dword [ebp - 8]
movzx esi, cx
inc eax
mov ecx, dword [ebp - 0x14]
mov edx, esi
rol bl, 1
mov dword [ebp - 8], eax
mov dword [ebp - 0xc], edx
cmp eax, ecx
jl 0x45fb30
mov eax, esi
mov edx, 0xf0b8
cmp ax, dx
jne 0x45fcf2
mov esi, dword [ebp + 0x10]
lea eax, [ecx - 0x10]
mov dword [edi + 0x4c], eax
add eax, 7
cdq
and edx, 7
add eax, edx
sar eax, 3
mov dword [edi + 0x48], eax
mov ebx, dword [esi]
test bl, 1
je 0x45fbc2
movss xmm0, dword [esi + 8]
ucomiss xmm0, xmm1
lahf
test ah, 0x44
jnp 0x45fbc2
call sub.api_ms_win_crt_math_l1_1_0.dll___libm_sse2_log10f
mulss xmm0, dword [0x4a2d04]
movss dword [esi + 8], xmm0
test bl, 2
je 0x45fbd4
lea eax, [edi + 0x100]
push eax
call dword [ebp - 0x18]
add esp, 4
mov al, byte [edi + 0x2c]
lea ecx, [edi + 0x60]
mov byte [edi + 0x10c], al
mov eax, dword [edi + 0x4c]
mov dword [edi + 0x108], eax
call fcn.0046fd30
test al, al
je 0x45fc67
push 0xffffffffffffffff
push esi
lea ecx, [edi + 0x60]
call fcn.0046de80
mov eax, dword [edi + 0x14]
lea edx, [edi + 0x60]
sub eax, dword [edi + 0x10]
test eax, 0xfffffffc
je 0x45fcb3
mov ecx, dword [edi + 0x20]
mov eax, dword [edi + 0x24]
test ecx, ecx
jne 0x45fc22
cmp eax, 0x80000000
je 0x45fc28
mov dword [esi + 0x10], ecx
mov dword [esi + 0x14], eax
mov ebx, dword [edi + 0x14]
xor esi, esi
sub ebx, dword [edi + 0x10]
sar ebx, 2
dec ebx
test ebx, ebx
jle 0x45fc54
mov eax, dword [edi + 0x10]
push dword [ebp + 0x10]
push 1
mov ecx, dword [eax + esi*4]
push edx
mov eax, dword [ecx]
call dword [eax + 8]
inc esi
lea edx, [edi + 0x60]
cmp esi, ebx
jl 0x45fc38
lea edx, [edi + 0x60]
mov eax, dword [edi + 0x10]
push dword [ebp + 0x10]
push 1
mov ecx, dword [eax + ebx*4]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
jmp 0x45fcb3
movzx eax, byte [edi + 0x7c]
push 0x416670
push dword [edi + 0x108]
shr eax, 2
push str._and_length
push eax
push str.AIS:_invalid_message_of_type
push dword [sym.imp.MSVCP140.dll_class_std::basic_ostream_char__struct_std::char_traits_char___std::cerr]
call fcn.004156b0
add esp, 8
mov ecx, eax
call dword [sym.imp.MSVCP140.dll_public:_class_std::basic_ostream_char__struct_std::char_traits_char______thiscall_std::basic_ostream_char__struct_std::char_traits_char__::operator___unsigned_int_]
push eax
call fcn.004156b0
add esp, 8
mov ecx, eax
call dword [sym.imp.MSVCP140.dll_public:_class_std::basic_ostream_char__struct_std::char_traits_char______thiscall_std::basic_ostream_char__struct_std::char_traits_char__::operator___int_]
mov ecx, eax
call dword [sym.imp.MSVCP140.dll_public:_class_std::basic_ostream_char__struct_std::char_traits_char______thiscall_std::basic_ostream_char__struct_std::char_traits_char__::operator___class_std::basic_ostream_char__struct_std::char_traits_char_______cdecl___class_std::basic_ostream_char__struct_std::char_traits_char_____]
mov dword [edi + 0x40], 4
mov dword [edi + 0x50], 0
mov dword [edi + 0x54], 0
mov ebx, dword [edi + 0x124]
mov esi, dword [edi + 0x120]
mov dword [ebp - 0x14], 2
cmp esi, ebx
je 0x45fcf2
nop
mov ecx, dword [esi]
lea edx, [ebp - 0x14]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
add esi, 4
cmp esi, ebx
jne 0x45fce0
mov dword [edi + 0x40], 0
mov dword [edi + 0x50], 0
mov dword [edi + 0x54], 0
mov ebx, dword [edi + 0x124]
mov esi, dword [edi + 0x120]
mov dword [ebp - 0x14], 1
cmp esi, ebx
je 0x45fd32
nop
mov ecx, dword [esi]
lea edx, [ebp - 0x14]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
add esi, 4
cmp esi, ebx
jne 0x45fd20
lea ecx, [edi + 0x50]
jmp 0x45fd4b
inc eax
mov dword [edi + 0x54], eax
jmp 0x45fd4b
cmp eax, 5
jne 0x45fd44
dec dword [ecx]
mov dword [edi + 0x54], 0
mov eax, dword [ecx]
cmp eax, dword [edi + 0x34]
je 0x45fe89
cmp byte [edi + 0x3c], 0
je case.0x45fd89.9
movzx ecx, byte [edi + 0x7c]
shr ecx, 2
cmp eax, 0xb8
jg 0x45fe09
je 0x45fde9
sub eax, 8
cmp eax, 0xa0
ja case.0x45fd89.9
movzx eax, byte [eax + 0x46006c]
jmp dword [eax*4 + 0x460058]
cmp ecx, 0x1b
ja 0x45fe89
test ecx, ecx
jne case.0x45fd89.9
jmp 0x45fe89
movzx ecx, byte [edi + 0x7d]
movzx eax, byte [edi + 0x7e]
shl ecx, 8
or ecx, eax
movzx eax, byte [edi + 0x7f]
shl ecx, 8
or ecx, eax
movzx eax, byte [edi + 0x80]
shr eax, 2
shl ecx, 6
or ecx, eax
cmp ecx, 0x3b9ac9ff
seta al
jmp 0x45fe81
cmp ecx, 0xa
jmp 0x45fe7e
cmp ecx, 0x10
jmp 0x45fe7e
cmp ecx, 0xf
je 0x45fe89
cmp ecx, 0x14
je 0x45fe89
cmp ecx, 0x17
jne case.0x45fd89.9
jmp 0x45fe89
cmp eax, 0x181
jg 0x45fe70
je 0x45fe6b
cmp eax, 0xc0
je 0x45fe29
cmp eax, 0x150
jne case.0x45fd89.9
cmp ecx, 0x13
jmp 0x45fe7e
cmp ecx, 1
je 0x45fe89
cmp ecx, 2
je 0x45fe89
cmp ecx, 3
je 0x45fe89
cmp ecx, 4
je 0x45fe89
cmp ecx, 7
je 0x45fe89
cmp ecx, 9
je 0x45fe89
cmp ecx, 0xb
je 0x45fe89
cmp ecx, 0x12
je 0x45fe89
cmp ecx, 0x16
je 0x45fe89
cmp ecx, 0x18
je 0x45fe89
cmp ecx, 0x19
je 0x45fe89
cmp ecx, 0x1b
jne case.0x45fd89.9
jmp 0x45fe89
cmp ecx, 0x15
jmp 0x45fe7e
cmp eax, 0x1c0
jne case.0x45fd89.9
cmp ecx, 5
sete al
test al, al
je case.0x45fd89.9
mov dword [edi + 0x40], 0
mov dword [edi + 0x50], 0
mov dword [edi + 0x54], 0
mov ebx, dword [edi + 0x124]
mov esi, dword [edi + 0x120]
mov dword [ebp - 0x14], 1
cmp esi, ebx
je case.0x45fd89.9
nop dword [eax]
mov ecx, dword [esi]
lea edx, [ebp - 0x14]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
add esi, 4
cmp esi, ebx
jne 0x45fec0
jmp case.0x45fd89.9
mov eax, dword [edi + 0x50]
cmp eax, 7
jne 0x45ff3d
mov dword [edi + 0x50], 0
mov dword [edi + 0x54], 0
cmp bh, bl
je 0x45ff04
mov dword [edi + 0x40], 3
mov dword [edi + 0x58], 0
jmp 0x460035
mov dword [edi + 0x40], 0
mov ebx, dword [edi + 0x124]
mov esi, dword [edi + 0x120]
mov dword [ebp - 0x14], 1
cmp esi, ebx
je 0x460035
mov ecx, dword [esi]
lea edx, [ebp - 0x14]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
add esi, 4
cmp esi, ebx
jne 0x45ff26
jmp case.0x45fd89.9
cmp bh, bl
jne 0x45ff4a
inc eax
mov dword [edi + 0x50], eax
jmp 0x460035
mov dword [edi + 0x40], 0
mov dword [edi + 0x50], 0
mov dword [edi + 0x54], 0
mov ebx, dword [edi + 0x124]
mov esi, dword [edi + 0x120]
mov dword [ebp - 0x14], 1
cmp esi, ebx
je 0x460035
nop word [eax + eax]
mov ecx, dword [esi]
lea edx, [ebp - 0x14]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
add esi, 4
cmp esi, ebx
jne 0x45ff80
jmp case.0x45fd89.9
mov al, byte [ebp - 1]
cmp al, byte [edi + 0x44]
je 0x45ffa7
inc dword [edi + 0x50]
jmp 0x460035
mov eax, dword [edi + 0x50]
mov dword [edi + 0x54], 0
cmp eax, dword [edi + 0x38]
jle 0x45fff9
xor eax, eax
mov dword [edi + 0x40], 1
cmp bh, bl
mov dword [ebp - 0x14], 0
sete al
lea eax, [eax*2 + 1]
mov dword [edi + 0x50], eax
mov ebx, dword [edi + 0x124]
mov esi, dword [edi + 0x120]
cmp esi, ebx
je 0x460035
mov ecx, dword [esi]
lea edx, [ebp - 0x14]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
add esi, 4
cmp esi, ebx
jne 0x45ffe5
jmp case.0x45fd89.9
mov dword [edi + 0x40], 0
mov dword [edi + 0x50], 0
mov ebx, dword [edi + 0x124]
mov esi, dword [edi + 0x120]
mov dword [ebp - 0x14], 1
cmp esi, ebx
je 0x460035
nop
mov ecx, dword [esi]
lea edx, [ebp - 0x14]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
add esi, 4
cmp esi, ebx
jne 0x460020
mov ecx, dword [ebp + 8]
mov eax, dword [ebp - 0x10]
xorps xmm1, xmm1
mov bl, byte [ebp - 1]
inc eax
mov byte [edi + 0x44], bl
mov dword [ebp - 0x10], eax
cmp eax, dword [ebp + 0xc]
jl 0x45fa60
pop esi
pop ebx
pop edi
mov esp, ebp
pop ebp
ret 0xc