Function at 0x14007c380
Capabilities:
Encode data using xor
Validate payment card number using luhn algorithm

Disassembly:
push rsi
push rdi
push rbp
push rbx
mov r8b, 1
test rdx, rdx
je 0x14007c3b8
mov r10, rdx
cmp rdx, 1
jne 0x14007c3c0
movzx eax, byte [rcx]
mov r9b, 1
cmp eax, 0x2b
je 0x14007c6a0
mov r11d, 1
cmp eax, 0x2d
je 0x14007c6a0
jmp 0x14007c4b0
xor r9d, r9d
jmp 0x14007c6a0
xor eax, eax
nop word cs:[rax + rax]
test al, al
jne 0x14007c3d0
movzx eax, byte [rcx]
xor edx, edx
nop dword [rax]
test dl, dl
jne 0x14007c3e0
cmp al, 0x2b
jne 0x14007c470
inc rcx
nop
mov eax, dword [0x140217518]
and eax, dword [0x14021751c]
xor eax, 0x38082180
and eax, 0x3d3a638a
cmp eax, 0xfdf156a8
je 0x14007c3f0
movabs r11, 0x3bb1aea2933a67c4
lea rax, [r10 + r11]
not r11
add r11, rax
nop word cs:[rax + rax]
mov eax, dword [0x140217520]
mov edx, dword [0x140217524]
not eax
not edx
or edx, eax
not edx
imul eax, edx, 0x77c8d94a
and eax, 0xbd8ee286
xor eax, 0x8b1c9de7
cmp eax, 0x21c7f207
jb 0x14007c430
cmp r10, 4
mov r10, r11
jb 0x14007c4b0
jmp 0x14007c578
mov eax, dword [0x140217510]
and eax, dword [0x140217514]
and eax, 0x5e662ed1
add eax, 0x28d7ff9e
not eax
and eax, 0x99aa8cf0
cmp eax, 0xc6f79657
je 0x14007c470
mov r11d, 2
cmp r10, 3
jae 0x14007c578
nop word cs:[rax + rax]
mov eax, dword [0x140217508]
xor edx, edx
div dword [0x14021750c]
and eax, 0x8b6270ac
add eax, 0x569af94b
cmp eax, 0xba86b639
ja 0x14007c4b0
xor r9d, r9d
nop word cs:[rax + rax]
mov eax, dword [0x140217540]
mov edx, dword [str.n_a3]
add eax, edx
add eax, 0x67b9ba1b
or eax, 0x2662250
movzx r10d, byte [rcx]
add r10d, 0xffffffd0
cmp r10d, 0xa
setae r8b
cmp eax, 0xc052373e
ja 0x14007c4e0
cmp r10d, 9
ja 0x14007c68f
mov edx, r9d
not dl
and dl, 0xa
mov eax, r9d
and al, 0xf5
mul dl
mov edx, eax
mov ebx, r9d
and bl, 0xa
or r9b, 0xa
mov eax, r9d
mul bl
add al, dl
mov rdx, r11
not rdx
lea r11, [rdx + r11*2]
inc rcx
mov r9d, r10d
add r9b, al
nop
mov eax, dword [0x140217548]
and eax, dword [0x14021754c]
not eax
or eax, 0xf7e8878e
cmp eax, 0x660ef253
je 0x14007c550
test r11, r11
jne 0x14007c4e0
jmp 0x14007c6a0
xor r9d, r9d
mov bl, 0xa
nop dword [rax]
test r10, r10
setne sil
je 0x14007c694
mov eax, dword [0x140217528]
xor edx, edx
div dword [0x14021752c]
mov edx, eax
xor eax, 0xa16a87b2
xor edx, 0x959d4eff
and edx, eax
imul rax, rdx, 0x1b9419b7
shr rax, 0x20
sub edx, eax
shr edx, 1
add edx, eax
shr edx, 0x1f
mov eax, r9d
mul bl
seto dil
cmp edx, 0xa2c2c156
ja 0x14007c58d
mov r11d, eax
mov eax, dword [0x140217530]
mov edx, dword [0x140217534]
mov r9d, eax
not r9d
and r9d, edx
not edx
and edx, eax
sub edx, r9d
or edx, 0x1f047c0
mov eax, edx
and eax, 0xa1f94fd6
and edx, 0x21a149c0
add edx, edx
sub eax, edx
cmp eax, 0x822f1496
je 0x14007c5d2
movzx r9d, byte [rcx]
mov eax, dword [0x140217538]
xor edx, edx
div dword [0x14021753c]
imul ebp, eax, 0xbcddeafb
add ebp, 0x38097cf1
lea eax, [r9 - 0x30]
cmp eax, 0xa
setae dl
cmp ebp, 0x27e630d6
jb 0x14007c610
or dl, dil
jne 0x14007c660
dec r10
inc rcx
add r11b, al
mov r9d, r11d
jae 0x14007c580
mov r9b, 2
mov r8d, esi
jmp 0x14007c6a0
mov ecx, dword [0x140217500]
sub ecx, dword [0x140217504]
xor ecx, 0x62a25332
add ecx, 0xe0ec25d3
cmp eax, 0xa
mov r9d, 0
adc r9b, 1
cmp ecx, 0xc4ede572
ja 0x14007c660
jmp 0x14007c6a0
mov r9b, 1
jmp 0x14007c6a0
mov r8d, esi
nop word [rax + rax]
mov eax, dword [0x140217550]
mov ecx, dword [0x140217554]
mov edx, ecx
not edx
mov r10d, eax
and r10d, edx
or edx, eax
not edx
imul edx, r10d
mov r10d, eax
and r10d, ecx
or eax, ecx
imul eax, r10d
add eax, edx
mov ecx, eax
not ecx
mov edx, eax
and edx, 0x7277503
and ecx, 0xf8d88afc
imul ecx, edx
mov edx, eax
and edx, 0xf8d88afc
or eax, 0xf8d88afc
imul eax, edx
add eax, ecx
imul rax, rax, 0x3a50c6a5
mov rcx, rax
shr rcx, 0x3c
mov edx, ecx
xor edx, 0xb62c2e4a
add edx, ecx
bt rax, 0x3c
sbb edx, 0
cmp edx, 0xe8adc47b
ja 0x14007c6a0
mov eax, r8d
mov edx, r9d
pop rbx
pop rbp
pop rdi
pop rsi
ret