Function at 0x41710e
Capabilities:
Encode data using base64
Encrypt data using speck

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x184
mov eax, edx
mov dword [ebp - 0x120], ecx
mov ecx, dword [ecx]
mov dword [ebp - 0x140], eax
push ebx
mov edx, dword [eax]
mov eax, ecx
shr eax, 0xb
and eax, 1
mov dword [ebp - 0xc], 1
mov dword [ebp - 0x3c], eax
mov eax, ecx
shr eax, 9
push esi
mov esi, dword [ebp + 8]
and eax, 1
mov dword [ebp - 0xdc], eax
xor eax, 1
push edi
xor edi, edi
mov dword [ebp - 0xe8], eax
mov esi, dword [esi]
mov ebx, edi
push 0xfffffffffffffffe
pop eax
mov dword [ebp - 0x58], eax
mov dword [ebp - 0x6c], eax
mov dword [ebp - 0x54], eax
mov dword [ebp - 0x2c], eax
movsx eax, cl
and eax, dword [ebp - 0xc]
mov dword [ebp - 0x50], edi
mov dword [ebp - 0x40], edi
mov dword [ebp - 0x34], ecx
mov dword [ebp - 0x9c], edi
mov dword [ebp - 0x84], edi
mov dword [ebp - 8], edx
mov dword [ebp - 0xa8], edx
mov dword [ebp - 0xb0], edx
mov dword [ebp - 0x30], edi
mov dword [ebp - 0x98], edi
mov dword [ebp - 4], esi
mov dword [ebp - 0x60], edi
mov dword [ebp - 0x10], ebx
mov dword [ebp - 0x78], edi
mov dword [ebp - 0x88], edi
mov dword [ebp - 0x28], edi
mov dword [ebp - 0x7c], edi
mov dword [ebp - 0x5c], edi
mov dword [ebp - 0x64], edi
mov dword [ebp - 0x8c], eax
mov dword [ebp - 0xb4], 0xff
mov dword [ebp - 0x12c], 0xfc00
mov dword [ebp - 0x148], 0xdc00
mov dword [ebp - 0x158], 0x2b
mov dword [ebp - 0x128], 0x7b
mov dword [ebp - 0xe4], 0x30
mov dword [ebp - 0x118], 0x29
mov dword [ebp - 0x90], 0x39
mov dword [ebp - 0x110], 0x3c
mov dword [ebp - 0x144], 0x52
mov dword [ebp - 0xe0], 0x27
mov dword [ebp - 0x154], 0x2d
mov dword [ebp - 0x100], 0x10
mov dword [ebp - 0x114], 0x17
mov dword [ebp - 0x14c], 0x20
mov dword [ebp - 0x104], 0x1d
mov dword [ebp - 0x134], 0x1e
mov dword [ebp - 0x10c], 0x1f
mov dword [ebp - 0x13c], 0x6e
mov dword [ebp - 0x11c], 0x6f
mov dword [ebp - 0x150], 0x70
mov dword [ebp - 0x124], 0x71
mov dword [ebp - 0xfc], 0x73
mov dword [ebp - 0x108], 0xf
movzx edi, word [esi]
mov dword [ebp - 0x18], edi
test edi, edi
je 0x417c27
mov eax, dword [ebp + 0x28]
mov ecx, dword [eax + 0x3c]
mov eax, dword [eax + 0x10]
lea eax, [eax + ecx*2]
add eax, 0xffffff38
cmp dword [ebp + 0x2c], 0
je 0x417328
cmp edx, eax
ja 0x4546a9
mov eax, dword [ebp - 0xa8]
cmp edx, eax
jb 0x41824a
mov ecx, edx
sub ecx, eax
mov eax, dword [ebp + 0x2c]
sar ecx, 1
mov edx, dword [eax]
mov eax, 0x7fffffeb
sub eax, edx
cmp eax, ecx
jl 0x454601
lea eax, [edx + ecx]
mov ecx, dword [ebp + 0x2c]
mov dword [ecx], eax
test ebx, ebx
je 0x417336
mov ecx, dword [ebp - 0xb0]
cmp ebx, ecx
ja 0x4175b7
mov edx, dword [ebp - 8]
jmp 0x41733f
mov ecx, dword [ebp + 0x28]
cmp dword [ecx + 0x20], eax
ja 0x4546a9
jmp 0x417348
mov edx, dword [ebp - 0xb0]
mov dword [ebp - 8], edx
mov ecx, dword [ebp + 0x28]
mov dword [ebp - 0xa8], edx
cmp dword [ebp - 0x30], 0
jne 0x451c19
mov edx, dword [ebp - 0x34]
mov ebx, edx
and ebx, 8
mov dword [ebp - 0x68], ebx
jne 0x418254
push 0x2a
pop eax
cmp edi, eax
je 0x41787d
push 0x2b
pop eax
cmp edi, eax
je 0x41787d
push 0x3f
pop eax
cmp edi, eax
je 0x41787d
push 0x7b
pop eax
cmp edi, eax
je 0x451d89
xor eax, eax
cmp dword [ebp - 0x78], eax
mov ecx, eax
mov eax, dword [ebp - 0x60]
jne 0x451da1
test edx, 0x4000
jne 0x451de2
mov edx, dword [ebp - 8]
push 0x3f
pop eax
cmp edi, eax
ja 0x41752b
je 0x417afd
mov eax, edi
xor ecx, ecx
sub eax, ecx
je 0x41755b
sub eax, 0x24
je 0x4528e3
sub eax, 4
je 0x4178eb
dec eax
je 0x41755b
dec eax
je 0x417c58
dec eax
je 0x41825e
sub eax, 3
je 0x417fe9
cmp dword [ebp - 0x3c], 0
mov edx, dword [ebp - 0xc]
mov ebx, edx
mov word [ebp - 0xf8], di
je 0x417421
adc al, 0x8b
invalid
mov eax, edi
mov ecx, 0xfc00
and eax, ecx
cmp eax, 0xd800
je 0x4533d8
push 2
pop esi
cmp dword [ebp - 0x3c], 0
mov eax, dword [ebp - 8]
mov dword [ebp - 0x10], eax
mov eax, dword [ebp - 0x34]
je 0x417481
test dl, al
je 0x417481
movzx ecx, di
mov edx, 0xfc00
mov eax, ecx
and eax, edx
mov edx, 0xd800
cmp eax, edx
je 0x45441e
mov eax, ecx
mov ecx, 0x80
cdq
idiv ecx
movzx eax, byte [eax + 0x4b3b40]
shl eax, 7
add eax, edx
movzx eax, word [eax*2 + 0x4a5840]
movzx eax, byte [eax*8 + 0x4a2f53]
test eax, eax
jne 0x417f71
mov eax, dword [ebp - 0x34]
mov ecx, dword [ebp - 0xc]
test cl, al
mov edi, dword [ebp - 8]
push 0
pop eax
setne al
push 0x1d
pop ecx
add eax, ecx
mov word [edi], ax
add edi, esi
mov dword [ebp - 8], edi
test ebx, ebx
je 0x4174ba
mov ecx, ebx
lea esi, [ebp - 0xf8]
shr ecx, 1
rep movsd dword es:[edi], dword [esi]
adc ecx, ecx
rep movsw word es:[edi], word [esi]
mov edi, dword [ebp - 8]
lea edi, [edi + ebx*2]
mov dword [ebp - 8], edi
mov eax, dword [ebp - 0x18]
push 0xd
pop ecx
cmp ax, cx
je 0x45444a
push 0xa
pop ecx
cmp ax, cx
je 0x45444a
mov ecx, dword [ebp + 0x28]
mov edx, dword [ebp - 0x2c]
cmp edx, 0xfffffffe
je 0x41783d
mov eax, dword [ebp - 0x64]
mov dword [ebp - 0x7c], eax
mov eax, dword [ebp - 0x5c]
mov dword [ebp - 0x28], eax
mov eax, dword [ebp - 0x54]
mov dword [ebp - 0x6c], edx
test byte [ebx + 0x4589a445], cl
fmul dword [ebx + 0x5589ac45]
xchg esp, eax
mov dword [ebp - 0x58], eax
cmp ebx, dword [ebp - 0xc]
invalid
invalid