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

Disassembly:
push r15
push r14
push r12
push rsi
push rdi
push rbp
push rbx
mov r8, rdx
nop dword [rax]
mov eax, dword [0x141dc9e30]
xor edx, edx
div dword [0x141dc9e34]
or eax, 0x17e05591
xor eax, 0x52b1843f
add eax, 0xd547460a
cmp eax, 0xa68e0d03
ja 0x14005d8a0
mov r10d, 1
test r8, r8
je 0x14005d9b1
cmp r8, 1
jne 0x14005d900
movzx eax, byte [rcx]
mov r11d, 0x100
cmp eax, 0x2b
je 0x14005d9b4
cmp eax, 0x2d
je 0x14005d9b4
jmp 0x14005d928
mov eax, dword [0x141dc9e48]
mov edx, dword [0x141dc9e4c]
add eax, edx
add eax, 0xa4e33a1a
or eax, 0xb893907c
imul eax, eax, 0x5203b3e7
cmp eax, 0x251b46c9
jb 0x14005d900
movzx eax, byte [rcx]
xor edx, edx
nop word [rax + rax]
test dl, dl
jne 0x14005d930
cmp al, 0x2d
je 0x14005d9b9
movzx eax, al
cmp eax, 0x2b
jne 0x14005da9e
inc rcx
lea rax, [r8 - 1]
nop
mov edx, dword [str.oe_]
or edx, dword [0x141dc9e54]
add edx, 0x76f88fa9
cmp edx, 0xb471d2e5
ja 0x14005d950
cmp r8, 5
jae 0x14005db30
nop word cs:[rax + rax]
mov edx, dword [0x141dc9e40]
add edx, dword [0x141dc9e44]
and edx, 0x4b00201
imul edx, edx, 0xf1fd007c
cmp edx, 0xc5599f3c
je 0x14005d980
mov r8, rax
test rax, rax
jne 0x14005dab0
jmp 0x14005dd4a
xor r11d, r11d
jmp 0x14005dd53
lea rsi, [rcx + 1]
nop dword [rax]
mov eax, dword [0x141dc9e58]
add eax, dword [0x141dc9e5c]
imul eax, eax, 0x9f477f4f
add eax, 0x9edac3df
cmp eax, 0xce542f1
jb 0x14005d9c0
cmp r8, 5
jae 0x14005dc41
dec r8
nop dword [rax + rax]
mov eax, dword [0x141dc9e60]
xor eax, dword [0x141dc9e64]
add eax, 0x49249060
cmp eax, 0x936b563d
ja 0x14005d9f0
test r8, r8
je 0x14005dd4a
xor r9d, r9d
xor r11d, r11d
mov r10d, 0
nop dword [rax]
movzx eax, byte [rsi]
add eax, 0xffffffd0
cmp eax, 9
ja 0x14005dd9f
add r9d, r9d
lea r9d, [r9 + r9*4]
dec r8
inc rsi
nop dword [rax]
mov ecx, dword [0x141dc9e98]
add ecx, dword [0x141dc9e9c]
or ecx, 0x8fffbafb
and ecx, 0xaffffefb
cmp ecx, 0xf9106a8f
je 0x14005da40
sub r9d, eax
nop word cs:[rax + rax]
mov eax, dword [0x141dc9ea0]
xor edx, edx
div dword [0x141dc9ea4]
add eax, 0x72211ef8
or eax, 0x329ae56c
add eax, 0xb5b5ce84
cmp eax, 0xac016242
ja 0x14005da70
test r8, r8
jne 0x14005da20
jmp 0x14005dd53
cmp r8, 4
jae 0x14005db33
nop dword [rax + rax]
mov eax, dword [0x141dc9e38]
and eax, dword [0x141dc9e3c]
xor eax, 0xc0918c8
and eax, 0xcd1998d8
xor eax, 0x101053d2
cmp eax, 0xd5f4df8
jb 0x14005dab0
xor r9d, r9d
nop word cs:[rax + rax]
movzx eax, byte [rcx]
add eax, 0xffffffd0
cmp eax, 9
ja 0x14005dd3f
nop
mov edx, dword [0x141dc9ec8]
xor edx, dword [0x141dc9ecc]
add edx, 0x95158b4e
and edx, 0x81134393
imul edx, edx, 0xbb1c1d02
cmp edx, 0xd865ec01
ja 0x14005daf0
add r9d, r9d
dec r8
lea r9d, [r9 + r9*4]
inc rcx
add r9d, eax
test r8, r8
jne 0x14005dae0
jmp 0x14005dd4d
mov r8, rax
xor eax, eax
xor edx, edx
nop word [rax + rax]
mov r9d, edx
nop word cs:[rax + rax]
test al, al
jne 0x14005db50
test r8, r8
je 0x14005dd4d
mov r11d, dword [0x141dc9ea8]
sub r11d, dword [0x141dc9eac]
or r11d, 0x3e5ea7f8
and r11d, 0xbedefff8
imul dx, r9w, 0xa
seto bl
cmp r11d, 0xfa9ad59d
je 0x14005db5d
dec r8
movzx esi, byte [rcx]
inc rcx
add esi, 0xffffffd0
nop word cs:[rax + rax]
mov r11d, dword [0x141dc9eb0]
and r11d, dword [0x141dc9eb4]
add r11d, 0xe602ec5d
cmp r11d, 0x6a872004
jb 0x14005dba0
cmp esi, 9
ja 0x14005dd97
nop word [rax + rax]
mov r11d, dword [0x141dc9eb8]
and r11d, dword [0x141dc9ebc]
xor r11d, 0x24212d2d
and r11d, 0xaca16ded
cmp r11d, 0x433e3a97
je 0x14005dbd0
nop word cs:[rax + rax]
mov r11d, dword [0x141dc9ec0]
or r11d, dword [0x141dc9ec4]
add r11d, 0xa2e8b655
or r11d, 0x6d49c9c7
cmp r11d, 0x2ac33655
jb 0x14005dc00
mov r11d, 0x200
test bl, bl
jne 0x14005dd53
add dx, si
jno 0x14005db40
jmp 0x14005dd53
mov edi, 1
xor r11d, r11d
mov ebx, 0xdf22c685
xor ebp, ebp
mov r9d, ebp
cmp r8, rdi
je 0x14005dd50
mov eax, dword [0x141dc9e68]
sub eax, dword [0x141dc9e6c]
and eax, 0xf571480d
imul eax, eax, 0xc4136fc7
and eax, 0x9b8c5ce5
imul bp, r9w, 0xa
seto r15b
cmp eax, 0xe42efcdc
ja 0x14005dc5c
mov eax, dword [0x141dc9e70]
sub eax, dword [0x141dc9e74]
add eax, 0x19123932
or eax, 0x1237eec2
imul eax, eax, 0xdbe5ca51
cmp eax, 0x85351762
jb 0x14005dc88
movzx r12d, byte [rcx + rdi]
mov eax, dword [0x141dc9e78]
xor edx, edx
div dword [0x141dc9e7c]
mov eax, dword [0x141dc9e80]
xor edx, edx
div dword [0x141dc9e84]
and eax, 0xbc3b5163
imul edx, eax, 0xcc414fef
lea r14d, [r12 - 0x30]
cmp r14d, 0xa
setae al
cmp edx, 0x51845ed7
je 0x14005dcbe
or al, r15b
jne 0x14005ddad
mov eax, dword [0x141dc9e88]
xor edx, edx
div dword [str.f_Rv.v]
mov eax, dword [0x141dc9e90]
or eax, dword [0x141dc9e94]
add eax, 0x80b00f5
and eax, 0xd000e602
imul rax, rbx
shr rax, 0x3d
cmp eax, 0x77e8d376
ja 0x14005dd02
inc rsi
inc rdi
sub bp, r14w
jno 0x14005dc50
mov r11d, 0x300
jmp 0x14005dd53
mov r11d, 0x100
jmp 0x14005d9b4
xor r9d, r9d
xor r11d, r11d
xor r10d, r10d
shl r9d, 0x10
or r9d, r11d
or r9d, r10d
nop dword [rax]
mov eax, dword [0x141dc9ed0]
and eax, dword [0x141dc9ed4]
xor eax, 0x1aae35d9
imul rax, rax, 0x389e301f
shr rax, 0x3d
imul eax, eax, 0x234596e3
cmp eax, 0xbeb07ad4
ja 0x14005dd60
mov eax, r9d
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r14
pop r15
ret
mov r11d, 0x100
jmp 0x14005dd53
mov r11d, 0x100
mov r10d, 1
jmp 0x14005dd53
xor r11d, r11d
cmp r14d, 0xa
setb r11b
shl r11d, 9
or r11d, 0x100
mov r10d, 1
jmp 0x14005dd53