Function at 0x1800690c0
Capabilities:
Validate payment card number using luhn algorithm

Disassembly:
mov rax, qword [rdx]
mov r9, qword [rax]
cmp r9, qword [rax + 0x10]
je 0x180069108
mov al, byte [r9]
cmp al, 0x22
je 0x180069100
cmp al, 0x5b
je 0x1800690fb
cmp al, 0x66
je 0x1800690f6
cmp al, 0x6e
je 0x1800690f1
cmp al, 0x74
je 0x1800690ec
cmp al, 0x7b
jne 0x180069108
jmp 0x180069b64
jmp fcn.180069268
jmp fcn.18006913c
jmp fcn.180069394
jmp fcn.180069ea4
xor r9d, r9d
jmp fcn.1800694dc
jmp fcn.18006a0f8
mov qword [rsp + 8], rbx
mov qword [rsp + 0x10], rbp
mov qword [rsp + 0x18], rsi
push rdi
sub rsp, 0x40
mov rbx, rcx
mov rsi, r8
mov rcx, qword [rdx]
mov rdi, rdx
mov rax, qword [rcx]
cmp rax, qword [rcx + 0x10]
je 0x180069df2
cmp byte [rax], 0x7b
jne 0x180069df2
inc rax
mov qword [rcx], rax
mov rcx, r8
call fcn.18003fff8
test al, al
jne 0x180069be0
cmp dword [rbx + 0x30], 0
jne 0x180069e15
mov rax, qword [rdi]
mov rcx, qword [rax]
sub rcx, qword [rax + 8]
mov dword [rbx + 0x30], reloc.WS2_32.dll_recv
mov qword [rbx + 0x38], rcx
mov rbx, qword [rsp + 0x50]
mov rbp, qword [rsp + 0x58]
mov rsi, qword [rsp + 0x60]
add rsp, 0x40
pop rdi
ret
mov rcx, qword [rdi]
mov rdx, rcx
mov rax, qword [rcx]
cmp rax, qword [rcx + 0x10]
je 0x180069c0b
cmp byte [rax], 0x20
je 0x180069c03
cmp byte [rax], 0xa
je 0x180069c03
cmp byte [rax], 0xd
je 0x180069c03
cmp byte [rax], 9
jne 0x180069c0b
inc rax
mov qword [rcx], rax
jmp 0x180069be0
mov r8d, dword [rbx + 0x30]
test r8d, r8d
jne 0x180069bcb
cmp rax, qword [rcx + 0x10]
je 0x180069c42
cmp byte [rax], 0x7d
jne 0x180069c42
inc rax
xor edx, edx
mov qword [rcx], rax
mov rcx, rsi
call fcn.18003fedc
test al, al
jne 0x180069bcb
cmp dword [rbx + 0x30], 0
jne 0x180069e38
jmp 0x180069bb6
xor ebp, ebp
mov rax, qword [rdx]
cmp rax, qword [rdx + 0x10]
je 0x180069dde
cmp byte [rax], 0x22
jne 0x180069dd5
mov r9b, 1
mov r8, rsi
mov rdx, rdi
mov rcx, rbx
call fcn.1800694dc
cmp dword [rbx + 0x30], 0
jne 0x180069bcb
mov rcx, qword [rdi]
mov rax, qword [rcx]
cmp rax, qword [rcx + 0x10]
je 0x180069c9d
cmp byte [rax], 0x20
je 0x180069c95
cmp byte [rax], 0xa
je 0x180069c95
cmp byte [rax], 0xd
je 0x180069c95
cmp byte [rax], 9
jne 0x180069c9d
inc rax
mov qword [rcx], rax
jmp 0x180069c75
cmp dword [rbx + 0x30], 0
jne 0x180069bcb
cmp rax, qword [rcx + 0x10]
je 0x180069dc8
cmp byte [rax], 0x3a
jne 0x180069dc8
inc rax
mov qword [rcx], rax
mov rcx, qword [rdi]
mov rdx, qword [rcx]
cmp rdx, qword [rcx + 0x10]
je 0x180069ce4
mov al, byte [rdx]
cmp al, 0x20
je 0x180069cde
cmp al, 0xa
je 0x180069cde
cmp al, 0xd
je 0x180069cde
cmp al, 9
jne 0x180069ce4
lea rax, [rdx + 1]
jmp 0x180069cbd
cmp dword [rbx + 0x30], 0
jne 0x180069bcb
mov r8, rsi
mov rdx, rdi
mov rcx, rbx
call fcn.1800690c0
cmp dword [rbx + 0x30], 0
jne 0x180069bcb
mov rcx, qword [rdi]
mov rax, qword [rcx]
cmp rax, qword [rcx + 0x10]
je 0x180069d2e
cmp byte [rax], 0x20
je 0x180069d26
cmp byte [rax], 0xa
je 0x180069d26
cmp byte [rax], 0xd
je 0x180069d26
cmp byte [rax], 9
jne 0x180069d2e
inc rax
mov qword [rcx], rax
jmp 0x180069d06
cmp dword [rbx + 0x30], 0
jne 0x180069bcb
inc ebp
cmp rax, qword [rcx + 0x10]
je 0x180069db8
mov dl, byte [rax]
cmp dl, 0x2c
jne 0x180069d86
inc rax
mov qword [rcx], rax
mov rdx, qword [rdi]
mov rcx, qword [rdx]
cmp rcx, qword [rdx + 0x10]
je 0x180069d74
mov al, byte [rcx]
cmp al, 0x20
je 0x180069d6b
cmp al, 0xa
je 0x180069d6b
cmp al, 0xd
je 0x180069d6b
cmp al, 9
jne 0x180069d74
lea rax, [rcx + 1]
mov qword [rdx], rax
jmp 0x180069d4d
mov r8d, dword [rbx + 0x30]
test r8d, r8d
je 0x180069c44
jmp 0x180069bcb
cmp dl, 0x7d
jne 0x180069db8
cmp rax, qword [rcx + 0x10]
je 0x180069d97
inc rax
mov qword [rcx], rax
mov edx, ebp
mov rcx, rsi
call fcn.18003fedc
test al, al
jne 0x180069bcb
cmp dword [rbx + 0x30], 0
jne 0x180069e5b
jmp 0x180069bb6
mov rax, qword [rcx]
sub rax, qword [rcx + 8]
mov dword [rbx + 0x30], 6
jmp 0x180069de9
sub rax, qword [rcx + 8]
mov dword [rbx + 0x30], 5
jmp 0x180069de9
test r8d, r8d
jne 0x180069e7e
sub rax, qword [rdx + 8]
mov dword [rbx + 0x30], 4
mov qword [rbx + 0x38], rax
jmp 0x180069bcb
lea rdx, str.rapidjson_assert_fail
lea rcx, [rsp + 0x20]
call fcn.18001b500
lea rdx, [0x180185658]
lea rcx, [rsp + 0x20]
call fcn.1800c2cd0
int3
lea rdx, str.rapidjson_assert_fail
lea rcx, [rsp + 0x20]
call fcn.18001b500
lea rdx, [0x180185658]
lea rcx, [rsp + 0x20]
call fcn.1800c2cd0
int3
lea rdx, str.rapidjson_assert_fail
lea rcx, [rsp + 0x20]
call fcn.18001b500
lea rdx, [0x180185658]
lea rcx, [rsp + 0x20]
call fcn.1800c2cd0
int3
lea rdx, str.rapidjson_assert_fail
lea rcx, [rsp + 0x20]
call fcn.18001b500
lea rdx, [0x180185658]
lea rcx, [rsp + 0x20]
call fcn.1800c2cd0
int3
lea rdx, str.rapidjson_assert_fail
lea rcx, [rsp + 0x20]
call fcn.18001b500
lea rdx, [0x180185658]
lea rcx, [rsp + 0x20]
call fcn.1800c2cd0
int3