Function at 0x642a00
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x148
movaps xmmword [rsp + 0x130], xmm6
mov rdi, rdx
mov rbx, rcx
mov qword [rsp + 0x38], 0
mov qword [rsp + 0x40], 1
mov qword [rsp + 0x48], 0
lea rcx, [rsp + 0x38]
mov r8d, 0x20
xor edx, edx
call sym.alloc::raw_vec::RawVec_T_A_::reserve::do_reserve_and_handle::h05486b747d2a9623
mov rax, qword [rsp + 0x40]
mov rsi, qword [rsp + 0x48]
movups xmm0, xmmword [rbx + 0x40]
movups xmm1, xmmword [rbx + 0x50]
movups xmmword [rax + rsi + 0x10], xmm1
movups xmmword [rax + rsi], xmm0
lea rcx, [rsi + 0x20]
mov qword [rsp + 0x48], rcx
cmp dword [rbx], 3
mov rdx, qword [rsp + 0x38]
jne 0x642a9b
cmp rcx, rdx
jne 0x642a90
lea rcx, [rsp + 0x38]
call sym.alloc::raw_vec::RawVec_T_A_::grow_one::h07ee46059c31db59
mov rax, qword [rsp + 0x40]
mov byte [rax + rsi + 0x20], 0
add rsi, 0x21
jmp 0x642acf
cmp rcx, rdx
jne 0x642aaf
lea rcx, [rsp + 0x38]
call sym.alloc::raw_vec::RawVec_T_A_::grow_one::h07ee46059c31db59
mov rax, qword [rsp + 0x40]
mov byte [rax + rsi + 0x20], 1
add rsi, 0x21
mov qword [rsp + 0x48], rsi
lea rdx, [rsp + 0x38]
mov rcx, rbx
call sym.__xelis_common::api::data::DataElement_as_xelis_common::serializer::Serializer_::write::h9e39f778ab116d7e
mov rsi, qword [rsp + 0x48]
mov r15, qword [rsp + 0x38]
mov r14, qword [rsp + 0x40]
mov byte [rsp + 0x28], 1
mov word [rsp + 0x20], 5
lea rcx, [rsp + 0x60]
mov rdx, r14
mov r8, rsi
mov r9w, 8
call sym.xelis_common::crypto::bech32::convert_bits::hc1620a36aeb7ca25
movzx esi, byte [rsp + 0x60]
cmp sil, 0xd
jne 0x642d4e
mov rax, qword [rsp + 0x68]
mov qword [rsp + 0xb8], rax
mov r13, qword [rsp + 0x70]
mov r12, qword [rsp + 0x78]
test r15, r15
je 0x642b36
mov rcx, qword [0x0083c108]
xor edx, edx
mov r8, r14
call fcn.006f5b74
movzx ebx, byte [rbx + 0x60]
movzx eax, byte [0x0083c308]
mov edx, 3
xor ecx, ecx
call sym.std::sys::pal::windows::alloc::process_heap_alloc::h5a8f05db6a24897c
test rax, rax
mov qword [rsp + 0x50], r13
je 0x64346a
mov r15, rax
test bl, bl
lea rax, [0x007b9968]
lea rcx, [0x007b9950]
cmove rcx, rax
movzx eax, byte [rcx + 2]
mov byte [r15 + 2], al
movzx ebp, word [rcx]
mov word [r15], bp
lea eax, [rbp - 0x7f]
mov sil, 4
cmp al, 0xa2
jb 0x642c58
movzx ebp, byte [r15 + 1]
lea eax, [rbp - 0x7f]
cmp al, 0xa2
jb 0x642c58
movzx ebp, byte [r15 + 2]
lea eax, [rbp - 0x7f]
cmp al, 0xa2
jb 0x642c58
lea rcx, [rsp + 0x60]
mov r8d, 3
mov rdx, r15
call sym.alloc::str::__impl_str_::to_uppercase::he6ca943c9d4f4381
mov r8, qword [rsp + 0x68]
cmp qword [rsp + 0x70], 3
jne 0x642bec
movzx eax, word [r8]
xor ax, word [r15]
movzx ecx, byte [r8 + 2]
xor cl, byte [r15 + 2]
movzx ecx, cl
or cx, ax
je 0x642e64
cmp qword [rsp + 0x60], 0
je 0x642c02
mov rcx, qword [0x0083c108]
xor edx, edx
call fcn.006f5b74
lea rcx, [rsp + 0x60]
mov r8d, 3
mov rdx, r15
call sym.alloc::str::__impl_str_::to_lowercase::h94ec94b1a5be7b0d
mov r8, qword [rsp + 0x68]
cmp qword [rsp + 0x70], 3
jne 0x642c3f
movzx eax, word [r8]
xor ax, word [r15]
movzx ecx, byte [r8 + 2]
xor cl, byte [r15 + 2]
movzx ecx, cl
or cx, ax
je 0x642e64
cmp qword [rsp + 0x60], 0
je 0x642c55
mov rcx, qword [0x0083c108]
xor edx, edx
call fcn.006f5b74
mov sil, 5
mov rcx, qword [0x0083c108]
xor edx, edx
mov r8, r15
call fcn.006f5b74
cmp sil, 0xd
jne 0x642e4b
cmp qword [rsp + 0xb8], 0
je 0x642c91
mov rcx, qword [0x0083c108]
xor edx, edx
mov r8, qword [rsp + 0x50]
call fcn.006f5b74
mov qword [rsp + 0xd0], r13
mov qword [rsp + 0xd8], rbx
mov qword [rsp + 0xe0], r12
lea rax, [rsp + 0xd0]
mov qword [rsp + 0xf0], rax
lea rax, [sym._ZN60__LT_alloc..string..String_u20_as_u20_core..fmt..Display_GT_3fmt17h0a364b3164a9cb6eE.10040]
mov qword [rsp + 0xf8], rax
lea rax, [0x007d6b20]
mov qword [rsp + 0x100], rax
mov qword [rsp + 0x108], 1
mov qword [rsp + 0x120], 0
lea rax, [rsp + 0xf0]
mov qword [rsp + 0x110], rax
mov qword [rsp + 0x118], 1
mov rcx, qword [rdi + 0x20]
mov rdx, qword [rdi + 0x28]
lea r8, [rsp + 0x100]
call sym.core::fmt::write::he86909a848b2a697
cmp qword [rsp + 0xd0], 0
je 0x642e2f
mov r8, qword [rsp + 0xd8]
mov rcx, qword [0x0083c108]
xor edx, edx
mov ebx, eax
call fcn.006f5b74
mov eax, ebx
jmp 0x642e2f
movzx ebp, byte [rsp + 0x61]
mov eax, dword [rsp + 0x62]
mov dword [rsp + 0xb0], eax
movzx eax, word [rsp + 0x66]
mov word [rsp + 0xb4], ax
mov r13, qword [rsp + 0x68]
mov rbx, qword [rsp + 0x70]
mov r12, qword [rsp + 0x78]
movups xmm6, xmmword [rsp + 0x80]
mov rdi, qword [rsp + 0x90]
test r15, r15
je 0x642da0
mov rcx, qword [0x0083c108]
xor edx, edx
mov r8, r14
call fcn.006f5b74
mov byte [rsp + 0x60], sil
mov byte [rsp + 0x61], bpl
mov eax, dword [rsp + 0xb0]
mov dword [rsp + 0x62], eax
movzx eax, word [rsp + 0xb4]
mov word [rsp + 0x66], ax
mov qword [rsp + 0x68], r13
mov qword [rsp + 0x70], rbx
mov qword [rsp + 0x78], r12
movups xmmword [rsp + 0x80], xmm6
mov qword [rsp + 0x90], rdi
cmp sil, 0xa
je 0x642df7
movzx eax, sil
mov esi, 8
cmp eax, 9
je 0x642e12
jmp 0x642e2d
mov esi, 0x20
test r13, r13
je 0x642e12
mov rcx, qword [0x0083c108]
xor edx, edx
mov r8, rbx
call fcn.006f5b74
cmp qword [rsp + rsi + 0x60], 0
je 0x642e2d
mov r8, qword [rsp + rsi + 0x68]
mov rcx, qword [0x0083c108]
xor edx, edx
call fcn.006f5b74
mov al, 1
movaps xmm6, xmmword [rsp + 0x130]
add rsp, 0x148
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
mov r14, qword [rsp + 0x50]
cmp qword [rsp + 0xb8], 0
jne 0x642d8f
jmp 0x642da0
cmp qword [rsp + 0x60], 0
je 0x642e7a
mov rcx, qword [0x0083c108]
xor edx, edx
call fcn.006f5b74
lea rcx, [rsp + 0x60]
mov r8d, 3
mov rdx, r15
call sym.alloc::str::__impl_str_::to_lowercase::h94ec94b1a5be7b0d
mov rcx, qword [0x0083c108]
xor esi, esi
xor edx, edx
mov r8, r15
call fcn.006f5b74
mov rax, qword [rsp + 0x60]
mov qword [rsp + 0xc8], rax
mov r15, qword [rsp + 0x68]
mov rbx, qword [rsp + 0x70]
mov qword [rsp + 0x98], 0
mov qword [rsp + 0xa0], 1
mov qword [rsp + 0xa8], 0
test r12, r12
je 0x642f04
lea rcx, [rsp + 0x98]
xor edx, edx
mov r8, r12
call sym.alloc::raw_vec::RawVec_T_A_::reserve::do_reserve_and_handle::h05486b747d2a9623
mov rax, qword [rsp + 0xa0]
mov rsi, qword [rsp + 0xa8]
jmp 0x642f09
mov eax, 1
mov qword [rsp + 0x58], rax
lea rcx, [rax + rsi]
mov rdx, r13
mov r8, r12
call sym.memcpy
add rsi, r12
mov qword [rsp + 0xe8], rsi
mov qword [rsp + 0xa8], rsi
mov qword [rsp + 0x38], 0
mov qword [rsp + 0x40], 1
mov qword [rsp + 0x48], 0
lea rcx, [rsp + 0x60]
mov rdx, r15
mov qword [rsp + 0xc0], rbx
mov r8, rbx
call sym.xelis_common::crypto::bech32::hrp_expand::hbcc5318c0eaae8c7
mov rsi, qword [rsp + 0x60]
mov rbx, qword [rsp + 0x68]
mov r13, qword [rsp + 0x70]
test r13, r13
je 0x642f92
lea rcx, [rsp + 0x38]
xor edx, edx
mov r8, r13
call sym.alloc::raw_vec::RawVec_T_A_::reserve::do_reserve_and_handle::h05486b747d2a9623
mov rbp, qword [rsp + 0x40]
mov r14, qword [rsp + 0x48]
jmp 0x642f9a
mov ebp, 1
xor r14d, r14d
lea rcx, [r14 + rbp]
mov rdx, rbx
mov r8, r13
call sym.memcpy
add r14, r13
mov qword [rsp + 0x48], r14
test rsi, rsi
je 0x642fc7
mov rcx, qword [0x0083c108]
xor edx, edx
mov r8, rbx
call fcn.006f5b74
mov rsi, qword [rsp + 0x38]
mov rax, rsi
sub rax, r14
cmp rax, r12
mov rbx, qword [rsp + 0x50]
jae 0x642ffb
lea rcx, [rsp + 0x38]
mov rdx, r14
mov r8, r12
call sym.alloc::raw_vec::RawVec_T_A_::reserve::do_reserve_and_handle::h05486b747d2a9623
mov r14, qword [rsp + 0x48]
mov rsi, qword [rsp + 0x38]
mov rbp, qword [rsp + 0x40]
lea rcx, [r14 + rbp]
mov rdx, rbx
mov r8, r12
call sym.memcpy
add r14, r12
mov qword [rsp + 0x48], r14
sub rsi, r14
cmp rsi, 5
ja 0x643038
lea rcx, [rsp + 0x38]
mov r8d, 6
mov rdx, r14
call sym.alloc::raw_vec::RawVec_T_A_::reserve::do_reserve_and_handle::h05486b747d2a9623
mov rbp, qword [rsp + 0x40]
mov r14, qword [rsp + 0x48]
mov rax, r14
mov word [rbp + r14 + 4], 0
mov dword [rbp + r14], 0
add rax, 6
mov qword [rsp + 0x48], rax
je 0x6430f4
mov esi, 1
xor ecx, ecx
nop word cs:[rax + rax]
mov edx, esi
shl edx, 5
and edx, 0x3fffffe0
movzx r8d, byte [rbp + rcx]
xor r8d, edx
mov edx, r8d
xor edx, 0x3b6a57b2
test esi, 0x2000000
cmove edx, r8d
mov r8d, edx
xor r8d, 0x26508e6d
test esi, 0x4000000
cmove r8d, edx
mov edx, r8d
xor edx, 0x1ea119fa
test esi, 0x8000000
cmove edx, r8d
mov r8d, edx
xor r8d, 0x3d4233dd
test esi, 0x10000000
cmove r8d, edx
mov edx, r8d
xor edx, 0x2a1462b3
test esi, 0x20000000
mov esi, edx
cmove esi, r8d
inc rcx
cmp rax, rcx
jne 0x643070
xor esi, 1
jmp 0x6430f6
xor esi, esi
cmp qword [rsp + 0x38], 0
je 0x64310f
mov rcx, qword [0x0083c108]
xor edx, edx
mov r8, rbp
call fcn.006f5b74
mov rax, qword [rsp + 0x98]
mov r13, qword [rsp + 0xe8]
sub rax, r13
cmp rax, 5
ja 0x643158
lea rcx, [rsp + 0x98]
mov r8d, 6
mov rdx, r13
call sym.alloc::raw_vec::RawVec_T_A_::reserve::do_reserve_and_handle::h05486b747d2a9623
mov r14, qword [rsp + 0xc0]
mov rbx, qword [rsp + 0xa0]
mov r13, qword [rsp + 0xa8]
jmp 0x643165
mov rbx, qword [rsp + 0x58]
mov r14, qword [rsp + 0xc0]
mov eax, esi
and al, 0x1f
movzx eax, al
shl rax, 0x28
mov ecx, esi
shr ecx, 5
and ecx, 0x1f
shl rcx, 0x20
or rcx, rax
mov eax, esi
shl eax, 0xe
and eax, 0x1f000000
or rax, rcx
mov ecx, esi
and ecx, 0xf8000
lea rax, [rax + rcx*2]
mov ecx, esi
shr ecx, 0xc
and ecx, 0x1f00
or rcx, rax
shr esi, 0x19
or rsi, rcx
mov dword [rbx + r13], esi
shr rsi, 0x20
mov word [rbx + r13 + 4], si
add r13, 6
mov qword [rsp + 0xa8], r13
mov qword [rsp + 0x38], 0
mov qword [rsp + 0x40], 1
mov qword [rsp + 0x48], 0
test r14, r14
je 0x64327d
lea rcx, [rsp + 0x38]
xor edx, edx
mov r8, r14
call sym.alloc::raw_vec::RawVec_T_A_::reserve::do_reserve_and_handle::h05486b747d2a9623
mov rsi, qword [rsp + 0x40]
mov r12, qword [rsp + 0x48]
cmp r14, 0x20
jb 0x64321a
lea rax, [r12 + rsi]
sub rax, r15
cmp rax, 0x20
jae 0x643425
mov rax, r15
mov rcx, r15
add r14, r15
mov edx, r14d
sub edx, eax
and edx, 3
je 0x643243
nop dword [rax]
movzx r8d, byte [rcx]
inc rcx
mov byte [rsi + r12], r8b
inc r12
dec rdx
jne 0x643230
sub rax, r14
cmp rax, 0xfffffffffffffffc
ja 0x643285
movzx eax, byte [rcx]
mov byte [rsi + r12], al
movzx eax, byte [rcx + 1]
mov byte [rsi + r12 + 1], al
movzx eax, byte [rcx + 2]
mov byte [rsi + r12 + 2], al
movzx eax, byte [rcx + 3]
mov byte [rsi + r12 + 3], al
add r12, 4
add rcx, 4
cmp rcx, r14
jne 0x64324c
jmp 0x643285
mov esi, 1
xor r12d, r12d
mov qword [rsp + 0x48], r12
movzx eax, byte [0x0083c308]
mov edx, 1
xor ecx, ecx
call sym.std::sys::pal::windows::alloc::process_heap_alloc::h5a8f05db6a24897c
test rax, rax
je 0x64347b
mov r14, rax
mov byte [rax], 0x3a
mov al, 0x3a
cmp qword [rsp + 0x38], r12
jne 0x6432d6
lea rcx, [rsp + 0x38]
mov r8d, 1
mov rdx, r12
call sym.alloc::raw_vec::RawVec_T_A_::reserve::do_reserve_and_handle::h05486b747d2a9623
mov rsi, qword [rsp + 0x40]
mov r12, qword [rsp + 0x48]
movzx eax, byte [r14]
mov qword [rsp + 0x58], rbx
mov byte [rsi + r12], al
inc r12
mov qword [rsp + 0x48], r12
mov rcx, qword [0x0083c108]
xor edx, edx
mov r8, r14
call fcn.006f5b74
test r13, r13
je 0x64335b
mov r14, r13
xor esi, esi
lea rbp, [0x007b8571]
jmp 0x643324
mov rbx, qword [rsp + 0x40]
mov byte [rbx + r12], r13b
inc r12
mov qword [rsp + 0x48], r12
inc rsi
cmp r14, rsi
je 0x643360
mov rax, qword [rsp + 0x58]
movzx r13d, byte [rax + rsi]
cmp r13, 0x20
ja 0x6433ba
cmp r13b, 0x20
je 0x6433c8
movzx r13d, byte [r13 + rbp]
cmp r12, qword [rsp + 0x38]
jne 0x64330b
lea rcx, [rsp + 0x38]
call sym.alloc::raw_vec::RawVec_T_A_::grow_one::h07ee46059c31db59
jmp 0x64330b
mov rbx, qword [rsp + 0x40]
mov r13, qword [rsp + 0x38]
lea rcx, [rsp + 0x60]
mov rdx, rbx
mov r8, r12
call sym.core::str::converts::from_utf8::h7e3ffe505e8498fd
cmp qword [rsp + 0x60], 0
je 0x643397
movabs rax, 0x8000000000000000
cmp r13, rax
jne 0x6433eb
mov r13, rbx
mov rbx, r12
mov r12, qword [rsp + 0x68]
mov r8, qword [rsp + 0x58]
cmp qword [rsp + 0x98], 0
je 0x6433b5
mov rcx, qword [0x0083c108]
xor edx, edx
call fcn.006f5b74
mov sil, 0xd
jmp 0x643411
mov sil, 6
mov ebp, r13d
mov r13d, 0x20
jmp 0x6433ce
mov sil, 0xc
mov bpl, 0x20
cmp qword [rsp + 0x38], 0
je 0x6433e9
mov r8, qword [rsp + 0x40]
mov rcx, qword [0x0083c108]
xor edx, edx
call fcn.006f5b74
jmp 0x6433f3
movups xmm6, xmmword [rsp + 0x68]
mov sil, 9
cmp qword [rsp + 0x98], 0
je 0x643411
mov rcx, qword [0x0083c108]
xor edx, edx
mov r8, qword [rsp + 0x58]
call fcn.006f5b74
cmp qword [rsp + 0xc8], 0
jne 0x642c58
jmp 0x642c69
mov rax, r14
and rax, 0xffffffffffffffe0
lea rcx, [r12 + rsi]
add rcx, 0x10
add r12, rax
xor edx, edx
movups xmm0, xmmword [r15 + rdx]
movups xmm1, xmmword [r15 + rdx + 0x10]
movups xmmword [rcx + rdx - 0x10], xmm0
movups xmmword [rcx + rdx], xmm1
add rdx, 0x20
cmp rax, rdx
jne 0x643439
cmp r14, rax
je 0x643285
add rax, r15
mov rcx, rax
jmp 0x643220
mov ecx, 1
mov edx, 3
call sym.alloc::raw_vec::handle_error::h5313441c9bd13595
jmp 0x64348a
mov ecx, 1
mov edx, 1
call sym.alloc::raw_vec::handle_error::h5313441c9bd13595
ud2