Function at 0x40d879
Capabilities:
Encode data using base64

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x78
mov rsi, rcx
test rcx, rcx
je 0x40e89f
mov rcx, qword [rcx]
test rcx, rcx
je 0x40e89f
call fcn.0040d852
mov r12, rax
test rax, rax
jns 0x40d8c2
movabs r8, 0x7fffffffffffffff
xor edx, edx
mov rcx, rax
call fcn.00404a37
mov rdx, r12
xor ecx, ecx
movabs r12, 0x2000000100002400
call fcn.0040460c
mov rdi, qword [rsi]
mov r13, rax
mov rbx, rdi
xor ebp, ebp
sub rbx, 1
jno 0x40d8f1
mov ebp, 1
call fcn.00403865
mov rdx, qword [rsi]
test rbx, rbx
js 0x40d8fe
cmp rbx, rdx
jl 0x40d909
dec rdx
mov rcx, rbx
call fcn.00404b7b
mov cl, byte [rsi + rbx + 0x10]
cmp cl, 0x3d
ja 0x40d91c
mov rax, r12
shr rax, cl
test al, 1
jne 0x40d931
mov rax, rdi
sub rax, 4
mov qword [rsp + 0x60], rax
jno 0x40d942
call fcn.00403865
jmp 0x40d942
test rbp, rbp
jne 0x40d93b
mov rdi, rbx
jmp 0x40d8dc
call fcn.00403865
jmp 0x40d936
xor r12d, r12d
xor ebx, ebx
lea rbp, [0x0041b640]
cmp qword [rsp + 0x60], rbx
jge 0x40d994
mov rbp, rbx
sub rbp, rdi
jno 0x40e057
call fcn.00403865
jmp 0x40e057
cmp rbx, rdx
jge 0x40d99c
mov cl, byte [rsi + rbx + 0x10]
cmp cl, 0x20
ja 0x40d9a9
mov eax, 0x400009
shl rax, 0xa
shr rax, cl
test al, 1
je 0x40d9a9
add rbx, 1
jno 0x40d994
call fcn.00403865
mov rdx, qword [rsi]
test rbx, rbx
jns 0x40d96b
dec rdx
mov rcx, rbx
call fcn.00404b7b
jmp 0x40d970
mov rdx, qword [rsi]
test rbx, rbx
js 0x40d9b6
cmp rbx, rdx
jl 0x40d9c1
dec rdx
mov rcx, rbx
call fcn.00404b7b
movzx eax, byte [rsi + rbx + 0x10]
mov al, byte [rbp + rax]
mov byte [rsp + 0x30], al
inc al
jne 0x40db14
mov rcx, qword [0x004489d0]
mov edx, 0x30
call fcn.0040425f
mov r14, rax
mov rax, qword [0x00448a20]
mov qword [r14], rax
lea rax, [0x0041b500]
mov qword [r14 + 0x10], rax
test rbx, rbx
js 0x40da09
cmp rbx, qword [rsi]
jl 0x40da31
mov rax, qword [rsi]
mov rcx, rbx
lea rdx, [rax - 1]
call fcn.00404b7b
test rbx, rbx
js 0x40da22
cmp rbx, qword [rsi]
jl 0x40da31
mov rax, qword [rsi]
mov rcx, rbx
lea rdx, [rax - 1]
call fcn.00404b7b
movzx ecx, byte [rsi + rbx + 0x10]
call fcn.00401a74
mov rcx, rbx
mov qword [rsp + 0x38], rax
call fcn.00401a74
mov r8, qword [rsp + 0x38]
xor edx, edx
mov r15, rax
test r8, r8
je 0x40da5a
mov rdx, qword [r8]
xor eax, eax
test r15, r15
je 0x40da64
mov rax, qword [r15]
lea rcx, [rdx + rax + 0x38]
mov qword [rsp + 0x38], r8
call fcn.00404290
lea rdx, [0x0041b600]
mov rcx, rax
mov r9, rax
call fcn.0040d824
movsx edx, byte [rsi + rbx + 0x10]
mov rcx, r9
call fcn.0040d7c0
lea rdx, [0x0041b5e0]
call fcn.0040d824
mov r8, qword [rsp + 0x38]
mov rcx, r9
mov rdx, r8
call fcn.0040d84a
mov rcx, r9
lea rdx, [0x0041b5c0]
call fcn.0040d824
mov rcx, r9
mov rdx, r15
call fcn.0040d84a
mov rcx, r9
lea rdx, [0x0041b5a0]
call fcn.0040d824
mov rdx, r9
lea rcx, [r14 + 0x18]
call fcn.0040d7d3
lea rcx, [r14 + 8]
xor edx, edx
call fcn.0040d7d3
lea r9, str.base64.nim
lea r8, str.decode
mov rcx, r14
mov qword [rsp + 0x20], 0xe9
lea rdx, [0x0041b500]
call fcn.00404924
add rbx, 1
jno 0x40db1f
call fcn.00403865
mov rdx, qword [rsi]
test rbx, rbx
js 0x40db2c
cmp rbx, rdx
jl 0x40db37
dec rdx
mov rcx, rbx
call fcn.00404b7b
movzx eax, byte [rsi + rbx + 0x10]
movzx eax, byte [rbp + rax]
mov byte [rsp + 0x38], al
mov qword [rsp + 0x50], rax
cmp rax, 0xff
jne 0x40dc94
mov rcx, qword [0x004489d0]
mov edx, 0x30
call fcn.0040425f
mov r14, rax
mov rax, qword [0x00448a20]
mov qword [r14], rax
lea rax, [0x0041b500]
mov qword [r14 + 0x10], rax
test rbx, rbx
js 0x40db89
cmp rbx, qword [rsi]
jl 0x40dbb1
mov rax, qword [rsi]
mov rcx, rbx
lea rdx, [rax - 1]
call fcn.00404b7b
test rbx, rbx
js 0x40dba2
cmp rbx, qword [rsi]
jl 0x40dbb1
mov rax, qword [rsi]
mov rcx, rbx
lea rdx, [rax - 1]
call fcn.00404b7b
movzx ecx, byte [rsi + rbx + 0x10]
call fcn.00401a74
mov rcx, rbx
mov qword [rsp + 0x40], rax
call fcn.00401a74
mov r8, qword [rsp + 0x40]
xor edx, edx
mov r15, rax
test r8, r8
je 0x40dbda
mov rdx, qword [r8]
xor eax, eax
test r15, r15
je 0x40dbe4
mov rax, qword [r15]
lea rcx, [rdx + rax + 0x38]
mov qword [rsp + 0x40], r8
call fcn.00404290
lea rdx, [0x0041b600]
mov rcx, rax
mov r9, rax
call fcn.0040d824
movsx edx, byte [rsi + rbx + 0x10]
mov rcx, r9
call fcn.0040d7c0
lea rdx, [0x0041b5e0]
call fcn.0040d824
mov r8, qword [rsp + 0x40]
mov rcx, r9
mov rdx, r8
call fcn.0040d84a
mov rcx, r9
lea rdx, [0x0041b5c0]
call fcn.0040d824
mov rcx, r9
mov rdx, r15
call fcn.0040d84a
mov rcx, r9
lea rdx, [0x0041b5a0]
call fcn.0040d824
mov rdx, r9
lea rcx, [r14 + 0x18]
call fcn.0040d7d3
lea rcx, [r14 + 8]
xor edx, edx
call fcn.0040d7d3
lea r9, str.base64.nim
lea r8, str.decode
mov rcx, r14
mov qword [rsp + 0x20], 0xe9
lea rdx, [0x0041b500]
call fcn.00404924
add rbx, 1
jno 0x40dc9f
call fcn.00403865
mov rdx, qword [rsi]
test rbx, rbx
js 0x40dcac
cmp rbx, rdx
jl 0x40dcb7
dec rdx
mov rcx, rbx
call fcn.00404b7b
movzx eax, byte [rsi + rbx + 0x10]
movzx eax, byte [rbp + rax]
mov byte [rsp + 0x40], al
mov qword [rsp + 0x58], rax
cmp rax, 0xff
jne 0x40de14
mov rcx, qword [0x004489d0]
mov edx, 0x30
call fcn.0040425f
mov r14, rax
mov rax, qword [0x00448a20]
mov qword [r14], rax
lea rax, [0x0041b500]
mov qword [r14 + 0x10], rax
test rbx, rbx
js 0x40dd09
cmp rbx, qword [rsi]
jl 0x40dd31
mov rax, qword [rsi]
mov rcx, rbx
lea rdx, [rax - 1]
call fcn.00404b7b
test rbx, rbx
js 0x40dd22
cmp rbx, qword [rsi]
jl 0x40dd31
mov rax, qword [rsi]
mov rcx, rbx
lea rdx, [rax - 1]
call fcn.00404b7b
movzx ecx, byte [rsi + rbx + 0x10]
call fcn.00401a74
mov rcx, rbx
mov qword [rsp + 0x48], rax
call fcn.00401a74
mov r8, qword [rsp + 0x48]
xor edx, edx
mov r15, rax
test r8, r8
je 0x40dd5a
mov rdx, qword [r8]
xor eax, eax
test r15, r15
je 0x40dd64
mov rax, qword [r15]
lea rcx, [rdx + rax + 0x38]
mov qword [rsp + 0x48], r8
call fcn.00404290
lea rdx, [0x0041b600]
mov rcx, rax
mov r9, rax
call fcn.0040d824
movsx edx, byte [rsi + rbx + 0x10]
mov rcx, r9
call fcn.0040d7c0
lea rdx, [0x0041b5e0]
call fcn.0040d824
mov r8, qword [rsp + 0x48]
mov rcx, r9
mov rdx, r8
call fcn.0040d84a
mov rcx, r9
lea rdx, [0x0041b5c0]
call fcn.0040d824
mov rcx, r9
mov rdx, r15
call fcn.0040d84a
mov rcx, r9
lea rdx, [0x0041b5a0]
call fcn.0040d824
mov rdx, r9
lea rcx, [r14 + 0x18]
call fcn.0040d7d3
lea rcx, [r14 + 8]
xor edx, edx
call fcn.0040d7d3
lea r9, str.base64.nim
lea r8, str.decode
mov rcx, r14
mov qword [rsp + 0x20], 0xe9
lea rdx, [0x0041b500]
call fcn.00404924
add rbx, 1
jno 0x40de1f
call fcn.00403865
mov rdx, qword [rsi]
test rbx, rbx
js 0x40de2c
cmp rbx, rdx
jl 0x40de37
dec rdx
mov rcx, rbx
call fcn.00404b7b
movzx eax, byte [rsi + rbx + 0x10]
mov al, byte [rbp + rax]
mov byte [rsp + 0x48], al
inc al
jne 0x40df83
mov rcx, qword [0x004489d0]
mov edx, 0x30
call fcn.0040425f
mov r14, rax
mov rax, qword [0x00448a20]
mov qword [r14], rax
lea rax, [0x0041b500]
mov qword [r14 + 0x10], rax
test rbx, rbx
js 0x40de7f
cmp rbx, qword [rsi]
jl 0x40dea7
mov rax, qword [rsi]
mov rcx, rbx
lea rdx, [rax - 1]
call fcn.00404b7b
test rbx, rbx
js 0x40de98
cmp rbx, qword [rsi]
jl 0x40dea7
mov rax, qword [rsi]
mov rcx, rbx
lea rdx, [rax - 1]
call fcn.00404b7b
movzx ecx, byte [rsi + rbx + 0x10]
call fcn.00401a74
mov rcx, rbx
mov r15, rax
call fcn.00401a74
xor edx, edx
mov r8, rax
test r15, r15
je 0x40dec9
mov rdx, qword [r15]
xor eax, eax
test r8, r8
je 0x40ded3
mov rax, qword [r8]
lea rcx, [rdx + rax + 0x38]
mov qword [rsp + 0x68], r8
call fcn.00404290
lea rdx, [0x0041b600]
mov rcx, rax
mov r9, rax
call fcn.0040d824
movsx edx, byte [rsi + rbx + 0x10]
mov rcx, r9
call fcn.0040d7c0
lea rdx, [0x0041b5e0]
call fcn.0040d824
mov rcx, r9
mov rdx, r15
call fcn.0040d84a
mov rcx, r9
lea rdx, [0x0041b5c0]
call fcn.0040d824
mov r8, qword [rsp + 0x68]
mov rcx, r9
mov rdx, r8
call fcn.0040d84a
mov rcx, r9
lea rdx, [0x0041b5a0]
call fcn.0040d824
mov rdx, r9
lea rcx, [r14 + 0x18]
call fcn.0040d7d3
lea rcx, [r14 + 8]
xor edx, edx
call fcn.0040d7d3
lea r9, str.base64.nim
lea r8, str.decode
mov rcx, r14
mov qword [rsp + 0x20], 0xe9
lea rdx, [0x0041b500]
call fcn.00404924
add rbx, 1
jno 0x40df8e
call fcn.00403865
test r13, r13
je 0x40dfa0
test r12, r12
js 0x40dfa0
cmp r12, qword [r13]
jl 0x40dfb9
jmp 0x40dfa9
or rdx, 0xffffffffffffffff
test r13, r13
je 0x40dfb1
mov rax, qword [r13]
lea rdx, [rax - 1]
mov rcx, r12
call fcn.00404b7b
mov al, byte [rsp + 0x30]
mov rdx, qword [rsp + 0x50]
shl eax, 2
sar rdx, 4
or eax, edx
mov byte [r13 + r12 + 0x10], al
add r12, 1
jno 0x40dfdb
call fcn.00403865
mov rdx, qword [r13]
test r12, r12
js 0x40dfe9
cmp r12, rdx
jl 0x40dff4
dec rdx
mov rcx, r12
call fcn.00404b7b
mov al, byte [rsp + 0x38]
mov rdx, qword [rsp + 0x58]
shl eax, 4
sar rdx, 2
or eax, edx
mov byte [r13 + r12 + 0x10], al
add r12, 1
jno 0x40e016
call fcn.00403865
mov rdx, qword [r13]
test r12, r12
js 0x40e024
cmp r12, rdx
jl 0x40e02f
dec rdx
mov rcx, r12
call fcn.00404b7b
mov al, byte [rsp + 0x40]
mov r15b, byte [rsp + 0x48]
shl eax, 6
or r15d, eax
mov byte [r13 + r12 + 0x10], r15b
add r12, 1
jno 0x40d94e
call fcn.00403865
jmp 0x40d94e
mov rax, rbp
mov ecx, 4
cqo
idiv rcx
mov rax, rdx
sar rax, 0x3f
xor rdx, rax
sub rdx, rax
cmp rdx, 2
je 0x40e086
cmp rdx, 3
jne 0x40e86b
jmp 0x40e39c
mov rdx, qword [rsi]
test rbx, rbx
js 0x40e093
cmp rbx, rdx
jl 0x40e09e
dec rdx
mov rcx, rbx
call fcn.00404b7b
movzx eax, byte [rsi + rbx + 0x10]
lea rbp, [0x0041b640]
mov al, byte [rbp + rax]
mov byte [rsp + 0x30], al
inc al
jne 0x40e1e7
mov rcx, qword [0x004489d0]
mov edx, 0x30
call fcn.0040425f
mov r14, rax
mov rax, qword [0x00448a20]
mov qword [r14], rax
lea rax, [0x0041b500]
mov qword [r14 + 0x10], rax
test rbx, rbx
js 0x40e0ed
cmp rbx, qword [rsi]
jl 0x40e115
mov rax, qword [rsi]
mov rcx, rbx
lea rdx, [rax - 1]
call fcn.00404b7b
test rbx, rbx
js 0x40e106
cmp rbx, qword [rsi]
jl 0x40e115
mov rax, qword [rsi]
mov rcx, rbx
lea rdx, [rax - 1]
call fcn.00404b7b
movzx ecx, byte [rsi + rbx + 0x10]
call fcn.00401a74
mov rcx, rbx
mov rdi, rax
call fcn.00401a74
xor edx, edx
mov r15, rax
test rdi, rdi
je 0x40e137
mov rdx, qword [rdi]
xor eax, eax
test r15, r15
je 0x40e141
mov rax, qword [r15]
lea rcx, [rdx + rax + 0x38]
call fcn.00404290
lea rdx, [0x0041b600]
mov rcx, rax
mov r9, rax
call fcn.0040d824
movsx edx, byte [rsi + rbx + 0x10]
mov rcx, r9
call fcn.0040d7c0
lea rdx, [0x0041b5e0]
call fcn.0040d824
mov rcx, r9
mov rdx, rdi
call fcn.0040d84a
mov rcx, r9
lea rdx, [0x0041b5c0]
call fcn.0040d824
mov rcx, r9
mov rdx, r15
call fcn.0040d84a
mov rcx, r9
lea rdx, [0x0041b5a0]
call fcn.0040d824
mov rdx, r9
lea rcx, [r14 + 0x18]
call fcn.0040d7d3
lea rcx, [r14 + 8]
xor edx, edx
call fcn.0040d7d3
lea r9, str.base64.nim
lea r8, str.decode
mov rcx, r14
mov qword [rsp + 0x20], 0xe9
lea rdx, [0x0041b500]
call fcn.00404924
add rbx, 1
jno 0x40e1f2
call fcn.00403865
mov rdx, qword [rsi]
test rbx, rbx
js 0x40e1ff
cmp rbx, rdx
jl 0x40e20a
dec rdx
mov rcx, rbx
call fcn.00404b7b
movzx eax, byte [rsi + rbx + 0x10]
movzx ebp, byte [rbp + rax]
cmp rbp, 0xff
jne 0x40e34e
mov rcx, qword [0x004489d0]
mov edx, 0x30
call fcn.0040425f
mov r14, rax
mov rax, qword [0x00448a20]
mov qword [r14], rax
lea rax, [0x0041b500]
mov qword [r14 + 0x10], rax
test rbx, rbx
js 0x40e254
cmp rbx, qword [rsi]
jl 0x40e27c
mov rax, qword [rsi]
mov rcx, rbx
lea rdx, [rax - 1]
call fcn.00404b7b
test rbx, rbx
js 0x40e26d
cmp rbx, qword [rsi]
jl 0x40e27c
mov rax, qword [rsi]
mov rcx, rbx
lea rdx, [rax - 1]
call fcn.00404b7b
movzx ecx, byte [rsi + rbx + 0x10]
call fcn.00401a74
mov rcx, rbx
mov rdi, rax
call fcn.00401a74
mov r15, rax
xor eax, eax
test rdi, rdi
je 0x40e29e
mov rax, qword [rdi]
xor edx, edx
test r15, r15
je 0x40e2a8
mov rdx, qword [r15]
lea rcx, [rdx + rax + 0x38]
call fcn.00404290
lea rdx, [0x0041b600]
mov rcx, rax
mov r9, rax
call fcn.0040d824
movsx edx, byte [rsi + rbx + 0x10]
mov rcx, r9
call fcn.0040d7c0
lea rdx, [0x0041b5e0]
call fcn.0040d824
mov rcx, r9
mov rdx, rdi
call fcn.0040d84a
mov rcx, r9
lea rdx, [0x0041b5c0]
call fcn.0040d824
mov rcx, r9
mov rdx, r15
call fcn.0040d84a
mov rcx, r9
lea rdx, [0x0041b5a0]
call fcn.0040d824
mov rdx, r9
lea rcx, [r14 + 0x18]
call fcn.0040d7d3
lea rcx, [r14 + 8]
xor edx, edx
call fcn.0040d7d3
lea r9, str.base64.nim
lea r8, str.decode
mov rcx, r14
mov qword [rsp + 0x20], 0xe9
lea rdx, [0x0041b500]
call fcn.00404924
add rbx, 1
jno 0x40e359
call fcn.00403865
test r13, r13
je 0x40e36b
test r12, r12
js 0x40e36b
cmp r12, qword [r13]
jl 0x40e384
jmp 0x40e374
or rdx, 0xffffffffffffffff
test r13, r13
je 0x40e37c
mov rax, qword [r13]
lea rdx, [rax - 1]
mov rcx, r12
call fcn.00404b7b
mov dil, byte [rsp + 0x30]
sar rbp, 4
shl edi, 2
or edi, ebp
mov byte [r13 + r12 + 0x10], dil
jmp 0x40e860
mov rdx, qword [rsi]
test rbx, rbx
js 0x40e3a9
cmp rbx, rdx
jl 0x40e3b4
dec rdx
mov rcx, rbx
call fcn.00404b7b
movzx eax, byte [rsi + rbx + 0x10]
lea rbp, [0x0041b640]
mov al, byte [rbp + rax]
mov byte [rsp + 0x38], al
inc al
jne 0x40e4fd
mov rcx, qword [0x004489d0]
mov edx, 0x30
call fcn.0040425f
mov r14, rax
mov rax, qword [0x00448a20]
mov qword [r14], rax
lea rax, [0x0041b500]
mov qword [r14 + 0x10], rax
test rbx, rbx
js 0x40e403
cmp rbx, qword [rsi]
jl 0x40e42b
mov rax, qword [rsi]
mov rcx, rbx
lea rdx, [rax - 1]
call fcn.00404b7b
test rbx, rbx
js 0x40e41c
cmp rbx, qword [rsi]
jl 0x40e42b
mov rax, qword [rsi]
mov rcx, rbx
lea rdx, [rax - 1]
call fcn.00404b7b
movzx ecx, byte [rsi + rbx + 0x10]
call fcn.00401a74
mov rcx, rbx
mov rdi, rax
call fcn.00401a74
xor edx, edx
mov r15, rax
test rdi, rdi
je 0x40e44d
mov rdx, qword [rdi]
xor eax, eax
test r15, r15
je 0x40e457
mov rax, qword [r15]
lea rcx, [rdx + rax + 0x38]
call fcn.00404290
lea rdx, [0x0041b600]
mov rcx, rax
mov r9, rax
call fcn.0040d824
movsx edx, byte [rsi + rbx + 0x10]
mov rcx, r9
call fcn.0040d7c0
lea rdx, [0x0041b5e0]
call fcn.0040d824
mov rcx, r9
mov rdx, rdi
call fcn.0040d84a
mov rcx, r9
lea rdx, [0x0041b5c0]
call fcn.0040d824
mov rcx, r9
mov rdx, r15
call fcn.0040d84a
mov rcx, r9
lea rdx, [0x0041b5a0]
call fcn.0040d824
mov rdx, r9
lea rcx, [r14 + 0x18]
call fcn.0040d7d3
lea rcx, [r14 + 8]
xor edx, edx
call fcn.0040d7d3
lea r9, str.base64.nim
lea r8, str.decode
mov rcx, r14
mov qword [rsp + 0x20], 0xe9
lea rdx, [0x0041b500]
call fcn.00404924
add rbx, 1
jno 0x40e508
call fcn.00403865
mov rdx, qword [rsi]
test rbx, rbx
js 0x40e515
cmp rbx, rdx
jl 0x40e520
dec rdx
mov rcx, rbx
call fcn.00404b7b
movzx eax, byte [rsi + rbx + 0x10]
movzx eax, byte [rbp + rax]
mov qword [rsp + 0x30], rax
cmp rax, 0xff
jne 0x40e668
mov rcx, qword [0x004489d0]
mov edx, 0x30
call fcn.0040425f
mov r15, rax
mov rax, qword [0x00448a20]
mov qword [r15], rax
lea rax, [0x0041b500]
mov qword [r15 + 0x10], rax
test rbx, rbx
js 0x40e56e
cmp rbx, qword [rsi]
jl 0x40e596
mov rax, qword [rsi]
mov rcx, rbx
lea rdx, [rax - 1]
call fcn.00404b7b
test rbx, rbx
js 0x40e587
cmp rbx, qword [rsi]
jl 0x40e596
mov rax, qword [rsi]
mov rcx, rbx
lea rdx, [rax - 1]
call fcn.00404b7b
movzx ecx, byte [rsi + rbx + 0x10]
call fcn.00401a74
mov rcx, rbx
mov r14, rax
call fcn.00401a74
xor edx, edx
mov rdi, rax
test r14, r14
je 0x40e5b8
mov rdx, qword [r14]
xor eax, eax
test rdi, rdi
je 0x40e5c2
mov rax, qword [rdi]
lea rcx, [rdx + rax + 0x38]
call fcn.00404290
lea rdx, [0x0041b600]
mov rcx, rax
mov r9, rax
call fcn.0040d824
movsx edx, byte [rsi + rbx + 0x10]
mov rcx, r9
call fcn.0040d7c0
lea rdx, [0x0041b5e0]
call fcn.0040d824
mov rcx, r9
mov rdx, r14
call fcn.0040d84a
mov rcx, r9
lea rdx, [0x0041b5c0]
call fcn.0040d824
mov rcx, r9
mov rdx, rdi
call fcn.0040d84a
mov rcx, r9
lea rdx, [0x0041b5a0]
call fcn.0040d824
mov rdx, r9
lea rcx, [r15 + 0x18]
call fcn.0040d7d3
lea rcx, [r15 + 8]
xor edx, edx
call fcn.0040d7d3
lea r9, str.base64.nim
lea r8, str.decode
mov rcx, r15
mov qword [rsp + 0x20], 0xe9
lea rdx, [0x0041b500]
call fcn.00404924
add rbx, 1
jno 0x40e673
call fcn.00403865
mov rdx, qword [rsi]
test rbx, rbx
js 0x40e680
cmp rbx, rdx
jl 0x40e68b
dec rdx
mov rcx, rbx
call fcn.00404b7b
movzx eax, byte [rsi + rbx + 0x10]
movzx ebp, byte [rbp + rax]
cmp rbp, 0xff
jne 0x40e7d9
mov rcx, qword [0x004489d0]
mov edx, 0x30
call fcn.0040425f
mov r15, rax
mov rax, qword [0x00448a20]
mov qword [r15], rax
lea rax, [0x0041b500]
mov qword [r15 + 0x10], rax
test rbx, rbx
js 0x40e6d5
cmp rbx, qword [rsi]
jl 0x40e6fd
mov rax, qword [rsi]
mov rcx, rbx
lea rdx, [rax - 1]
call fcn.00404b7b
test rbx, rbx
js 0x40e6ee
cmp rbx, qword [rsi]
jl 0x40e6fd
mov rax, qword [rsi]
mov rcx, rbx
lea rdx, [rax - 1]
call fcn.00404b7b
movzx ecx, byte [rsi + rbx + 0x10]
call fcn.00401a74
mov rcx, rbx
mov rdi, rax
call fcn.00401a74
xor edx, edx
mov r8, rax
test rdi, rdi
je 0x40e71f
mov rdx, qword [rdi]
xor eax, eax
test r8, r8
je 0x40e729
mov rax, qword [r8]
lea rcx, [rdx + rax + 0x38]
mov qword [rsp + 0x40], r8
call fcn.00404290
lea rdx, [0x0041b600]
mov rcx, rax
mov r9, rax
call fcn.0040d824
movsx edx, byte [rsi + rbx + 0x10]
mov rcx, r9
call fcn.0040d7c0
lea rdx, [0x0041b5e0]
call fcn.0040d824
mov rcx, r9
mov rdx, rdi
call fcn.0040d84a
mov rcx, r9
lea rdx, [0x0041b5c0]
call fcn.0040d824
mov r8, qword [rsp + 0x40]
mov rcx, r9
mov rdx, r8
call fcn.0040d84a
mov rcx, r9
lea rdx, [0x0041b5a0]
call fcn.0040d824
mov rdx, r9
lea rcx, [r15 + 0x18]
call fcn.0040d7d3
lea rcx, [r15 + 8]
xor edx, edx
call fcn.0040d7d3
lea r9, str.base64.nim
lea r8, str.decode
mov rcx, r15
mov qword [rsp + 0x20], 0xe9
lea rdx, [0x0041b500]
call fcn.00404924
add rbx, 1
jno 0x40e7e4
call fcn.00403865
test r13, r13
je 0x40e7f6
test r12, r12
js 0x40e7f6
cmp r12, qword [r13]
jl 0x40e80f
jmp 0x40e7ff
or rdx, 0xffffffffffffffff
test r13, r13
je 0x40e807
mov rax, qword [r13]
lea rdx, [rax - 1]
mov rcx, r12
call fcn.00404b7b
mov dil, byte [rsp + 0x38]
mov rax, qword [rsp + 0x30]
shl edi, 2
sar rax, 4
or edi, eax
mov byte [r13 + r12 + 0x10], dil
add r12, 1
jno 0x40e832
call fcn.00403865
mov rdx, qword [r13]
test r12, r12
js 0x40e840
cmp r12, rdx
jl 0x40e84b
dec rdx
mov rcx, r12
call fcn.00404b7b
mov r14, qword [rsp + 0x30]
sar rbp, 2
shl r14, 4
or r14d, ebp
mov byte [r13 + r12 + 0x10], r14b
add r12, 1
jno 0x40e86b
call fcn.00403865
test r12, r12
jns 0x40e884
movabs r8, 0x7fffffffffffffff
xor edx, edx
mov rcx, r12
call fcn.00404a37
mov rdx, r12
mov rcx, r13
add rsp, 0x78
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
jmp fcn.0040460c
xor eax, eax
add rsp, 0x78
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret