Function at 0x408fbc
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 [0x00435de0]
mov rsi, rcx
mov rbx, r8
mov rdi, r9
mov r8, qword [rax + 0x28]
movzx ecx, dl
test byte [0x00435dd1], 4
je 0x408ffa
mov rdx, qword [rax + 0x20]
xor eax, eax
dec rdx
jmp 0x409023
mov rdx, qword [r8]
mov r11, rcx
sub r11, qword [rdx + 8]
js 0x409038
cmp r11, qword [rax + 0x20]
jae 0x409038
mov rax, qword [r8 + r11*8]
mov rcx, qword [rax + 0x18]
jmp 0x40902e
mov r9, qword [r8 + rax*8]
cmp rcx, qword [r9 + 8]
je 0x40902a
inc rax
cmp rdx, rax
jge 0x409016
jmp 0x409038
mov rcx, qword [r9 + 0x18]
call fcn.00403a9e
mov r10, rax
jmp 0x409073
call fcn.00404400
mov ecx, 0x10
mov r12, rax
test rax, rax
je 0x409051
mov rax, qword [rax]
lea rcx, [rax + 0x10]
call fcn.00403d49
mov rdx, r12
mov r10, rax
mov rcx, rax
call fcn.00401eb1
lea rdx, [0x0041a900]
mov rcx, r10
call fcn.00401e8b
mov edx, 0x20
mov rcx, r10
call fcn.00403dfb
mov r13, rax
test rdi, rdi
je 0x4090e4
mov rcx, qword [rsi]
lea rdx, [0x0041abe0]
call fcn.00408584
test al, al
jne 0x4090e4
lea r9, [rsp + 0x58]
mov edx, 0x48
lea r8, [0x00435d80]
mov rcx, r9
call fcn.00401eb9
mov rdx, rsi
mov rcx, r9
call fcn.00406408
mov rcx, qword [rsi]
lea rdx, [0x0041abe0]
call fcn.00408584
test al, al
je 0x409172
mov qword [rsp + 0x58], 0
jmp 0x409172
mov rax, qword [rsi + 0x28]
test rax, rax
je 0x4090f9
cmp qword [rax], 0
jle 0x4090f9
cmp byte [rax + 0x10], 0x2f
je 0x409109
mov rcx, r13
mov edx, 0x2f
call fcn.00403dfb
mov r13, rax
mov rax, qword [rsi + 0x28]
xor edx, edx
test rax, rax
je 0x409117
mov rdx, qword [rax]
mov rcx, r13
call fcn.00403d7c
mov rdx, qword [rsi + 0x28]
mov rcx, rax
mov r13, rax
call fcn.00401eb1
mov rax, qword [rsi + 0x30]
test rax, rax
je 0x409532
mov rcx, qword [rax]
test rcx, rcx
jle 0x409532
inc rcx
call fcn.00403d49
lea rdx, [0x0041abc0]
mov rcx, rax
mov r12, rax
call fcn.00401e8b
mov rdx, qword [rsi + 0x30]
mov rcx, r12
call fcn.00401eb1
jmp 0x409511
mov r12, qword [rsp + 0x58]
test r12, r12
je 0x4091e0
mov rcx, qword [r12]
xor r12d, r12d
test rcx, rcx
jle 0x4091e0
call fcn.00401c3d
mov rdx, qword [rsp + 0x58]
mov rcx, rax
mov qword [rsp + 0x28], rax
call fcn.00401eb1
cmp byte [rsp + 0x98], 0
mov rcx, qword [rsp + 0x28]
jne 0x4091c4
mov edx, 3
call fcn.00403d7c
lea rdx, [0x0041a9f0]
mov r12, rax
jmp 0x4091d8
mov edx, 1
call fcn.00403d7c
lea rdx, [0x0041a9d0]
mov r12, rax
mov rcx, r12
call fcn.00401e8b
mov rax, qword [rsp + 0x60]
test rax, rax
je 0x409287
mov rdx, qword [rax]
test rdx, rdx
jle 0x409287
mov rcx, r12
call fcn.00403d7c
mov rdx, qword [rsp + 0x60]
mov rcx, rax
mov r9, rax
call fcn.00401eb1
mov rax, qword [rsp + 0x68]
test rax, rax
je 0x409268
cmp qword [rax], 0
jle 0x409268
mov rcx, r9
mov edx, 1
call fcn.00403d7c
lea rdx, [0x0041a9d0]
mov rcx, rax
mov r9, rax
call fcn.00401e8b
mov rax, qword [rsp + 0x68]
xor edx, edx
test rax, rax
je 0x409250
mov rdx, qword [rax]
mov rcx, r9
call fcn.00403d7c
mov rdx, qword [rsp + 0x68]
mov rcx, rax
mov r9, rax
call fcn.00401eb1
mov edx, 1
mov rcx, r9
call fcn.00403d7c
lea rdx, [0x0041a9b0]
mov rcx, rax
mov r12, rax
call fcn.00401e8b
mov rcx, qword [rsp + 0x70]
mov al, byte [rsp + 0x99]
test rcx, rcx
je 0x409917
mov rdx, qword [rcx]
test rdx, rdx
jle 0x40932a
cmp byte [rcx + rdx + 0xf], 0x2f
jne 0x40932a
xor edx, edx
lea r14, [rsp + 0x40]
test al, al
mov r8d, 2
mov rcx, r14
jne 0x4092e8
call fcn.00401fd9
mov rcx, qword [rsp + 0x70]
mov rdx, r14
call fcn.004041e1
xor edx, edx
mov r14, rax
test rax, rax
jne 0x40936c
jmp 0x40936f
call fcn.00401fd9
mov rcx, qword [rsp + 0x70]
mov rdx, r14
call fcn.004041e1
mov ecx, 2
mov r15, rax
test rax, rax
je 0x40930e
mov rax, qword [rax]
lea rcx, [rax + 2]
call fcn.00403d49
lea rdx, [0x0041a990]
mov rcx, rax
mov r14, rax
call fcn.00401e8b
mov rdx, r15
jmp 0x40934e
test al, al
je 0x40937f
lea rcx, [rdx + 2]
call fcn.00403d49
lea rdx, [0x0041a990]
mov rcx, rax
mov r14, rax
call fcn.00401e8b
mov rdx, qword [rsp + 0x70]
mov rcx, r14
call fcn.00401eb1
lea rdx, [0x0041a970]
mov rcx, r14
call fcn.00401e8b
xor edx, edx
test r14, r14
je 0x40936f
mov rdx, qword [r14]
mov rcx, r12
call fcn.00403d7c
mov rdx, r14
mov r12, rax
jmp 0x40938f
mov rcx, r12
call fcn.00403d7c
mov rdx, qword [rsp + 0x70]
mov r12, rax
mov rcx, r12
call fcn.00401eb1
mov rax, qword [rsp + 0x78]
test rax, rax
je 0x4093ed
cmp qword [rax], 0
jle 0x4093ed
mov edx, 1
mov rcx, r12
call fcn.00403d7c
lea rdx, [0x0041a9d0]
mov rcx, rax
mov r9, rax
call fcn.00401e8b
mov rax, qword [rsp + 0x78]
xor edx, edx
test rax, rax
je 0x4093d5
mov rdx, qword [rax]
mov rcx, r9
call fcn.00403d7c
mov rdx, qword [rsp + 0x78]
mov rcx, rax
mov r12, rax
call fcn.00401eb1
mov rax, qword [rsp + 0x80]
test rax, rax
je 0x409453
cmp qword [rax], 0
jle 0x409453
mov rdx, qword [rsp + 0x70]
test rdx, rdx
je 0x409426
cmp qword [rdx], 0
jle 0x409426
cmp byte [rax + 0x10], 0x2f
je 0x409426
mov rcx, r12
mov edx, 0x2f
call fcn.00403dfb
mov r12, rax
mov rax, qword [rsp + 0x80]
xor edx, edx
test rax, rax
je 0x409438
mov rdx, qword [rax]
mov rcx, r12
call fcn.00403d7c
mov rdx, qword [rsp + 0x80]
mov rcx, rax
mov r12, rax
call fcn.00401eb1
mov rax, qword [rsp + 0x88]
test rax, rax
je 0x4094b2
cmp qword [rax], 0
jle 0x4094b2
mov edx, 1
mov rcx, r12
call fcn.00403d7c
lea rdx, [0x0041a950]
mov rcx, rax
mov r9, rax
call fcn.00401e8b
mov rax, qword [rsp + 0x88]
xor edx, edx
test rax, rax
je 0x409497
mov rdx, qword [rax]
mov rcx, r9
call fcn.00403d7c
mov rdx, qword [rsp + 0x88]
mov rcx, rax
mov r12, rax
call fcn.00401eb1
mov rax, qword [rsp + 0x90]
test rax, rax
je 0x409511
cmp qword [rax], 0
jle 0x409511
mov edx, 1
mov rcx, r12
call fcn.00403d7c
lea rdx, [0x0041a930]
mov rcx, rax
mov r9, rax
call fcn.00401e8b
mov rax, qword [rsp + 0x90]
xor edx, edx
test rax, rax
je 0x4094f6
mov rdx, qword [rax]
mov rcx, r9
call fcn.00403d7c
mov rdx, qword [rsp + 0x90]
mov rcx, rax
mov r12, rax
call fcn.00401eb1
xor edx, edx
test r12, r12
je 0x40951c
mov rdx, qword [r12]
mov rcx, r13
call fcn.00403d7c
mov rdx, r12
mov rcx, rax
mov r13, rax
call fcn.00401eb1
mov edx, 0xb
mov rcx, r13
call fcn.00403d7c
lea rdx, [0x0041aba0]
mov rcx, rax
mov r12, rax
call fcn.00401e8b
lea rdx, [0x0041ab80]
mov rcx, rbx
call fcn.004087fc
test al, al
jne 0x409628
mov rdx, qword [rsi + 0x20]
mov rax, qword [rsi + 0x18]
test rdx, rdx
je 0x409587
mov rdx, qword [rdx]
test rdx, rdx
je 0x409587
test rax, rax
je 0x4095b5
mov rax, qword [rax]
jmp 0x4095b5
mov ecx, 8
test rax, rax
je 0x409598
mov rcx, qword [rax]
add rcx, 8
call fcn.00403d49
lea rdx, [0x0041ab60]
mov rcx, rax
mov r13, rax
call fcn.00401e8b
mov rdx, qword [rsi + 0x18]
jmp 0x4095f0
lea rcx, [rdx + rax + 9]
call fcn.00403d49
lea rdx, [0x0041ab60]
mov rcx, rax
mov r13, rax
call fcn.00401e8b
mov rdx, qword [rsi + 0x18]
mov rcx, r13
call fcn.00401eb1
lea rdx, [0x0041ab20]
mov rcx, r13
call fcn.00401e8b
mov rdx, qword [rsi + 0x20]
mov rcx, r13
call fcn.00401eb1
lea rdx, [0x0041ab40]
mov rcx, r13
call fcn.00401e8b
xor edx, edx
test r13, r13
je 0x409612
mov rdx, qword [r13]
mov rcx, r12
call fcn.00403d7c
mov rdx, r13
mov rcx, rax
mov r12, rax
call fcn.00401eb1
lea rdx, [0x0041ab00]
mov rcx, rbx
call fcn.004087fc
test al, al
jne 0x40965a
mov rcx, r12
mov edx, 0x18
call fcn.00403d7c
lea rdx, [0x0041aac0]
mov rcx, rax
mov r12, rax
call fcn.00401e8b
test rdi, rdi
je 0x40981c
mov rsi, qword [rdi + 0x48]
test rsi, rsi
je 0x40981c
mov rax, qword [rsi]
test rax, rax
je 0x40981c
shl rax, 2
mov edi, 3
xor ecx, ecx
cqo
idiv rdi
lea rdx, [rax + 6]
call fcn.00404233
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 0x40971b
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 0x4096b3
cmp rdx, 1
je 0x409774
cmp rdx, 2
jne 0x4097ae
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 0x4097a4
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.00404233
mov ecx, 0x1d
mov r14, rax
test rax, rax
je 0x4097ca
mov rax, qword [rax]
lea rcx, [rax + 0x1d]
call fcn.00403d49
lea rdx, [0x0041aa80]
mov r13, rax
mov rcx, rax
call fcn.00401e8b
mov rdx, r14
mov rcx, r13
call fcn.00401eb1
lea rdx, [0x0041ab40]
mov rcx, r13
call fcn.00401e8b
xor edx, edx
test r13, r13
je 0x409806
mov rdx, qword [r13]
mov rcx, r12
call fcn.00403d7c
mov rdx, r13
mov rcx, rax
mov r12, rax
call fcn.00401eb1
mov rax, qword [rbx]
mov rax, qword [rax]
test rax, rax
je 0x40992b
mov rax, qword [rax]
xor esi, esi
dec rax
mov qword [rsp + 0x28], rax
cmp rsi, qword [rsp + 0x28]
jg 0x40992b
mov rdx, qword [rbx]
imul rax, rsi, 0x18
add rax, qword [rdx]
cmp qword [rax + 0x10], 0
je 0x40990f
mov r14, qword [rax + 0x20]
test r14, r14
je 0x40990f
mov rbp, qword [rax + 0x18]
mov rax, qword [r14]
xor edi, edi
lea r15, [0x0041ab40]
mov qword [rsp + 0x30], rax
cmp rdi, qword [rsp + 0x30]
jge 0x40990f
mov r9, qword [r14 + rdi*8 + 0x10]
xor edx, edx
test rbp, rbp
je 0x409895
mov rdx, qword [rbp]
xor eax, eax
test r9, r9
je 0x40989f
mov rax, qword [r9]
lea rcx, [rdx + rax + 4]
mov qword [rsp + 0x38], r9
call fcn.00403d49
mov rdx, rbp
mov r13, rax
mov rcx, rax
call fcn.00401eb1
lea rdx, [0x0041aa60]
mov rcx, r13
call fcn.00401e8b
mov r9, qword [rsp + 0x38]
mov rcx, r13
mov rdx, r9
call fcn.00401eb1
mov rdx, r15
mov rcx, r13
call fcn.00401e8b
xor edx, edx
test r13, r13
je 0x4098f1
mov rdx, qword [r13]
mov rcx, r12
inc rdi
call fcn.00403d7c
mov rdx, r13
mov rcx, rax
mov r12, rax
call fcn.00401eb1
jmp 0x40987a
inc rsi
jmp 0x409838
xor edx, edx
test al, al
je 0x40937f
mov ecx, 2
jmp 0x409332
mov rcx, r12
mov edx, 2
call fcn.00403d7c
lea rdx, [0x0041ab40]
mov rcx, rax
mov qword [rsp + 0x28], rax
call fcn.00401e8b
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