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

Disassembly:
push rsi
push rdi
push rbp
push rbx
mov r8, rdx
nop word [rax + rax]
mov eax, dword [0x141dc5e68]
add eax, dword [0x141dc5e6c]
or eax, 0x99111636
xor eax, 0x4b38b2ce
imul rax, rax, 0x6cdc329f
shr rax, 0x3e
cmp eax, 0xe2af9873
je 0x14005b460
test r8, r8
je 0x14005b4c6
cmp r8, 1
jne 0x14005b4d1
xor eax, eax
nop word cs:[rax + rax]
test al, al
jne 0x14005b4a0
movzx r11d, byte [rcx]
movzx eax, r11b
mov r10b, 1
mov r9b, 1
cmp eax, 0x2b
je 0x14005b9ab
cmp eax, 0x2d
je 0x14005b9ab
jmp 0x14005b500
xor r10d, r10d
mov r9b, 1
jmp 0x14005b9ab
movzx r11d, byte [rcx]
nop word cs:[rax + rax]
mov eax, dword [0x141dc5e90]
xor edx, edx
div dword [0x141dc5e94]
xor eax, 0x90c6f92c
imul eax, eax, 0x7d0d3d27
cmp eax, 0xdd6b0a59
je 0x14005b4e0
mov eax, dword [0x141dc5e98]
imul eax, dword [0x141dc5e9c]
xor eax, 0xa0b90128
or eax, 0xf00be53
imul eax, eax, 0xb85681b9
cmp eax, 0x7731722f
jb 0x14005b500
cmp r11b, 0x2d
je 0x14005b634
movzx eax, r11b
cmp eax, 0x2b
jne 0x14005b590
inc rcx
lea rax, [r8 - 1]
nop
mov edx, dword [0x141dc5ea0]
xor edx, dword [0x141dc5ea4]
shr edx, 1
imul rdx, rdx, 0x508f39b1
shr rdx, 0x3d
xor edx, 0x907f0321
cmp edx, 0xda976a45
ja 0x14005b540
xor edx, edx
nop dword [rax]
test dl, dl
jne 0x14005b570
cmp r8, 3
jae 0x14005b70d
test rax, rax
jne 0x14005b5e8
jmp 0x14005b996
mov eax, dword [0x141dc5e78]
xor eax, dword [0x141dc5e7c]
xor eax, 0x51c80005
and eax, 0xd1c9104f
add eax, 0xa7144b56
cmp eax, 0x44acd50d
jb 0x14005b590
nop word cs:[rax + rax]
mov eax, dword [0x141dc5e80]
sub eax, dword [0x141dc5e84]
imul eax, eax, 0xc5712c0f
add eax, 0x5e9c9665
cmp eax, 0xb0a7b399
ja 0x14005b5c0
cmp r8, 2
jae 0x14005b710
mov r8d, 1
nop
mov eax, dword [0x141dc5eb0]
xor edx, edx
div dword [0x141dc5eb4]
imul rax, rax, 0x3c3a9955
shr rax, 0x3d
imul eax, eax, 0x4ccda72d
add eax, 0xc3a12657
movzx r10d, byte [rcx]
add r10d, 0xffffffd0
cmp r10d, 0xa
setae r9b
cmovae r10d, r8d
cmp eax, 0xd464ed39
ja 0x14005b5f0
jmp 0x14005b9ab
inc rcx
lea r11, [r8 - 1]
nop dword [rax + rax]
mov eax, dword [0x141dc5ea8]
and eax, dword [0x141dc5eac]
and eax, 0x1367530b
imul eax, eax, 0xfcf3b24
or eax, 0xc3b0f423
cmp eax, 0x8ae2eb3c
je 0x14005b640
cmp r8, 3
jae 0x14005b883
test r11, r11
je 0x14005b996
nop word cs:[rax + rax]
mov eax, dword [0x141dc5eb8]
sub eax, dword [0x141dc5ebc]
or eax, 0xc41db2fd
add eax, 0x56f2e236
cmp eax, 0x8e34793e
ja 0x14005b680
movzx eax, byte [rcx]
add eax, 0xffffffd0
nop word cs:[rax + rax]
mov ecx, dword [str.3____ak]
imul ecx, dword [0x141dc5ec4]
add ecx, 0xe548c1f3
cmp ecx, 0xfe2df284
jb 0x14005b6b0
mov r10b, 1
mov r9b, 1
cmp eax, 0xa
jae 0x14005b9ab
nop word [rax + rax]
mov ecx, dword [0x141dc5ee0]
or ecx, dword [0x141dc5ee4]
add ecx, 0x56a8a1cc
and ecx, 0x1c44049f
cmp ecx, 0x73c38881
je 0x14005b6e0
neg al
xor r9d, r9d
mov r10d, eax
jmp 0x14005b9ab
mov r8, rax
mov eax, dword [0x141dc5e88]
imul eax, dword [0x141dc5e8c]
add eax, 0xa7ba07ee
xor eax, 0x42868211
or eax, 0xb119714e
cmp eax, 0x2357096a
jb 0x14005b710
xor r11d, r11d
mov bl, 0xa
mov esi, 0x8aaf5c77
nop dword [rax]
test r8, r8
setne r9b
je 0x14005b99e
nop dword [rax]
mov eax, dword [0x141dc5ee8]
imul eax, dword [0x141dc5eec]
and eax, 0xc92514
xor eax, 0x5040a51c
cmp eax, 0x32dfd49c
jb 0x14005b750
lea rdi, [rcx + 1]
dec r8
mov r10d, dword [0x141dc5ef0]
xor r10d, dword [0x141dc5ef4]
add r10d, 0x803305f8
or r10d, 0x9980d7a6
imul rax, r10, 0x1a4c903
shr rax, 0x20
sub r10d, eax
shr r10d, 1
add r10d, eax
shr r10d, 0x1c
mov eax, r11d
imul bl
seto dl
cmp r10d, 0xa83d6909
je 0x14005b775
movzx ecx, byte [rcx]
mov r10d, dword [0x141dc5ef8]
xor r10d, dword [0x141dc5efc]
imul r10d, r10d, 0x3d0a19bf
add r10d, 0x457c5d81
cmp r10d, 0x135ddde5
jb 0x14005b7bd
add ecx, 0xffffffd0
cmp ecx, 9
ja 0x14005b9a3
mov r10b, 2
test dl, dl
jne 0x14005b9ab
mov edx, dword [0x141dc5f00]
xor edx, dword [0x141dc5f04]
imul edx, edx, 0xdfefab46
imul rdx, rdx, 0x66150cdb
shr rdx, 0x3e
or edx, 0xd53faf02
mov r11d, eax
add r11b, cl
seto bpl
cmp edx, 0xd77dacd7
je 0x14005b7f9
mov eax, dword [0x141dc5f08]
xor edx, edx
div dword [0x141dc5f0c]
imul rax, rsi
shr rax, 0x3f
add eax, 0xe3f81f5f
xor eax, 0xb8e6ee2a
cmp eax, 0x2b94dddc
jb 0x14005b82e
mov eax, dword [0x141dc5f10]
xor eax, dword [0x141dc5f14]
or eax, 0x62880954
and eax, 0x6bbb495c
cmp eax, 0xef555a0e
je 0x14005b855
mov rcx, rdi
test bpl, bpl
je 0x14005b740
jmp 0x14005b9ab
xor r8d, r8d
mov bl, 0xa
xor edx, edx
nop word [rax + rax]
test r11, r11
setne r9b
je 0x14005b9a8
mov eax, edx
imul bl
seto dl
movzx r10d, byte [rcx]
mov ebp, dword [0x141dc5ec8]
or ebp, dword [0x141dc5ecc]
add ebp, 0xddf43641
and ebp, 0x5eedd119
lea esi, [r10 - 0x30]
cmp esi, 0xa
setae dil
cmp ebp, 0x36e46fb8
je 0x14005b8a8
or dil, dl
nop word cs:[rax + rax]
test r8b, r8b
jne 0x14005b8e0
test dil, dil
jne 0x14005b960
nop word [rax + rax]
mov edx, dword [0x141dc5ed0]
xor edx, dword [0x141dc5ed4]
imul edx, edx, 0x1185442d
add edx, 0x4cf0afd2
and edx, 0xb25a00cd
cmp edx, 0x92245954
ja 0x14005b8f0
dec r11
inc rcx
mov r10d, dword [0x141dc5ed8]
sub r10d, dword [0x141dc5edc]
or r10d, 0xc77bbd18
and r10d, 0xe7fbfd5c
mov edx, eax
sub dl, sil
seto dil
cmp r10d, 0x203a5e73
je 0x14005b91c
mov r10b, 3
test dil, dil
je 0x14005b890
jmp 0x14005b9ab
cmp esi, 0xa
setb r10b
mov eax, dword [0x141dc5e70]
sub eax, dword [0x141dc5e74]
imul eax, eax, 0xb38a8d87
or eax, 0x25399047
add eax, 0x22d34db7
add r10b, r10b
or r10b, 1
cmp eax, 0xd2551e96
jae 0x14005b960
mov r9b, 1
jmp 0x14005b9ab
xor r10d, r10d
xor r9d, r9d
jmp 0x14005b9ab
mov r10d, r11d
jmp 0x14005b9ab
mov r10b, 1
jmp 0x14005b9ab
mov r10d, edx
mov eax, r9d
mov edx, r10d
pop rbx
pop rbp
pop rdi
pop rsi
ret