Function at 0x46e380
Capabilities:
Encode data using base64
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xc
push ebx
push esi
push edi
mov edi, dword [ebp + 0x18]
xor ebx, ebx
xor eax, eax
mov dword [ebp - 4], ebx
xor esi, esi
mov dword [ebp - 8], eax
test edi, edi
je 0x46e5c8
mov edx, dword [ebp + 0x14]
xor ecx, ecx
cmp esi, edi
jae 0x46e3be
lea esp, [esp]
cmp byte [esi + edx], 0x20
jne 0x46e3bc
inc esi
inc ecx
cmp esi, edi
jb 0x46e3b0
cmp esi, edi
je 0x46e450
mov eax, edi
sub eax, esi
cmp eax, 2
jb 0x46e3da
cmp byte [esi + edx], 0xd
jne 0x46e3da
cmp byte [esi + edx + 1], 0xa
je 0x46e444
mov bl, byte [esi + edx]
cmp bl, 0xa
je 0x46e441
test ecx, ecx
jne 0x46e58c
cmp bl, 0x3d
jne 0x46e3ff
mov eax, dword [ebp - 4]
inc eax
mov dword [ebp - 4], eax
cmp eax, 2
ja 0x46e58c
movzx eax, bl
push eax
push 0x80
push 0x4e1a38
call fcn.0046e7b0
add esp, 0xc
cmp bl, 0x7f
ja 0x46e58c
cmp al, 0x7f
je 0x46e58c
mov ebx, dword [ebp - 4]
cmp al, 0x40
jae 0x46e435
test ebx, ebx
jne 0x46e58c
mov eax, dword [ebp - 8]
mov edx, dword [ebp + 0x14]
inc eax
mov dword [ebp - 8], eax
jmp 0x46e447
mov ebx, dword [ebp - 4]
mov eax, dword [ebp - 8]
inc esi
cmp esi, edi
jb 0x46e3a0
test eax, eax
je 0x46e5c8
and eax, 7
lea eax, [eax + eax*2]
lea ecx, [eax*2 + 7]
mov eax, dword [ebp - 8]
shr eax, 3
shr ecx, 3
lea eax, [eax + eax*2]
lea ecx, [ecx + eax*2]
sub ecx, ebx
mov ebx, dword [ebp + 8]
test ebx, ebx
je 0x46e5b7
cmp dword [ebp + 0xc], ecx
jb 0x46e5b7
xor eax, eax
mov dword [ebp - 4], 3
mov dword [ebp - 0xc], 0
mov dword [ebp - 8], eax
mov dword [ebp + 0x18], ebx
test esi, esi
je 0x46e5a6
jmp 0x46e4b0
mov al, byte [edx]
cmp al, 0xd
je 0x46e59b
cmp al, 0xa
je 0x46e59b
cmp al, 0x20
je 0x46e59b
xor dh, dh
movzx ebx, al
xor edi, edi
mov eax, edi
xor eax, ebx
mov ecx, eax
shr eax, 0x1f
neg ecx
shr ecx, 0x1f
or cl, al
mov al, byte [edi + 0x4e1a38]
xor cl, 1
inc edi
mov dl, cl
neg dl
or dl, cl
shr dl, 7
neg dl
and al, dl
not dl
and dl, dh
or al, dl
mov dh, al
cmp edi, 0x80
jb 0x46e4d1
movzx edi, dh
mov eax, edi
mov ebx, dword [ebp + 0x18]
xor eax, 0x40
and edi, 0x3f
mov ecx, eax
shr eax, 0x1f
neg ecx
shr ecx, 0x1f
or ecx, eax
xor ecx, 1
mov edx, ecx
neg edx
or edx, ecx
mov ecx, dword [ebp - 4]
shr edx, 0x1f
neg edx
lea eax, [ecx - 1]
and eax, edx
not edx
and edx, ecx
mov ecx, dword [ebp - 0xc]
shl ecx, 6
or edx, eax
or ecx, edi
mov dword [ebp - 4], edx
mov edi, dword [ebp - 8]
inc edi
mov dword [ebp - 0xc], ecx
mov dword [ebp - 8], edi
cmp edi, 4
jne 0x46e598
xor eax, eax
mov dword [ebp - 8], eax
test edx, edx
je 0x46e56c
mov eax, ecx
shr eax, 0x10
mov byte [ebx], al
inc ebx
mov dword [ebp + 0x18], ebx
cmp edx, 1
jbe 0x46e57c
mov eax, ecx
shr eax, 8
mov byte [ebx], al
inc ebx
mov dword [ebp + 0x18], ebx
cmp edx, 2
mov edx, dword [ebp + 0x14]
jbe 0x46e59b
mov byte [ebx], cl
inc ebx
mov dword [ebp + 0x18], ebx
jmp 0x46e59b
pop edi
pop esi
mov eax, 0xffffffd4
pop ebx
mov esp, ebp
pop ebp
ret
mov edx, dword [ebp + 0x14]
inc edx
mov dword [ebp + 0x14], edx
dec esi
jne 0x46e4b0
mov eax, dword [ebp + 0x10]
sub ebx, dword [ebp + 8]
pop edi
pop esi
mov dword [eax], ebx
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [ebp + 0x10]
pop edi
pop esi
pop ebx
mov dword [eax], ecx
mov eax, 0xffffffd6
mov esp, ebp
pop ebp
ret
mov eax, dword [ebp + 0x10]
pop edi
pop esi
pop ebx
mov dword [eax], 0
xor eax, eax
mov esp, ebp
pop ebp
ret