Function at 0x440a90
Capabilities:
Encode data using base64

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0xc
mov eax, dword [esp + 0x28]
mov esi, dword [esp + 0x20]
test eax, eax
mov dword [esp + 8], eax
je 0x440c87
mov eax, dword [esp + 0x24]
mov dword [esp], 4
inc eax
nop word [eax + eax]
movzx ecx, byte [eax - 1]
mov esi, eax
mov edi, ecx
shl edi, 0x10
cmp dword [esp + 8], 2
jbe 0x440c8e
shr cl, 2
mov dword [esp + 4], esi
movzx ebx, cl
mov dh, cl
mov ebp, ecx
add cl, 0x47
mov eax, ebx
add dh, 0xfc
xor eax, 0x3e
dec eax
sar eax, 0x1f
mov dl, al
and al, 0x2b
not dl
and dl, 0x2f
or dl, al
lea eax, [ebx - 0x3e]
sar eax, 0x1f
and dh, al
not al
and al, dl
or al, dh
lea edx, [ebx - 0x34]
add ebx, 0xffffffe6
sar edx, 0x1f
sar ebx, 0x1f
and cl, dl
not dl
and dl, al
mov eax, ebp
movzx ebp, byte [esi + 1]
add al, 0x41
or dl, cl
and al, bl
not bl
and bl, dl
movzx edx, byte [esi]
mov esi, dword [esp]
or bl, al
mov eax, dword [esp + 0x20]
shl edx, 8
or edi, edx
mov byte [eax + esi - 4], bl
or edx, ebp
mov ebx, edi
shr edx, 6
shr ebx, 0xc
mov ecx, ebx
and ebx, 0x3f
mov eax, ebx
and cl, 0x3f
mov edi, ebx
lea ebx, [ebx - 0x3e]
xor eax, 0x3e
sar ebx, 0x1f
dec eax
sar eax, 0x1f
mov ch, al
and al, 0x2b
not ch
and ch, 0x2f
or ch, al
mov eax, ecx
add al, 0xfc
and al, bl
not bl
and bl, ch
mov ch, cl
add cl, 0x41
or bl, al
lea eax, [edi - 0x34]
add ch, 0x47
sar eax, 0x1f
and ch, al
not al
and al, bl
mov ebx, edi
add ebx, 0xffffffe6
or al, ch
sar ebx, 0x1f
and cl, bl
not bl
and bl, al
mov eax, dword [esp + 0x20]
or bl, cl
mov byte [eax + esi - 3], bl
mov eax, edx
and edx, 0x3f
mov ecx, edx
and al, 0x3f
xor ecx, 0x3e
mov ebx, eax
dec ecx
add bl, 0xfc
sar ecx, 0x1f
mov ah, cl
and cl, 0x2b
not ah
and ah, 0x2f
or ah, cl
lea ecx, [edx - 0x3e]
sar ecx, 0x1f
and bl, cl
not cl
and cl, ah
mov ah, al
add al, 0x41
or cl, bl
lea ebx, [edx - 0x34]
add ah, 0x47
add edx, 0xffffffe6
sar ebx, 0x1f
sar edx, 0x1f
and ah, bl
not bl
and al, dl
not dl
and bl, cl
or bl, ah
and dl, bl
mov ebx, ebp
or dl, al
mov eax, dword [esp + 0x20]
and ebx, 0x3f
lea ecx, [ebx - 0x3e]
sar ecx, 0x1f
mov edi, eax
mov byte [eax + esi - 2], dl
mov eax, ebx
xor eax, 0x3e
dec eax
sar eax, 0x1f
mov edx, eax
and al, 0x2b
not dl
and dl, 0x2f
or dl, al
mov eax, ebx
add al, 0xfc
and al, cl
not cl
and cl, dl
mov edx, ebx
or cl, al
lea eax, [ebx - 0x34]
add dl, 0x47
sar eax, 0x1f
and dl, al
not al
and al, cl
mov ecx, ebx
add bl, 0x41
add ecx, 0xffffffe6
or al, dl
sar ecx, 0x1f
and bl, cl
not cl
and cl, al
mov eax, dword [esp + 4]
or cl, bl
mov byte [edi + esi - 1], cl
add esi, 4
mov dword [esp], esi
add eax, 3
add dword [esp + 8], 0xfffffffd
jne 0x440ac0
mov esi, dword [esp + 0x20]
mov eax, dword [esp]
lea esi, [esi + eax - 4]
add eax, 0xfffffffc
jmp 0x440dd3
xor eax, eax
jmp 0x440dd3
jne 0x440c9a
mov eax, esi
movzx eax, byte [esi]
shl eax, 8
or edi, eax
mov ecx, edi
mov dword [esp + 4], edi
mov esi, dword [esp + 0x20]
mov edi, dword [esp]
shr ecx, 0x12
mov edx, ecx
and ecx, 0x3f
mov eax, ecx
and dl, 0x3f
xor eax, 0x3e
mov ebx, edx
dec eax
add bl, 0xfc
sar eax, 0x1f
mov dh, al
and al, 0x2b
not dh
and dh, 0x2f
or dh, al
lea eax, [ecx - 0x3e]
sar eax, 0x1f
and bl, al
not al
and al, dh
mov dh, dl
add dl, 0x41
or al, bl
lea ebx, [ecx - 0x34]
add dh, 0x47
add ecx, 0xffffffe6
sar ebx, 0x1f
sar ecx, 0x1f
and dh, bl
not bl
and dl, cl
not cl
and bl, al
or bl, dh
and cl, bl
or cl, dl
mov byte [esi + edi - 4], cl
mov ecx, dword [esp + 4]
shr ecx, 0xc
mov edx, ecx
and ecx, 0x3f
mov eax, ecx
and dl, 0x3f
xor eax, 0x3e
mov ebx, edx
dec eax
add bl, 0xfc
sar eax, 0x1f
mov dh, al
and al, 0x2b
not dh
and dh, 0x2f
or dh, al
lea eax, [ecx - 0x3e]
sar eax, 0x1f
and bl, al
not al
and al, dh
mov dh, dl
add dl, 0x41
or al, bl
lea ebx, [ecx - 0x34]
add dh, 0x47
add ecx, 0xffffffe6
sar ebx, 0x1f
sar ecx, 0x1f
and dh, bl
not bl
and dl, cl
not cl
and bl, al
or bl, dh
and cl, bl
or cl, dl
cmp dword [esp + 8], 1
mov byte [esi + edi - 3], cl
mov cl, 0x3d
je 0x440dc4
mov ebx, dword [esp + 4]
shr ebx, 6
mov ecx, ebx
and ebx, 0x3f
mov eax, ebx
and cl, 0x3f
xor eax, 0x3e
mov ch, cl
dec eax
add ch, 0xfc
sar eax, 0x1f
mov edx, eax
and al, 0x2b
not dl
and dl, 0x2f
or dl, al
lea eax, [ebx - 0x3e]
sar eax, 0x1f
and ch, al
not al
and al, dl
lea edx, [ebx - 0x34]
add ebx, 0xffffffe6
or al, ch
mov ch, cl
sar edx, 0x1f
sar ebx, 0x1f
add cl, 0x41
add ch, 0x47
and cl, bl
not bl
and ch, dl
not dl
and dl, al
or dl, ch
and bl, dl
or bl, cl
mov ecx, ebx
mov eax, dword [esp]
mov byte [esi + eax - 2], cl
mov byte [esi + eax - 1], 0x3d
lea esi, [esi + eax]
mov byte [esi], 0
add esp, 0xc
pop esi
pop edi
pop ebx
pop ebp
ret