Function at 0x672980
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x88
mov qword [rsp + 0xd8], rdx
mov rbx, r9
mov qword [rsp + 0xe0], r8
mov qword [rsp + 0xd0], rcx
call fcn.00515d40
mov rcx, rax
mov r12, rax
call fcn.00671d70
mov rcx, qword [rsp + 0xd8]
mov r13, rax
call fcn.0053da30
mov ebp, eax
test r13, r13
je 0x672a64
test eax, eax
jle 0x672a64
mov rax, qword [rsp + 0xf8]
mov rcx, qword [rsp + 0xf0]
mov edx, 0xff
mov r8, qword [rax]
call sub.msvcrt.dll_memset
mov r8d, ebx
lea r9, [0x008f86c0]
xor ecx, ecx
lea rdx, [rsp + 0xe0]
call fcn.004eb350
mov rbx, rax
test rax, rax
je 0x673100
mov rax, qword [rax + 0x10]
cmp dword [rax], ebp
je 0x672b20
mov dword [rsp + 0x20], 0x12b
lea r9, str.crypto_sm2_sm2_crypt.c
mov r8d, 0x68
mov edx, 0x66
mov ecx, 0x35
xor edi, edi
xor r15d, r15d
call fcn.005292e0
xor r14d, r14d
xor r10d, r10d
xor ebp, ebp
xor esi, esi
jmp 0x672a75
xor edi, edi
xor r10d, r10d
xor r15d, r15d
xor r14d, r14d
xor ebx, ebx
xor ebp, ebp
xor esi, esi
mov rax, qword [rsp + 0xf8]
xor edx, edx
mov qword [rsp + 0x40], r10
xor r12d, r12d
mov rcx, qword [rsp + 0xf0]
mov r8, qword [rax]
call sub.msvcrt.dll_memset
mov r10, qword [rsp + 0x40]
mov rcx, r10
mov r8d, 0x180
lea rdx, str.crypto_sm2_sm2_crypt.c
call fcn.0054a3c0
mov rcx, r14
mov r8d, 0x181
lea rdx, str.crypto_sm2_sm2_crypt.c
call fcn.0054a3c0
mov r8d, 0x182
lea rdx, str.crypto_sm2_sm2_crypt.c
mov rcx, r15
call fcn.0054a3c0
mov rcx, rbp
call fcn.00517d80
mov rcx, rsi
call fcn.005f0ec0
lea rdx, [0x008f86c0]
mov rcx, rbx
call fcn.004ed150
mov rcx, rdi
call fcn.0052b490
mov eax, r12d
add rsp, 0x88
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
mov rdx, qword [rbx + 0x18]
mov rax, qword [rax + 8]
mov rdi, qword [rdx + 8]
mov qword [rsp + 0x58], rax
mov eax, dword [rdx]
mov qword [rsp + 0x50], rdi
mov dword [rsp + 0x40], eax
call fcn.005f0db0
mov rsi, rax
test rax, rax
je 0x6730c0
mov rcx, rax
call fcn.005f0f80
mov rcx, rsi
call fcn.005f1150
mov rcx, rsi
mov qword [rsp + 0x60], rax
call fcn.005f1150
mov rdi, rax
test rax, rax
je 0x673120
movsxd rax, dword [rsp + 0x40]
mov r8d, 0x142
lea rdx, str.crypto_sm2_sm2_crypt.c
mov rcx, rax
mov qword [rsp + 0x68], rax
call fcn.0054a590
mov r8d, 0x143
lea rdx, str.crypto_sm2_sm2_crypt.c
mov qword [rsp + 0x48], rax
lea rax, [r13 + r13]
mov rcx, rax
mov qword [rsp + 0x70], rax
call fcn.0054a590
lea rdx, str.crypto_sm2_sm2_crypt.c
mov r8d, 0x144
mov r14, rax
movsxd rax, ebp
mov rcx, rax
mov qword [rsp + 0x78], rax
call fcn.0054a590
mov r10, qword [rsp + 0x48]
mov r15, rax
test r10, r10
sete dl
test r14, r14
sete al
or dl, al
jne 0x673085
test r15, r15
je 0x673085
mov rcx, r12
mov qword [rsp + 0x48], r10
call fcn.00517220
mov r10, qword [rsp + 0x48]
test rax, rax
mov rbp, rax
je 0x673154
mov r9, qword [rbx + 8]
mov qword [rsp + 0x20], rsi
mov rdx, rax
mov rcx, r12
mov r8, qword [rbx]
mov qword [rsp + 0x48], r10
call fcn.005182a0
mov r10, qword [rsp + 0x48]
test eax, eax
je 0x673050
mov rcx, qword [rsp + 0xd0]
mov qword [rsp + 0x48], r10
call fcn.00515da0
mov qword [rsp + 0x28], rsi
xor r8d, r8d
mov r9, rbp
mov qword [rsp + 0x20], rax
mov rdx, rbp
mov rcx, r12
call fcn.00519470
mov r10, qword [rsp + 0x48]
test eax, eax
je 0x673050
mov qword [rsp + 0x20], rsi
mov r8, qword [rsp + 0x60]
mov r9, rdi
mov rdx, rbp
mov rcx, r12
call fcn.00518720
mov r10, qword [rsp + 0x48]
test eax, eax
je 0x673050
mov rcx, qword [rsp + 0x60]
mov r8d, r13d
mov rdx, r14
call fcn.004fa580
mov r10, qword [rsp + 0x48]
test eax, eax
js 0x673173
lea r12, [r14 + r13]
mov r8d, r13d
mov rcx, rdi
mov rdx, r12
call fcn.004fa580
mov r10, qword [rsp + 0x48]
test eax, eax
js 0x673173
mov r9, qword [rsp + 0x70]
mov rdx, qword [rsp + 0x68]
mov rcx, r10
mov r8, r14
mov rax, qword [rsp + 0xd8]
mov qword [rsp + 0x28], 0
mov qword [rsp + 0x20], 0
mov qword [rsp + 0x30], rax
call fcn.0062a6e0
mov r10, qword [rsp + 0x48]
test eax, eax
je 0x673173
mov eax, dword [rsp + 0x40]
test eax, eax
je 0x672f57
mov rax, qword [rsp + 0xf0]
mov r11, qword [rsp + 0x50]
mov edi, dword [rsp + 0x40]
lea rdx, [rax + 0x10]
lea rax, [r11 + 0x10]
cmp qword [rsp + 0xf0], rax
setae al
cmp r11, rdx
lea ecx, [rdi - 1]
setae r8b
or eax, r8d
cmp ecx, 0xe
seta r8b
test al, r8b
je 0x6731f3
lea rax, [r10 + 0x10]
cmp qword [rsp + 0xf0], rax
setae r8b
cmp r10, rdx
setae al
or r8b, al
je 0x6731f3
shr edi, 4
xor eax, eax
mov rcx, r11
mov edx, edi
shl rdx, 4
nop dword [rax + rax]
movdqu xmm0, xmmword [rcx + rax]
movdqu xmm1, xmmword [r10 + rax]
mov rdi, qword [rsp + 0xf0]
pxor xmm0, xmm1
movups xmmword [rdi + rax], xmm0
add rax, 0x10
cmp rax, rdx
jne 0x672da0
mov edi, dword [rsp + 0x40]
mov eax, edi
and eax, 0xfffffff0
cmp edi, eax
je 0x672f57
mov r11, qword [rsp + 0x50]
movsxd rdx, eax
mov r9, qword [rsp + 0xf0]
movzx ecx, byte [r11 + rdx]
xor cl, byte [r10 + rdx]
mov byte [r9 + rdx], cl
lea edx, [rax + 1]
cmp edi, edx
je 0x672f57
movsxd rdx, edx
movzx ecx, byte [r11 + rdx]
xor cl, byte [r10 + rdx]
mov byte [r9 + rdx], cl
lea edx, [rax + 2]
cmp edi, edx
je 0x672f57
movsxd rdx, edx
movzx ecx, byte [r11 + rdx]
xor cl, byte [r10 + rdx]
mov byte [r9 + rdx], cl
lea edx, [rax + 3]
cmp edx, edi
je 0x672f57
movsxd rdx, edx
movzx ecx, byte [r11 + rdx]
xor cl, byte [r10 + rdx]
mov byte [r9 + rdx], cl
lea edx, [rax + 4]
cmp edi, edx
je 0x672f57
movsxd rdx, edx
movzx ecx, byte [r11 + rdx]
xor cl, byte [r10 + rdx]
mov byte [r9 + rdx], cl
lea edx, [rax + 5]
cmp edi, edx
je 0x672f57
movsxd rdx, edx
movzx ecx, byte [r11 + rdx]
xor cl, byte [r10 + rdx]
mov byte [r9 + rdx], cl
lea edx, [rax + 6]
cmp edi, edx
je 0x672f57
movsxd rdx, edx
movzx ecx, byte [r11 + rdx]
xor cl, byte [r10 + rdx]
mov byte [r9 + rdx], cl
lea edx, [rax + 7]
cmp edi, edx
je 0x672f57
movsxd rdx, edx
movzx ecx, byte [r11 + rdx]
xor cl, byte [r10 + rdx]
mov byte [r9 + rdx], cl
lea edx, [rax + 8]
cmp edi, edx
je 0x672f57
movsxd rdx, edx
movzx ecx, byte [r11 + rdx]
xor cl, byte [r10 + rdx]
mov byte [r9 + rdx], cl
lea edx, [rax + 9]
cmp edi, edx
je 0x672f57
movsxd rdx, edx
movzx ecx, byte [r11 + rdx]
xor cl, byte [r10 + rdx]
mov byte [r9 + rdx], cl
lea edx, [rax + 0xa]
cmp edi, edx
je 0x672f57
movsxd rdx, edx
movzx ecx, byte [r11 + rdx]
xor cl, byte [r10 + rdx]
mov byte [r9 + rdx], cl
lea edx, [rax + 0xb]
cmp edi, edx
je 0x672f57
movsxd rdx, edx
movzx ecx, byte [r11 + rdx]
xor cl, byte [r10 + rdx]
mov byte [r9 + rdx], cl
lea edx, [rax + 0xc]
cmp edi, edx
je 0x672f57
movsxd rdx, edx
movzx ecx, byte [r11 + rdx]
xor cl, byte [r10 + rdx]
mov byte [r9 + rdx], cl
lea edx, [rax + 0xd]
cmp edi, edx
je 0x672f57
movsxd rdx, edx
add eax, 0xe
movzx ecx, byte [r11 + rdx]
xor cl, byte [r10 + rdx]
mov byte [r9 + rdx], cl
cmp edi, eax
je 0x672f57
cdqe
movzx edx, byte [r10 + rax]
xor dl, byte [r11 + rax]
mov byte [r9 + rax], dl
mov qword [rsp + 0x40], r10
call fcn.0052b470
mov r10, qword [rsp + 0x40]
test rax, rax
mov rdi, rax
je 0x6731c5
mov rdx, qword [rsp + 0xd8]
mov rcx, rax
mov qword [rsp + 0x40], r10
call fcn.0052b4c0
mov r10, qword [rsp + 0x40]
test eax, eax
je 0x673192
mov r8, r13
mov rdx, r14
mov rcx, rdi
mov qword [rsp + 0x40], r10
call fcn.0052b970
mov r10, qword [rsp + 0x40]
test eax, eax
je 0x673192
mov r8, qword [rsp + 0x68]
mov rdx, qword [rsp + 0xf0]
mov rcx, rdi
call fcn.0052b970
mov r10, qword [rsp + 0x40]
test eax, eax
je 0x673192
mov r8, r13
mov rdx, r12
mov rcx, rdi
call fcn.0052b970
mov r10, qword [rsp + 0x40]
test eax, eax
je 0x673192
xor r8d, r8d
mov rdx, r15
mov rcx, rdi
call fcn.0052b990
mov r10, qword [rsp + 0x40]
test eax, eax
je 0x673192
mov r8, qword [rsp + 0x78]
mov rdx, qword [rsp + 0x58]
mov rcx, r15
call fcn.005c4720
mov r10, qword [rsp + 0x40]
test eax, eax
jne 0x673221
mov rax, qword [rsp + 0xf8]
mov rdx, qword [rsp + 0x68]
mov r12d, 1
mov qword [rax], rdx
jmp 0x672a9c
mov qword [rsp + 0x40], r10
lea r9, str.crypto_sm2_sm2_crypt.c
mov r8d, 0x10
mov dword [rsp + 0x20], 0x156
mov edx, 0x66
mov ecx, 0x35
xor edi, edi
call fcn.005292e0
mov r10, qword [rsp + 0x40]
jmp 0x672a75
lea r9, str.crypto_sm2_sm2_crypt.c
mov edx, 0x66
xor edi, edi
xor ebp, ebp
mov r8d, 0x41
mov ecx, 0x35
mov qword [rsp + 0x40], r10
mov dword [rsp + 0x20], 0x147
call fcn.005292e0
mov r10, qword [rsp + 0x40]
jmp 0x672a75
lea r9, str.crypto_sm2_sm2_crypt.c
mov edx, 0x66
xor edi, edi
xor ebp, ebp
mov dword [rsp + 0x20], 0x135
mov r8d, 0x41
xor r15d, r15d
xor r14d, r14d
mov ecx, 0x35
call fcn.005292e0
xor r10d, r10d
jmp 0x672a75
mov dword [rsp + 0x20], 0x126
lea r9, str.crypto_sm2_sm2_crypt.c
mov r8d, 0x64
jmp 0x672a44
mov r8d, 3
mov edx, 0x66
xor r15d, r15d
xor ebp, ebp
mov dword [rsp + 0x20], 0x13e
lea r9, str.crypto_sm2_sm2_crypt.c
mov ecx, 0x35
xor r14d, r14d
call fcn.005292e0
xor r10d, r10d
jmp 0x672a75
mov qword [rsp + 0x40], r10
lea r9, str.crypto_sm2_sm2_crypt.c
mov r8d, 0x41
mov dword [rsp + 0x20], 0x14d
jmp 0x67306a
mov qword [rsp + 0x40], r10
lea r9, str.crypto_sm2_sm2_crypt.c
mov r8d, 0x44
mov dword [rsp + 0x20], 0x15e
jmp 0x67306a
mov r8d, 6
mov edx, 0x66
mov ecx, 0x35
mov dword [rsp + 0x20], 0x170
lea r9, str.crypto_sm2_sm2_crypt.c
mov qword [rsp + 0x40], r10
call fcn.005292e0
mov r10, qword [rsp + 0x40]
jmp 0x672a75
mov r8d, 0x41
mov edx, 0x66
mov ecx, 0x35
mov dword [rsp + 0x20], 0x167
lea r9, str.crypto_sm2_sm2_crypt.c
call fcn.005292e0
mov r10, qword [rsp + 0x40]
jmp 0x672a75
xor eax, eax
mov r8, qword [rsp + 0x50]
mov rdi, qword [rsp + 0xf0]
jmp 0x673207
mov rax, rdx
movzx edx, byte [r8 + rax]
xor dl, byte [r10 + rax]
mov byte [rdi + rax], dl
lea rdx, [rax + 1]
cmp rax, rcx
jne 0x673204
jmp 0x672f57
mov r8d, 0x66
mov edx, 0x66
mov ecx, 0x35
mov dword [rsp + 0x20], 0x175
lea r9, str.crypto_sm2_sm2_crypt.c
call fcn.005292e0
mov r10, qword [rsp + 0x40]
jmp 0x672a75