Function at 0x18015a9c0
Capabilities:
Encode data using base64

Disassembly:
mov dword [rsp + 0x20], r9d
mov qword [rsp + 0x18], r8
mov qword [rsp + 0x10], rdx
mov qword [rsp + 8], rcx
push rsi
push rdi
sub rsp, 0x238
mov rax, qword [rsp + 0x258]
mov rax, qword [rax + 8]
shr rax, 8
and rax, 0xff
mov rcx, qword [rsp + 0x260]
mov ecx, dword [rcx]
or ecx, eax
mov dword [rsp + 0xcc], ecx
mov rax, qword [rsp + 0x260]
mov ecx, dword [rsp + 0xcc]
mov dword [rax], ecx
mov rax, qword [rsp + 0x250]
mov ecx, 0xff00ffff
mov rax, qword [rax + 8]
and rax, rcx
mov ecx, dword [rsp + 0xcc]
and ecx, 0xff0000
mov ecx, ecx
or rax, rcx
mov rcx, qword [rsp + 0x250]
mov qword [rcx + 8], rax
mov rcx, qword [rsp + 0x250]
call fcn.1800038c0
and eax, 0x80
test eax, eax
je 0x18015aad0
mov rax, qword [rsp + 0x260]
mov eax, dword [rax]
mov dword [rsp + 0x130], eax
mov rcx, qword [rsp + 0x258]
call fcn.1800038c0
and eax, 3
mov dword [rsp + 0x120], eax
mov rax, qword [rsp + 0x250]
mov ecx, 0xffff0000
mov rax, qword [rax + 8]
and rax, rcx
mov ecx, dword [rsp + 0x120]
and ecx, 0xff
mov ecx, ecx
or rax, rcx
mov ecx, dword [rsp + 0x130]
and ecx, 0xff
shl ecx, 8
mov ecx, ecx
or rax, rcx
mov rcx, qword [rsp + 0x250]
mov qword [rcx + 8], rax
jmp 0x18015ab43
mov rcx, qword [rsp + 0x250]
call fcn.1800038f0
cmp qword [rax], 0
je 0x18015aafd
mov rax, qword [rsp + 0x250]
mov rax, qword [rax + 8]
shr rax, 8
and rax, 0xff
test eax, eax
jne 0x18015ab43
mov rax, qword [rsp + 0x260]
mov eax, dword [rax]
mov dword [rsp + 0x180], eax
mov rax, qword [rsp + 0x250]
mov ecx, 0xffff00ff
mov rax, qword [rax + 8]
and rax, rcx
mov ecx, dword [rsp + 0x180]
and ecx, 0xff
shl ecx, 8
mov ecx, ecx
or rax, rcx
mov rcx, qword [rsp + 0x250]
mov qword [rcx + 8], rax
mov rax, qword [rsp + 0x260]
mov eax, dword [rax]
and eax, 0x800000
test eax, eax
je 0x18015ab8f
mov rax, qword [rsp + 0x260]
add rax, 4
mov rdx, qword [rsp + 0x258]
mov rcx, rax
call fcn.18015d180
mov dword [rsp + 0xd0], eax
cmp dword [rsp + 0xd0], 0
je 0x18015ab8f
mov eax, dword [rsp + 0xd0]
jmp 0x18015b559
mov rax, qword [rsp + 0x260]
mov eax, dword [rax]
and eax, 0x800000
test eax, eax
je 0x18015abaf
mov dword [rsp + 0x80], 0x800001
jmp 0x18015abba
mov dword [rsp + 0x80], 0
mov eax, dword [rsp + 0x80]
mov dword [rsp + 0x140], eax
xor r9d, r9d
mov r8, qword [rsp + 0x250]
mov edx, 1
lea rcx, [rsp + 0x190]
call fcn.180159c20
xor r9d, r9d
mov r8, qword [rsp + 0x258]
mov edx, dword [rsp + 0x140]
lea rcx, [rsp + 0x1e0]
call fcn.180159c20
lea rax, [rsp + 0x200]
mov rdi, rax
mov rsi, qword [rsp + 0x260]
mov ecx, 0xc
rep movsb byte [rdi], byte [rsi]
mov rax, qword [rsp + 0x260]
mov eax, dword [rax]
and eax, 0x20000
test eax, eax
je 0x18015b05c
mov rax, qword [rsp + 0x260]
mov eax, dword [rax]
and eax, 0x200000
test eax, eax
je 0x18015ae73
mov eax, dword [0x18039cc7c]
imul eax, eax, 0x343fd
add eax, 0x269ec3
mov dword [0x18039cc7c], eax
mov eax, dword [0x18039cc7c]
shr eax, 0x10
and eax, 0x7fff
mov dword [rsp + 0x170], eax
mov eax, dword [rsp + 0x170]
and eax, 0x3f
mov dword [rsp + 0x40], eax
mov rax, qword [rsp + 0x260]
mov eax, dword [rax]
mov dword [rsp + 0x150], eax
mov eax, dword [rsp + 0x150]
and eax, 0x20000
test eax, eax
je 0x18015ad3e
mov eax, dword [rsp + 0x40]
mov dword [rsp + 0xf0], eax
mov eax, dword [rsp + 0x268]
mov ecx, dword [rsp + 0x40]
add ecx, eax
mov eax, ecx
and eax, 0x3f
mov dword [rsp + 0x40], eax
mov eax, dword [rsp + 0xf0]
and eax, 7
mov dword [rsp + 0xe0], eax
mov eax, dword [rsp + 0x268]
add eax, 0x4242
mov dword [rsp + 0x88], eax
mov eax, 0x20
sub eax, dword [rsp + 0xe0]
movzx ecx, al
mov eax, dword [rsp + 0x88]
shr eax, cl
mov ecx, dword [rsp + 0xe0]
mov edx, dword [rsp + 0x88]
shl edx, cl
mov ecx, edx
or ecx, eax
mov eax, ecx
mov dword [rsp + 0x268], eax
mov eax, dword [rsp + 0xf0]
mov ecx, dword [rsp + 0x268]
xor ecx, eax
mov eax, ecx
mov dword [rsp + 0x268], eax
mov eax, dword [rsp + 0x40]
mov rcx, qword [rsp + 0x270]
movzx eax, byte [rcx + rax]
mov edx, eax
lea rcx, [rsp + 0x190]
call fcn.18015a350
mov eax, dword [0x18039cc7c]
imul eax, eax, 0x343fd
add eax, 0x269ec3
mov dword [0x18039cc7c], eax
mov eax, dword [0x18039cc7c]
shr eax, 0x10
and eax, 0x7fff
mov dword [rsp + 0x188], eax
mov eax, dword [rsp + 0x188]
and eax, 0x3f
mov dword [rsp + 0x50], eax
mov rax, qword [rsp + 0x260]
mov eax, dword [rax]
mov dword [rsp + 0x160], eax
mov eax, dword [rsp + 0x160]
and eax, 0x20000
test eax, eax
je 0x18015ae4f
mov eax, dword [rsp + 0x50]
mov dword [rsp + 0xa8], eax
mov eax, dword [rsp + 0x268]
mov ecx, dword [rsp + 0x50]
add ecx, eax
mov eax, ecx
and eax, 0x3f
mov dword [rsp + 0x50], eax
mov eax, dword [rsp + 0xa8]
and eax, 7
mov dword [rsp + 0x98], eax
mov eax, dword [rsp + 0x268]
add eax, 0x4242
mov dword [rsp + 0x100], eax
mov eax, 0x20
sub eax, dword [rsp + 0x98]
movzx ecx, al
mov eax, dword [rsp + 0x100]
shr eax, cl
mov ecx, dword [rsp + 0x98]
mov edx, dword [rsp + 0x100]
shl edx, cl
mov ecx, edx
or ecx, eax
mov eax, ecx
mov dword [rsp + 0x268], eax
mov eax, dword [rsp + 0xa8]
mov ecx, dword [rsp + 0x268]
xor ecx, eax
mov eax, ecx
mov dword [rsp + 0x268], eax
mov eax, dword [rsp + 0x50]
mov rcx, qword [rsp + 0x270]
movzx eax, byte [rcx + rax]
mov edx, eax
lea rcx, [rsp + 0x190]
call fcn.18015a350
jmp 0x18015b028
mov dword [rsp + 0x28], 0
mov rax, qword [rsp + 0x260]
mov eax, dword [rax]
mov dword [rsp + 0x128], eax
mov eax, dword [rsp + 0x128]
and eax, 0x20000
test eax, eax
je 0x18015af33
mov eax, dword [rsp + 0x28]
mov dword [rsp + 0x11c], eax
mov eax, dword [rsp + 0x268]
mov ecx, dword [rsp + 0x28]
add ecx, eax
mov eax, ecx
and eax, 0x3f
mov dword [rsp + 0x28], eax
mov eax, dword [rsp + 0x11c]
and eax, 7
mov dword [rsp + 0x110], eax
mov eax, dword [rsp + 0x268]
add eax, 0x4242
mov dword [rsp + 0xb0], eax
mov eax, 0x20
sub eax, dword [rsp + 0x110]
movzx ecx, al
mov eax, dword [rsp + 0xb0]
shr eax, cl
mov ecx, dword [rsp + 0x110]
mov edx, dword [rsp + 0xb0]
shl edx, cl
mov ecx, edx
or ecx, eax
mov eax, ecx
mov dword [rsp + 0x268], eax
mov eax, dword [rsp + 0x11c]
mov ecx, dword [rsp + 0x268]
xor ecx, eax
mov eax, ecx
mov dword [rsp + 0x268], eax
mov eax, dword [rsp + 0x28]
mov rcx, qword [rsp + 0x270]
movzx eax, byte [rcx + rax]
mov edx, eax
lea rcx, [rsp + 0x190]
call fcn.18015a350
mov dword [rsp + 0x60], 0
mov rax, qword [rsp + 0x260]
mov eax, dword [rax]
mov dword [rsp + 0x138], eax
mov eax, dword [rsp + 0x138]
and eax, 0x20000
test eax, eax
je 0x18015b009
mov eax, dword [rsp + 0x60]
mov dword [rsp + 0x6c], eax
mov eax, dword [rsp + 0x268]
mov ecx, dword [rsp + 0x60]
add ecx, eax
mov eax, ecx
and eax, 0x3f
mov dword [rsp + 0x60], eax
mov eax, dword [rsp + 0x6c]
and eax, 7
mov dword [rsp + 0xc0], eax
mov eax, dword [rsp + 0x268]
add eax, 0x4242
mov dword [rsp + 0x108], eax
mov eax, 0x20
sub eax, dword [rsp + 0xc0]
movzx ecx, al
mov eax, dword [rsp + 0x108]
shr eax, cl
mov ecx, dword [rsp + 0xc0]
mov edx, dword [rsp + 0x108]
shl edx, cl
mov ecx, edx
or ecx, eax
mov eax, ecx
mov dword [rsp + 0x268], eax
mov eax, dword [rsp + 0x6c]
mov ecx, dword [rsp + 0x268]
xor ecx, eax
mov eax, ecx
mov dword [rsp + 0x268], eax
mov eax, dword [rsp + 0x60]
mov rcx, qword [rsp + 0x270]
movzx eax, byte [rcx + rax]
mov edx, eax
lea rcx, [rsp + 0x190]
call fcn.18015a350
mov eax, 0x20
sub eax, 0x10
movzx ecx, al
mov eax, dword [rsp + 0x268]
shr eax, cl
mov ecx, dword [rsp + 0x268]
shl ecx, 0x10
or ecx, eax
mov eax, ecx
mov ecx, dword [rsp + 0x268]
xor ecx, eax
mov eax, ecx
mov dword [rsp + 0x268], eax
mov dword [rsp + 0x24], 0
mov rcx, qword [rsp + 0x1f8]
call fcn.1800038f0
mov ecx, dword [rsp + 0x220]
and ecx, 0xff000000
shr ecx, 0x18
mov ecx, ecx
mov rax, qword [rax]
add rax, rcx
sub rax, qword [rsp + 0x218]
test rax, rax
je 0x18015b4f2
mov dword [rsp + 0x24], 0
lea rdx, [rsp + 0x24]
lea rcx, [rsp + 0x1e0]
call fcn.18015a020
mov byte [rsp + 0x22], al
lea rdx, [rsp + 0x24]
lea rcx, [rsp + 0x1e0]
call fcn.18015a020
mov byte [rsp + 0x20], al
lea rdx, [rsp + 0x24]
lea rcx, [rsp + 0x1e0]
call fcn.18015a020
mov byte [rsp + 0x21], al
movzx eax, byte [rsp + 0x22]
and eax, 0xfc
sar eax, 2
mov dword [rsp + 0x30], eax
mov rax, qword [rsp + 0x260]
mov eax, dword [rax]
mov dword [rsp + 0x148], eax
mov eax, dword [rsp + 0x148]
and eax, 0x20000
test eax, eax
je 0x18015b1ad
mov eax, dword [rsp + 0x30]
mov dword [rsp + 0x118], eax
mov eax, dword [rsp + 0x268]
mov ecx, dword [rsp + 0x30]
add ecx, eax
mov eax, ecx
and eax, 0x3f
mov dword [rsp + 0x30], eax
mov eax, dword [rsp + 0x118]
and eax, 7
mov dword [rsp + 0xf8], eax
mov eax, dword [rsp + 0x268]
add eax, 0x4242
mov dword [rsp + 0xd8], eax
mov eax, 0x20
sub eax, dword [rsp + 0xf8]
movzx ecx, al
mov eax, dword [rsp + 0xd8]
shr eax, cl
mov ecx, dword [rsp + 0xf8]
mov edx, dword [rsp + 0xd8]
shl edx, cl
mov ecx, edx
or ecx, eax
mov eax, ecx
mov dword [rsp + 0x268], eax
mov eax, dword [rsp + 0x118]
mov ecx, dword [rsp + 0x268]
xor ecx, eax
mov eax, ecx
mov dword [rsp + 0x268], eax
mov eax, dword [rsp + 0x30]
mov rcx, qword [rsp + 0x270]
movzx eax, byte [rcx + rax]
mov edx, eax
lea rcx, [rsp + 0x190]
call fcn.18015a350
movzx eax, byte [rsp + 0x20]
and eax, 0xf0
sar eax, 4
movzx ecx, byte [rsp + 0x22]
and ecx, 3
shl ecx, 4
add ecx, eax
mov eax, ecx
mov dword [rsp + 0x38], eax
mov rax, qword [rsp + 0x260]
mov eax, dword [rax]
mov dword [rsp + 0x158], eax
mov eax, dword [rsp + 0x158]
and eax, 0x20000
test eax, eax
je 0x18015b2a4
mov eax, dword [rsp + 0x38]
mov dword [rsp + 0xc8], eax
mov eax, dword [rsp + 0x268]
mov ecx, dword [rsp + 0x38]
add ecx, eax
mov eax, ecx
and eax, 0x3f
mov dword [rsp + 0x38], eax
mov eax, dword [rsp + 0xc8]
and eax, 7
mov dword [rsp + 0xe8], eax
mov eax, dword [rsp + 0x268]
add eax, 0x4242
mov dword [rsp + 0xb8], eax
mov eax, 0x20
sub eax, dword [rsp + 0xe8]
movzx ecx, al
mov eax, dword [rsp + 0xb8]
shr eax, cl
mov ecx, dword [rsp + 0xe8]
mov edx, dword [rsp + 0xb8]
shl edx, cl
mov ecx, edx
or ecx, eax
mov eax, ecx
mov dword [rsp + 0x268], eax
mov eax, dword [rsp + 0xc8]
mov ecx, dword [rsp + 0x268]
xor ecx, eax
mov eax, ecx
mov dword [rsp + 0x268], eax
mov eax, dword [rsp + 0x38]
mov rcx, qword [rsp + 0x270]
movzx eax, byte [rcx + rax]
mov edx, eax
lea rcx, [rsp + 0x190]
call fcn.18015a350
cmp dword [rsp + 0x24], 1
jle 0x18015b3af
movzx eax, byte [rsp + 0x21]
and eax, 0xc0
sar eax, 6
movzx ecx, byte [rsp + 0x20]
and ecx, 0xf
lea eax, [rax + rcx*4]
mov dword [rsp + 0x48], eax
mov rax, qword [rsp + 0x260]
mov eax, dword [rax]
mov dword [rsp + 0x168], eax
mov eax, dword [rsp + 0x168]
and eax, 0x20000
test eax, eax
je 0x18015b390
mov eax, dword [rsp + 0x48]
mov dword [rsp + 0x84], eax
mov eax, dword [rsp + 0x268]
mov ecx, dword [rsp + 0x48]
add ecx, eax
mov eax, ecx
and eax, 0x3f
mov dword [rsp + 0x48], eax
mov eax, dword [rsp + 0x84]
and eax, 7
mov dword [rsp + 0x70], eax
mov eax, dword [rsp + 0x268]
add eax, 0x4242
mov dword [rsp + 0x78], eax
mov eax, 0x20
sub eax, dword [rsp + 0x70]
movzx ecx, al
mov eax, dword [rsp + 0x78]
shr eax, cl
mov ecx, dword [rsp + 0x70]
mov edx, dword [rsp + 0x78]
shl edx, cl
mov ecx, edx
or ecx, eax
mov eax, ecx
mov dword [rsp + 0x268], eax
mov eax, dword [rsp + 0x84]
mov ecx, dword [rsp + 0x268]
xor ecx, eax
mov eax, ecx
mov dword [rsp + 0x268], eax
mov eax, dword [rsp + 0x48]
mov rcx, qword [rsp + 0x270]
movzx eax, byte [rcx + rax]
mov edx, eax
lea rcx, [rsp + 0x190]
call fcn.18015a350
cmp dword [rsp + 0x24], 2
jle 0x18015b49d
movzx eax, byte [rsp + 0x21]
and eax, 0x3f
mov dword [rsp + 0x58], eax
mov rax, qword [rsp + 0x260]
mov eax, dword [rax]
mov dword [rsp + 0x178], eax
mov eax, dword [rsp + 0x178]
and eax, 0x20000
test eax, eax
je 0x18015b47e
mov eax, dword [rsp + 0x58]
mov dword [rsp + 0xac], eax
mov eax, dword [rsp + 0x268]
mov ecx, dword [rsp + 0x58]
add ecx, eax
mov eax, ecx
and eax, 0x3f
mov dword [rsp + 0x58], eax
mov eax, dword [rsp + 0xac]
and eax, 7
mov dword [rsp + 0x90], eax
mov eax, dword [rsp + 0x268]
add eax, 0x4242
mov dword [rsp + 0xa0], eax
mov eax, 0x20
sub eax, dword [rsp + 0x90]
movzx ecx, al
mov eax, dword [rsp + 0xa0]
shr eax, cl
mov ecx, dword [rsp + 0x90]
mov edx, dword [rsp + 0xa0]
shl edx, cl
mov ecx, edx
or ecx, eax
mov eax, ecx
mov dword [rsp + 0x268], eax
mov eax, dword [rsp + 0xac]
mov ecx, dword [rsp + 0x268]
xor ecx, eax
mov eax, ecx
mov dword [rsp + 0x268], eax
mov eax, dword [rsp + 0x58]
mov rcx, qword [rsp + 0x270]
movzx eax, byte [rcx + rax]
mov edx, eax
lea rcx, [rsp + 0x190]
call fcn.18015a350
mov rax, qword [rsp + 0x260]
mov eax, dword [rax]
xor eax, 0x420000
and eax, 0x420000
test eax, eax
jne 0x18015b4ed
movzx eax, byte [rsp + 0x21]
and eax, 1
test eax, eax
je 0x18015b4ed
movzx eax, byte [rsp + 0x20]
xor edx, edx
mov ecx, 0x15
div rcx
mov rax, rdx
lea rcx, str._________:__
movzx eax, byte [rcx + rax]
mov edx, eax
lea rcx, [rsp + 0x190]
call fcn.18015a350
jmp 0x18015b064
mov rax, qword [rsp + 0x260]
mov eax, dword [rax]
and eax, 0x10000
test eax, eax
je 0x18015b53c
mov dword [rsp + 0x68], 0
jmp 0x18015b519
mov eax, dword [rsp + 0x68]
inc eax
mov dword [rsp + 0x68], eax
mov eax, 3
sub eax, dword [rsp + 0x24]
cmp dword [rsp + 0x68], eax
jge 0x18015b53c
mov edx, 0x3d
lea rcx, [rsp + 0x190]
call fcn.18015a350
jmp 0x18015b50f
lea rcx, [rsp + 0x190]
call fcn.18015a8a0
movzx eax, al
test eax, eax
jne 0x18015b557
mov eax, 0xfffffffc
jmp 0x18015b559
xor eax, eax
add rsp, 0x238
pop rdi
pop rsi
ret