Function at 0x401520
Capabilities:
Encode data using base64

Disassembly:
sub esp, 0x14
push ebx
push esi
xor esi, esi
mov ebx, eax
cmp ebx, esi
mov byte [esp + 0xa], 0
mov byte [esp + 0xb], 0
mov byte [esp + 8], 0
mov byte [esp + 9], 0
mov dword [esp + 0x10], esi
mov dword [esp + 0x14], esi
mov dword [esp + 0xc], esi
mov dword [esp + 0x18], esi
je 0x401757
push ebp
lea eax, [ebx + ebx*2]
shr eax, 2
push edi
lea edi, [eax + 1]
push edi
call fcn.0042172b
mov ebp, eax
add esp, 4
cmp ebp, esi
je 0x40174d
push edi
push esi
push ebp
call fcn.00424130
add esp, 0xc
test ebx, ebx
mov edi, str.RwBvAGwAZABHAHIAaQBkACAARABvAGMAdQBtAGUAbgB0ACAATQBhAGsAZQByAAAAAAAAAAAAAAAAAAAAAAAAAAEEAAbcAIQDUBAQEACQCaCzQIZAABAA8AWAICAAEAWAIDAAEAQQA0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBSSVZCMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAQJxAnECcAABAnAAAAAAAAAACwAIQDAAAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAwAAAAAAAAAAABAAUDQDACiIBAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAA57FLTAMAAAAFAAoA_wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAU01USgAAAAAQAKAARwBvAGwAZABHAHIAaQBkACAARABvAGMAdQBtAGUAbgB0ACAATQBhAGsAZQByACAARAByAGkAdgBlAHIAAABSZXNvbHV0aW9uADYwMGRwaQBQYWdlU2l6ZQBBNABQYWdlUmVnaW9uAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
jle 0x40173d
mov eax, dword [0x44d680]
mov al, byte [edi]
mov byte [esp + 0x12], al
movsx eax, al
push eax
push str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_
add edi, 1
sub ebx, 1
call fcn.00421800
add esp, 8
test eax, eax
mov dword [esp + 0x18], eax
je 0x40174d
test ebx, ebx
jle 0x401644
mov al, byte [edi]
movsx ecx, al
push ecx
push str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_
mov byte [esp + 0x1b], al
add edi, 1
sub ebx, 1
call fcn.00421800
add esp, 8
test eax, eax
mov dword [esp + 0x1c], eax
je 0x40174d
test ebx, ebx
jle 0x401644
mov al, byte [edi]
movsx edx, al
push edx
push str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_
mov byte [esp + 0x18], al
add edi, 1
sub ebx, 1
call fcn.00421800
add esp, 8
test eax, eax
mov dword [esp + 0x14], eax
je 0x40174d
test ebx, ebx
jle 0x401644
mov al, byte [edi]
mov byte [esp + 0x11], al
movsx eax, al
push eax
push str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_
add edi, 1
sub ebx, 1
call fcn.00421800
add esp, 8
test eax, eax
mov dword [esp + 0x20], eax
je 0x40174d
cmp byte [esp + 0x12], 0x3d
mov eax, dword [0x44d680]
je 0x40174d
cmp byte [esp + 0x13], 0x3d
je 0x40174d
cmp byte [esp + 0x10], 0x3d
jne 0x401671
cmp byte [esp + 0x11], 0x3d
jne 0x40174d
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x1c]
sub ecx, str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_
sub edx, str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_
shl ecx, 0x12
shl edx, 0xc
and ecx, 0xfc0000
and edx, 0x3f000
or ecx, edx
and eax, 0xff000fff
or eax, ecx
cmp byte [esp + 0x10], 0x3d
mov dword [0x44d680], eax
jne 0x4016b6
mov ecx, eax
shr ecx, 0x10
mov byte [esi + ebp], cl
jmp 0x401732
cmp byte [esp + 0x11], 0x3d
jne 0x4016e9
mov edx, dword [esp + 0x14]
sub edx, str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_
shl edx, 6
xor edx, eax
and edx, 0xfc0
xor eax, edx
mov ecx, eax
shr ecx, 0x10
mov byte [esi + ebp], cl
add esi, 1
mov edx, eax
shr edx, 8
mov byte [esi + ebp], dl
jmp 0x40172d
mov ecx, dword [esp + 0x14]
sub ecx, str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_
shl ecx, 6
mov edx, ecx
mov ecx, dword [esp + 0x20]
sub ecx, str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_
and edx, 0xfc0
and ecx, 0x3f
or edx, ecx
and eax, 0xfffff000
or eax, edx
mov edx, eax
shr edx, 0x10
mov byte [esi + ebp], dl
mov ecx, eax
add esi, 1
shr ecx, 8
mov byte [esi + ebp], cl
add esi, 1
mov byte [esi + ebp], al
mov dword [0x44d680], eax
add esi, 1
test ebx, ebx
jg 0x401590
mov edx, dword [esp + 0x28]
pop edi
mov eax, ebp
pop ebp
mov dword [edx], esi
pop esi
pop ebx
add esp, 0x14
ret
pop edi
pop ebp
pop esi
xor eax, eax
pop ebx
add esp, 0x14
ret
pop esi
xor eax, eax
pop ebx
add esp, 0x14
ret