Function at 0x3d85604
Capabilities:
Encode data using base64

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x2c
mov edi, edx
mov ebx, dword [esp + 0x44]
mov edx, 0xaaaaaaab
mov eax, ebx
mul edx
cmp ebx, 0xbfffffff
ja 0x3d85642
mov esi, edx
shr esi, 1
lea eax, [esi + esi*2]
mov edx, ebx
sub edx, eax
shl esi, 2
test edx, edx
mov dword [esp + 0x10], edx
je 0x3d85663
cmp byte [edi], 0
je 0x3d85656
add esi, 4
jae 0x3d85663
mov ecx, 0x3dcf09a
mov edx, 0x2d
push 0x3dcf0c8
call fcn.03dcc640
xor eax, eax
cmp edx, 1
sete al
xor eax, 3
or esi, eax
mov dword [esp + 0x14], ecx
xor edx, edx
inc edx
mov dword [esp], esi
mov ecx, esi
call fcn.03da19ec
mov dword [esp + 0xc], eax
mov ebp, edx
xor ecx, ecx
mov edx, ebx
mov eax, 0
sub edx, 0x1a
cmovb edx, ecx
mov dword [esp + 8], edx
jbe 0x3d858f5
xor eax, eax
mov edx, 0x20
mov ecx, edx
lea edx, [eax + 0x1a]
cmp edx, ebx
ja 0x3d85b9f
test ecx, ecx
mov edx, dword [esp]
je 0x3d85bad
cmp ecx, edx
ja 0x3d85bbe
mov edx, dword [esp + 0x40]
mov esi, dword [edx + eax]
mov edx, dword [edx + eax + 4]
bswap edx
bswap esi
mov ebx, esi
shr ebx, 0x1a
mov bl, byte [edi + ebx + 3]
mov byte [ebp + ecx - 0x20], bl
mov ebx, esi
shr ebx, 0x14
and ebx, 0x3f
mov bl, byte [edi + ebx + 3]
mov byte [ebp + ecx - 0x1f], bl
mov ebx, esi
shr ebx, 0xe
and ebx, 0x3f
mov bl, byte [edi + ebx + 3]
mov byte [ebp + ecx - 0x1e], bl
mov ebx, esi
shr ebx, 8
and ebx, 0x3f
mov bl, byte [edi + ebx + 3]
mov byte [ebp + ecx - 0x1d], bl
mov ebx, esi
shr ebx, 2
and ebx, 0x3f
mov bl, byte [edi + ebx + 3]
mov byte [ebp + ecx - 0x1c], bl
shld esi, edx, 4
and esi, 0x3f
mov bl, byte [edi + esi + 3]
mov byte [ebp + ecx - 0x1b], bl
mov esi, edx
shr esi, 0x16
and esi, 0x3f
mov bl, byte [edi + esi + 3]
mov byte [ebp + ecx - 0x1a], bl
shr edx, 0x10
and edx, 0x3f
mov dl, byte [edi + edx + 3]
mov byte [ebp + ecx - 0x19], dl
mov edx, dword [esp + 0x40]
mov esi, dword [edx + eax + 6]
mov edx, dword [edx + eax + 0xa]
bswap edx
bswap esi
mov ebx, esi
shr ebx, 0x1a
mov bl, byte [edi + ebx + 3]
mov byte [ebp + ecx - 0x18], bl
mov ebx, esi
shr ebx, 0x14
and ebx, 0x3f
mov bl, byte [edi + ebx + 3]
mov byte [ebp + ecx - 0x17], bl
mov ebx, esi
shr ebx, 0xe
and ebx, 0x3f
mov bl, byte [edi + ebx + 3]
mov byte [ebp + ecx - 0x16], bl
mov ebx, esi
shr ebx, 8
and ebx, 0x3f
mov bl, byte [edi + ebx + 3]
mov byte [ebp + ecx - 0x15], bl
mov ebx, esi
shr ebx, 2
and ebx, 0x3f
mov bl, byte [edi + ebx + 3]
shld esi, edx, 4
mov byte [ebp + ecx - 0x14], bl
and esi, 0x3f
mov bl, byte [edi + esi + 3]
mov byte [ebp + ecx - 0x13], bl
mov esi, edx
shr esi, 0x16
and esi, 0x3f
mov bl, byte [edi + esi + 3]
mov byte [ebp + ecx - 0x12], bl
shr edx, 0x10
and edx, 0x3f
mov dl, byte [edi + edx + 3]
mov byte [ebp + ecx - 0x11], dl
mov edx, dword [esp + 0x40]
mov esi, dword [edx + eax + 0xc]
mov edx, dword [edx + eax + 0x10]
bswap edx
bswap esi
mov ebx, esi
shr ebx, 0x1a
mov bl, byte [edi + ebx + 3]
mov byte [ebp + ecx - 0x10], bl
mov ebx, esi
shr ebx, 0x14
and ebx, 0x3f
mov bl, byte [edi + ebx + 3]
mov byte [ebp + ecx - 0xf], bl
mov ebx, esi
shr ebx, 0xe
and ebx, 0x3f
mov bl, byte [edi + ebx + 3]
mov byte [ebp + ecx - 0xe], bl
mov ebx, esi
shr ebx, 8
and ebx, 0x3f
mov bl, byte [edi + ebx + 3]
mov byte [ebp + ecx - 0xd], bl
mov ebx, esi
shr ebx, 2
and ebx, 0x3f
mov bl, byte [edi + ebx + 3]
mov byte [ebp + ecx - 0xc], bl
shld esi, edx, 4
and esi, 0x3f
mov bl, byte [edi + esi + 3]
mov byte [ebp + ecx - 0xb], bl
mov esi, edx
shr esi, 0x16
and esi, 0x3f
mov bl, byte [edi + esi + 3]
mov byte [ebp + ecx - 0xa], bl
shr edx, 0x10
and edx, 0x3f
mov dl, byte [edi + edx + 3]
mov byte [ebp + ecx - 9], dl
mov edx, dword [esp + 0x40]
mov esi, dword [edx + eax + 0x12]
mov edx, dword [edx + eax + 0x16]
bswap esi
mov ebx, esi
shr ebx, 0x1a
mov bl, byte [edi + ebx + 3]
mov byte [ebp + ecx - 8], bl
mov ebx, esi
shr ebx, 0x14
and ebx, 0x3f
mov bl, byte [edi + ebx + 3]
mov byte [ebp + ecx - 7], bl
mov ebx, esi
shr ebx, 0xe
and ebx, 0x3f
mov bl, byte [edi + ebx + 3]
mov byte [ebp + ecx - 6], bl
mov ebx, esi
shr ebx, 8
and ebx, 0x3f
mov bl, byte [edi + ebx + 3]
mov byte [ebp + ecx - 5], bl
mov ebx, esi
shr ebx, 2
and ebx, 0x3f
mov bl, byte [edi + ebx + 3]
bswap edx
shld esi, edx, 4
mov byte [ebp + ecx - 4], bl
and esi, 0x3f
mov bl, byte [edi + esi + 3]
mov byte [ebp + ecx - 3], bl
mov esi, edx
shr esi, 0x16
and esi, 0x3f
mov bl, byte [edi + esi + 3]
mov byte [ebp + ecx - 2], bl
shr edx, 0x10
and edx, 0x3f
mov dl, byte [edi + edx + 3]
mov byte [ebp + ecx - 1], dl
add eax, 0x18
lea edx, [ecx + 0x20]
cmp eax, dword [esp + 8]
mov ebx, dword [esp + 0x44]
jbe 0x3d8569a
mov esi, ebx
sub esi, dword [esp + 0x10]
mov edx, esi
mov dword [esp + 4], esi
cmp eax, esi
jae 0x3d859b3
lea esi, [eax + 3]
cmp eax, 0xfffffffc
ja 0x3d85bcb
cmp esi, ebx
mov edx, ebx
mov ebx, dword [esp]
ja 0x3d85bd9
lea edx, [ecx + 4]
cmp ecx, 0xfffffffb
ja 0x3d85be5
cmp edx, ebx
mov dword [esp + 8], edx
ja 0x3d85bef
mov edx, dword [esp + 0x40]
movzx ebx, byte [edx + eax]
mov edx, ebx
shr edx, 2
mov dl, byte [edi + edx + 3]
mov byte [ebp + ecx], dl
mov edx, dword [esp + 0x40]
mov dl, byte [edx + eax + 1]
shl bl, 4
mov dh, dl
shr dh, 4
or dh, bl
movzx ebx, dh
and ebx, 0x3f
mov dh, byte [edi + ebx + 3]
mov byte [ebp + ecx + 1], dh
mov ebx, dword [esp + 0x40]
movzx eax, byte [ebx + eax + 2]
shl dl, 2
mov dh, al
shr dh, 6
or dh, dl
movzx edx, dh
and edx, 0x3f
mov dl, byte [edi + edx + 3]
mov byte [ebp + ecx + 2], dl
and eax, 0x3f
mov al, byte [edi + eax + 3]
mov byte [ebp + ecx + 3], al
mov eax, esi
mov edx, dword [esp + 8]
mov ecx, edx
cmp esi, dword [esp + 4]
mov ebx, dword [esp + 0x44]
jb 0x3d85909
jmp 0x3d859b5
mov edx, ecx
mov ebx, edx
mov eax, dword [esp + 0x10]
cmp eax, 1
je 0x3d85a51
cmp eax, 2
mov esi, dword [esp]
jne 0x3d85a97
cmp ebx, esi
jae 0x3d85b52
mov eax, dword [esp + 0x40]
mov esi, ebx
mov ecx, dword [esp + 4]
mov bl, byte [eax + ecx]
movzx eax, bl
shr eax, 2
mov al, byte [edi + eax + 3]
mov byte [ebp + esi], al
inc ecx
mov edx, dword [esp + 0x44]
mov dword [esp + 4], ecx
cmp ecx, edx
jae 0x3d85b6e
lea ecx, [esi + 1]
mov edx, dword [esp]
cmp ecx, edx
jae 0x3d85b88
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 4]
mov al, byte [eax + ecx]
mov ecx, eax
shr cl, 4
shl bl, 4
or bl, cl
movzx ecx, bl
and ecx, 0x3f
mov cl, byte [edi + ecx + 3]
mov byte [ebp + esi + 1], cl
lea ecx, [esi + 2]
cmp ecx, edx
jae 0x3d85b92
mov ebx, esi
shl al, 2
and al, 0x3c
mov edx, 3
mov esi, dword [esp]
jmp 0x3d85a8a
mov esi, dword [esp]
cmp ebx, esi
jae 0x3d85b60
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 4]
mov al, byte [eax + ecx]
movzx ecx, al
shr ecx, 2
mov cl, byte [edi + ecx + 3]
mov byte [ebp + ebx], cl
lea ecx, [ebx + 1]
cmp ecx, esi
jae 0x3d85b7c
shl al, 4
and al, 0x30
mov edx, 2
movzx eax, al
mov al, byte [edi + eax + 3]
mov byte [ebp + ecx], al
add ebx, edx
xor edx, edx
cmp byte [edi], 0
je 0x3d85aca
mov ecx, esi
sub ecx, ebx
jb 0x3d85c14
mov eax, ebx
neg eax
and eax, 3
je 0x3d85aca
mov edx, ebp
add edx, ebx
xor edi, edi
cmp ecx, edi
je 0x3d85b46
mov byte [edx + edi], 0x3d
inc edi
cmp eax, edi
jne 0x3d85ab7
mov edx, eax
add ebx, edx
jb 0x3d85c00
lea edi, [esp + 0x18]
mov ecx, edi
mov edx, ebp
push esi
call fcn.03d944d0
add esp, 4
cmp dword [edi], 0
je 0x3d85b2a
mov eax, dword [esp + 0x1c]
mov edx, dword [esp + 0xc]
cmp edx, 0x80000000
je 0x3d85b32
mov ecx, dword [esp + 0x20]
mov dword [esp + 0x18], edx
mov dword [esp + 0x1c], ebp
mov dword [esp + 0x20], esi
mov dword [esp + 0x24], eax
mov dword [esp + 0x28], ecx
mov ecx, str.Invalid_UTF8L
mov edx, 0xc
push 0x3dcf0e4
push 0x3dcefe8
push edi
call fcn.03dcc5a0
mov eax, esi
mov esi, ebp
mov ebp, dword [esp + 0xc]
mov ecx, dword [esp + 0x14]
mov dword [ecx], ebp
mov dword [ecx + 4], esi
mov dword [ecx + 8], eax
add esp, 0x2c
pop esi
pop edi
pop ebx
pop ebp
ret
mov edx, ecx
push 0x3dcfb04
call fcn.03dcc2b0
mov ecx, ebx
mov edx, esi
push 0x3dcf8e0
call fcn.03dcc2b0
mov ecx, ebx
mov edx, esi
push 0x3dcf920
call fcn.03dcc2b0
mov ecx, dword [esp + 4]
push 0x3dcf8f0
call fcn.03dcc2b0
mov edx, esi
push 0x3dcf930
call fcn.03dcc2b0
push 0x3dcf900
call fcn.03dcc2b0
mov edx, dword [esp]
push 0x3dcf910
call fcn.03dcc2b0
mov ecx, edx
mov edx, ebx
push 0x3dcf960
call fcn.03dcc310
mov ecx, 0xffffffe0
xor edx, edx
push 0x3dcf970
call fcn.03dcc4f0
mov edx, dword [esp]
push 0x3dcf970
call fcn.03dcc310
mov ecx, eax
mov edx, esi
push 0x3dcf940
call fcn.03dcc4f0
mov ecx, esi
push 0x3dcf940
call fcn.03dcc310
push 0x3dcf950
call fcn.03dcc4f0
mov ecx, dword [esp + 8]
mov edx, dword [esp]
push 0x3dcf950
call fcn.03dcc310
mov ecx, 0x3dce754
mov edx, 0x2a
push 0x3dce780
call fcn.03dcc640
mov ecx, ebx
mov edx, esi
push 0x3dce744
call fcn.03dcc250