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

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x58
mov r13, qword [0x14002cd10]
lea rax, str.parseSaturatedNatural
lea rdi, str.C:_toolsNim_nim_1.6.8libpureparseutils.nim
mov r14, rdx
mov rdx, qword [r13]
mov rbx, rcx
xor ecx, ecx
mov qword [rsp + 0x30], rcx
mov rsi, r8
lea rcx, [rsp + 0x20]
test rdx, rdx
mov qword [rsp + 0x28], rax
mov qword [rsp + 0x38], rdi
mov word [rsp + 0x40], 0
jne 0x14000da48
xor edx, edx
mov word [rsp + 0x42], 0
mov qword [rsp + 0x20], rdx
mov qword [r13], rcx
jmp 0x14000da67
mov ax, word [rdx + 0x22]
mov qword [rsp + 0x20], rdx
mov qword [r13], rcx
inc eax
mov word [rsp + 0x42], ax
cmp ax, 0x7d0
jne 0x14000da67
call sym.callDepthLimitReached__system_2999
mov qword [rsp + 0x38], rdi
mov qword [rsp + 0x30], 0x1fa
test rbx, rbx
jne 0x14000da88
or rdx, 0xffffffffffffffff
test rsi, rsi
js 0x14000da98
jmp 0x14000dc4e
mov rdx, qword [rbx]
cmp rsi, rdx
jge 0x14000dad5
test rsi, rsi
jns 0x14000daa0
dec rdx
mov rcx, rsi
call sym.raiseIndexError2
cmp byte [rbx + rsi + 0x10], 0x2b
jne 0x14000dac5
mov r15, rsi
add r15, 1
jno 0x14000dab5
call sym.raiseOverflow
mov qword [rsp + 0x30], 0x1fb
mov qword [rsp + 0x38], rdi
jmp 0x14000dae1
mov qword [rsp + 0x30], 0x1fb
mov qword [rsp + 0x38], rdi
jmp 0x14000dade
mov qword [rsp + 0x30], 0x1fb
mov r15, rsi
mov rdx, qword [rbx]
cmp rdx, r15
jle 0x14000dc4e
test r15, r15
jns 0x14000dafd
dec rdx
mov rcx, r15
call sym.raiseIndexError2
mov al, byte [rbx + r15 + 0x10]
sub eax, 0x30
cmp al, 9
ja 0x14000dc4e
xor eax, eax
mov qword [rsp + 0x38], rdi
mov qword [r14], rax
mov qword [rsp + 0x30], 0x1fd
mov rdx, qword [rbx]
cmp r15, rdx
jge 0x14000db71
test r15, r15
js 0x14000db3b
mov al, byte [rbx + r15 + 0x10]
sub eax, 0x30
cmp al, 9
jbe 0x14000db91
jmp 0x14000db71
dec rdx
mov rcx, r15
call sym.raiseIndexError2
mov al, byte [rbx + r15 + 0x10]
sub eax, 0x30
cmp al, 9
ja 0x14000db71
mov rax, qword [rbx]
mov rcx, r15
mov qword [rsp + 0x38], rdi
mov qword [rsp + 0x30], 0x1fe
lea rdx, [rax - 1]
call sym.raiseIndexError2
jmp 0x14000db91
sub r15, rsi
mov qword [rsp + 0x38], rdi
mov qword [rsp + 0x30], 0x205
jno 0x14000db89
call sym.raiseOverflow
mov rax, r15
jmp 0x14000dc50
movzx r12d, byte [rbx + r15 + 0x10]
mov qword [rsp + 0x38], rdi
movabs rbp, 0x7fffffffffffffff
mov qword [rsp + 0x30], 0x1ff
sub r12, 0x30
sub rbp, r12
jno 0x14000dbbd
call sym.raiseOverflow
mov rax, rbp
mov ecx, 0xa
mov r8, qword [r14]
movabs rbp, 0x7fffffffffffffff
cqo
idiv rcx
cmp r8, rax
jg 0x14000dbff
imul rbp, r8, 0xa
mov qword [rsp + 0x38], rdi
mov qword [rsp + 0x30], 0x200
jno 0x14000dbf5
call sym.raiseOverflow
add rbp, r12
jno 0x14000dbff
call sym.raiseOverflow
mov qword [r14], rbp
inc r15
mov qword [rsp + 0x30], 0x204
mov qword [rsp + 0x38], rdi
mov rdx, qword [rbx]
cmp r15, rdx
jge 0x14000db20
test r15, r15
jns 0x14000dc2f
dec rdx
mov rcx, r15
call sym.raiseIndexError2
cmp byte [rbx + r15 + 0x10], 0x5f
jne 0x14000db20
mov rcx, r15
add rcx, 1
mov r15, rcx
jno 0x14000dc13
call sym.raiseOverflow
jmp 0x14000dc13
xor eax, eax
mov rdx, qword [r13]
mov rdx, qword [rdx]
mov qword [r13], rdx
add rsp, 0x58
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret