Function at 0x140045ae0
Capabilities:
Encode data using base64

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x88
mov r15, r9
mov r14, rdx
mov r13, rcx
mov r12, qword [rsp + 0xf0]
mov qword [rsp + 0x40], r8
mov ecx, dword [r8 + 8]
xor ebp, ebp
test ecx, ecx
cmovs ebp, ecx
mov r8d, ecx
test ecx, ecx
jle 0x140045b36
mov rax, qword [rsp + 0x40]
mov rbx, qword [rax]
lea rax, [rcx - 1]
cmp qword [rbx + rcx*8 - 8], 0
mov rcx, rax
je 0x140045b14
inc eax
mov ebp, eax
mov esi, dword [r15 + 8]
xor ebx, ebx
test esi, esi
cmovs ebx, esi
mov rcx, rsi
mov edi, ecx
test ecx, ecx
jle 0x140045b60
mov rdx, qword [r15]
lea rax, [rcx - 1]
cmp qword [rdx + rcx*8 - 8], 0
mov rcx, rax
je 0x140045b44
inc eax
mov ebx, eax
test r8d, r8d
jle 0x140045b7a
mov rax, qword [rsp + 0x40]
mov rax, qword [rax]
dec ebp
cmp qword [rax + rbp*8], 0
je 0x14004621b
test edi, edi
jle 0x140045b8e
mov rax, qword [r15]
dec ebx
cmp qword [rax + rbx*8], 0
je 0x14004621b
test rsi, rsi
je 0x140046136
mov rax, qword [r15]
movsxd rcx, esi
xor edx, edx
xor ebx, ebx
or rbx, qword [rax + rdx*8]
inc rdx
cmp rcx, rdx
jne 0x140045ba1
test rbx, rbx
je 0x140046136
cmp byte [r12 + 0x28], 0
jne 0x140045be1
mov rcx, qword [r12 + 0x10]
mov rsi, qword [r12 + 0x20]
cmp rcx, qword [r12 + 0x18]
je 0x1400460de
mov rax, qword [r12 + 8]
mov qword [rax + rcx*8], rsi
inc qword [r12 + 0x10]
mov rcx, r12
call fcn.140045980
mov qword [rsp + 0x58], rax
mov rcx, r12
call fcn.140045980
mov qword [rsp + 0x30], rax
mov rcx, r12
call fcn.140045980
mov qword [rsp + 0x38], rax
test r13, r13
jne 0x140045c18
mov rcx, r12
call fcn.140045980
mov r13, rax
cmp qword [rsp + 0x38], 0
je 0x1400462b5
test r13, r13
je 0x1400462b5
mov rcx, r15
call fcn.140045720
mov edi, eax
and edi, 0x3f
mov r8d, 0x40
sub r8d, edi
mov rcx, qword [rsp + 0x38]
mov rdx, r15
call fcn.14007b4d0
test eax, eax
je 0x1400462b5
mov rax, qword [rsp + 0x38]
mov eax, dword [rax + 8]
mov rbp, qword [rsp + 0x38]
test eax, eax
jle 0x1400462d2
mov rdx, qword [rbp]
lea rcx, [rax - 1]
cmp qword [rdx + rax*8 - 8], 0
mov rax, rcx
je 0x140045c65
inc ecx
mov dword [rbp + 8], ecx
mov dword [rbp + 0x10], 0
mov r8d, 0x80
sub r8d, edi
mov rcx, qword [rsp + 0x30]
mov rdx, qword [rsp + 0x40]
mov dword [rsp + 0x68], r8d
call fcn.14007b4d0
test eax, eax
je 0x1400462b5
mov rax, qword [rsp + 0x30]
mov ecx, dword [rax + 8]
mov rbx, qword [rsp + 0x30]
test ecx, ecx
jle 0x1400462ee
mov rdx, qword [rbx]
lea rax, [rcx - 1]
cmp qword [rdx + rcx*8 - 8], 0
mov rcx, rax
je 0x140045cbe
inc eax
mov dword [rbx + 8], eax
mov dword [rbx + 0x10], 0
mov rcx, qword [rsp + 0x38]
movsxd rdx, dword [rcx + 8]
lea ecx, [rdx + 1]
cmp eax, ecx
jle 0x140046311
lea esi, [rax + 1]
cmp dword [rbx + 0xc], esi
jb 0x140045fc3
mov rdi, qword [rbx]
cdqe
mov qword [rdi + rax*8], 0
mov edi, dword [rbx + 8]
inc edi
mov dword [rbx + 8], edi
mov rax, qword [rsp + 0x38]
movsxd rdx, dword [rax + 8]
mov esi, edi
sub esi, edx
mov rax, qword [rax]
cmp rdx, 1
mov qword [rsp + 0x70], r14
je 0x140046362
mov rcx, qword [rax + rdx*8 - 0x10]
mov qword [rsp + 0x60], rcx
mov rcx, qword [rsp + 0x30]
mov rbx, qword [rcx]
mov qword [rsp + 0x48], rdx
mov r14, qword [rax + rdx*8 - 8]
mov eax, dword [r15 + 0x10]
mov rcx, qword [rsp + 0x40]
xor eax, dword [rcx + 0x10]
mov dword [r13 + 0x10], eax
lea ebp, [rsi + 1]
cmp dword [r13 + 0xc], ebp
jb 0x14004601e
mov r15, qword [r13]
lea ecx, [rsi - 1]
mov dword [r13 + 8], ecx
mov rax, qword [rsp + 0x48]
lea rbp, [rax + 1]
mov rax, qword [rsp + 0x58]
mov rdx, rbp
mov qword [rsp + 0x50], rbp
cmp dword [rax + 0xc], ebp
jb 0x140046070
movsxd rax, esi
lea r12, [r15 + rax*8]
add r12, 0xfffffffffffffff8
test ecx, ecx
mov qword [rsp + 0x78], r13
je 0x140046369
add r12, 0xfffffffffffffff8
cmp esi, 2
jl 0x140045ed3
movsxd rcx, edi
lea r15, [rbx + rax*8]
dec edi
lea r13, [rbx + rcx*8]
add r13, 0xfffffffffffffff8
sub edi, dword [rsp + 0x48]
cmp edi, 1
mov eax, 1
cmovg eax, edi
mov dword [rsp + 0x6c], eax
xor ebx, ebx
mov rdx, qword [r13]
cmp rdx, r14
je 0x1400461bd
mov rax, qword [r13 - 8]
mov qword [rsp + 0x80], r14
div qword [rsp + 0x80]
mov rsi, rdx
mov rdi, rax
mul qword [rsp + 0x60]
mov rbp, qword [r13 - 0x10]
cmp rbp, rax
mov rcx, rsi
sbb rcx, rdx
jb 0x140045e9c
mov rax, qword [rsp + 0x38]
mov rdx, qword [rax]
mov rsi, qword [rsp + 0x58]
mov rcx, qword [rsi]
mov rbp, qword [rsp + 0x48]
mov r8, rbp
mov r9, rdi
call fcn.14007b0e0
add r15, 0xfffffffffffffff8
mov rcx, qword [rsi]
mov qword [rcx + rbp*8], rax
mov rcx, qword [rsp + 0x50]
test ecx, ecx
je 0x140045e82
mov rax, qword [rsi]
xor edx, edx
sub rbp, rbp
jmp 0x140045e60
mov rbp, qword [r15 + rdx*8]
sbb rbp, qword [rax + rdx*8]
mov qword [r15 + rdx*8], rbp
lea rdx, [rdx + 1]
dec rcx
jne 0x140045e60
sbb rbp, rbp
test bpl, 1
jne 0x1400461c9
mov qword [r12], rdi
inc ebx
add r13, 0xfffffffffffffff8
add r12, 0xfffffffffffffff8
cmp ebx, dword [rsp + 0x6c]
jne 0x140045de6
jmp 0x140045ed3
add rsi, r14
dec rdi
mov rcx, rdi
mov rdi, rcx
sub rax, qword [rsp + 0x60]
sbb rdx, 0
cmp rsi, r14
jb 0x140045e21
lea r8, [rsi + r14]
lea rcx, [rdi - 1]
cmp rbp, rax
sbb rsi, rdx
mov rsi, r8
jae 0x140045e21
jmp 0x140045ea5
mov rax, qword [rsp + 0x30]
mov eax, dword [rax + 8]
mov r12, qword [rsp + 0xf0]
mov rdi, qword [rsp + 0x78]
mov rbx, qword [rsp + 0x70]
test eax, eax
jle 0x14004619c
mov rcx, qword [rsp + 0x30]
mov rdx, qword [rcx]
lea rcx, [rax - 1]
cmp qword [rdx + rax*8 - 8], 0
mov rax, rcx
je 0x140045eed
inc ecx
mov rax, qword [rsp + 0x30]
mov dword [rax + 8], ecx
test rbx, rbx
je 0x140045f61
mov rax, qword [rsp + 0x40]
mov esi, dword [rax + 0x10]
mov rcx, rbx
mov rdx, qword [rsp + 0x30]
mov r8d, dword [rsp + 0x68]
call fcn.140046390
test eax, eax
je 0x1400462b5
movsxd rax, dword [rbx + 8]
test rax, rax
je 0x140045f61
mov rcx, qword [rbx]
xor edx, edx
xor ebp, ebp
or rbp, qword [rcx + rdx*8]
inc rdx
cmp rax, rdx
jne 0x140045f4d
test rbp, rbp
je 0x140045f61
mov dword [rbx + 0x10], esi
mov eax, dword [rdi + 8]
test eax, eax
jle 0x14004623e
mov rdx, qword [rdi]
lea rcx, [rax - 1]
cmp qword [rdx + rax*8 - 8], 0
mov rax, rcx
je 0x140045f64
inc ecx
mov dword [rdi + 8], ecx
mov esi, 1
cmp byte [r12 + 0x28], 0
jne 0x140045fad
mov rax, qword [r12 + 8]
mov rcx, qword [r12 + 0x10]
lea rdx, [rcx - 1]
mov qword [r12 + 0x10], rdx
mov rax, qword [rax + rcx*8 - 8]
mov qword [r12 + 0x20], rax
mov eax, esi
add rsp, 0x88
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
cmp esi, 0x800000
jae 0x140046258
mov rax, qword [rsp + 0x30]
test byte [rax + 0x14], 2
jne 0x140046276
movsxd rcx, esi
shl rcx, 3
call fcn.14007cd40
test rax, rax
je 0x140046294
mov rdi, rax
mov rbx, qword [rsp + 0x30]
movsxd r8, dword [rbx + 8]
test r8, r8
jne 0x14004615e
mov rcx, qword [rbx]
call fcn.14007cd70
mov qword [rbx], rdi
mov dword [rbx + 0xc], esi
mov eax, dword [rbx + 8]
jmp 0x140045d07
cmp ebp, 0x800000
jae 0x140046258
test byte [r13 + 0x14], 2
jne 0x140046276
movsxd rcx, ebp
shl rcx, 3
call fcn.14007cd40
test rax, rax
je 0x140046294
mov r15, rax
movsxd r8, dword [r13 + 8]
test r8, r8
jne 0x140046172
mov rcx, qword [r13]
call fcn.14007cd70
mov qword [r13], r15
mov dword [r13 + 0xc], ebp
jmp 0x140045d75
cmp dword [rsp + 0x50], 0x800000
jae 0x140046258
mov rax, qword [rsp + 0x58]
test byte [rax + 0x14], 2
jne 0x140046276
mov rax, qword [rsp + 0x50]
lea rcx, [rax*8]
call fcn.14007cd40
test rax, rax
je 0x140046294
mov rcx, rax
mov rbp, qword [rsp + 0x58]
movsxd r8, dword [rbp + 8]
test r8, r8
mov r12, rax
jne 0x140046187
mov rcx, qword [rbp]
call fcn.14007cd70
mov qword [rbp], r12
mov rax, qword [rsp + 0x50]
mov dword [rbp + 0xc], eax
mov ecx, dword [r13 + 8]
jmp 0x140045d9b
lea rax, [rcx + rcx*2]
shr rax, 1
test rcx, rcx
mov edi, 0x20
cmovne rdi, rax
cmp rdi, rcx
jbe 0x140046376
mov rax, rdi
shr rax, 0x3d
jne 0x140046376
lea rdx, [rdi*8]
mov rcx, qword [r12 + 8]
call fcn.14004ad60
test rax, rax
je 0x140046376
mov qword [r12 + 8], rax
mov qword [r12 + 0x18], rdi
mov rcx, qword [r12 + 0x10]
jmp 0x140045bd8
mov dword [rsp + 0x20], 0xd9
lea r9, str..._.._third_party_boringssl_src_crypto_fipsmodule_bn_div.c
xor esi, esi
mov ecx, 3
xor edx, edx
mov r8d, 0x69
call fcn.140117650
jmp 0x140045fad
shl r8, 3
mov rdx, qword [rbx]
mov rcx, rdi
call fcn.140099ad0
jmp 0x140046008
shl r8, 3
mov rdx, qword [r13]
mov rcx, r15
call fcn.140099ad0
jmp 0x14004605a
shl r8, 3
mov rdx, qword [rbp]
mov rcx, r12
call fcn.140099ad0
jmp 0x1400460c0
mov rcx, qword [rsp + 0x30]
mov dword [rcx + 8], eax
test eax, eax
jne 0x140045f16
mov rax, qword [rsp + 0x30]
mov dword [rax + 0x10], 0
jmp 0x140045f16
mov rdi, 0xffffffffffffffff
jmp 0x140045e21
dec rdi
cmp dword [rsp + 0x48], 0
je 0x140045e82
mov rax, qword [rsp + 0x38]
mov rax, qword [rax]
xor edx, edx
mov rcx, qword [rsp + 0x48]
sub rbp, rbp
jmp 0x1400461f0
mov rbp, qword [r15 + rdx*8]
adc rbp, qword [rax + rdx*8]
mov qword [r15 + rdx*8], rbp
lea rdx, [rdx + 1]
dec rcx
jne 0x1400461f0
sbb rbp, rbp
test bpl, 1
je 0x140045e82
inc qword [r13]
jmp 0x140045e82
mov dword [rsp + 0x20], 0xd4
lea r9, str..._.._third_party_boringssl_src_crypto_fipsmodule_bn_div.c
xor esi, esi
mov ecx, 3
xor edx, edx
mov r8d, 0x6f
jmp 0x140046154
mov dword [rdi + 8], eax
test eax, eax
jne 0x140045f83
mov rcx, rdi
mov dword [rdi + 0x10], 0
jmp 0x140045f83
mov dword [rsp + 0x20], 0x15b
lea r9, str..._.._third_party_boringssl_src_crypto_fipsmodule_bn_bn.c
mov ecx, 3
xor edx, edx
mov r8d, 0x66
jmp 0x1400462b0
mov dword [rsp + 0x20], 0x160
lea r9, str..._.._third_party_boringssl_src_crypto_fipsmodule_bn_bn.c
mov ecx, 3
xor edx, edx
mov r8d, 0x6a
jmp 0x1400462b0
mov dword [rsp + 0x20], 0x166
lea r9, str..._.._third_party_boringssl_src_crypto_fipsmodule_bn_bn.c
mov ecx, 3
xor edx, edx
mov r8d, 0x41
call fcn.140117650
xor esi, esi
cmp byte [r12 + 0x28], 0
jne 0x140045fad
mov rax, r12
mov rbp, r12
mov rax, qword [rax + 8]
jmp 0x140045f95
mov rbp, qword [rsp + 0x38]
mov dword [rbp + 8], eax
test eax, eax
jne 0x140045c85
mov dword [rbp + 0x10], 0
jmp 0x140045c85
mov rax, qword [rsp + 0x30]
mov dword [rax + 8], ecx
test ecx, ecx
jne 0x140046383
mov rbx, qword [rsp + 0x30]
mov dword [rbx + 0x10], 0
mov eax, ecx
jmp 0x140045cdd
add rdx, 2
mov rcx, rbx
call fcn.1400f4240
test eax, eax
je 0x1400462b5
mov rbx, qword [rsp + 0x30]
movsxd rax, dword [rbx + 8]
mov rcx, qword [rsp + 0x38]
mov edi, dword [rcx + 8]
add edi, 2
cmp eax, edi
jge 0x140045d16
mov rcx, qword [rbx]
mov qword [rcx + rax*8], 0
inc rax
mov rcx, qword [rsp + 0x38]
movsxd rdi, dword [rcx + 8]
add rdi, 2
cmp rax, rdi
jl 0x14004633d
jmp 0x140045d16
xor ecx, ecx
jmp 0x140045d3d
mov dword [r13 + 0x10], 0
jmp 0x140045db7
mov word [r12 + 0x28], 0x101
jmp 0x140045be1
mov eax, ecx
mov rbx, qword [rsp + 0x30]
jmp 0x140045cdd