Function at 0x45d980
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 0x45dfa0
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 0x45dedb
sub eax, 1
je 0x45de1f
sub eax, 2
jne 0x45df85
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 0x45da09
bts eax, edx
jmp 0x45da0c
btr eax, edx
mov edx, dword [ebp + 0x10]
mov byte [esi], al
test byte [edx], 1
je 0x45da28
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 0x45dc8d
cmp eax, 5
jne 0x45dc87
test byte [edx], 1
je 0x45da5a
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 0x45dc42
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 0x45da80
mov eax, esi
mov edx, 0xf0b8
cmp ax, dx
jne 0x45dc42
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 0x45db12
movss xmm0, dword [esi + 8]
ucomiss xmm0, xmm1
lahf
test ah, 0x44
jnp 0x45db12
call sub.api_ms_win_crt_math_l1_1_0.dll___libm_sse2_log10f
mulss xmm0, dword [0x49ebb4]
movss dword [esi + 8], xmm0
test bl, 2
je 0x45db24
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.0046ca40
test al, al
je 0x45dbb7
push 0xffffffffffffffff
push esi
lea ecx, [edi + 0x60]
call fcn.0046ae40
mov eax, dword [edi + 0x14]
lea edx, [edi + 0x60]
sub eax, dword [edi + 0x10]
test eax, 0xfffffffc
je 0x45dc03
mov ecx, dword [edi + 0x20]
mov eax, dword [edi + 0x24]
test ecx, ecx
jne 0x45db72
cmp eax, 0x80000000
je 0x45db78
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 0x45dba4
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 0x45db88
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 0x45dc03
movzx eax, byte [edi + 0x7c]
push 0x4161d0
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.004151a0
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.004151a0
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 0x45dc42
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 0x45dc30
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 0x45dc82
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 0x45dc70
lea ecx, [edi + 0x50]
jmp 0x45dc9b
inc eax
mov dword [edi + 0x54], eax
jmp 0x45dc9b
cmp eax, 5
jne 0x45dc94
dec dword [ecx]
mov dword [edi + 0x54], 0
mov eax, dword [ecx]
cmp eax, dword [edi + 0x34]
je 0x45ddd8
cmp byte [edi + 0x3c], 0
je case.0x45dcd9.9
movzx ecx, byte [edi + 0x7c]
shr ecx, 2
cmp eax, 0xb8
jg 0x45dd59
je 0x45dd39
sub eax, 8
cmp eax, 0xa0
ja case.0x45dcd9.9
movzx eax, byte [eax + 0x45dfbc]
jmp dword [eax*4 + 0x45dfa8]
cmp ecx, 0x1b
ja 0x45ddd8
test ecx, ecx
je 0x45ddd8
jmp case.0x45dcd9.9
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 0x45ddd0
cmp ecx, 0xa
jmp 0x45ddcd
cmp ecx, 0x10
jmp 0x45ddcd
cmp ecx, 0xf
je 0x45ddd8
cmp ecx, 0x14
je 0x45ddd8
cmp ecx, 0x17
je 0x45ddd8
jmp case.0x45dcd9.9
cmp eax, 0x181
jg 0x45ddbf
je 0x45ddba
cmp eax, 0xc0
je 0x45dd79
cmp eax, 0x150
jne case.0x45dcd9.9
cmp ecx, 0x13
jmp 0x45ddcd
cmp ecx, 1
je 0x45ddd8
cmp ecx, 2
je 0x45ddd8
cmp ecx, 3
je 0x45ddd8
cmp ecx, 4
je 0x45ddd8
cmp ecx, 7
je 0x45ddd8
cmp ecx, 9
je 0x45ddd8
cmp ecx, 0xb
je 0x45ddd8
cmp ecx, 0x12
je 0x45ddd8
cmp ecx, 0x16
je 0x45ddd8
cmp ecx, 0x18
je 0x45ddd8
cmp ecx, 0x19
je 0x45ddd8
cmp ecx, 0x1b
je 0x45ddd8
jmp case.0x45dcd9.9
cmp ecx, 0x15
jmp 0x45ddcd
cmp eax, 0x1c0
jne case.0x45dcd9.9
cmp ecx, 5
sete al
test al, al
je case.0x45dcd9.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.0x45dcd9.9
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 0x45de08
jmp case.0x45dcd9.9
mov eax, dword [edi + 0x50]
cmp eax, 7
jne 0x45de87
mov dword [edi + 0x50], 0
mov dword [edi + 0x54], 0
cmp bh, bl
je 0x45de4c
mov dword [edi + 0x40], 3
mov dword [edi + 0x58], 0
jmp 0x45df85
mov dword [edi + 0x40], 0
mov ebx, dword [edi + 0x124]
mov esi, dword [edi + 0x120]
mov dword [ebp - 0x14], 1
cmp esi, ebx
je 0x45df85
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 0x45de70
jmp case.0x45dcd9.9
cmp bh, bl
jne 0x45de94
inc eax
mov dword [edi + 0x50], eax
jmp 0x45df85
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 0x45df85
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 0x45dec4
jmp case.0x45dcd9.9
mov al, byte [ebp - 1]
cmp al, byte [edi + 0x44]
je 0x45deeb
inc dword [edi + 0x50]
jmp 0x45df85
mov eax, dword [edi + 0x50]
mov dword [edi + 0x54], 0
cmp eax, dword [edi + 0x38]
jle 0x45df44
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 0x45df85
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 0x45df30
jmp case.0x45dcd9.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 0x45df85
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 0x45df70
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 0x45d9b0
pop esi
pop ebx
pop edi
mov esp, ebp
pop ebp
ret 0xc