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

Disassembly:
cmp dword [ebp + 0xc], 3
jmp 0x5c8ba1
push ebx
push esi
push edx
push bx
lea esp, [esp + 2]
mov dword [esp], edi
push sp
lea esp, [esp]
mov word [esp], di
jmp 0x5c8b60
push dword [esp + 4]
mov dword [esp + 3], ebx
add esp, 0xa
push word [esp + 3]
lea esp, [esp + 2]
and esi, edx
push ebx
mov dword [esp], ecx
push ecx
lea esp, [esp + 5]
mov byte [esp + 1], bh
jmp 0x5c8c08
push word [esp + 1]
push word [esp + 3]
lea esp, [esp + 2]
lea esp, [esp + 4]
mov ecx, eax
push 0x3f
mov esi, eax
shr ecx, 0x12
pop edx
shr esi, 0xc
and ecx, edx
sub esp, 6
mov byte [esp + 1], cl
push dword [esp]
mov byte [esp + 1], bl
mov byte [esp + 3], ch
jmp 0x5c8b2f
jne 0x5c8a9c
movzx ecx, byte [ecx + 2]
sub esp, 0x12
lea esp, [esp + 2]
or eax, ecx
pushal
push dword [esp + 0x1d]
pop dword [esp + 0x1a]
push word [esp + 6]
pop dword [esp + 0x10]
mov byte [esp + 4], bh
lea esp, [esp + 2]
lea esp, [esp + 0x2c]
jmp 0x5c8a9c
mov edi, dword [ebp + 0xc]
jmp 0x609017
mov ebx, dword [ebp + 0xc]
jmp 0x608ff6
lea esp, [esp + 3]
lea esp, [esp + 4]
cmp dword [ebp + 0xc], 2
jb 0x5c8bd7
pushal
mov bh, byte [esp]
lea ecx, [ebp*4]
jmp 0x6090e1
push dword [esp + 3]
lea esp, [esp + 2]
lea esp, [esp + 8]
jmp 0x5c8a8a
mov dl, byte [ecx + 1]
cmp dl, 0x41
jmp 0x6092cf
cmp dl, 0x61
jb 0x60935b
cmp dl, 0x7a
jbe 0x6093f8
ja 0x60935b
imul esi, dword [esi], reloc.WINMM.dll_midiStreamOut
std
lodsb al, byte [esi]
jbe 0x5c8c30
cmp al, 0x61
clc
popal
jb 0x5c8d1c
cmp al, 0x7a
jbe 0x5c8c7c
ja 0x5c8d1c
movsd dword es:[edi], dword [esi]
push 0x5b45fdff
jmp 0x6809a0
lea esp, [esp + 0x20]
cmp al, 0x41
jb 0x5c8caf
cmp al, 0x5a
jbe 0x5c8c7c
ja 0x5c8caf
cmp al, 0x2b
je 0x5c8c7c
cmp al, 0x2f
jmp 0x5c8d8f
mov eax, 0x403
pop ebx
ret
cmp al, 0x30
jb 0x5c8ce7
cmp al, 0x39
jbe 0x5c8c7c
ja 0x5c8ce7
or byte [ebp + 0x64a7540d], bl
call 0xfcd73ec6
cwde
dec esp
ret 0x54a5
mov al, byte [ecx]
push si
pushfd
mov byte [esp + 3], cl
pushal
pop word [esp + 0xf]
pop dword [esp + 0x14]
mov dword [esp + 0x1c], ebx
push esi
push dword [esp + 2]
lea esp, [esp + 6]
mov word [esp], sp
mov word [esp], sp
mov word [esp], sp
pushfd
lea esp, [esp + 2]
jmp 0x5c8cd7
lea esp, [esp + 4]
jmp 0x5c8d3e
jne 0x5c8cfe
je 0x5c8c7c
call fcn.005cab32
insd dword es:[edi], dx
in eax, dx
jge 0x5c8da8
div dword [ebx]
leave
jge 0x5c8de8
aas
int3
lea esp, [esp + 2]
mov dword [esp], edx
pushal
mov eax, dword [esp]
bswap ebx
mov bx, 0x31d1
jmp 0x5c8ec3
mov ah, 0xc2
mov word [esp], ax
lea ebx, [edx + esi]
mov al, byte [esp]
jmp 0x5c8db2
or eax, dword [eax]
push esp
aad 0x45
sub al, 0xdf
sbb al, 0x65
sbb dword [edx - 0x78], edx
or al, 0x24
pop word [esp]
mov byte [esp], al
lea esp, [esp]
mov byte [esp], ah
pushal
pop word [esp + 0x11]
mov word [esp + 0x12], bp
pushal
pop word [esp + 0x31]
push word [esp + 0x16]
mov dword [esp + 0xf], ebx
bswap bx
not bh
mov bl, byte [esp]
mov bx, 0x7220
lea ebx, [edx*4]
mov bx, 0x427c
lea ebx, [esi*4]
mov bh, byte [esp]
lea ebx, [edi*4]
bswap bx
mov dword [esp + 8], eax
lea ebx, [edi*4]
mov ax, 0x3f32
push sp
xchg word [esp], bx
lea ebx, [eax + esi]
mov ax, 0x2d65
jmp 0x5c8dd5
lea ebx, [ebp + ebp]
mov bh, 0xd5
lea ebx, [esi + edi]
mov bh, byte [esp]
bswap bx
mov bx, word [esp]
mov ebx, dword [esp + 0x53]
lea esp, [esp + 0x84]
movzx eax, byte [ecx]
movzx edx, byte [ecx + 1]
jmp 0x609745
mov dh, byte [esp]
xchg ebx, edx
lea ebx, [esp + 0xfe]
mov al, dh
setl al
mov dh, 0xfa
lea edx, [eax + ecx]
mov edx, 0x47ee02e6
bswap eax
xchg ebx, eax
mov edx, dword [esp + 0x20]
mov ebx, dword [esp]
lea ebx, [edx + edi]
mov al, byte [esp]
setg al
pushal
push dword [esp + 0x1f]
bswap bx
mov ax, bp
mov al, 0xc6
mov al, byte [esp + 0x17]
mov bx, 0x3404
bswap ebx
mov eax, dword [esp + 0x4c]
not bx
mov bx, word [esp]
lea ebx, [ebp + 0x70]
xchg bh, bl
mov bx, 0x5d34
lea ebx, reloc.WINMM.dll_midiStreamOut
not bh
mov bl, byte [esp]
jmp 0x5c8e8e
cmp dword [ebp + 0xc], 3
jne 0x5c8be9
clc
pushfd
add esp, 0
push ecx
and eax, edx
push sp
lea esp, [esp + 1]
lea esp, [esp]
mov byte [esp], dl
pushfd
push cx
pop word [esp]
push dword [esp + 4]
lea esp, [esp + 1]
lea esp, [esp + 0x10]
mov ebx, eax
jmp 0x608ff6
mov ecx, edi
mov dword [esp], eax
popal
shr edi, 6
push bx
mov word [esp], di
push ebx
push di
push ebp
pushfd
and edi, edx
push ax
lea esp, [esp + 2]
lea esp, [esp + 0x10]
jmp 0x609017
jb 0x5c8c91
cmp dl, 0x5a
jbe 0x6093f8
ja 0x5c8c91
inc edi
fimul word [ebx + ebp - 0x1a]
and al, 0x56
je 0x609354
pop edx
or ecx, dword [ebx - reloc.WINMM.dll_midiStreamOut]
hlt
mov cl, byte [ecx + 3]
cmp cl, 0x41
jb 0x609388
cmp cl, 0x5a
jbe 0x60936b
ja 0x609388
nop
push cs
pushfd
sti
push ss
aad 0xa7
cmp byte [esi - 0x2a71c737], ch
dec edi
fistp qword [edx - 0x7f496db7]
sti
popal
cmp bl, 0x61
jb 0x6093c8
cmp bl, 0x7a
jbe 0x6092f7
ja 0x6093c8
rcl byte [ebx - 0x3d]
cmpsb byte [esi], byte es:[edi]
push ebp
xchg esi, eax
cmpsb byte [si], byte es:[di]
lds eax, [ebx]
cmp dl, 0x2b
je 0x6093f8
cmp dl, 0x2f
jne 0x5c8cfe
je 0x6093f8
enter 0xfffffffffffff86a, 0xffffffffffffff9f
push 0xfffffffffffffff8
lahf
push 0xffffffffffffffed
pop es
xor al, byte [eax - 0x248dcf06]
cmp dl, 0x30
jb 0x60933b
cmp dl, 0x39
jbe 0x6093f8
ja 0x60933b
cmp al, 0x2b
jne 0x60943c
push 0x3e
jmp 0x609413
cmp cl, 0x61
jb 0x6093d8
cmp cl, 0x7a
jbe 0x60936b
ja 0x6093d8
test eax, 0x29dabf2f
mov dword [ebx + reloc.WINMM.dll_midiStreamOut], ebp
jmp 0x609417
cmp bl, 0x2b
je 0x6092f7
cmp bl, 0x2f
jne 0x5c8cfe
je 0x6092f7
hlt
cmp bl, 0x30
jb 0x6093a7
cmp bl, 0x39
jbe 0x6092f7
ja 0x6093a7
cmp cl, 0x30
jb 0x60946c
cmp cl, 0x39
jbe 0x60936b
ja 0x60946c
add byte [eax], al
js 0x6093ea
xchg edx, eax
cmc
add al, 0xb2
mov ebp, 0xd96a990f
push ebp
mov bl, byte [ecx + 2]
cmp bl, 0x41
jb 0x60931d
cmp bl, 0x5a
jbe 0x6092f7
ja 0x60931d
mov ah, byte [esp]
bswap ax
bswap eax
lea eax, [eax + edi]
mov ah, 0xf
bswap eax
mov eax, dword [esp]
push bx
push word [esp + 1]
jmp 0x609484
cmp al, 0x2f
jmp 0x6094a9
cmp al, 0x39
ja 0x60989f
movzx eax, al
add eax, 4
jmp 0x6099c2
cmp cl, 0x2b
je 0x60936b
cmp cl, 0x2f
je 0x60936b
jne 0x5c8cfe
push dword [esp]
pop dword [esp]
mov dword [esp], esp
push word [esp]
lea esp, [esp + 2]
lea esp, [esp + 8]
jmp 0x6099c2
jne 0x60944e
push 0x3f
jmp 0x609413
movzx esi, dl
cmp dl, 0x39
ja 0x6095c9
add esi, 4
jmp 0x609695
mov esi, 0x79a52f27
not si
lea esi, [esi + ebp]
bswap esi
mov esi, dword [esp]
push esi
mov word [esp + 1], ax
lea esp, [esp + 8]
jmp 0x609695
cmp dl, 0x2f
jne 0x609511
push 0x3f
jmp 0x609533
cmp bl, 0x2f
jne 0x609646
push 0x3f
jmp 0x609594
sub esi, 0x47
jmp 0x609695
not edx
bswap edx
mov edx, 0x5bfa410e
mov dl, byte [esp]
mov dx, 0x644f
mov edx, dword [esp]
push dx
lea esp, [esp + 1]
lea esp, [esp]
mov byte [esp], ch
mov byte [esp], dl
jmp 0x609609
cmp dl, 0x5a
ja 0x60958c
sub esi, 0x41
jmp 0x609695
cmp cl, 0x2b
jmp 0x60962a
cmp cl, 0x2f
jne 0x609679
push 0x3f
jmp 0x609653
lea esp, [esp + 1]
lea esp, [esp + 4]
jmp 0x6095d6
cmp bl, 0x5a
jmp 0x60966f
sub edx, 0x47
jmp 0x6095d6
jne 0x6095e8
push 0x3e
jmp 0x609653
movzx edx, bl
cmp bl, 0x39
ja 0x609613
add edx, 4
jmp 0x6095d6
pop ecx
jmp 0x6096db
ja 0x609625
sub edx, 0x41
jmp 0x6095d6
cmp cl, 0x39
ja 0x6096a5
movzx ecx, cl
add ecx, 4
jmp 0x6096db
cmp bl, 0x2b
jne 0x60956e
push 0x3e
jmp 0x609594
cmp cl, 0x5a
movzx ecx, cl
jmp 0x609713
sub ecx, 0x47
jmp 0x6096db
lea esp, [esp + 0x18]
or eax, edx
shl eax, 6
or eax, ecx
jmp 0x60971a
shl eax, 6
or eax, esi
push sp
lea esp, [esp + 2]
shl eax, 6
pushal
pop dword [esp + 8]
mov byte [esp + 0x10], ah
pop word [esp + 0xd]
lea esp, [esp + 6]
mov word [esp + 3], bp
push dword [esp + 0x12]
jmp 0x6096bf
ja 0x6096ba
sub ecx, 0x41
jmp 0x6096db
mov ecx, dword [esp + 0xc]
pushal
mov ecx, dword [esp]
mov dword [esp + 0x14], eax
push sp
lea esp, [esp + 2]
popal
jmp 0x609764
sub eax, 0x47
jmp 0x6099c2
movzx ecx, byte [ecx + 2]
pushal
shl eax, 8
pushfd
push word [esp + 2]
jmp 0x609856
shr edx, 0x10
mov byte [ecx], dl
mov edx, eax
pushfd
mov word [esp], bp
push ecx
mov dword [esp + 3], ebp
pop dword [esp]
pop word [esp]
mov word [esp], si
lea esp, [esp]
pushal
lea esp, [esp + 2]
shr edx, 8
lea esp, [esp + 0x20]
mov si, word [esp]
mov esi, dword [esp]
lea esi, [edx + esi]
mov si, 0x2027
mov si, 0x5228
mov esi, dword [esp]
push bx
lea esp, [esp + 2]
lea esp, [esp + 4]
mov byte [ecx + 2], al
mov byte [ecx + 1], dl
xor eax, eax
pop ebx
ret
mov dword [esp], esp
push sp
push si
mov byte [esp + 5], ah
lea esp, [esp + 8]
popal
push 0x3f
pop ebx
jmp 0x609957
lea esp, [esp + 4]
shl eax, 8
or eax, ecx
pushal
mov cl, ah
xchg bp, di
mov cx, di
bswap bx
mov dword [esp + 0x18], eax
pushfd
jmp 0x6097bf
mov byte [esp], bh
mov word [esp + 1], dx
push dword [esp]
lea esp, [esp]
pop dword [esp]
lea esp, [esp + 4]
push ebp
push word [esp]
lea esp, [esp + 4]
lea esp, [esp + 1]
pushfd
lea esp, [esp + 1]
mov dword [esp], esi
pushfd
pop word [esp]
mov byte [esp], al
push word [esp + 1]
jmp 0x6097e3
push dword [esp + 2]
lea esp, [esp + 1]
pushal
lea esp, [esp + 1]
lea esp, [esp + 0x48]
sub esp, 0xc
or eax, edx
push edi
lea esp, [esp + 2]
lea esp, [esp + 1]
lea esp, [esp + 1]
lea esp, [esp + 0xc]
push esp
pop word [esp]
push word [esp]
mov dword [esp], ebx
push esp
mov byte [esp + 2], cl
jmp 0x60980e
cmp al, 0x5a
movzx eax, al
ja 0x60973d
sub eax, 0x41
jmp 0x6099c2
mov byte [edi], bl
cmp edx, 0x1a
jae 0x6098ec
lea ecx, [edx + 0x41]
jmp 0x609933
cmp ecx, 0x34
jae 0x60990d
lea ebx, [ecx + 0x47]
jmp 0x6098b3
xor ebx, ebx
cmp ecx, 0x3e
setne bl
lea ebx, [ebx*4 + 0x2b]
jmp 0x6098b3
cmp edx, 0x34
jae 0x609917
lea ecx, [edx + 0x47]
jmp 0x609933
cmp ecx, 0x3e
jae 0x6098db
lea ebx, [ecx - 4]
jmp 0x6098b3
cmp edx, 0x3e
jae 0x6099a0
lea ecx, [edx - 4]
jmp 0x609933
mov byte [edi + 1], cl
cmp esi, 0x1a
jae 0x609a97
lea ecx, [esi + 0x41]
jmp 0x609a37
mov edx, eax
mov esi, eax
shr ecx, 0x12
shr edx, 0xc
shr esi, 6
and ecx, ebx
and edx, ebx
clc
and esi, ebx
and eax, ebx
cmp ecx, 0x1a
jae 0x6098d1
lea ebx, [ecx + 0x41]
jmp 0x6098b3
mov word [esp], dx
push word [esp + 1]
push dword [esp + 2]
lea esp, [esp + 0x10]
jmp 0x609b40
pushfd
push dword [esp + 3]
mov dword [esp], esp
xor ecx, ecx
push edx
pop word [esp]
mov byte [esp], bh
jmp 0x60997e
push bp
push word [esp + 1]
mov dword [esp], edi
push si
push dword [esp + 2]
lea esp, [esp + 4]
lea esp, [esp + 2]
mov dword [esp], esi
push ebp
mov byte [esp + 1], dl
push word [esp + 3]
mov word [esp], di
mov dword [esp], esp
lea esp, [esp + 5]
pushal
mov word [esp + 0xf], sp
lea esp, [esp + 1]
lea esp, [esp + 0x20]
cmp dl, 0x2b
jne 0x609565
push 0x3e
jmp 0x609533
cmp esi, 0x3e
jae 0x609a76
lea ecx, [esi - 4]
jmp 0x609a37
cmp eax, 0x34
jae 0x609ae6
lea ecx, [eax + 0x47]
jmp 0x609a53
pop esi
mov byte [edi + 2], cl
pop ebx
cmp eax, 0x1a
jae 0x609a1a
lea ecx, [eax + 0x41]
jmp 0x609a53
mov byte [edi + 3], cl
ret
xor ecx, ecx
cmp esi, 0x3e
setne cl
lea ecx, [ecx*4 + 0x2b]
jmp 0x609a37
cmp esi, 0x34
jae 0x609a10
lea ecx, [esi + 0x47]
jmp 0x609a37
xor ecx, ecx
cmp eax, 0x3e
setne cl
lea ecx, [ecx*4 + 0x2b]
jmp 0x609a53
cmp eax, 0x3e
jae 0x609ac1
lea ecx, [eax - 4]
jmp 0x609a53
cmp edx, 0x3e
setne cl
lea ecx, [ecx*4 + 0x2b]
jmp 0x609933
call fcn.005da911
test al, 0x2d
mov ebp, 0x958237c4
xor cl, byte [ebp - 0xf97f6a6]
fadd qword [ebp + 0x5b]
call fcn.005da911
pushfd
mov dword [esp], eax
push word [esp + 2]
mov word [esp + 2], bx
mov word [esp], si
lea esp, [esp + 2]
lea esp, [esp + 4]
mov byte [esp + 2], dh
jmp 0x680a08
jmp 0x680a0c
mov word [esp + 7], bp
pushal
jmp 0x680a72
jb 0x680a2b
jae 0x680a2b
mov dword [esp + 0x19], edi
mov word [esp + 7], bp
pushal
lea esp, [esp + 0x40]
call fcn.005da911
test byte [0xd717e49d], cl
lea esi, reloc.WINMM.dll_midiStreamOut
mov dword [esp], reloc.WINMM.dll_midiStreamOut
pushal
jge 0x6809ea
mov dword [esp + 0x19], edi
jmp 0x6809ec
lea esp, [esp + 0x40]
jmp 0x680a1a