Function at 0x46cce0
Capabilities:
Encode data using base64

Disassembly:
push ecx
push ebx
push ebp
mov ebp, dword [esp + 0x18]
push esi
push edi
mov edi, eax
mov eax, dword [esp + 0x18]
mov edx, dword [eax]
movzx eax, byte [edx + 1]
shr ebp, 0xb
add edx, 2
and ebp, 1
je 0x46cd38
cmp eax, 0xc0
jl 0x46cd38
mov ecx, eax
and ecx, 0x3f
movzx esi, byte [ecx + 0x4b5e48]
and eax, dword [esi*4 + 0x4b5e2c]
lea ecx, [esi + esi*2]
add ecx, ecx
shl eax, cl
test esi, esi
jle 0x46cd38
movzx ebx, byte [edx]
sub ecx, 6
and ebx, 0x3f
shl ebx, cl
dec esi
inc edx
or eax, ebx
test esi, esi
jg 0x46cd25
dec edx
test eax, eax
jne 0x46cd4c
mov ecx, dword [esp + 0x1c]
mov dword [ecx], 1
jmp 0x46d043
lea ecx, [eax - 0x30]
cmp ecx, 0x4a
ja 0x46d02e
movsx ebx, word [ecx*2 + 0x4b6a58]
mov dword [esp + 0x10], ebx
test ebx, ebx
je 0x46cd6f
mov eax, ebx
jmp 0x46d02e
cmp ecx, 0x48
ja case.0x46cd7f.10
movzx esi, byte [ecx + 0x46d088]
jmp dword [esi*4 + 0x46d06c]
mov ecx, dword [esp + 0x1c]
mov dword [ecx], 0x25
jmp 0x46d02e
mov al, byte [edx + 1]
cmp al, 0x3c
je 0x46ce92
cmp al, 0x27
je 0x46ce92
cmp al, 0x7b
jne 0x46cdef
mov al, byte [edx + 2]
lea ecx, [edx + 2]
test al, al
je 0x46cdd2
cmp al, 0x7d
je 0x46cdda
cmp al, 0x2d
je 0x46cdca
movzx eax, al
test byte [eax + 0x4b7658], 4
je 0x46cdda
mov al, byte [ecx + 1]
inc ecx
test al, al
jne 0x46cdb6
mov cl, byte [ecx]
test cl, cl
je 0x46cdd2
invalid
cmp cl, 0x7d
xor esi, esi
mov eax, 0xffffffe5
jmp 0x46d043
cmp dword [esp + 0x24], 0
jne 0x46ceeb
mov eax, ecx
movzx ecx, byte [edx + 1]
test byte [ecx + 0x4b7658], 4
mov esi, edx
je 0x46cecd
movzx ecx, byte [edx + 1]
inc edx
lea eax, [eax + eax*4]
lea eax, [ecx + eax*2 - 0x30]
movzx ecx, byte [edx + 1]
test byte [ecx + 0x4b7658], 4
jne 0x46ceb4
test eax, eax
jns 0x46cee0
mov ecx, dword [esp + 0x1c]
mov dword [ecx], 0x3d
jmp 0x46d02e
cmp eax, 0xa
jl 0x46ce84
cmp eax, edi
jle 0x46ce84
mov edx, esi
movzx eax, byte [edx]
cmp eax, 0x38
jl case.0x46cd7f.0
dec edx
xor eax, eax
jmp 0x46d043
sub eax, 0x30
mov edi, edi
mov cl, byte [edx + 1]
inc ebx
cmp cl, 0x30
jb 0x46cf1c
cmp cl, 0x37
ja 0x46cf1c
movzx ecx, byte [edx + 1]
inc edx
lea eax, [ecx + eax*8 - 0x30]
cmp ebx, 2
jl 0x46cf00
test ebp, ebp
jne 0x46d02e
cmp eax, 0xff
jle 0x46d02e
mov ecx, dword [esp + 0x1c]
mov dword [ecx], 0x33
jmp 0x46d02e
cmp byte [edx + 1], 0x7b
jne 0x46cfb6
movzx esi, byte [edx + 2]
lea edi, [edx + 2]
xor ecx, ecx
xor eax, eax
test byte [esi + 0x4b7658], 8
je 0x46cf91
inc edi
test eax, eax
jne 0x46cf62
cmp esi, 0x30
je 0x46cf85
inc ecx
cmp esi, 0x61
jl 0x46cf6b
sub esi, 0x20
xor ebx, ebx
cmp esi, 0x41
setge bl
shl eax, 4
dec ebx
and ebx, 0xfffffff9
add ebx, 0x37
sub eax, ebx
mov ebx, dword [esp + 0x10]
add eax, esi
movzx esi, byte [edi]
test byte [esi + 0x4b7658], 8
jne 0x46cf58
cmp byte [edi], 0x7d
jne 0x46cfb6
test eax, eax
js 0x46cfa8
neg ebp
sbb ebp, ebp
and ebp, 6
add ebp, 2
cmp ecx, ebp
jle 0x46cfb2
mov edx, dword [esp + 0x1c]
mov dword [edx], 0x22
mov edx, edi
jmp 0x46d02e
xor eax, eax
jmp 0x46cfc0
movzx ecx, byte [edx + 1]
inc ebx
test byte [ecx + 0x4b7658], 8
je 0x46d02e
movzx esi, byte [edx + 1]
inc edx
cmp esi, 0x61
jl 0x46cfdb
sub esi, 0x20
xor ecx, ecx
cmp esi, 0x41
setge cl
shl eax, 4
dec ecx
and ecx, 0xfffffff9
add ecx, 0x37
sub eax, ecx
add eax, esi
cmp ebx, 2
jl 0x46cfc0
jmp 0x46d02e
movzx eax, byte [edx + 1]
inc edx
test eax, eax
jne 0x46d00d
mov ecx, dword [esp + 0x1c]
mov dword [ecx], 2
jmp 0x46d043
lea ecx, [eax - 0x61]
cmp ecx, 0x19
ja 0x46d018
sub eax, 0x20
xor eax, 0x40
jmp 0x46d02e
test byte [esp + 0x20], 0x40
je 0x46d02e
mov ecx, dword [esp + 0x1c]
mov dword [ecx], 3