Function at 0x409a9f
Capabilities:
Encode data using base64

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0xa8
mov rax, qword [0x0042f260]
mov rsi, rcx
mov rbx, r8
mov rdi, r9
mov r8, qword [rax + 0x28]
movzx ecx, dl
test byte [0x0042f251], 4
je 0x409add
mov rdx, qword [rax + 0x20]
xor eax, eax
dec rdx
jmp 0x409b06
mov rdx, qword [r8]
mov r11, rcx
sub r11, qword [rdx + 8]
js 0x409b1b
cmp r11, qword [rax + 0x20]
jae 0x409b1b
mov rax, qword [r8 + r11*8]
mov rcx, qword [rax + 0x18]
jmp 0x409b11
mov r9, qword [r8 + rax*8]
cmp rcx, qword [r9 + 8]
je 0x409b0d
inc rax
cmp rdx, rax
jge 0x409af9
jmp 0x409b1b
mov rcx, qword [r9 + 0x18]
call fcn.0040397a
mov r10, rax
jmp 0x409b56
call fcn.0040428a
mov ecx, 0x10
mov r12, rax
test rax, rax
je 0x409b34
mov rax, qword [rax]
lea rcx, [rax + 0x10]
call fcn.00403c25
mov rdx, r12
mov r10, rax
mov rcx, rax
call fcn.00401dcb
lea rdx, [0x00423b00]
mov rcx, r10
call fcn.00401da5
mov edx, 0x20
mov rcx, r10
call fcn.00403cd7
mov r13, rax
test rdi, rdi
je 0x409bc7
mov rcx, qword [rsi]
lea rdx, [0x00423de0]
call fcn.004095ea
test al, al
jne 0x409bc7
lea r9, [rsp + 0x58]
mov edx, 0x48
lea r8, [0x0042f200]
mov rcx, r9
call fcn.00401df3
mov rdx, rsi
mov rcx, r9
call fcn.00405edb
mov rcx, qword [rsi]
lea rdx, [0x00423de0]
call fcn.004095ea
test al, al
je 0x409c55
mov qword [rsp + 0x58], 0
jmp 0x409c55
mov rax, qword [rsi + 0x28]
test rax, rax
je 0x409bdc
cmp qword [rax], 0
jle 0x409bdc
cmp byte [rax + 0x10], 0x2f
je 0x409bec
mov rcx, r13
mov edx, 0x2f
call fcn.00403cd7
mov r13, rax
mov rax, qword [rsi + 0x28]
xor edx, edx
test rax, rax
je 0x409bfa
mov rdx, qword [rax]
mov rcx, r13
call fcn.00403c58
mov rdx, qword [rsi + 0x28]
mov rcx, rax
mov r13, rax
call fcn.00401dcb
mov rax, qword [rsi + 0x30]
test rax, rax
je 0x40a015
mov rcx, qword [rax]
test rcx, rcx
jle 0x40a015
inc rcx
call fcn.00403c25
lea rdx, [0x00423dc0]
mov rcx, rax
mov r12, rax
call fcn.00401da5
mov rdx, qword [rsi + 0x30]
mov rcx, r12
call fcn.00401dcb
jmp 0x409ff4
mov r12, qword [rsp + 0x58]
test r12, r12
je 0x409cc3
mov rcx, qword [r12]
xor r12d, r12d
test rcx, rcx
jle 0x409cc3
call fcn.00403947
mov rdx, qword [rsp + 0x58]
mov rcx, rax
mov qword [rsp + 0x28], rax
call fcn.00401dcb
cmp byte [rsp + 0x98], 0
mov rcx, qword [rsp + 0x28]
jne 0x409ca7
mov edx, 3
call fcn.00403c58
lea rdx, [0x00423bf0]
mov r12, rax
jmp 0x409cbb
mov edx, 1
call fcn.00403c58
lea rdx, [0x00423bd0]
mov r12, rax
mov rcx, r12
call fcn.00401da5
mov rax, qword [rsp + 0x60]
test rax, rax
je 0x409d6a
mov rdx, qword [rax]
test rdx, rdx
jle 0x409d6a
mov rcx, r12
call fcn.00403c58
mov rdx, qword [rsp + 0x60]
mov rcx, rax
mov r9, rax
call fcn.00401dcb
mov rax, qword [rsp + 0x68]
test rax, rax
je 0x409d4b
cmp qword [rax], 0
jle 0x409d4b
mov rcx, r9
mov edx, 1
call fcn.00403c58
lea rdx, [0x00423bd0]
mov rcx, rax
mov r9, rax
call fcn.00401da5
mov rax, qword [rsp + 0x68]
xor edx, edx
test rax, rax
je 0x409d33
mov rdx, qword [rax]
mov rcx, r9
call fcn.00403c58
mov rdx, qword [rsp + 0x68]
mov rcx, rax
mov r9, rax
call fcn.00401dcb
mov edx, 1
mov rcx, r9
call fcn.00403c58
lea rdx, [0x00423bb0]
mov rcx, rax
mov r12, rax
call fcn.00401da5
mov rcx, qword [rsp + 0x70]
mov al, byte [rsp + 0x99]
test rcx, rcx
je 0x40a3fa
mov rdx, qword [rcx]
test rdx, rdx
jle 0x409e0d
cmp byte [rcx + rdx + 0xf], 0x2f
jne 0x409e0d
xor edx, edx
lea r14, [rsp + 0x40]
test al, al
mov r8d, 2
mov rcx, r14
jne 0x409dcb
call fcn.00407503
mov rcx, qword [rsp + 0x70]
mov rdx, r14
call fcn.004074b1
xor edx, edx
mov r14, rax
test rax, rax
jne 0x409e4f
jmp 0x409e52
call fcn.00407503
mov rcx, qword [rsp + 0x70]
mov rdx, r14
call fcn.004074b1
mov ecx, 2
mov r15, rax
test rax, rax
je 0x409df1
mov rax, qword [rax]
lea rcx, [rax + 2]
call fcn.00403c25
lea rdx, [0x00423b90]
mov rcx, rax
mov r14, rax
call fcn.00401da5
mov rdx, r15
jmp 0x409e31
test al, al
je 0x409e62
lea rcx, [rdx + 2]
call fcn.00403c25
lea rdx, [0x00423b90]
mov rcx, rax
mov r14, rax
call fcn.00401da5
mov rdx, qword [rsp + 0x70]
mov rcx, r14
call fcn.00401dcb
lea rdx, [0x00423b70]
mov rcx, r14
call fcn.00401da5
xor edx, edx
test r14, r14
je 0x409e52
mov rdx, qword [r14]
mov rcx, r12
call fcn.00403c58
mov rdx, r14
mov r12, rax
jmp 0x409e72
mov rcx, r12
call fcn.00403c58
mov rdx, qword [rsp + 0x70]
mov r12, rax
mov rcx, r12
call fcn.00401dcb
mov rax, qword [rsp + 0x78]
test rax, rax
je 0x409ed0
cmp qword [rax], 0
jle 0x409ed0
mov edx, 1
mov rcx, r12
call fcn.00403c58
lea rdx, [0x00423bd0]
mov rcx, rax
mov r9, rax
call fcn.00401da5
mov rax, qword [rsp + 0x78]
xor edx, edx
test rax, rax
je 0x409eb8
mov rdx, qword [rax]
mov rcx, r9
call fcn.00403c58
mov rdx, qword [rsp + 0x78]
mov rcx, rax
mov r12, rax
call fcn.00401dcb
mov rax, qword [rsp + 0x80]
test rax, rax
je 0x409f36
cmp qword [rax], 0
jle 0x409f36
mov rdx, qword [rsp + 0x70]
test rdx, rdx
je 0x409f09
cmp qword [rdx], 0
jle 0x409f09
cmp byte [rax + 0x10], 0x2f
je 0x409f09
mov rcx, r12
mov edx, 0x2f
call fcn.00403cd7
mov r12, rax
mov rax, qword [rsp + 0x80]
xor edx, edx
test rax, rax
je 0x409f1b
mov rdx, qword [rax]
mov rcx, r12
call fcn.00403c58
mov rdx, qword [rsp + 0x80]
mov rcx, rax
mov r12, rax
call fcn.00401dcb
mov rax, qword [rsp + 0x88]
test rax, rax
je 0x409f95
cmp qword [rax], 0
jle 0x409f95
mov edx, 1
mov rcx, r12
call fcn.00403c58
lea rdx, [0x00423b50]
mov rcx, rax
mov r9, rax
call fcn.00401da5
mov rax, qword [rsp + 0x88]
xor edx, edx
test rax, rax
je 0x409f7a
mov rdx, qword [rax]
mov rcx, r9
call fcn.00403c58
mov rdx, qword [rsp + 0x88]
mov rcx, rax
mov r12, rax
call fcn.00401dcb
mov rax, qword [rsp + 0x90]
test rax, rax
je 0x409ff4
cmp qword [rax], 0
jle 0x409ff4
mov edx, 1
mov rcx, r12
call fcn.00403c58
lea rdx, [0x00423b30]
mov rcx, rax
mov r9, rax
call fcn.00401da5
mov rax, qword [rsp + 0x90]
xor edx, edx
test rax, rax
je 0x409fd9
mov rdx, qword [rax]
mov rcx, r9
call fcn.00403c58
mov rdx, qword [rsp + 0x90]
mov rcx, rax
mov r12, rax
call fcn.00401dcb
xor edx, edx
test r12, r12
je 0x409fff
mov rdx, qword [r12]
mov rcx, r13
call fcn.00403c58
mov rdx, r12
mov rcx, rax
mov r13, rax
call fcn.00401dcb
mov edx, 0xb
mov rcx, r13
call fcn.00403c58
lea rdx, [0x00423da0]
mov rcx, rax
mov r12, rax
call fcn.00401da5
lea rdx, [0x00423d80]
mov rcx, rbx
call fcn.00409862
test al, al
jne 0x40a10b
mov rdx, qword [rsi + 0x20]
mov rax, qword [rsi + 0x18]
test rdx, rdx
je 0x40a06a
mov rdx, qword [rdx]
test rdx, rdx
je 0x40a06a
test rax, rax
je 0x40a098
mov rax, qword [rax]
jmp 0x40a098
mov ecx, 8
test rax, rax
je 0x40a07b
mov rcx, qword [rax]
add rcx, 8
call fcn.00403c25
lea rdx, [0x00423d60]
mov rcx, rax
mov r13, rax
call fcn.00401da5
mov rdx, qword [rsi + 0x18]
jmp 0x40a0d3
lea rcx, [rdx + rax + 9]
call fcn.00403c25
lea rdx, [0x00423d60]
mov rcx, rax
mov r13, rax
call fcn.00401da5
mov rdx, qword [rsi + 0x18]
mov rcx, r13
call fcn.00401dcb
lea rdx, [0x00423d20]
mov rcx, r13
call fcn.00401da5
mov rdx, qword [rsi + 0x20]
mov rcx, r13
call fcn.00401dcb
lea rdx, [0x00423d40]
mov rcx, r13
call fcn.00401da5
xor edx, edx
test r13, r13
je 0x40a0f5
mov rdx, qword [r13]
mov rcx, r12
call fcn.00403c58
mov rdx, r13
mov rcx, rax
mov r12, rax
call fcn.00401dcb
lea rdx, [0x00423d00]
mov rcx, rbx
call fcn.00409862
test al, al
jne 0x40a13d
mov rcx, r12
mov edx, 0x18
call fcn.00403c58
lea rdx, [0x00423cc0]
mov rcx, rax
mov r12, rax
call fcn.00401da5
test rdi, rdi
je 0x40a2ff
mov rsi, qword [rdi + 0x48]
test rsi, rsi
je 0x40a2ff
mov rax, qword [rsi]
test rax, rax
je 0x40a2ff
shl rax, 2
mov edi, 3
xor ecx, ecx
cqo
idiv rdi
lea rdx, [rax + 6]
call fcn.004040bd
mov r9, qword [rsi]
xor r8d, r8d
xor r11d, r11d
mov rcx, rax
mov rax, qword [rsi]
cqo
idiv rdi
lea rdi, str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_
sub r9, rdx
cmp r9, r11
je 0x40a1fe
movzx eax, byte [rsi + r11 + 0x10]
movzx r10d, byte [rsi + r11 + 0x11]
shl eax, 0x10
shl r10d, 8
or eax, r10d
movzx r10d, byte [rsi + r11 + 0x12]
add r11, 3
mov ebp, eax
shr ebp, 0x12
or r10d, eax
shr eax, 0xc
mov bpl, byte [rdi + rbp]
and eax, 0x3f
mov byte [rcx + r8 + 0x10], bpl
mov al, byte [rdi + rax]
mov byte [rcx + r8 + 0x11], al
mov eax, r10d
and r10d, 0x3f
shr eax, 6
and eax, 0x3f
mov al, byte [rdi + rax]
mov byte [rcx + r8 + 0x12], al
mov al, byte [rdi + r10]
mov byte [rcx + r8 + 0x13], al
add r8, 4
jmp 0x40a196
cmp rdx, 1
je 0x40a257
cmp rdx, 2
jne 0x40a291
movzx edx, byte [rsi + r9 + 0x10]
movzx eax, byte [rsi + r9 + 0x11]
lea r9, str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_
shl edx, 0x10
shl eax, 8
or eax, edx
shr edx, 0x12
mov dl, byte [r9 + rdx]
mov byte [rcx + r8 + 0x10], dl
mov edx, eax
shr eax, 6
shr edx, 0xc
and eax, 0x3c
and edx, 0x3f
mov dl, byte [r9 + rdx]
mov byte [rcx + r8 + 0x11], dl
mov al, byte [r9 + rax]
mov byte [rcx + r8 + 0x12], al
jmp 0x40a287
movzx eax, byte [rsi + r9 + 0x10]
lea r9, str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_
mov edx, eax
shl eax, 4
shr edx, 2
and eax, 0x30
mov dl, byte [r9 + rdx]
mov byte [rcx + r8 + 0x10], dl
mov al, byte [r9 + rax]
mov byte [rcx + r8 + 0x12], 0x3d
mov byte [rcx + r8 + 0x11], al
mov byte [rcx + r8 + 0x13], 0x3d
add r8, 4
mov rdx, r8
call fcn.004040bd
mov ecx, 0x1d
mov r14, rax
test rax, rax
je 0x40a2ad
mov rax, qword [rax]
lea rcx, [rax + 0x1d]
call fcn.00403c25
lea rdx, [0x00423c80]
mov r13, rax
mov rcx, rax
call fcn.00401da5
mov rdx, r14
mov rcx, r13
call fcn.00401dcb
lea rdx, [0x00423d40]
mov rcx, r13
call fcn.00401da5
xor edx, edx
test r13, r13
je 0x40a2e9
mov rdx, qword [r13]
mov rcx, r12
call fcn.00403c58
mov rdx, r13
mov rcx, rax
mov r12, rax
call fcn.00401dcb
mov rax, qword [rbx]
mov rax, qword [rax]
test rax, rax
je 0x40a40e
mov rax, qword [rax]
xor esi, esi
dec rax
mov qword [rsp + 0x28], rax
cmp rsi, qword [rsp + 0x28]
jg 0x40a40e
mov rdx, qword [rbx]
imul rax, rsi, 0x18
add rax, qword [rdx]
cmp qword [rax + 0x10], 0
je 0x40a3f2
mov r14, qword [rax + 0x20]
test r14, r14
je 0x40a3f2
mov rbp, qword [rax + 0x18]
mov rax, qword [r14]
xor edi, edi
lea r15, [0x00423d40]
mov qword [rsp + 0x30], rax
cmp rdi, qword [rsp + 0x30]
jge 0x40a3f2
mov r9, qword [r14 + rdi*8 + 0x10]
xor edx, edx
test rbp, rbp
je 0x40a378
mov rdx, qword [rbp]
xor eax, eax
test r9, r9
je 0x40a382
mov rax, qword [r9]
lea rcx, [rdx + rax + 4]
mov qword [rsp + 0x38], r9
call fcn.00403c25
mov rdx, rbp
mov r13, rax
mov rcx, rax
call fcn.00401dcb
lea rdx, [0x00423c60]
mov rcx, r13
call fcn.00401da5
mov r9, qword [rsp + 0x38]
mov rcx, r13
mov rdx, r9
call fcn.00401dcb
mov rdx, r15
mov rcx, r13
call fcn.00401da5
xor edx, edx
test r13, r13
je 0x40a3d4
mov rdx, qword [r13]
mov rcx, r12
inc rdi
call fcn.00403c58
mov rdx, r13
mov rcx, rax
mov r12, rax
call fcn.00401dcb
jmp 0x40a35d
inc rsi
jmp 0x40a31b
xor edx, edx
test al, al
je 0x409e62
mov ecx, 2
jmp 0x409e15
mov rcx, r12
mov edx, 2
call fcn.00403c58
lea rdx, [0x00423d40]
mov rcx, rax
mov qword [rsp + 0x28], rax
call fcn.00401da5
mov rax, qword [rsp + 0x28]
add rsp, 0xa8
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret