Function at 0x14002c945
Capabilities:
Encode data using base64

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x3e8
mov qword [rsp + 0x50], r9
mov qword [rsp + 0x58], r8
mov r14, qword [rdx]
test r14, r14
je 0x14002d180
mov rax, r14
shr rax, 0x3d
jne 0x14002d180
mov qword [rsp + 0x70], rcx
mov qword [rsp + 0x80], rdx
movzx edx, word [rdx + 0x18]
mov rcx, r14
mov word [rsp + 0x66], dx
call fcn.14002bd7c
mov ecx, 0xffffffa0
sub ecx, edx
movsx ecx, cx
lea ecx, [rcx + rcx*4]
shl ecx, 4
add ecx, 0x153b0
movsxd rcx, ecx
imul rcx, rcx, 0x7b4dc993
mov r8, rcx
shr r8, 0x3f
sar rcx, 0x2a
add ecx, r8d
cmp ecx, 0x51
jae 0x14002d180
mov r15d, ecx
shl r15, 4
lea rbx, [0x14006afa0]
mov r8, qword [r15 + rbx]
movzx r9d, word [r15 + rbx + 8]
mov rcx, rax
call fcn.14002be1c
mov rbp, rax
neg edx
movzx r13d, dx
mov r12d, r13d
and r12d, 0x3f
mov rsi, rax
mov ecx, r12d
shr rsi, cl
mov eax, 1
shl rax, cl
lea rdi, [rax - 1]
mov qword [rsp + 0x78], rdi
and rdi, rbp
je 0x14002cc38
mov qword [rsp + 0x68], rax
add rbx, r15
mov ecx, esi
call fcn.14002be6f
mov r8d, edx
movzx ecx, al
movzx eax, word [rbx + 0xa]
mov r10d, ecx
sub r10w, ax
inc r10d
movzx r9d, word [rsp + 0x450]
cmp r10w, r9w
jle 0x14002cae1
movsx rax, r10w
mov edx, r10d
sub edx, r9d
movsx r9, r9w
sub rax, r9
mov rbp, qword [rsp + 0x50]
cmp rax, rbp
movsx r9, dx
cmovae r9, rbp
neg rcx
neg rbp
mov r11d, 1
mov ebx, 0xcccccccd
lea r15, [r11 + rbp]
mov eax, esi
xor edx, edx
div r8d
cmp r15, 1
je 0x14002d180
mov esi, edx
add al, 0x30
mov rdx, qword [rsp + 0x58]
mov byte [rdx + r11 - 1], al
cmp r9, r11
je 0x14002cb38
lea rax, [rcx + r11]
cmp rax, 1
je 0x14002cb75
mov eax, r8d
imul rax, rbx
shr rax, 0x23
inc r11
cmp r8d, 0xa
mov r8d, eax
jae 0x14002ca8b
jmp 0x14002d180
movabs rcx, 0xcccccccccccccccd
mov rax, rbp
mul rcx
shr rdx, 3
mov eax, r8d
mov ecx, r12d
shl rax, cl
mov rcx, qword [rsp + 0x68]
mov qword [rsp + 0x40], rcx
mov word [rsp + 0x28], r9w
mov word [rsp + 0x20], r10w
mov qword [rsp + 0x30], rdx
mov qword [rsp + 0x38], rax
lea rcx, [rsp + 0x88]
mov rdx, qword [rsp + 0x58]
mov r8, qword [rsp + 0x50]
xor r9d, r9d
jmp 0x14002cc07
mov eax, esi
mov ecx, r12d
shl rax, cl
add rax, rdi
mov edx, r8d
shl rdx, cl
mov rcx, qword [rsp + 0x68]
mov qword [rsp + 0x40], rcx
movzx ecx, word [rsp + 0x450]
mov word [rsp + 0x28], cx
mov word [rsp + 0x20], r10w
mov qword [rsp + 0x38], rdx
mov qword [rsp + 0x30], rax
jmp 0x14002cbf5
dec r13d
and r13d, 0x3f
mov eax, 1
mov r8, qword [rsp + 0x68]
mov rdx, rax
mov ecx, r13d
shr rdx, cl
test rdx, rdx
jne 0x14002cc38
cmp r11, qword [rsp + 0x50]
jae 0x14002d180
add rdi, rdi
lea rdx, [rdi + rdi*4]
mov rdi, rdx
and rdi, qword [rsp + 0x78]
add rax, rax
lea rax, [rax + rax*4]
mov ecx, r12d
shr rdx, cl
add dl, 0x30
mov rcx, qword [rsp + 0x58]
mov byte [rcx + r11], dl
inc r11
cmp r9, r11
jne 0x14002cb86
mov qword [rsp + 0x40], rax
mov qword [rsp + 0x38], r8
mov qword [rsp + 0x30], rdi
movzx eax, word [rsp + 0x450]
mov word [rsp + 0x28], ax
mov word [rsp + 0x20], r10w
lea rcx, [rsp + 0x88]
mov rdx, qword [rsp + 0x58]
mov r8, qword [rsp + 0x50]
call fcn.14002c88d
cmp qword [rsp + 0x88], 0
je 0x14002cc38
mov rax, qword [rsp + 0x98]
mov rcx, qword [rsp + 0x70]
mov qword [rcx + 0x10], rax
movups xmm0, xmmword [rsp + 0x88]
movups xmmword [rcx], xmm0
jmp 0x14002d14c
mov rcx, qword [rsp + 0x80]
mov rax, qword [rcx + 8]
test rax, rax
je 0x14002d180
mov rcx, qword [rcx + 0x10]
test rcx, rcx
movzx ebx, word [rsp + 0x450]
movzx r15d, word [rsp + 0x66]
je 0x14002d180
add rcx, r14
jb 0x14002d180
cmp r14, rax
jb 0x14002d180
movzx esi, r15w
movsx rax, si
mov rcx, r14
dec rcx
je 0x14002cc94
bsr rcx, rcx
xor rcx, 0x3f
jmp 0x14002cc99
mov ecx, 0x40
sub rax, rcx
imul rax, rax, 0x4d104d42
movabs rbp, 0x1344135080
add rbp, rax
shr rbp, 0x20
xor edi, edi
lea rcx, [rsp + 0xa0]
mov r8d, 0xa0
xor edx, edx
call fcn.14005f650
cmp rdi, 0x28
je 0x14002d180
mov dword [rsp + rdi*4 + 0xa0], r14d
shr r14, 0x20
inc rdi
test r14, r14
jne 0x14002cccb
lea r14, [rsp + 0x148]
lea rdx, [rsp + 0xa0]
mov r8d, 0xa0
mov rcx, r14
call fcn.14005efb0
mov qword [r14 + 0xa0], rdi
lea r14, [rsp + 0x1f4]
mov r8d, 0x9c
mov rcx, r14
xor edx, edx
call fcn.14005f650
mov qword [r14 + 0x9c], 1
mov dword [r14 - 4], 1
test r15w, r15w
js 0x14002cd4c
lea rcx, [rsp + 0x148]
mov rdx, rsi
jmp 0x14002cd5a
neg esi
movsx rdx, si
lea rcx, [rsp + 0x1f0]
call fcn.140028526
test bp, bp
js 0x14002cd71
movzx edx, bp
lea rcx, [rsp + 0x1f0]
jmp 0x14002cd81
mov eax, ebp
neg eax
movsx rdx, ax
lea rcx, [rsp + 0x148]
call fcn.14002bc8b
lea rdx, [rsp + 0x1f0]
mov rsi, qword [rdx + 0xa0]
lea rcx, [rsp + 0xa0]
mov qword [rcx + 0xa0], rsi
mov r8d, 0xa0
call fcn.14005efb0
movabs r8, 0x44b82fa09b5a53
mov rcx, qword [rsp + 0x50]
cmp rsi, 0x29
jae 0x14002d180
test rsi, rsi
je 0x14002ce07
shl rsi, 2
xor r9d, r9d
mov eax, dword [rsp + rsi + 0x9c]
shl r9, 0x20
or r9, rax
mov rax, r9
shr rax, 9
mul r8
shr rdx, 0xb
imul rax, rdx, 0x3b9aca00
sub r9, rax
mov dword [rsp + rsi + 0x9c], edx
add rsi, 0xfffffffffffffffc
jne 0x14002cdd4
add rcx, 0xfffffffffffffff7
cmp rcx, 9
jbe 0x14002ce1b
mov rsi, qword [rsp + 0x140]
jmp 0x14002cdbe
lea rax, [0x14006aed8]
mov eax, dword [rax + rcx*4]
add eax, eax
je 0x14002d180
mov rcx, qword [rsp + 0x140]
cmp rcx, 0x29
jae 0x14002d180
test rcx, rcx
je 0x14002ce70
mov r8d, eax
shl rcx, 2
xor edx, edx
mov eax, dword [rsp + rcx + 0x9c]
shl rdx, 0x20
or rdx, rax
mov rax, rdx
xor edx, edx
div r8
mov dword [rsp + rcx + 0x9c], eax
add rcx, 0xfffffffffffffffc
jne 0x14002ce4d
lea rsi, [rsp + 0xa0]
lea rdx, [rsp + 0x148]
mov rcx, rsi
call fcn.1400283fe
lea rdx, [rsp + 0x1f0]
mov rcx, rsi
call fcn.140028798
cmp al, 2
jae 0x14002cea0
inc ebp
jmp 0x14002ceb2
lea rcx, [rsp + 0x148]
mov edx, 0xa
call fcn.1400284c3
cmp bp, bx
jl 0x14002d0ac
movsx rax, bp
mov ecx, ebp
sub ecx, ebx
movsx rdx, bx
sub rax, rdx
mov rdx, qword [rsp + 0x50]
cmp rax, rdx
movsx r14, cx
cmovae r14, rdx
test r14, r14
je 0x14002d0ac
lea r15, [rsp + 0x1f0]
mov rax, qword [r15 + 0xa0]
lea rsi, [rsp + 0x298]
mov qword [rsi + 0xa0], rax
mov r8d, 0xa0
mov rcx, rsi
mov rdx, r15
call fcn.14005efb0
mov edx, 1
mov rcx, rsi
call fcn.140028526
mov rax, qword [r15 + 0xa0]
lea rsi, [rsp + 0x340]
mov qword [rsi + 0xa0], rax
mov r8d, 0xa0
mov rcx, rsi
mov rdx, r15
call fcn.14005efb0
mov edx, 2
mov rcx, rsi
call fcn.140028526
mov rax, qword [r15 + 0xa0]
lea r13, [rsp + 0xa0]
mov qword [r13 + 0xa0], rax
mov r8d, 0xa0
mov rcx, r13
mov rdx, r15
call fcn.14005efb0
mov edx, 3
mov rcx, r13
call fcn.140028526
xor r12d, r12d
lea rdi, [rsp + 0x148]
mov rax, qword [rsp + 0x1e8]
cmp rax, 0x29
jae 0x14002d180
lea rdx, [r12 + 1]
shl rax, 2
xor ecx, ecx
cmp rax, rcx
je 0x14002d160
cmp dword [rsp + rcx + 0x148], 0
lea rcx, [rcx + 4]
je 0x14002cfaf
mov qword [rsp + 0x78], rdx
mov rcx, rdi
mov rdx, r13
call fcn.140028798
cmp al, 2
jae 0x14002cfe9
mov rcx, rdi
mov rdx, r13
call fcn.140028467
mov bl, 8
jmp 0x14002cfeb
xor ebx, ebx
mov r13, r15
mov rcx, rdi
mov rdx, rsi
call fcn.140028798
cmp al, 1
ja 0x14002d010
mov rcx, rdi
mov r15, rsi
mov rdx, rsi
call fcn.140028467
or bl, 4
jmp 0x14002d013
mov r15, rsi
lea rsi, [rsp + 0x298]
mov rcx, rdi
mov rdx, rsi
call fcn.140028798
cmp al, 1
ja 0x14002d038
mov rcx, rdi
mov rdx, rsi
call fcn.140028467
add bl, 2
mov rsi, r15
mov rcx, rdi
mov r15, r13
mov rdx, r13
call fcn.140028798
cmp al, 1
ja 0x14002d05a
mov rcx, rdi
mov rdx, r15
call fcn.140028467
inc bl
lea r13, [rsp + 0xa0]
cmp r12, qword [rsp + 0x50]
je 0x14002d180
add bl, 0x30
mov rax, qword [rsp + 0x58]
mov byte [rax + r12], bl
lea rdi, [rsp + 0x148]
mov rcx, rdi
mov edx, 0xa
call fcn.1400284c3
mov rax, qword [rsp + 0x78]
mov r12, rax
cmp rax, r14
movzx ebx, word [rsp + 0x450]
jne 0x14002cf92
mov dil, 1
jmp 0x14002d0b1
xor edi, edi
xor r14d, r14d
lea rsi, [rsp + 0x1f0]
mov rcx, rsi
mov edx, 5
call fcn.1400284c3
lea rcx, [rsp + 0x148]
mov rdx, rsi
call fcn.140028798
cmp al, 1
je 0x14002d0fe
test al, al
sete al
test dil, al
je 0x14002d130
lea rax, [r14 - 1]
cmp rax, qword [rsp + 0x50]
jae 0x14002d180
mov rcx, qword [rsp + 0x58]
test byte [rcx + rax], 1
je 0x14002d130
cmp r14, qword [rsp + 0x50]
ja 0x14002d180
mov rcx, qword [rsp + 0x58]
mov rdx, r14
call fcn.140027c72
test al, 1
je 0x14002d130
inc ebp
cmp bp, bx
jle 0x14002d130
cmp r14, qword [rsp + 0x50]
jae 0x14002d130
mov rax, qword [rsp + 0x58]
mov byte [rax + r14], dl
inc r14
cmp r14, qword [rsp + 0x50]
ja 0x14002d180
mov rax, qword [rsp + 0x70]
mov rcx, qword [rsp + 0x58]
mov qword [rax], rcx
mov qword [rax + 8], r14
mov word [rax + 0x10], bp
add rsp, 0x3e8
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
cmp r14, qword [rsp + 0x50]
ja 0x14002d180
mov r8, r14
sub r8, r12
je 0x14002d137
add r12, qword [rsp + 0x58]
mov rcx, r12
mov dl, 0x30
call fcn.14005f650
jmp 0x14002d137
ud2