Function at 0x301d14c7
Capabilities:
Encode data using base64

Disassembly:
push ebp
mov ebp, esp
push ecx
mov eax, dword [ebp + 8]
mov edx, dword [eax]
push ebx
mov ebx, dword [ebp + 0x14]
shr ebx, 0xb
and ebx, 1
inc edx
push esi
movzx esi, byte [edx]
inc edx
test ebx, ebx
push edi
je 0x301d152a
cmp esi, 0xc0
jl 0x301d152a
mov eax, esi
and eax, 0x3f
movzx eax, byte [eax + 0x302e0080]
mov ecx, dword [eax*4 + 0x302e0064]
and ecx, esi
lea edi, [eax + eax*2]
shl edi, 1
mov esi, ecx
mov ecx, edi
shl esi, cl
test eax, eax
jle 0x301d152a
mov dword [ebp - 4], eax
xor eax, eax
mov al, byte [edx]
sub edi, 6
mov ecx, edi
and eax, 0x3f
shl eax, cl
or esi, eax
inc edx
dec dword [ebp - 4]
jne 0x301d1514
xor edi, edi
dec edx
cmp esi, edi
jne 0x301d153f
mov eax, dword [ebp + 0xc]
mov dword [eax], 1
jmp 0x301d1823
cmp esi, 0x30
jl 0x301d1823
cmp esi, 0x7a
jg 0x301d1823
lea eax, [esi - 0x30]
movsx ecx, word [eax*2 + 0x302c60b8]
cmp ecx, edi
mov dword [ebp - 4], ecx
je 0x301d156a
mov esi, ecx
jmp 0x301d1823
cmp esi, 0x63
jg 0x301d1679
je 0x301d164e
cmp esi, 0x30
je 0x301d160d
jle 0x301d1699
cmp esi, 0x39
jle 0x301d15ae
cmp esi, 0x4c
je 0x301d15a0
cmp esi, 0x4e
je 0x301d15a0
cmp esi, 0x55
jne 0x301d1699
mov eax, dword [ebp + 0xc]
mov dword [eax], 0x25
jmp 0x301d1823
cmp dword [ebp + 0x18], edi
jne 0x301d15fa
mov edi, edx
mov esi, eax
jmp 0x301d15c5
mov edx, eax
movzx ecx, byte [edx]
lea eax, [esi + esi*4]
lea esi, [ecx + eax*2 - 0x30]
lea eax, [edx + 1]
movzx ecx, byte [eax]
test byte [ecx + 0x302c6240], 4
jne 0x301d15b9
test esi, esi
jge 0x301d15e6
mov eax, dword [ebp + 0xc]
mov dword [eax], 0x3d
jmp 0x301d1823
cmp esi, 0xa
jl 0x301d1811
cmp esi, dword [ebp + 0x10]
jle 0x301d1811
mov edx, edi
movzx esi, byte [edx]
cmp esi, 0x38
jl 0x301d160a
dec edx
xor esi, esi
jmp 0x301d1823
mov ecx, dword [ebp - 4]
sub esi, 0x30
lea edi, [edx + 1]
mov al, byte [edi]
inc ecx
cmp al, 0x30
jb 0x301d162c
cmp al, 0x37
ja 0x301d162c
cmp ecx, 2
mov edx, edi
movzx eax, byte [edx]
lea esi, [eax + esi*8 - 0x30]
jl 0x301d1610
test ebx, ebx
jne 0x301d1823
cmp esi, 0xff
jle 0x301d1823
mov eax, dword [ebp + 0xc]
mov dword [eax], 0x33
jmp 0x301d1823
inc edx
movzx esi, byte [edx]
cmp esi, edi
jne 0x301d1664
mov eax, dword [ebp + 0xc]
mov dword [eax], 2
jmp 0x301d1823
cmp esi, 0x61
jl 0x301d1671
cmp esi, 0x7a
jg 0x301d1671
sub esi, 0x20
xor esi, 0x40
jmp 0x301d1823
cmp esi, 0x67
je 0x301d1767
cmp esi, 0x6c
je 0x301d15a0
cmp esi, 0x75
je 0x301d15a0
cmp esi, 0x78
je 0x301d16b1
test byte [ebp + 0x14], 0x40
je 0x301d1823
mov eax, dword [ebp + 0xc]
mov dword [eax], 3
jmp 0x301d1823
cmp byte [edx + 1], 0x7b
jne 0x301d1721
xor esi, esi
lea ecx, [edx + 2]
mov dword [ebp + 0x14], esi
jmp 0x301d16ee
inc ecx
test esi, esi
mov edi, eax
jne 0x301d16cd
cmp edi, 0x30
je 0x301d16ee
inc dword [ebp + 0x14]
cmp edi, 0x61
jl 0x301d16d8
sub edi, 0x20
xor eax, eax
cmp edi, 0x41
setge al
shl esi, 4
dec eax
and eax, 0xfffffff9
add eax, 0x37
sub esi, eax
add esi, edi
movzx eax, byte [ecx]
test byte [eax + 0x302c6240], 8
jne 0x301d16c1
cmp byte [ecx], 0x7d
jne 0x301d1721
test esi, esi
jl 0x301d1711
neg ebx
sbb ebx, ebx
and ebx, 6
inc ebx
inc ebx
cmp dword [ebp + 0x14], ebx
jle 0x301d171a
mov eax, dword [ebp + 0xc]
mov dword [eax], 0x22
mov edx, ecx
jmp 0x301d1823
xor esi, esi
inc dword [ebp - 4]
lea eax, [edx + 1]
movzx ecx, byte [eax]
test byte [ecx + 0x302c6240], 8
je 0x301d1823
mov edx, eax
movzx eax, byte [edx]
cmp eax, 0x61
jl 0x301d1746
sub eax, 0x20
xor ecx, ecx
cmp eax, 0x41
setge cl
shl esi, 4
dec ecx
and ecx, 0xfffffff9
add ecx, 0x37
sub esi, ecx
add esi, eax
cmp dword [ebp - 4], 2
jl 0x301d1723
jmp 0x301d1823
lea esi, [edx + 1]
cmp byte [esi], 0x7b
jne 0x301d17a9
lea eax, [edx + 2]
mov cl, byte [eax]
test cl, cl
je 0x301d17a4
cmp cl, 0x7d
je 0x301d1795
cmp cl, 0x2d
je 0x301d178e
movzx ecx, cl
test byte [ecx + 0x302c6240], 4
je 0x301d1795
inc eax
mov cl, byte [eax]
test cl, cl
jne 0x301d1778
mov al, byte [eax]
test al, al
je 0x301d17a4
cmp al, 0x7d
je 0x301d17a4
push 0xffffffffffffffe6
pop esi
jmp 0x301d1823
xor edi, edi
inc edi
mov edx, esi
lea eax, [edx + 1]
xor ecx, ecx
cmp byte [eax], 0x2d
jne 0x301d17b6
inc ecx
mov edx, eax
lea eax, [edx + 1]
movzx ebx, byte [eax]
xor esi, esi
test byte [ebx + 0x302c6240], 4
je 0x301d181a
mov edx, eax
lea eax, [esi + esi*4]
movzx esi, byte [edx]
lea esi, [esi + eax*2 - 0x30]
lea eax, [edx + 1]
movzx ebx, byte [eax]
test byte [ebx + 0x302c6240], 4
jne 0x301d17c7
test esi, esi
jl 0x301d15d8
je 0x301d181a
test edi, edi
je 0x301d17f6
inc edx
cmp byte [edx], 0x7d
jne 0x301d181a
test ecx, ecx
je 0x301d1811
mov eax, dword [ebp + 0x10]
cmp esi, eax
jle 0x301d180c
mov eax, dword [ebp + 0xc]
mov dword [eax], 0xf
jmp 0x301d1823
sub eax, esi
inc eax
mov esi, eax
push 0xffffffffffffffe5
pop eax
sub eax, esi
mov esi, eax
jmp 0x301d1823
mov eax, dword [ebp + 0xc]
mov dword [eax], 0x39
mov eax, dword [ebp + 8]
pop edi
mov dword [eax], edx
mov eax, esi
pop esi
pop ebx
leave
ret