Function at 0x310804370
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 0x310805278
mov rax, qword [rcx]
test rax, rax
je 0x310805278
imul rbx, rax, 3
jo 0x3108062f6
test rbx, rbx
lea rax, [rbx + 3]
cmovns rax, rbx
sar rax, 2
add rax, 6
mov r12, rax
js 0x31080538b
movabs rdi, 0x2000000100002400
mov rdx, r12
xor ecx, ecx
call fcn.3107f9560
mov r14, rax
mov rax, qword [rsi]
mov rbp, rax
nop dword [rax + rax]
mov rbx, rbp
xor r12d, r12d
sub rbx, 1
jo 0x31080627e
mov rdx, qword [rsi]
test rbx, rbx
js 0x3108043fd
cmp rbx, rdx
jl 0x310804409
sub rdx, 1
mov rcx, rbx
call fcn.3107fd660
movzx eax, byte [rsi + rbx + 0x10]
cmp al, 0x3d
jbe 0x3108046e0
mov qword [rsp + 0x68], rbp
sub rbp, 4
mov qword [rsp + 0x48], rbp
jo 0x3108062c0
cmp qword [rsp + 0x48], 0
js 0x3108057b1
lea rax, [0x310810e20]
test r14, r14
mov qword [rsp + 0x40], 0
movabs rdi, 0x100002400
mov qword [rsp + 0x38], rax
setne byte [rsp + 0x57]
xor ebx, ebx
nop
mov rdx, qword [rsi]
test rbx, rbx
js 0x31080446d
cmp rbx, rdx
jl 0x310804479
sub rdx, 1
mov rcx, rbx
call fcn.3107fd660
movzx eax, byte [rsi + rbx + 0x10]
cmp al, 0x20
jbe 0x3108046b8
mov rdx, qword [rsi]
test rbx, rbx
js 0x310804eb8
cmp rbx, rdx
jl 0x310804c40
mov rcx, rbx
sub rdx, 1
call fcn.3107fd660
movzx eax, byte [rsi + rbx + 0x10]
mov rcx, qword [rsp + 0x38]
movzx eax, byte [rcx + rax]
cmp al, 0xff
je 0x310804c51
shl eax, 2
mov byte [rsp + 0x56], al
add rbx, 1
jo 0x3108062ec
mov rdx, qword [rsi]
test rbx, rbx
js 0x310804998
cmp rbx, rdx
jge 0x310804998
movzx eax, byte [rsi + rbx + 0x10]
mov rcx, qword [rsp + 0x38]
movzx r13d, byte [rcx + rax]
cmp r13, 0xff
je 0x31080521a
mov eax, r13d
mov rbp, r13
shl eax, 4
sar rbp, 4
mov byte [rsp + 0x55], al
add rbx, 1
jo 0x3108062d8
mov rdx, qword [rsi]
test rbx, rbx
js 0x310804710
cmp rbx, rdx
jge 0x310804710
movzx eax, byte [rsi + rbx + 0x10]
mov rcx, qword [rsp + 0x38]
movzx r15d, byte [rcx + rax]
cmp r15, 0xff
je 0x3108051ea
mov r12, r15
shl r15d, 6
sar r12, 2
add rbx, 1
jo 0x3108062e2
mov rdx, qword [rsi]
test rbx, rbx
js 0x310804f20
cmp rbx, rdx
jl 0x31080457d
sub rdx, 1
mov rcx, rbx
call fcn.3107fd660
movzx eax, byte [rsi + rbx + 0x10]
mov rcx, qword [rsp + 0x38]
movzx eax, byte [rcx + rax]
cmp al, 0xff
je 0x310804f80
or r15d, eax
add rbx, 1
mov r13, rbx
jo 0x310804e98
mov rax, qword [rsp + 0x40]
test rax, rax
js 0x310804c18
cmp byte [rsp + 0x57], 0
je 0x310804c18
mov rdx, qword [r14]
cmp rdx, rax
jle 0x310804c27
mov rax, qword [rsp + 0x40]
or bpl, byte [rsp + 0x56]
mov byte [r14 + rax + 0x10], bpl
mov rbp, rax
add rbp, 1
jo 0x310806314
mov rdx, qword [r14]
test rbp, rbp
js 0x3108045f1
cmp rbp, rdx
jl 0x3108045fd
sub rdx, 1
mov rcx, rbp
call fcn.3107fd660
or r12b, byte [rsp + 0x55]
mov byte [r14 + rbp + 0x10], r12b
add rbp, 1
jo 0x31080630a
mov rdx, qword [r14]
test rbp, rbp
js 0x31080461e
cmp rbp, rdx
jl 0x31080462a
sub rdx, 1
mov rcx, rbp
call fcn.3107fd660
mov byte [r14 + rbp + 0x10], r15b
add rbp, 1
mov qword [rsp + 0x40], rbp
jo 0x310804ea8
cmp qword [rsp + 0x48], r13
jge 0x310804460
mov rdi, rbx
sub rdi, qword [rsp + 0x68]
jo 0x310806300
mov rdx, rdi
sar rdx, 0x3f
shr rdx, 0x3e
lea rax, [rdi + rdx]
and eax, 3
sub rax, rdx
cqo
xor rax, rdx
sub rax, rdx
cmp rax, 2
je 0x31080528b
cmp rax, 3
je 0x3108053a4
cmp qword [rsp + 0x40], 0
js 0x310805370
mov rdx, qword [rsp + 0x40]
mov rcx, r14
add rsp, 0x78
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
jmp fcn.3107f9560
bt rdi, rax
jae 0x310804486
add rbx, 1
jno 0x310804460
call fcn.3107f6f30
jmp 0x310804460
bt rdi, rax
jae 0x310804416
test r12, r12
jne 0x310804700
mov rbp, rbx
jmp 0x3108043e0
call fcn.3107f6f30
jmp 0x3108046ef
mov rcx, rbx
sub rdx, 1
call fcn.3107fd660
movzx eax, byte [rsi + rbx + 0x10]
mov rcx, qword [rsp + 0x38]
movzx r15d, byte [rcx + rax]
cmp r15, 0xff
jne 0x31080454b
mov rcx, qword [0x310836000]
mov edx, 0x30
call fcn.3107f92a0
mov r12, rax
mov rax, qword [0x310836050]
mov qword [r12], rax
lea rax, str.ValueError
mov qword [r12 + 0x10], rax
test rbx, rbx
js 0x310805261
mov rax, qword [rsi]
cmp rbx, rax
jl 0x310804794
lea rdx, [rax - 1]
mov rcx, rbx
call fcn.3107fd660
mov rax, qword [rsi]
cmp rbx, rax
jl 0x310804794
lea rdx, [rax - 1]
mov rcx, rbx
call fcn.3107fd660
movzx ecx, byte [rsi + rbx + 0x10]
call fcn.3107f1cb0
mov rcx, rbx
mov qword [rsp + 0x58], rax
call fcn.3107f1cb0
mov r10, qword [rsp + 0x58]
xor ecx, ecx
mov r13, rax
test r10, r10
je 0x3108047bd
mov rcx, qword [r10]
test r13, r13
je 0x3108047c6
add rcx, qword [r13]
add rcx, 0x38
mov qword [rsp + 0x58], r10
call fcn.3107f94e0
mov r10, qword [rsp + 0x58]
movabs rcx, 0x6620343665736162
movabs rdx, 0x2064696c61766e49
mov r15, rax
mov rax, qword [rax]
lea rax, [r15 + rax + 0x10]
mov qword [rax + 8], rcx
movabs rcx, 0x2072657463617261
mov qword [rax], rdx
movabs rdx, 0x68632074616d726f
mov qword [rax + 0x18], rcx
mov ecx, 0x60
mov qword [rax + 0x10], rdx
mov word [rax + 0x20], cx
mov rax, qword [r15]
lea rdx, [rax + 0x21]
mov qword [r15], rdx
movzx ecx, byte [rsi + rbx + 0x10]
lea rdx, [rax + 0x22]
mov byte [r15 + rax + 0x31], cl
movabs rcx, 0x2064726f282060
mov qword [r15], rdx
mov qword [r15 + rax + 0x32], rcx
mov rdx, qword [r15]
lea rax, [rdx + 7]
mov qword [r15], rax
test r10, r10
je 0x310804880
mov rax, qword [r10]
lea rcx, [r15 + rdx + 0x17]
lea rdx, [r10 + 0x10]
lea r8, [rax + 1]
call sub.msvcrt.dll_memcpy
mov r10, qword [rsp + 0x58]
mov rax, qword [r10]
add rax, qword [r15]
mov qword [r15], rax
lea rax, [r15 + rax + 0x10]
mov edx, 0x206e
movabs rcx, 0x636f6c2074612029
mov qword [rax], rcx
mov dword [rax + 8], 0x6f697461
mov word [rax + 0xc], dx
mov byte [rax + 0xe], 0
mov rdx, qword [r15]
lea rax, [rdx + 0xe]
mov qword [r15], rax
test r13, r13
je 0x3108048d5
mov rax, qword [r13]
lea rcx, [r15 + rdx + 0x1e]
lea rdx, [r13 + 0x10]
lea r8, [rax + 1]
call sub.msvcrt.dll_memcpy
mov rax, qword [r13]
add rax, qword [r15]
mov qword [r15], rax
mov r8d, 0x2e
mov word [r15 + rax + 0x10], r8w
add qword [r15], 1
add qword [r15 - 0x10], 8
mov rax, qword [r12 + 0x18]
test rax, rax
je 0x31080491d
mov rcx, qword [rax - 0x10]
lea r8, [rax - 0x10]
lea rdx, [rcx - 8]
mov qword [rax - 0x10], rdx
cmp rdx, 7
ja 0x31080491d
mov rax, qword [0x310836150]
mov rdx, r8
lea rcx, [rax + 0x18]
call fcn.3107f5260
mov rax, qword [r12 + 8]
mov qword [r12 + 0x18], r15
test rax, rax
je 0x310804955
mov rcx, qword [rax - 0x10]
lea r8, [rax - 0x10]
lea rdx, [rcx - 8]
mov qword [rax - 0x10], rdx
cmp rdx, 7
ja 0x310804955
mov rax, qword [0x310836150]
mov rdx, r8
lea rcx, [rax + 0x18]
call fcn.3107f5260
mov rcx, r12
lea r9, str.base64.nim
mov qword [r12 + 8], 0
lea r8, str.decode
mov qword [rsp + 0x20], 0xe9
lea rdx, str.ValueError
mov r15d, 0xffffffc0
mov r12d, 0x3f
call fcn.3107fd360
jmp 0x310804556
mov rcx, rbx
sub rdx, 1
call fcn.3107fd660
movzx eax, byte [rsi + rbx + 0x10]
mov rcx, qword [rsp + 0x38]
movzx r13d, byte [rcx + rax]
cmp r13, 0xff
jne 0x3108044ff
mov rcx, qword [0x310836000]
mov edx, 0x30
call fcn.3107f92a0
mov r12, rax
mov rax, qword [0x310836050]
mov qword [r12], rax
lea rax, str.ValueError
mov qword [r12 + 0x10], rax
test rbx, rbx
js 0x31080524a
mov rax, qword [rsi]
cmp rbx, rax
jl 0x310804a1c
lea rdx, [rax - 1]
mov rcx, rbx
call fcn.3107fd660
mov rax, qword [rsi]
cmp rbx, rax
jl 0x310804a1c
lea rdx, [rax - 1]
mov rcx, rbx
call fcn.3107fd660
movzx ecx, byte [rsi + rbx + 0x10]
call fcn.3107f1cb0
mov rcx, rbx
mov r15, rax
call fcn.3107f1cb0
xor ecx, ecx
mov r13, rax
test r15, r15
je 0x310804a3e
mov rcx, qword [r15]
test r13, r13
je 0x310804a47
add rcx, qword [r13]
add rcx, 0x38
call fcn.3107f94e0
mov r9d, 0x60
movabs rdx, 0x2064696c61766e49
movabs rcx, 0x6620343665736162
mov rbp, rax
mov rax, qword [rax]
lea rax, [rbp + rax + 0x10]
mov qword [rax], rdx
movabs rdx, 0x68632074616d726f
mov qword [rax + 8], rcx
movabs rcx, 0x2072657463617261
mov qword [rax + 0x10], rdx
mov qword [rax + 0x18], rcx
mov word [rax + 0x20], r9w
mov rax, qword [rbp]
lea rdx, [rax + 0x21]
mov qword [rbp], rdx
movzx ecx, byte [rsi + rbx + 0x10]
lea rdx, [rax + 0x22]
mov byte [rbp + rax + 0x31], cl
movabs rcx, 0x2064726f282060
mov qword [rbp], rdx
mov qword [rbp + rax + 0x32], rcx
mov rdx, qword [rbp]
lea rax, [rdx + 7]
mov qword [rbp], rax
test r15, r15
je 0x310804afa
mov rax, qword [r15]
lea rcx, [rbp + rdx + 0x17]
lea rdx, [r15 + 0x10]
lea r8, [rax + 1]
call sub.msvcrt.dll_memcpy
mov rax, qword [r15]
add rax, qword [rbp]
mov qword [rbp], rax
lea rax, [rbp + rax + 0x10]
mov r8d, 0x206e
movabs rcx, 0x636f6c2074612029
mov qword [rax], rcx
mov dword [rax + 8], 0x6f697461
mov word [rax + 0xc], r8w
mov byte [rax + 0xe], 0
mov rdx, qword [rbp]
lea rax, [rdx + 0xe]
mov qword [rbp], rax
test r13, r13
je 0x310804b55
mov rax, qword [r13]
lea rcx, [rbp + rdx + 0x1e]
lea rdx, [r13 + 0x10]
lea r8, [rax + 1]
call sub.msvcrt.dll_memcpy
mov rax, qword [r13]
add rax, qword [rbp]
mov qword [rbp], rax
mov ecx, 0x2e
mov word [rbp + rax + 0x10], cx
add qword [rbp], 1
add qword [rbp - 0x10], 8
mov rax, qword [r12 + 0x18]
test rax, rax
je 0x310804b9c
mov rcx, qword [rax - 0x10]
lea r8, [rax - 0x10]
lea rdx, [rcx - 8]
mov qword [rax - 0x10], rdx
cmp rdx, 7
ja 0x310804b9c
mov rax, qword [0x310836150]
mov rdx, r8
lea rcx, [rax + 0x18]
call fcn.3107f5260
mov rax, qword [r12 + 8]
mov qword [r12 + 0x18], rbp
test rax, rax
je 0x310804bd4
mov rcx, qword [rax - 0x10]
lea r8, [rax - 0x10]
lea rdx, [rcx - 8]
mov qword [rax - 0x10], rdx
cmp rdx, 7
ja 0x310804bd4
mov rax, qword [0x310836150]
mov rdx, r8
lea rcx, [rax + 0x18]
call fcn.3107f5260
lea r9, str.base64.nim
mov rcx, r12
mov qword [r12 + 8], 0
lea r8, str.decode
mov qword [rsp + 0x20], 0xe9
lea rdx, str.ValueError
mov ebp, 0xf
call fcn.3107fd360
mov byte [rsp + 0x55], 0xf0
jmp 0x310804510
mov rdx, 0xffffffffffffffff
test r14, r14
je 0x310804c2b
mov rdx, qword [r14]
sub rdx, 1
mov rcx, qword [rsp + 0x40]
call fcn.3107fd660
jmp 0x3108045c8
mov rcx, qword [rsp + 0x38]
movzx eax, byte [rcx + rax]
cmp al, 0xff
jne 0x3108044bd
mov rcx, qword [0x310836000]
mov edx, 0x30
call fcn.3107f92a0
mov r12, rax
mov rax, qword [0x310836050]
mov qword [r12], rax
lea rax, str.ValueError
mov qword [r12 + 0x10], rax
mov rax, qword [rsi]
cmp rbx, rax
jl 0x310804ca4
lea rdx, [rax - 1]
mov rcx, rbx
call fcn.3107fd660
mov rax, qword [rsi]
cmp rbx, rax
jl 0x310804ca4
lea rdx, [rax - 1]
mov rcx, rbx
call fcn.3107fd660
movzx ecx, byte [rsi + rbx + 0x10]
call fcn.3107f1cb0
mov rcx, rbx
mov r15, rax
call fcn.3107f1cb0
xor ecx, ecx
mov r13, rax
test r15, r15
je 0x310804cc6
mov rcx, qword [r15]
test r13, r13
je 0x310804ccf
add rcx, qword [r13]
add rcx, 0x38
call fcn.3107f94e0
mov r11d, 0x60
movabs rdx, 0x2064696c61766e49
movabs rcx, 0x6620343665736162
mov rbp, rax
mov rax, qword [rax]
lea rax, [rbp + rax + 0x10]
mov qword [rax], rdx
movabs rdx, 0x68632074616d726f
mov qword [rax + 8], rcx
movabs rcx, 0x2072657463617261
mov qword [rax + 0x10], rdx
mov qword [rax + 0x18], rcx
mov word [rax + 0x20], r11w
mov rax, qword [rbp]
lea rdx, [rax + 0x21]
mov qword [rbp], rdx
movzx ecx, byte [rsi + rbx + 0x10]
lea rdx, [rax + 0x22]
mov byte [rbp + rax + 0x31], cl
movabs rcx, 0x2064726f282060
mov qword [rbp], rdx
mov qword [rbp + rax + 0x32], rcx
mov rdx, qword [rbp]
lea rax, [rdx + 7]
mov qword [rbp], rax
test r15, r15
je 0x310804d82
mov rax, qword [r15]
lea rcx, [rbp + rdx + 0x17]
lea rdx, [r15 + 0x10]
lea r8, [rax + 1]
call sub.msvcrt.dll_memcpy
mov rax, qword [r15]
add rax, qword [rbp]
mov qword [rbp], rax
lea rax, [rbp + rax + 0x10]
mov r10d, 0x206e
movabs rcx, 0x636f6c2074612029
mov qword [rax], rcx
mov dword [rax + 8], 0x6f697461
mov word [rax + 0xc], r10w
mov byte [rax + 0xe], 0
mov rdx, qword [rbp]
lea rax, [rdx + 0xe]
mov qword [rbp], rax
test r13, r13
je 0x310804ddd
mov rax, qword [r13]
lea rcx, [rbp + rdx + 0x1e]
lea rdx, [r13 + 0x10]
lea r8, [rax + 1]
call sub.msvcrt.dll_memcpy
mov rax, qword [r13]
add rax, qword [rbp]
mov qword [rbp], rax
mov edx, 0x2e
mov word [rbp + rax + 0x10], dx
add qword [rbp], 1
add qword [rbp - 0x10], 8
mov rax, qword [r12 + 0x18]
test rax, rax
je 0x310804e24
mov rcx, qword [rax - 0x10]
lea r8, [rax - 0x10]
lea rdx, [rcx - 8]
mov qword [rax - 0x10], rdx
cmp rdx, 7
ja 0x310804e24
mov rax, qword [0x310836150]
mov rdx, r8
lea rcx, [rax + 0x18]
call fcn.3107f5260
mov rax, qword [r12 + 8]
mov qword [r12 + 0x18], rbp
test rax, rax
je 0x310804e5c
mov rcx, qword [rax - 0x10]
lea r8, [rax - 0x10]
lea rdx, [rcx - 8]
mov qword [rax - 0x10], rdx
cmp rdx, 7
ja 0x310804e5c
mov rax, qword [0x310836150]
mov rdx, r8
lea rcx, [rax + 0x18]
call fcn.3107f5260
mov qword [r12 + 8], 0
lea r9, str.base64.nim
mov rcx, r12
lea r8, str.decode
mov qword [rsp + 0x20], 0xe9
lea rdx, str.ValueError
call fcn.3107fd360
mov byte [rsp + 0x56], 0xfc
jmp 0x3108044c4
call fcn.3107f6f30
jmp 0x3108045a3
call fcn.3107f6f30
jmp 0x31080463e
mov rcx, rbx
sub rdx, 1
call fcn.3107fd660
movzx eax, byte [rsi + rbx + 0x10]
mov rcx, qword [rsp + 0x38]
movzx eax, byte [rcx + rax]
cmp al, 0xff
jne 0x3108044bd
mov rcx, qword [0x310836000]
mov edx, 0x30
call fcn.3107f92a0
mov rcx, rbx
mov r12, rax
mov rax, qword [0x310836050]
mov qword [r12], rax
lea rax, str.ValueError
mov qword [r12 + 0x10], rax
mov rax, qword [rsi]
lea rdx, [rax - 1]
call fcn.3107fd660
mov rax, qword [rsi]
jmp 0x310804c98
mov rcx, rbx
sub rdx, 1
call fcn.3107fd660
movzx eax, byte [rsi + rbx + 0x10]
mov rcx, qword [rsp + 0x38]
movzx eax, byte [rcx + rax]
cmp al, 0xff
jne 0x310804593
mov rcx, qword [0x310836000]
mov edx, 0x30
call fcn.3107f92a0
mov rcx, rbx
mov r15, rax
mov rax, qword [0x310836050]
mov qword [r15], rax
lea rax, str.ValueError
mov qword [r15 + 0x10], rax
mov rax, qword [rsi]
lea rdx, [rax - 1]
call fcn.3107fd660
mov rax, qword [rsi]
jmp 0x310804fc5
mov rcx, qword [0x310836000]
mov edx, 0x30
call fcn.3107f92a0
mov r15, rax
mov rax, qword [0x310836050]
mov qword [r15], rax
lea rax, str.ValueError
mov qword [r15 + 0x10], rax
mov rax, qword [rsi]
cmp rbx, rax
jl 0x310804fd1
lea rdx, [rax - 1]
mov rcx, rbx
call fcn.3107fd660
mov rax, qword [rsi]
cmp rbx, rax
jl 0x310804fd1
lea rdx, [rax - 1]
mov rcx, rbx
call fcn.3107fd660
movzx ecx, byte [rsi + rbx + 0x10]
call fcn.3107f1cb0
mov rcx, rbx
mov qword [rsp + 0x58], rax
call fcn.3107f1cb0
mov r11, qword [rsp + 0x58]
xor ecx, ecx
mov r13, rax
test r11, r11
je 0x310804ffa
mov rcx, qword [r11]
test r13, r13
je 0x310805003
add rcx, qword [r13]
add rcx, 0x38
mov qword [rsp + 0x58], r11
call fcn.3107f94e0
mov r11d, 0x60
movabs rdx, 0x2064696c61766e49
movabs rcx, 0x6620343665736162
mov r9, rax
mov rax, qword [rax]
lea rax, [r9 + rax + 0x10]
mov qword [rax], rdx
movabs rdx, 0x68632074616d726f
mov qword [rax + 8], rcx
movabs rcx, 0x2072657463617261
mov qword [rax + 0x10], rdx
mov word [rax + 0x20], r11w
mov r11, qword [rsp + 0x58]
mov qword [rax + 0x18], rcx
mov rax, qword [r9]
lea rdx, [rax + 0x21]
mov qword [r9], rdx
movzx ecx, byte [rsi + rbx + 0x10]
lea rdx, [rax + 0x22]
mov byte [r9 + rax + 0x31], cl
movabs rcx, 0x2064726f282060
mov qword [r9], rdx
mov qword [r9 + rax + 0x32], rcx
mov rdx, qword [r9]
lea rax, [rdx + 7]
mov qword [r9], rax
test r11, r11
je 0x3108050c9
mov rax, qword [r11]
lea rcx, [r9 + rdx + 0x17]
lea rdx, [r11 + 0x10]
mov qword [rsp + 0x60], r9
lea r8, [rax + 1]
call sub.msvcrt.dll_memcpy
mov r9, qword [rsp + 0x60]
mov r11, qword [rsp + 0x58]
mov rax, qword [r11]
add rax, qword [r9]
mov qword [r9], rax
lea rax, [r9 + rax + 0x10]
mov r10d, 0x206e
movabs rcx, 0x636f6c2074612029
mov qword [rax], rcx
mov dword [rax + 8], 0x6f697461
mov word [rax + 0xc], r10w
mov byte [rax + 0xe], 0
mov rdx, qword [r9]
lea rax, [rdx + 0xe]
mov qword [r9], rax
test r13, r13
je 0x31080512a
mov rax, qword [r13]
lea rcx, [r9 + rdx + 0x1e]
lea rdx, [r13 + 0x10]
mov qword [rsp + 0x58], r9
lea r8, [rax + 1]
call sub.msvcrt.dll_memcpy
mov r9, qword [rsp + 0x58]
mov rax, qword [r13]
add rax, qword [r9]
mov qword [r9], rax
mov r10d, 0x2e
mov word [r9 + rax + 0x10], r10w
add qword [r9], 1
add qword [r9 - 0x10], 8
mov rax, qword [r15 + 0x18]
test rax, rax
je 0x31080517b
mov rcx, qword [rax - 0x10]
lea r8, [rax - 0x10]
lea rdx, [rcx - 8]
mov qword [rax - 0x10], rdx
cmp rdx, 7
ja 0x31080517b
mov rax, qword [0x310836150]
mov rdx, r8
mov qword [rsp + 0x58], r9
lea rcx, [rax + 0x18]
call fcn.3107f5260
mov r9, qword [rsp + 0x58]
mov rax, qword [r15 + 8]
mov qword [r15 + 0x18], r9
test rax, rax
je 0x3108051b1
mov rcx, qword [rax - 0x10]
lea r8, [rax - 0x10]
lea rdx, [rcx - 8]
mov qword [rax - 0x10], rdx
cmp rdx, 7
ja 0x3108051b1
mov rax, qword [0x310836150]
mov rdx, r8
lea rcx, [rax + 0x18]
call fcn.3107f5260
mov qword [r15 + 8], 0
mov rcx, r15
lea r9, str.base64.nim
lea r8, str.decode
mov qword [rsp + 0x20], 0xe9
lea rdx, str.ValueError
mov r15d, 0xffffffff
call fcn.3107fd360
jmp 0x310804596
mov rcx, qword [0x310836000]
mov edx, 0x30
call fcn.3107f92a0
mov r12, rax
mov rax, qword [0x310836050]
mov qword [r12], rax
lea rax, str.ValueError
mov qword [r12 + 0x10], rax
jmp 0x31080476c
mov rcx, qword [0x310836000]
mov edx, 0x30
call fcn.3107f92a0
mov r12, rax
mov rax, qword [0x310836050]
mov qword [r12], rax
lea rax, str.ValueError
mov qword [r12 + 0x10], rax
jmp 0x3108049f4
mov rax, qword [rsi]
mov rcx, rbx
lea rdx, [rax - 1]
call fcn.3107fd660
mov rax, qword [rsi]
jmp 0x310804a10
mov rax, qword [rsi]
mov rcx, rbx
lea rdx, [rax - 1]
call fcn.3107fd660
mov rax, qword [rsi]
jmp 0x310804788
xor eax, eax
add rsp, 0x78
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
mov rax, qword [rsi]
cmp rax, rbx
jg 0x31080529f
lea rdx, [rax - 1]
mov rcx, rbx
call fcn.3107fd660
lea rax, [0x310810e20]
mov rdi, rax
mov qword [rsp + 0x38], rax
movzx eax, byte [rsi + rbx + 0x10]
movzx ebp, byte [rdi + rax]
cmp bpl, 0xff
je 0x310805c9b
shl ebp, 2
mov rdi, rbx
add rdi, 1
js 0x3108062b6
cmp rdi, rbx
jb 0x3108062b6
mov rax, qword [rsi]
test rdi, rdi
js 0x310805c23
cmp rdi, rax
jl 0x3108052f7
lea rdx, [rax - 1]
mov rcx, rdi
call fcn.3107fd660
movzx eax, byte [rsi + rdi + 0x10]
mov rcx, qword [rsp + 0x38]
movzx eax, byte [rcx + rax]
cmp rax, 0xff
je 0x3108057c1
sar rax, 4
mov ebx, eax
add rdi, 1
jo 0x3108062ac
test r14, r14
je 0x31080551f
mov rdi, qword [rsp + 0x40]
test rdi, rdi
js 0x31080551f
mov rax, qword [r14]
cmp rax, rdi
jle 0x31080552e
mov rax, qword [rsp + 0x40]
or ebx, ebp
mov byte [r14 + rax + 0x10], bl
add rax, 1
mov qword [rsp + 0x40], rax
jno 0x310804688
call fcn.3107f6f30
cmp qword [rsp + 0x40], 0
jns 0x310804694
mov rcx, qword [rsp + 0x40]
xor edx, edx
movabs r8, 0x7fffffffffffffff
call fcn.3107fd4b0
jmp 0x310804694
movabs r8, 0x7fffffffffffffff
xor edx, edx
mov rcx, rax
call fcn.3107fd4b0
jmp 0x3108043be
mov rax, qword [rsi]
cmp rbx, rax
jl 0x3108059bb
lea rdx, [rax - 1]
mov rcx, rbx
call fcn.3107fd660
lea rax, [0x310810e20]
mov rdi, rax
mov qword [rsp + 0x38], rax
movzx eax, byte [rsi + rbx + 0x10]
movzx ebp, byte [rdi + rax]
cmp bpl, 0xff
je 0x310805f7d
lea eax, [rbp*4]
mov byte [rsp + 0x55], al
mov rbp, rbx
add rbp, 1
js 0x3108062a2
cmp rbp, rbx
jb 0x3108062a2
mov rax, qword [rsi]
test rbp, rbp
js 0x310805541
cmp rbp, rax
jge 0x310805541
movzx eax, byte [rsi + rbp + 0x10]
mov rdi, qword [rsp + 0x38]
movzx edi, byte [rdi + rax]
cmp rdi, 0xff
je 0x310805f4d
mov eax, edi
mov r12, rdi
shl eax, 4
sar r12, 4
mov byte [rsp + 0x56], al
mov rbx, rbp
add rbx, 1
jo 0x31080628e
mov rax, qword [rsi]
test rbx, rbx
js 0x310805fb9
cmp rbx, rax
jl 0x310805469
lea rdx, [rax - 1]
mov rcx, rbx
call fcn.3107fd660
movzx eax, byte [rsi + rbx + 0x10]
mov rdi, qword [rsp + 0x38]
movzx eax, byte [rdi + rax]
cmp rax, 0xff
je 0x310806206
sar rax, 2
mov esi, eax
add rbx, 1
jo 0x310806298
mov rdi, qword [rsp + 0x40]
test rdi, rdi
js 0x310805500
test r14, r14
je 0x310805500
mov rax, qword [r14]
cmp rax, rdi
jle 0x31080550f
movzx ebp, byte [rsp + 0x55]
mov rax, qword [rsp + 0x40]
or ebp, r12d
mov byte [r14 + rax + 0x10], bpl
add rax, 1
mov rbx, rax
jo 0x3108062ca
mov rax, qword [r14]
test rbx, rbx
js 0x3108054d6
cmp rbx, rax
jl 0x3108054e2
lea rdx, [rax - 1]
mov rcx, rbx
call fcn.3107fd660
or sil, byte [rsp + 0x56]
mov byte [r14 + rbx + 0x10], sil
add rbx, 1
mov qword [rsp + 0x40], rbx
jno 0x310804688
jmp 0x31080535f
mov rdx, 0xffffffffffffffff
test r14, r14
je 0x310805513
mov rax, qword [r14]
lea rdx, [rax - 1]
mov rcx, qword [rsp + 0x40]
call fcn.3107fd660
jmp 0x3108054aa
mov rdx, 0xffffffffffffffff
test r14, r14
je 0x310805532
mov rax, qword [r14]
lea rdx, [rax - 1]
mov rcx, qword [rsp + 0x40]
call fcn.3107fd660
jmp 0x310805344
lea rdx, [rax - 1]
mov rcx, rbp
call fcn.3107fd660
movzx eax, byte [rsi + rbp + 0x10]
mov rdi, qword [rsp + 0x38]
movzx edi, byte [rdi + rax]
cmp rdi, 0xff
jne 0x31080542f
mov rcx, qword [0x310836000]
mov edx, 0x30
call fcn.3107f92a0
mov r12, rax
mov rax, qword [0x310836050]
mov qword [r12], rax
lea rax, str.ValueError
mov qword [r12 + 0x10], rax
test rbp, rbp
js 0x310806260
mov rax, qword [rsi]
cmp rbp, rax
jl 0x3108055c4
lea rdx, [rax - 1]
mov rcx, rbp
call fcn.3107fd660
mov rax, qword [rsi]
cmp rbp, rax
jl 0x3108055c4
lea rdx, [rax - 1]
mov rcx, rbp
call fcn.3107fd660
movzx ecx, byte [rsi + rbp + 0x10]
call fcn.3107f1cb0
mov rcx, rbp
mov rbx, rax
call fcn.3107f1cb0
mov r13, rax
xor eax, eax
test rbx, rbx
je 0x3108055e6
mov rax, qword [rbx]
test r13, r13
je 0x3108055ef
add rax, qword [r13]
lea rcx, [rax + 0x38]
call fcn.3107f94e0
mov r9d, 0x60
movabs rdx, 0x2064696c61766e49
movabs rcx, 0x6620343665736162
mov rdi, rax
mov rax, qword [rax]
lea rax, [rdi + rax + 0x10]
mov qword [rax], rdx
movabs rdx, 0x68632074616d726f
mov qword [rax + 8], rcx
movabs rcx, 0x2072657463617261
mov qword [rax + 0x10], rdx
mov qword [rax + 0x18], rcx
mov word [rax + 0x20], r9w
mov rax, qword [rdi]
lea rdx, [rax + 0x21]
mov qword [rdi], rdx
movzx ecx, byte [rsi + rbp + 0x10]
lea rdx, [rax + 0x22]
mov byte [rdi + rax + 0x31], cl
movabs rcx, 0x2064726f282060
mov qword [rdi], rdx
mov qword [rdi + rax + 0x32], rcx
mov rdx, qword [rdi]
lea rax, [rdx + 7]
mov qword [rdi], rax
test rbx, rbx
je 0x31080569b
mov rax, qword [rbx]
lea rcx, [rdi + rdx + 0x17]
lea rdx, [rbx + 0x10]
lea r8, [rax + 1]
call sub.msvcrt.dll_memcpy
mov rax, qword [rbx]
add rax, qword [rdi]
mov qword [rdi], rax
lea rax, [rdi + rax + 0x10]
mov r8d, 0x206e
movabs rcx, 0x636f6c2074612029
mov qword [rax], rcx
mov dword [rax + 8], 0x6f697461
mov word [rax + 0xc], r8w
mov byte [rax + 0xe], 0
mov rdx, qword [rdi]
lea rax, [rdx + 0xe]
mov qword [rdi], rax
test r13, r13
je 0x3108056f2
mov rax, qword [r13]
lea rcx, [rdi + rdx + 0x1e]
lea rdx, [r13 + 0x10]
lea r8, [rax + 1]
call sub.msvcrt.dll_memcpy
mov rax, qword [r13]
add rax, qword [rdi]
mov qword [rdi], rax
mov r13d, 0x2e
mov word [rdi + rax + 0x10], r13w
add qword [rdi], 1
add qword [rdi - 0x10], 8
mov rax, qword [r12 + 0x18]
test rax, rax
je 0x31080573a
mov rcx, qword [rax - 0x10]
lea r8, [rax - 0x10]
lea rdx, [rcx - 8]
mov qword [rax - 0x10], rdx
cmp rdx, 7
ja 0x31080573a
mov rax, qword [0x310836150]
mov rdx, r8
lea rcx, [rax + 0x18]
call fcn.3107f5260
mov rdx, qword [r12 + 8]
mov qword [r12 + 0x18], rdi
test rdx, rdx
je 0x310805772
mov rax, qword [rdx - 0x10]
lea r8, [rdx - 0x10]
sub rax, 8
mov qword [rdx - 0x10], rax
cmp rax, 7
ja 0x310805772
mov rax, qword [0x310836150]
mov rdx, r8
lea rcx, [rax + 0x18]
call fcn.3107f5260
mov qword [r12 + 8], 0
mov rcx, r12
lea r9, str.base64.nim
lea r8, str.decode
mov qword [rsp + 0x20], 0xe9
lea rdx, str.ValueError
mov r12d, 0xf
call fcn.3107fd360
mov byte [rsp + 0x56], 0xf0
jmp 0x31080543f
mov qword [rsp + 0x40], 0
xor ebx, ebx
jmp 0x310804649
mov rcx, qword [0x310836000]
mov edx, 0x30
call fcn.3107f92a0
mov r12, rax
mov rax, qword [0x310836050]
mov qword [r12], rax
lea rax, str.ValueError
mov qword [r12 + 0x10], rax
mov rax, qword [rsi]
cmp rdi, rax
jge 0x310805f24
movzx ecx, byte [rsi + rdi + 0x10]
call fcn.3107f1cb0
mov rcx, rdi
mov r15, rax
call fcn.3107f1cb0
mov r13, rax
xor eax, eax
test r15, r15
je 0x31080581a
mov rax, qword [r15]
test r13, r13
je 0x310805823
add rax, qword [r13]
lea rcx, [rax + 0x38]
call fcn.3107f94e0
movabs rdx, 0x2064696c61766e49
movabs rcx, 0x6620343665736162
mov rbx, rax
mov rax, qword [rax]
lea rax, [rbx + rax + 0x10]
mov qword [rax], rdx
movabs rdx, 0x68632074616d726f
mov qword [rax + 8], rcx
movabs rcx, 0x2072657463617261
mov qword [rax + 0x10], rdx
mov edx, 0x60
mov word [rax + 0x20], dx
mov qword [rax + 0x18], rcx
mov rax, qword [rbx]
lea rdx, [rax + 0x21]
mov qword [rbx], rdx
movzx ecx, byte [rsi + rdi + 0x10]
lea rdx, [rax + 0x22]
movabs rsi, 0x2064726f282060
mov byte [rbx + rax + 0x31], cl
mov qword [rbx], rdx
mov qword [rbx + rax + 0x32], rsi
mov rdx, qword [rbx]
lea rax, [rdx + 7]
mov qword [rbx], rax
test r15, r15
je 0x3108058cd
mov rax, qword [r15]
lea rcx, [rbx + rdx + 0x17]
lea rdx, [r15 + 0x10]
lea r8, [rax + 1]
call sub.msvcrt.dll_memcpy
mov rax, qword [r15]
add rax, qword [rbx]
mov qword [rbx], rax
movabs rsi, 0x636f6c2074612029
lea rax, [rbx + rax + 0x10]
mov qword [rax], rsi
mov esi, 0x206e
mov dword [rax + 8], 0x6f697461
mov word [rax + 0xc], si
mov byte [rax + 0xe], 0
mov rdx, qword [rbx]
lea rax, [rdx + 0xe]
mov qword [rbx], rax
test r13, r13
je 0x310805922
mov rax, qword [r13]
lea rcx, [rbx + rdx + 0x1e]
lea rdx, [r13 + 0x10]
lea r8, [rax + 1]
call sub.msvcrt.dll_memcpy
mov rax, qword [r13]
add rax, qword [rbx]
mov qword [rbx], rax
mov esi, 0x2e
mov word [rbx + rax + 0x10], si
add qword [rbx], 1
add qword [rbx - 0x10], 8
mov rax, qword [r12 + 0x18]
test rax, rax
je 0x310805959
mov rsi, qword [rax - 0x10]
lea r8, [rax - 0x10]
lea rdx, [rsi - 8]
mov qword [rax - 0x10], rdx
cmp rdx, 7
jbe 0x310805f0c
mov rdx, qword [r12 + 8]
mov qword [r12 + 0x18], rbx
test rdx, rdx
je 0x310805982
mov rax, qword [rdx - 0x10]
lea r8, [rdx - 0x10]
sub rax, 8
mov qword [rdx - 0x10], rax
cmp rax, 7
jbe 0x310805ef4
lea r9, str.base64.nim
mov rcx, r12
mov qword [r12 + 8], 0
lea r8, str.decode
mov qword [rsp + 0x20], 0xe9
lea rdx, str.ValueError
mov ebx, 0xf
call fcn.3107fd360
jmp 0x310805317
lea rax, [0x310810e20]
mov rdi, rax
mov qword [rsp + 0x38], rax
movzx eax, byte [rsi + rbx + 0x10]
movzx ebp, byte [rdi + rax]
cmp bpl, 0xff
jne 0x3108053de
mov rcx, qword [0x310836000]
mov edx, 0x30
call fcn.3107f92a0
mov r12, rax
mov rax, qword [0x310836050]
mov qword [r12], rax
lea rax, str.ValueError
mov qword [r12 + 0x10], rax
mov rax, qword [rsi]
cmp rbx, rax
jl 0x310805a30
lea rdx, [rax - 1]
mov rcx, rbx
call fcn.3107fd660
mov rax, qword [rsi]
cmp rax, rbx
jg 0x310805a30
lea rdx, [rax - 1]
mov rcx, rbx
call fcn.3107fd660
movzx ecx, byte [rsi + rbx + 0x10]
call fcn.3107f1cb0
mov rcx, rbx
mov rbp, rax
call fcn.3107f1cb0
mov rdi, rax
xor eax, eax
test rbp, rbp
je 0x310805a53
mov rax, qword [rbp]
test rdi, rdi
je 0x310805a5b
add rax, qword [rdi]
lea rcx, [rax + 0x38]
call fcn.3107f94e0
mov r11d, 0x60
movabs rdx, 0x2064696c61766e49
movabs rcx, 0x6620343665736162
mov r13, rax
mov rax, qword [rax]
lea rax, [r13 + rax + 0x10]
mov qword [rax], rdx
movabs rdx, 0x68632074616d726f
mov qword [rax + 8], rcx
movabs rcx, 0x2072657463617261
mov qword [rax + 0x10], rdx
mov qword [rax + 0x18], rcx
mov word [rax + 0x20], r11w
mov rax, qword [r13]
lea rdx, [rax + 0x21]
mov qword [r13], rdx
movzx ecx, byte [rsi + rbx + 0x10]
lea rdx, [rax + 0x22]
mov byte [r13 + rax + 0x31], cl
movabs rcx, 0x2064726f282060
mov qword [r13], rdx
mov qword [r13 + rax + 0x32], rcx
mov rdx, qword [r13]
lea rax, [rdx + 7]
mov qword [r13], rax
test rbp, rbp
je 0x310805b11
mov rax, qword [rbp]
lea rcx, [r13 + rdx + 0x17]
lea rdx, [rbp + 0x10]
lea r8, [rax + 1]
call sub.msvcrt.dll_memcpy
mov rax, qword [rbp]
add rax, qword [r13]
mov qword [r13], rax
lea rax, [r13 + rax + 0x10]
mov r10d, 0x206e
movabs rcx, 0x636f6c2074612029
mov qword [rax], rcx
mov dword [rax + 8], 0x6f697461
mov word [rax + 0xc], r10w
mov byte [rax + 0xe], 0
mov rdx, qword [r13]
lea rax, [rdx + 0xe]
mov qword [r13], rax
test rdi, rdi
je 0x310805b6a
mov rax, qword [rdi]
lea rcx, [r13 + rdx + 0x1e]
lea rdx, [rdi + 0x10]
lea r8, [rax + 1]
call sub.msvcrt.dll_memcpy
mov rax, qword [rdi]
add rax, qword [r13]
mov qword [r13], rax
mov edi, 0x2e
mov word [r13 + rax + 0x10], di
add qword [r13], 1
add qword [r13 - 0x10], 8
mov rax, qword [r12 + 0x18]
test rax, rax
je 0x310805bb2
mov rdi, qword [rax - 0x10]
lea r8, [rax - 0x10]
lea rdx, [rdi - 8]
mov qword [rax - 0x10], rdx
cmp rdx, 7
ja 0x310805bb2
mov rax, qword [0x310836150]
mov rdx, r8
lea rcx, [rax + 0x18]
call fcn.3107f5260
mov rdx, qword [r12 + 8]
mov qword [r12 + 0x18], r13
test rdx, rdx
je 0x310805bea
mov rax, qword [rdx - 0x10]
lea r8, [rdx - 0x10]
sub rax, 8
mov qword [rdx - 0x10], rax
cmp rax, 7
ja 0x310805bea
mov rax, qword [0x310836150]
mov rdx, r8
lea rcx, [rax + 0x18]
call fcn.3107f5260
mov qword [r12 + 8], 0
lea r9, str.base64.nim
mov rcx, r12
lea r8, str.decode
mov qword [rsp + 0x20], 0xe9
lea rdx, str.ValueError
call fcn.3107fd360
mov byte [rsp + 0x55], 0xfc
jmp 0x3108053e9
movabs rcx, 0x8000000000000000
lea rdx, [rax - 1]
call fcn.3107fd660
mov rcx, qword [rsp + 0x38]
movabs rax, 0x8000000000000010
movzx eax, byte [rsi + rax]
movzx eax, byte [rcx + rax]
cmp rax, 0xff
jne 0x310805311
mov rcx, qword [0x310836000]
mov edx, 0x30
call fcn.3107f92a0
mov rcx, rdi
mov r12, rax
mov rax, qword [0x310836050]
mov qword [r12], rax
lea rax, str.ValueError
mov qword [r12 + 0x10], rax
mov rax, qword [rsi]
lea rdx, [rax - 1]
call fcn.3107fd660
mov rax, qword [rsi]
jmp 0x310805f3c
mov rcx, qword [0x310836000]
mov edx, 0x30
call fcn.3107f92a0
mov r12, rax
mov rax, qword [0x310836050]
mov qword [r12], rax
lea rax, str.ValueError
mov qword [r12 + 0x10], rax
mov rax, qword [rsi]
cmp rax, rbx
jle 0x310805ecb
movzx ecx, byte [rsi + rbx + 0x10]
call fcn.3107f1cb0
mov rcx, rbx
mov rbp, rax
call fcn.3107f1cb0
mov rdi, rax
xor eax, eax
test rbp, rbp
je 0x310805cf5
mov rax, qword [rbp]
test rdi, rdi
je 0x310805cfd
add rax, qword [rdi]
lea rcx, [rax + 0x38]
call fcn.3107f94e0
mov r8d, 0x60
movabs rdx, 0x2064696c61766e49
movabs rcx, 0x6620343665736162
mov r13, rax
mov rax, qword [rax]
lea rax, [r13 + rax + 0x10]
mov qword [rax], rdx
movabs rdx, 0x68632074616d726f
mov qword [rax + 8], rcx
movabs rcx, 0x2072657463617261
mov qword [rax + 0x10], rdx
mov qword [rax + 0x18], rcx
mov word [rax + 0x20], r8w
mov rax, qword [r13]
lea rdx, [rax + 0x21]
mov qword [r13], rdx
movzx ecx, byte [rsi + rbx + 0x10]
lea rdx, [rax + 0x22]
mov byte [r13 + rax + 0x31], cl
movabs rcx, 0x2064726f282060
mov qword [r13], rdx
mov qword [r13 + rax + 0x32], rcx
mov rdx, qword [r13]
lea rax, [rdx + 7]
mov qword [r13], rax
test rbp, rbp
je 0x310805db3
mov rax, qword [rbp]
lea rcx, [r13 + rdx + 0x17]
lea rdx, [rbp + 0x10]
lea r8, [rax + 1]
call sub.msvcrt.dll_memcpy
mov rax, qword [rbp]
add rax, qword [r13]
mov qword [r13], rax
movabs rcx, 0x636f6c2074612029
lea rax, [r13 + rax + 0x10]
mov qword [rax], rcx
mov ecx, 0x206e
mov dword [rax + 8], 0x6f697461
mov word [rax + 0xc], cx
mov byte [rax + 0xe], 0
mov rdx, qword [r13]
lea rax, [rdx + 0xe]
mov qword [r13], rax
test rdi, rdi
je 0x310805e0a
mov rax, qword [rdi]
lea rcx, [r13 + rdx + 0x1e]
lea rdx, [rdi + 0x10]
lea r8, [rax + 1]
call sub.msvcrt.dll_memcpy
mov rax, qword [rdi]
add rax, qword [r13]
mov qword [r13], rax
mov r11d, 0x2e
mov word [r13 + rax + 0x10], r11w
add qword [r13], 1
add qword [r13 - 0x10], 8
mov rax, qword [r12 + 0x18]
test rax, rax
je 0x310805e40
mov rdi, qword [rax - 0x10]
lea r8, [rax - 0x10]
lea rdx, [rdi - 8]
mov qword [rax - 0x10], rdx
cmp rdx, 7
jbe 0x310805eb3
mov rdx, qword [r12 + 8]
mov qword [r12 + 0x18], r13
test rdx, rdx
je 0x310805e65
mov rax, qword [rdx - 0x10]
lea r8, [rdx - 0x10]
sub rax, 8
mov qword [rdx - 0x10], rax
cmp rax, 7
jbe 0x310805e9e
lea r9, str.base64.nim
mov rcx, r12
mov qword [r12 + 8], 0
lea r8, str.decode
mov qword [rsp + 0x20], 0xe9
lea rdx, str.ValueError
mov ebp, 0xfffffffc
call fcn.3107fd360
jmp 0x3108052c4
mov rax, qword [0x310836150]
mov rdx, r8
lea rcx, [rax + 0x18]
call fcn.3107f5260
jmp 0x310805e65
mov rax, qword [0x310836150]
mov rdx, r8
lea rcx, [rax + 0x18]
call fcn.3107f5260
jmp 0x310805e40
lea rdx, [rax - 1]
mov rcx, rbx
call fcn.3107fd660
mov rax, qword [rsi]
cmp rax, rbx
jg 0x310805cd2
lea rdx, [rax - 1]
mov rcx, rbx
call fcn.3107fd660
jmp 0x310805cd2
mov rax, qword [0x310836150]
mov rdx, r8
lea rcx, [rax + 0x18]
call fcn.3107f5260
jmp 0x310805982
mov rax, qword [0x310836150]
mov rdx, r8
lea rcx, [rax + 0x18]
call fcn.3107f5260
jmp 0x310805959
lea rdx, [rax - 1]
mov rcx, rdi
call fcn.3107fd660
mov rax, qword [rsi]
cmp rdi, rax
jl 0x3108057f8
lea rdx, [rax - 1]
mov rcx, rdi
call fcn.3107fd660
jmp 0x3108057f8
mov rcx, qword [0x310836000]
mov edx, 0x30
call fcn.3107f92a0
mov r12, rax
mov rax, qword [0x310836050]
mov qword [r12], rax
lea rax, str.ValueError
mov qword [r12 + 0x10], rax
jmp 0x31080559c
mov rcx, qword [0x310836000]
mov edx, 0x30
call fcn.3107f92a0
mov r12, rax
mov rax, qword [0x310836050]
mov qword [r12], rax
lea rax, str.ValueError
mov qword [r12 + 0x10], rax
mov rax, qword [rsi]
cmp rax, rbx
jg 0x310805a30
jmp 0x310805a10
lea rdx, [rax - 1]
mov rcx, rbx
call fcn.3107fd660
movzx eax, byte [rsi + rbx + 0x10]
mov rdi, qword [rsp + 0x38]
movzx eax, byte [rdi + rax]
cmp rax, 0xff
jne 0x310805483
mov rcx, qword [0x310836000]
mov edx, 0x30
call fcn.3107f92a0
mov rcx, rbx
mov r13, rax
mov rax, qword [0x310836050]
mov qword [r13], rax
lea rax, str.ValueError
mov qword [r13 + 0x10], rax
mov rax, qword [rsi]
lea rdx, [rax - 1]
call fcn.3107fd660
mov rax, qword [rsi]
lea rdx, [rax - 1]
mov rcx, rbx
call fcn.3107fd660
movzx ecx, byte [rsi + rbx + 0x10]
call fcn.3107f1cb0
mov rcx, rbx
mov r15, rax
call fcn.3107f1cb0
mov rbp, rax
xor eax, eax
test r15, r15
je 0x310806049
mov rax, qword [r15]
test rbp, rbp
je 0x310806052
add rax, qword [rbp]
lea rcx, [rax + 0x38]
call fcn.3107f94e0
movabs rcx, 0x6620343665736162
movabs rdx, 0x2064696c61766e49
mov rdi, rax
mov rax, qword [rax]
lea rax, [rdi + rax + 0x10]
mov qword [rax + 8], rcx
movabs rcx, 0x2072657463617261
mov qword [rax], rdx
movabs rdx, 0x68632074616d726f
mov qword [rax + 0x18], rcx
mov ecx, 0x60
mov qword [rax + 0x10], rdx
mov word [rax + 0x20], cx
mov rax, qword [rdi]
lea rdx, [rax + 0x21]
mov qword [rdi], rdx
movzx ecx, byte [rsi + rbx + 0x10]
lea rdx, [rax + 0x22]
movabs rsi, 0x2064726f282060
mov byte [rdi + rax + 0x31], cl
mov qword [rdi], rdx
mov qword [rdi + rax + 0x32], rsi
mov rdx, qword [rdi]
lea rax, [rdx + 7]
mov qword [rdi], rax
test r15, r15
je 0x3108060fc
mov rax, qword [r15]
lea rcx, [rdi + rdx + 0x17]
lea rdx, [r15 + 0x10]
lea r8, [rax + 1]
call sub.msvcrt.dll_memcpy
mov rax, qword [r15]
add rax, qword [rdi]
mov qword [rdi], rax
lea rax, [rdi + rax + 0x10]
mov edx, 0x206e
movabs rsi, 0x636f6c2074612029
mov qword [rax], rsi
mov dword [rax + 8], 0x6f697461
mov word [rax + 0xc], dx
mov byte [rax + 0xe], 0
mov rdx, qword [rdi]
lea rax, [rdx + 0xe]
mov qword [rdi], rax
test rbp, rbp
je 0x310806151
mov rax, qword [rbp]
lea rcx, [rdi + rdx + 0x1e]
lea rdx, [rbp + 0x10]
lea r8, [rax + 1]
call sub.msvcrt.dll_memcpy
mov rax, qword [rbp]
add rax, qword [rdi]
mov qword [rdi], rax
mov r15d, 0x2e
mov word [rdi + rax + 0x10], r15w
add qword [rdi], 1
add qword [rdi - 0x10], 8
mov rax, qword [r13 + 0x18]
test rax, rax
je 0x310806198
mov rsi, qword [rax - 0x10]
lea r8, [rax - 0x10]
lea rdx, [rsi - 8]
mov qword [rax - 0x10], rdx
cmp rdx, 7
ja 0x310806198
mov rax, qword [0x310836150]
mov rdx, r8
lea rcx, [rax + 0x18]
call fcn.3107f5260
mov rdx, qword [r13 + 8]
mov qword [r13 + 0x18], rdi
test rdx, rdx
je 0x3108061ce
mov rax, qword [rdx - 0x10]
lea r8, [rdx - 0x10]
sub rax, 8
mov qword [rdx - 0x10], rax
cmp rax, 7
ja 0x3108061ce
mov rax, qword [0x310836150]
mov rdx, r8
lea rcx, [rax + 0x18]
call fcn.3107f5260
mov qword [r13 + 8], 0
mov rcx, r13
mov esi, 0x3f
lea r9, str.base64.nim
mov qword [rsp + 0x20], 0xe9
lea r8, str.decode
lea rdx, str.ValueError
call fcn.3107fd360
jmp 0x310805489
mov rcx, qword [0x310836000]
mov edx, 0x30
call fcn.3107f92a0
mov r13, rax
mov rax, qword [0x310836050]
mov qword [r13], rax
lea rax, str.ValueError
mov qword [r13 + 0x10], rax
mov rax, qword [rsi]
cmp rbx, rax
jl 0x310806027
lea rdx, [rax - 1]
mov rcx, rbx
call fcn.3107fd660
mov rax, qword [rsi]
cmp rbx, rax
jge 0x31080601b
jmp 0x310806027
movabs rcx, 0x8000000000000000
mov rax, qword [rsi]
lea rdx, [rax - 1]
call fcn.3107fd660
mov rax, qword [rsi]
jmp 0x3108055b8
mov r12d, 1
call fcn.3107f6f30
jmp 0x3108043f0
call fcn.3107f6f30
jmp 0x31080544c
call fcn.3107f6f30
jmp 0x310805493
call fcn.3107f6f30
jmp 0x3108053ff
call fcn.3107f6f30
jmp 0x310805321
call fcn.3107f6f30
jmp 0x3108052da
call fcn.3107f6f30
jmp 0x31080442a
call fcn.3107f6f30
jmp 0x3108054c9
call fcn.3107f6f30
jmp 0x31080451a
call fcn.3107f6f30
jmp 0x310804560
call fcn.3107f6f30
jmp 0x3108044ce
call fcn.3107f6f30
jmp 0x3108043a2
call fcn.3107f6f30
jmp 0x310804657
call fcn.3107f6f30
jmp 0x310804611
call fcn.3107f6f30
jmp 0x3108045e4