Function at 0x444810
Capabilities:
Encode data using base64

Disassembly:
push ecx
mov eax, dword [esp + 8]
mov edx, dword [eax]
push ebx
mov ebx, dword [esp + 0x18]
push ebp
add edx, 1
shr ebx, 0xb
push esi
movzx esi, byte [edx]
and ebx, 1
add edx, 1
test ebx, ebx
push edi
je 0x444879
cmp esi, 0xc0
jl 0x444879
mov ecx, esi
and ecx, 0x3f
movzx edi, byte [ecx + 0x483de0]
mov eax, dword [edi*4 + 0x483dc4]
lea ebp, [edi + edi*2]
add ebp, ebp
and eax, esi
mov ecx, ebp
shl eax, cl
test edi, edi
mov esi, eax
jle 0x444879
mov edi, edi
movzx eax, byte [edx]
sub ebp, 6
and eax, 0x3f
mov ecx, ebp
shl eax, cl
sub edi, 1
add edx, 1
or esi, eax
test edi, edi
jg 0x444860
sub edx, 1
test esi, esi
jne 0x444898
mov ecx, dword [esp + 0x1c]
mov eax, dword [esp + 0x18]
pop edi
mov dword [ecx], 1
mov dword [eax], edx
mov eax, esi
pop esi
pop ebp
pop ebx
pop ecx
ret
lea eax, [esi - 0x30]
cmp eax, 0x4a
ja 0x444c4d
movsx edi, word [eax*2 + 0x483068]
test edi, edi
mov dword [esp + 0x10], edi
je 0x4448c4
mov eax, dword [esp + 0x18]
mov esi, edi
pop edi
mov dword [eax], edx
mov eax, esi
pop esi
pop ebp
pop ebx
pop ecx
ret
cmp eax, 0x48
ja case.0x4448d4.10
movzx ecx, byte [eax + 0x444c78]
jmp dword [ecx*4 + 0x444c5c]
mov eax, dword [esp + 0x1c]
mov dword [eax], 0x25
mov eax, dword [esp + 0x18]
pop edi
mov dword [eax], edx
mov eax, esi
pop esi
pop ebp
pop ebx
pop ecx
ret
mov al, byte [edx + 1]
cmp al, 0x3c
je 0x444a25
cmp al, 0x27
je 0x444a25
cmp al, 0x7b
jne 0x444959
mov al, byte [edx + 2]
test al, al
lea ecx, [edx + 2]
je 0x444932
cmp al, 0x7d
je 0x44493b
cmp al, 0x2d
je 0x444928
movzx eax, al
test byte [eax + 0x483ba8], 4
je 0x44493b
mov al, byte [ecx + 1]
add ecx, 1
test al, al
jne 0x444914
mov ecx, 1
add edx, ecx
jmp 0x44495b
mov cl, byte [ecx]
test cl, cl
je 0x444932
cmp cl, 0x7d
je 0x444932
mov eax, dword [esp + 0x18]
mov esi, 0xffffffe4
pop edi
mov dword [eax], edx
mov eax, esi
pop esi
pop ebp
pop ebx
pop ecx
ret
xor ecx, ecx
cmp byte [edx + 1], 0x2d
jne 0x44496a
mov eax, 1
add edx, eax
jmp 0x44496c
xor eax, eax
movzx edi, byte [edx + 1]
xor esi, esi
test byte [edi + 0x483ba8], 4
je 0x4449a3
jmp 0x444980
movzx edi, byte [edx + 1]
add edx, 1
lea esi, [esi + esi*4]
lea esi, [edi + esi*2 - 0x30]
movzx edi, byte [edx + 1]
test byte [edi + 0x483ba8], 4
jne 0x444980
test esi, esi
jl 0x444a6e
test ecx, ecx
je 0x4449c7
add edx, 1
cmp byte [edx], 0x7d
je 0x4449c7
mov eax, dword [esp + 0x1c]
mov dword [eax], 0x39
mov eax, dword [esp + 0x18]
pop edi
mov dword [eax], edx
mov eax, esi
pop esi
pop ebp
pop ebx
pop ecx
ret
test esi, esi
jne 0x4449e3
mov ecx, dword [esp + 0x1c]
mov eax, dword [esp + 0x18]
pop edi
mov dword [ecx], 0x3a
mov dword [eax], edx
mov eax, esi
pop esi
pop ebp
pop ebx
pop ecx
ret
test eax, eax
je 0x444a0e
mov eax, dword [esp + 0x20]
cmp esi, eax
jle 0x444a07
mov eax, dword [esp + 0x1c]
mov dword [eax], 0xf
mov eax, dword [esp + 0x18]
pop edi
mov dword [eax], edx
mov eax, esi
pop esi
pop ebp
pop ebx
pop ecx
ret
sub eax, esi
add eax, 1
mov esi, eax
mov eax, dword [esp + 0x18]
mov ecx, 0xffffffe3
sub ecx, esi
mov esi, ecx
pop edi
mov dword [eax], edx
mov eax, esi
pop esi
pop ebp
pop ebx
pop ecx
ret
mov eax, dword [esp + 0x18]
mov esi, 0xffffffe5
pop edi
mov dword [eax], edx
mov eax, esi
pop esi
pop ebp
pop ebx
pop ecx
ret
cmp dword [esp + 0x28], 0
jne 0x444a93
mov esi, eax
movzx eax, byte [edx + 1]
test byte [eax + 0x483ba8], 4
mov ecx, edx
je 0x444a6a
add edx, 1
lea eax, [esi + esi*4]
movzx esi, byte [edx]
lea esi, [esi + eax*2 - 0x30]
movzx eax, byte [edx + 1]
test byte [eax + 0x483ba8], 4
jne 0x444a50
test esi, esi
jge 0x444a86
mov ecx, dword [esp + 0x1c]
mov eax, dword [esp + 0x18]
pop edi
mov dword [ecx], 0x3d
mov dword [eax], edx
mov eax, esi
pop esi
pop ebp
pop ebx
pop ecx
ret
cmp esi, 0xa
jl 0x444aae
cmp esi, dword [esp + 0x20]
jle 0x444aae
mov edx, ecx
movzx esi, byte [edx]
cmp esi, 0x38
jl case.0x4448d4.0
mov eax, dword [esp + 0x18]
sub edx, 1
xor esi, esi
pop edi
mov dword [eax], edx
mov eax, esi
pop esi
pop ebp
pop ebx
pop ecx
ret
mov eax, 0xffffffe3
sub eax, esi
mov esi, eax
mov eax, dword [esp + 0x18]
pop edi
mov dword [eax], edx
mov eax, esi
pop esi
pop ebp
pop ebx
pop ecx
ret
sub esi, 0x30
mov al, byte [edx + 1]
add edi, 1
cmp al, 0x30
jb 0x444ae6
cmp al, 0x37
ja 0x444ae6
movzx ecx, byte [edx + 1]
add edx, 1
cmp edi, 2
lea esi, [ecx + esi*8 - 0x30]
jl 0x444ac8
test ebx, ebx
jne 0x444c4d
cmp esi, 0xff
jle 0x444c4d
mov eax, dword [esp + 0x1c]
mov dword [eax], 0x33
mov eax, dword [esp + 0x18]
pop edi
mov dword [eax], edx
mov eax, esi
pop esi
pop ebp
pop ebx
pop ecx
ret
cmp byte [edx + 1], 0x7b
mov cl, 8
jne 0x444b9e
movzx eax, byte [edx + 2]
lea edi, [edx + 2]
xor ebp, ebp
xor esi, esi
test byte [eax + 0x483ba8], cl
je 0x444b6d
add edi, 1
test esi, esi
jne 0x444b3d
cmp eax, 0x30
je 0x444b62
add ebp, 1
cmp eax, 0x61
jl 0x444b48
sub eax, 0x20
xor ecx, ecx
cmp eax, 0x41
setge cl
shl esi, 4
sub ecx, 1
and ecx, 0xfffffff9
add ecx, 0x37
sub esi, ecx
add esi, eax
mov cl, 8
movzx eax, byte [edi]
test byte [eax + 0x483ba8], cl
jne 0x444b31
cmp byte [edi], 0x7d
jne 0x444b9e
test esi, esi
jl 0x444b84
neg ebx
sbb ebx, ebx
and ebx, 6
add ebx, 2
cmp ebp, ebx
jle 0x444b8e
mov edx, dword [esp + 0x1c]
mov dword [edx], 0x22
mov eax, dword [esp + 0x18]
mov edx, edi
pop edi
mov dword [eax], edx
mov eax, esi
pop esi
pop ebp
pop ebx
pop ecx
ret
mov edi, dword [esp + 0x10]
xor esi, esi
jmp 0x444bb0
movzx eax, byte [edx + 1]
add edi, 1
test byte [eax + 0x483ba8], cl
je 0x444c4d
movzx eax, byte [edx + 1]
add edx, 1
cmp eax, 0x61
jl 0x444bd2
sub eax, 0x20
xor ebx, ebx
cmp eax, 0x41
setge bl
shl esi, 4
sub ebx, 1
and ebx, 0xfffffff9
add ebx, 0x37
sub esi, ebx
add esi, eax
cmp edi, 2
jl 0x444bb0
mov eax, dword [esp + 0x18]
pop edi
mov dword [eax], edx
mov eax, esi
pop esi
pop ebp
pop ebx
pop ecx
ret
movzx esi, byte [edx + 1]
add edx, 1
test esi, esi
jne 0x444c20
mov ecx, dword [esp + 0x1c]
mov eax, dword [esp + 0x18]
pop edi
mov dword [ecx], 2
mov dword [eax], edx
mov eax, esi
pop esi
pop ebp
pop ebx
pop ecx
ret
lea eax, [esi - 0x61]
cmp eax, 0x19
ja 0x444c2b
sub esi, 0x20
mov eax, dword [esp + 0x18]
xor esi, 0x40
pop edi
mov dword [eax], edx
mov eax, esi
pop esi
pop ebp
pop ebx
pop ecx
ret
test byte [esp + 0x24], 0x40
je 0x444c4d
mov ecx, dword [esp + 0x1c]
mov dword [ecx], 3
mov eax, dword [esp + 0x18]
pop edi
mov dword [eax], edx
mov eax, esi
pop esi
pop ebp
pop ebx
pop ecx
ret