Function at 0x40caf0
Capabilities:
Encode data using xor

Disassembly:
push rbp
push r15
push r14
push r13
push r12
push rdi
push rsi
push rbx
sub rsp, 0x148
lea rbp, [rsp + 0x80]
vmovups xmmword [rbp + 0xb0], xmm6
mov rax, qword [0x0074c590]
movsxd rax, dword [rax]
add rax, 0xf
mov rdi, rdx
mov rbx, r8
and rax, 0xfffffffffffffff0
mov qword [rbp + 0x110], rcx
call fcn.006e1b00
mov r15d, edx
lea r12, [rdx + 3]
and r15d, 3
sub rsp, rax
mov edx, 0xffffffff
mov rcx, r8
shr r12, 2
lea eax, [r15*8]
shlx eax, edx, eax
mov dword [rbp - 0x44], eax
call sub.msvcrt.dll_strlen
mov rcx, r12
mov edx, 4
mov rsi, rax
call sub.msvcrt.dll_calloc
lea r14, [rsp + 0x20]
mov rcx, rax
test rsi, rsi
je 0x40cc8b
lea rax, [rbx + rsi]
mov qword [rbp - 0x50], rax
lea rax, [r12 - 1]
mov qword [rbp - 0x58], rax
mov r13, rbx
mov r9, rbx
lea r10, str.123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz
movzx r8d, byte [r9]
mov eax, 1
cmp r8b, 0x31
je 0x40cff8
nop dword [rax + rax]
movzx r11d, byte [r10 + rax]
mov edx, eax
cmp r11b, r8b
je 0x40cc38
inc rax
test r11b, r11b
jne 0x40cbc0
call sub.msvcrt.dll_free
lea rax, [rsi - 8]
cmp rax, 0x52
ja 0x40cc10
lea rdx, [rsi - 1]
xor eax, eax
nop dword [rax]
cmp byte [rbx + rdx], 0x31
mov r8, rax
lea rax, [rax + 1]
je 0x40cef8
dec rdx
cmp rsi, rax
jne 0x40cbf0
nop dword [rax]
xor r12d, r12d
vmovups xmm6, xmmword [rbp + 0xb0]
mov rax, r12
lea rsp, [rbp + 0xc8]
pop rbx
pop rsi
pop rdi
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
test r12, r12
je 0x40cbd4
mov rax, qword [rbp - 0x58]
lea r8, [rcx + rax*4]
nop dword [rax]
mov eax, dword [r8]
mov edx, edx
imul rax, rax, 0x3a
mov r11, r8
sub r8, 4
add rax, rdx
mov rdx, rax
mov dword [r8 + 4], eax
shr rdx, 0x20
cmp rcx, r11
jne 0x40cc48
test edx, edx
jne 0x40cbd4
mov eax, dword [rbp - 0x44]
test dword [rcx], eax
jne 0x40cbd4
inc r9
cmp qword [rbp - 0x50], r9
jne 0x40cba5
cmp r15d, 2
je 0x40d050
cmp r15d, 3
je 0x40d010
cmp r15d, 1
je 0x40d040
mov rdx, r14
xor r8d, r8d
cmp r12, r8
jbe 0x40cea1
lea rax, [r12 - 1]
mov r11, r12
sub rax, r8
sub r11, r8
cmp rax, 0x1e
jbe 0x40d5e1
mov r10, r11
shr r10, 5
shl r10, 7
vmovdqu64 ymm17, ymmword [0x006f0f80]
vmovdqu64 ymm4, ymmword [0x006f0fa0]
mov rax, rdx
lea r9, [rcx + r8*4]
add r10, rdx
nop dword [rax]
vmovdqu32 ymm0, ymmword [r9]
vmovdqu32 ymm3, ymmword [r9 + 0x40]
vmovdqu32 ymm18, ymmword [r9 + 0x20]
vmovdqu32 ymm6, ymmword [r9 + 0x60]
vmovdqu64 ymm2, ymm0
vmovdqu64 ymm16, ymm3
vpermt2w ymm2, ymm17, ymm18
vpermt2w ymm16, ymm17, ymm6
vpandq ymm5, ymm4, ymm16
vpand ymm1, ymm4, ymm2
vpsrlw ymm16, ymm16, 8
vpsrlw ymm2, ymm2, 8
vpackuswb ymm1, ymm1, ymm5
vpandq ymm16, ymm4, ymm16
vpand ymm2, ymm4, ymm2
vpermq ymm5, ymm1, 0xd8
vpackuswb ymm2, ymm2, ymm16
vpsrld ymm1, ymm0, 0x10
vpsrld ymm16, ymm18, 0x10
vpermt2w ymm1, ymm17, ymm16
vpsrld ymm19, ymm6, 0x10
vpsrld ymm16, ymm3, 0x10
vpsrld ymm6, ymm6, 0x18
vpsrld ymm0, ymm0, 0x18
vpsrld ymm18, ymm18, 0x18
vpsrld ymm3, ymm3, 0x18
vpermt2w ymm3, ymm17, ymm6
vpermt2w ymm16, ymm17, ymm19
vpermt2w ymm0, ymm17, ymm18
vpand ymm3, ymm4, ymm3
vpand ymm1, ymm4, ymm1
vpandq ymm16, ymm4, ymm16
vpand ymm0, ymm4, ymm0
vpackuswb ymm0, ymm0, ymm3
vpackuswb ymm1, ymm1, ymm16
vpermq ymm2, ymm2, 0xd8
vpermq ymm1, ymm1, 0xd8
vpermq ymm0, ymm0, 0xd8
vpunpcklbw ymm3, ymm0, ymm2
vpunpckhbw ymm0, ymm0, ymm2
vpunpcklbw ymm2, ymm1, ymm5
vpunpckhbw ymm1, ymm1, ymm5
vperm2i128 ymm5, ymm2, ymm1, 0x20
vperm2i128 ymm6, ymm3, ymm0, 0x20
vperm2i128 ymm1, ymm2, ymm1, 0x31
vperm2i128 ymm0, ymm3, ymm0, 0x31
vpunpckhbw ymm2, ymm6, ymm5
vpunpcklbw ymm3, ymm6, ymm5
vperm2i128 ymm5, ymm3, ymm2, 0x20
vperm2i128 ymm2, ymm3, ymm2, 0x31
vmovdqu8 ymmword [rax + 0x20], ymm2
vpunpcklbw ymm2, ymm0, ymm1
vpunpckhbw ymm0, ymm0, ymm1
vperm2i128 ymm1, ymm2, ymm0, 0x20
vperm2i128 ymm0, ymm2, ymm0, 0x31
vmovdqu8 ymmword [rax], ymm5
vmovdqu8 ymmword [rax + 0x40], ymm1
vmovdqu8 ymmword [rax + 0x60], ymm0
sub rax, 0xffffffffffffff80
sub r9, 0xffffffffffffff80
cmp rax, r10
jne 0x40cd00
mov rax, r11
and rax, 0xffffffffffffffe0
add r8, rax
lea rdx, [rdx + rax*4]
cmp rax, r11
je 0x40d5e9
mov rsi, rbx
vzeroupper
nop word [rax + rax]
mov eax, dword [rcx + r8*4]
inc r8
mov r9d, eax
mov byte [rdx + 3], al
mov byte [rdx + 2], ah
shr r9d, 0x10
shr eax, 0x18
mov byte [rdx + 1], r9b
mov byte [rdx], al
add rdx, 4
cmp r12, r8
ja 0x40ce78
mov rbx, rsi
call sub.msvcrt.dll_free
lea rcx, [rbp + 0x50]
lea r8d, [rdi - 4]
mov rdx, r14
call fcn.005c95c0
mov eax, dword [r14 + rdi - 4]
cmp dword [rbp + 0x50], eax
jne 0x40cc10
movzx esi, byte [r14]
xor eax, eax
test sil, sil
je 0x40cee6
jmp 0x40d063
inc rax
cmp byte [r14 + rax], 0
jne 0x40d060
cmp byte [rbx + rax], 0x31
je 0x40ced8
jmp 0x40cc10
cmp rsi, rax
jbe 0x40cc10
cmp r8, 5
jbe 0x40cc10
test rdx, rdx
je 0x40d5c8
mov eax, 1
xor r10d, r10d
xor r11d, r11d
xor r12d, r12d
mov ecx, eax
jmp 0x40cfc2
lea r9d, [r14 - 0x41]
cmp r9d, 0x19
ja 0x40cf47
add r14d, 0x20
mov eax, r14d
mov r10d, 1
mov r9d, ecx
shr r9d, 0x19
mov byte [rbp + r12 + 0x50], al
mov eax, r9d
and eax, 1
neg eax
shl ecx, 5
and ecx, 0x3fffffe0
and eax, 0x3b6a57b2
xor eax, ecx
mov ecx, r9d
shl ecx, 0x1e
sar ecx, 0x1f
and ecx, 0x26508e6d
xor ecx, eax
mov eax, r9d
shl eax, 0x1d
sar eax, 0x1f
and eax, 0x1ea119fa
xor eax, ecx
mov ecx, r9d
shl ecx, 0x1c
sar ecx, 0x1f
shl r9d, 0x1b
and ecx, 0x3d4233dd
sar r9d, 0x1f
xor ecx, eax
and r9d, 0x2a1462b3
xor ecx, r9d
sar r14d, 5
inc r12
xor ecx, r14d
cmp rdx, r12
je 0x40d140
movsx r14d, byte [rbx + r12]
lea r9d, [r14 - 0x21]
mov eax, r14d
cmp r9d, 0x5d
ja 0x40cc10
lea r9d, [r14 - 0x61]
cmp r9d, 0x19
ja 0x40cf30
mov r11d, 1
jmp 0x40cf47
xor edx, edx
test r12, r12
jne 0x40cc3d
jmp 0x40cc73
mov r8d, dword [rcx]
lea rdx, [r14 + 1]
mov eax, r8d
shr eax, 0x10
mov byte [r14], al
mov eax, r8d
mov byte [rdx], ah
lea rsi, [rdx + 1]
mov byte [rsi], r8b
lea rdx, [rsi + 1]
mov r8d, 1
jmp 0x40ccaf
mov r8d, dword [rcx]
mov rsi, r14
jmp 0x40d029
mov r8d, dword [rcx]
mov rdx, r14
jmp 0x40d020
add rbx, rax
cmp byte [rbx], 0x31
je 0x40cc10
mov rax, qword [0x0074c410]
cmp byte [rax], 0
jne 0x40d120
cmp sil, 5
je 0x40d0d8
cmp sil, 0xc4
je 0x40d0d8
mov r12d, 0x19
cmp rdi, 0x18
jbe 0x40cc13
mov rax, qword [rbp + 0x110]
vmovdqu xmm6, xmmword [r14 + 1]
mov edx, 0xffffa976
mov word [rax], dx
mov byte [rax + 2], 0x14
vmovups xmmword [rax + 3], xmm6
mov rdi, qword [rbp + 0x110]
mov eax, dword [r14 + 0x11]
mov ecx, 0xffffac88
mov dword [rdi + 0x13], eax
mov word [rdi + 0x17], cx
jmp 0x40cc13
mov r12d, 0x17
cmp rdi, 0x16
jbe 0x40cc13
mov rax, qword [rbp + 0x110]
vmovdqu xmm6, xmmword [r14 + 1]
mov r8d, 0x14a9
mov word [rax], r8w
vmovups xmmword [rax + 2], xmm6
mov rdi, qword [rbp + 0x110]
mov eax, dword [r14 + 0x11]
mov byte [rdi + 0x16], 0x87
mov dword [rdi + 0x12], eax
jmp 0x40cc13
lea rdx, str.Coinbase_address_uses_B58_coding
mov ecx, 4
call fcn.0040aec0
jmp 0x40d07c
mov eax, ecx
shr ecx, 0x19
mov r9d, ecx
and r9d, 1
neg r9d
shl eax, 5
and r9d, 0x3b6a57b2
and eax, 0x3fffffe0
xor eax, r9d
mov r9d, ecx
shl r9d, 0x1e
sar r9d, 0x1f
and r9d, 0x26508e6d
xor eax, r9d
mov r9d, ecx
shl r9d, 0x1d
sar r9d, 0x1f
and r9d, 0x1ea119fa
xor eax, r9d
mov r9d, ecx
shl r9d, 0x1c
sar r9d, 0x1f
shl ecx, 0x1b
and r9d, 0x3d4233dd
sar ecx, 0x1f
and ecx, 0x2a1462b3
xor eax, r9d
mov byte [rbp + rdx + 0x50], 0
xor eax, ecx
mov r12d, eax
lea rcx, [rbx + rdx]
nop word [rax + rax]
movzx eax, byte [r13]
mov r9d, r12d
shl r12d, 5
shr r9d, 0x19
and r12d, 0x3fffffe0
and eax, 0x1f
xor eax, r12d
mov r12d, r9d
and r12d, 1
neg r12d
and r12d, 0x3b6a57b2
xor eax, r12d
mov r12d, r9d
shr r12d, 4
neg r12d
and r12d, 0x2a1462b3
xor eax, r12d
mov r12d, r9d
shl r12d, 0x1e
sar r12d, 0x1f
and r12d, 0x26508e6d
xor eax, r12d
mov r12d, r9d
shl r12d, 0x1d
sar r12d, 0x1f
and r12d, 0x1ea119fa
shl r9d, 0x1c
xor eax, r12d
mov r12d, r9d
sar r12d, 0x1f
and r12d, 0x3d4233dd
inc r13
xor r12d, eax
cmp r13, rcx
jne 0x40d1c0
inc rdx
mov eax, r12d
cmp rsi, rdx
jbe 0x40d340
mov rcx, r8
sub rcx, rsi
lea r12, [0x006f08a0]
mov r13d, 1
lea r14, [rbp + rcx - 0x10]
jmp 0x40d310
sub ecx, 0x41
cmp cl, 0x19
cmovbe r10d, r13d
cmp r9d, 0xffffffff
je 0x40cc10
mov ecx, eax
shr ecx, 0x19
mov r15d, ecx
and r15d, 1
neg r15d
shl eax, 5
and eax, 0x3fffffe0
and r15d, 0x3b6a57b2
xor r15d, eax
mov eax, ecx
shl eax, 0x1e
sar eax, 0x1f
and eax, 0x26508e6d
xor eax, r15d
mov r15d, ecx
shl r15d, 0x1d
sar r15d, 0x1f
and r15d, 0x1ea119fa
xor r15d, eax
mov eax, ecx
shl eax, 0x1c
sar eax, 0x1f
shl ecx, 0x1b
and eax, 0x3d4233dd
sar ecx, 0x1f
and ecx, 0x2a1462b3
xor eax, r15d
xor eax, ecx
lea rcx, [rdx + 6]
xor eax, r9d
cmp rsi, rcx
jbe 0x40d308
mov byte [r14 + rdx], r9b
inc rdx
cmp rsi, rdx
jbe 0x40d340
movzx ecx, byte [rbx + rdx]
mov r9d, 0xffffffff
test cl, cl
js 0x40d327
movsx r9, cl
movsx r9d, byte [r12 + r9]
lea r15d, [rcx - 0x61]
cmp r15b, 0x19
ja 0x40d280
mov r11d, 1
jmp 0x40d28a
test r10d, r11d
jne 0x40cc10
cmp eax, 1
jne 0x40cc10
lea rax, [r8 - 7]
cmp rax, 0x40
ja 0x40cc10
movzx esi, byte [rbp - 0x10]
cmp sil, 0x10
ja 0x40cc10
test rax, rax
je 0x40cc10
movzx ecx, byte [rbp - 0xf]
cmp r8, 8
je 0x40cc10
vmovdqu64 ymm21, ymmword [0x006f0fc0]
vmovdqu64 ymm16, ymmword [0x006f0f80]
vmovdqu64 ymm5, ymmword [0x006f0fa0]
vmovdqu64 ymm20, ymmword [0x006f0fe0]
vmovdqu64 ymm19, ymmword [0x006f1000]
vmovdqu64 ymm18, ymmword [0x006f1020]
vmovdqu64 ymm17, ymmword [0x006f1040]
vmovdqu64 ymm6, ymmword [0x006f1060]
lea r13, [rbp + r8 - 0x16]
mov edx, 5
xor r8d, r8d
lea r10, [rbp - 0xe]
lea r12, [rbp - 0x40]
nop word [rax + rax]
movzx eax, byte [r10]
shl ecx, 5
or ecx, eax
lea eax, [rdx + 5]
inc r10
cmp eax, 7
jle 0x40d5f1
lea r11d, [rdx - 3]
mov r9d, r11d
shr r9d, 3
lea ebx, [r9 + 1]
cmp r11d, 0xf7
jbe 0x40d5b0
mov r14d, ebx
shr r14d, 5
vpbroadcastd ymm4, edx
shl r14, 5
lea rdx, [r12 + r8]
vpaddd ymm4, ymm4, ymm21
vpbroadcastd ymm3, ecx
add r14, rdx
nop dword [rax + rax]
vmovdqu64 ymm1, ymm4
vpaddd ymm0, ymm1, ymm19
vpaddd ymm2, ymm1, ymm18
vpsrlvd ymm2, ymm3, ymm2
vpsrlvd ymm0, ymm3, ymm0
add rdx, 0x20
vpermt2w ymm0, ymm16, ymm2
vpaddd ymm2, ymm1, ymm17
vpaddd ymm1, ymm1, ymm6
vpsrlvd ymm1, ymm3, ymm1
vpsrlvd ymm2, ymm3, ymm2
vpand ymm0, ymm5, ymm0
vpermt2w ymm2, ymm16, ymm1
vpand ymm1, ymm5, ymm2
vpackuswb ymm0, ymm0, ymm1
vpermq ymm0, ymm0, 0xd8
vmovdqu8 ymmword [rdx - 0x20], ymm0
vpaddd ymm4, ymm4, ymm20
cmp r14, rdx
jne 0x40d450
mov r14d, ebx
and r14d, 0xffffffe0
mov edx, r14d
neg edx
lea eax, [rax + rdx*8]
mov edx, r14d
add rdx, r8
cmp r14d, ebx
je 0x40d4eb
add rdx, r12
nop dword [rax]
sub eax, 8
shrx ebx, ecx, eax
inc rdx
mov byte [rdx - 1], bl
cmp eax, 7
jg 0x40d4d8
mov eax, r9d
neg eax
lea edx, [r11 + rax*8]
lea r8, [r8 + r9 + 1]
cmp r10, r13
jne 0x40d3f0
mov eax, 8
sub eax, edx
shlx ecx, ecx, eax
test cl, cl
jne 0x40d5c0
cmp edx, 4
jg 0x40d5c0
lea rax, [r8 - 2]
cmp rax, 0x26
ja 0x40d5c0
cmp r8, 0x14
setne dl
cmp r8, 0x20
setne al
test dl, al
je 0x40d544
test sil, sil
je 0x40d5c0
lea r12, [r8 + 2]
cmp rdi, r12
jb 0x40d5a0
lea eax, [rsi + 0x50]
test sil, sil
cmovne esi, eax
mov rax, qword [rbp + 0x110]
lea rdx, [rbp - 0x40]
lea rcx, [rax + 2]
mov byte [rax], sil
mov byte [rax + 1], r8b
vzeroupper
call sub.msvcrt.dll_memcpy
mov rax, qword [0x0074c410]
cmp byte [rax], 0
je 0x40cc13
lea rdx, str.Coinbase_address_uses_Bech32_coding
mov ecx, 4
call fcn.0040aec0
jmp 0x40cc13
xor r12d, r12d
vzeroupper
jmp 0x40cc13
mov rdx, r8
jmp 0x40d4ce
vzeroupper
jmp 0x40cc10
mov byte [rbp + 0x50], 0
xor r11d, r11d
xor r10d, r10d
mov eax, 0x20
mov edx, 1
jmp 0x40d25f
mov rsi, rbx
jmp 0x40ce78
vzeroupper
jmp 0x40cea1
mov edx, eax
jmp 0x40d4f9