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

Disassembly:
mov qword [rsp + 0x18], rbx
push rbp
mov rbp, rsp
sub rsp, 0x50
mov rax, qword [section..data]
xor rax, rsp
mov qword [rbp - 8], rax
mov rax, qword [rcx + 0xe0]
mov rbx, rcx
movzx ecx, byte [rax]
test cl, cl
jne 0x14000f13c
mov rax, qword [rbx + 0xd0]
mov byte [rax], cl
xor eax, eax
jmp 0x14000f797
mov byte [rbp - 0x30], cl
mov qword [rsp + 0x68], rdi
lea rdi, str._B2S1B2S2B2S2
lea r8, [rbp - 0x18]
lea rdx, [rbp - 0x30]
mov rcx, rbx
mov qword [rbp - 0x18], rdi
mov byte [rbp - 0x2f], 0
mov qword [rbp - 0x10], 0x6b
call fcn.14000f040
mov rdx, qword [rbx + 0xd0]
nop dword [rax]
nop word [rax + rax]
movzx ecx, byte [rax]
inc rdx
lea rax, [rax + 1]
mov byte [rdx - 1], cl
test cl, cl
jne 0x14000f180
mov rcx, qword [rbx + 0xe0]
mov r10d, 1
cmp byte [rcx], 0x87
setne r11b
add r11b, 0x42
cmp byte [rcx + 1], 0
je 0x14000f5d7
movsxd rax, r10d
cmp byte [rax + rcx], 0x84
jne 0x14000f253
mov r11b, 0x43
mov word [rbp - 0x30], 0x84
lea rcx, [rbp - 0x30]
or rax, 0xffffffffffffffff
inc rax
cmp byte [rcx + rax], 0
jne 0x14000f1d1
cmp eax, 2
jg 0x14000f206
test eax, eax
je 0x14000f206
cmp eax, 1
jne 0x14000f206
xor ecx, ecx
nop word [rax + rax]
mov rax, qword [rdi + rcx*8]
cmp byte [rax], 0x84
je 0x14000f308
inc rcx
cmp rcx, 0x6b
jb 0x14000f1f0
xor ecx, ecx
lea rdx, [rbp - 0x18]
sub rdx, rcx
nop
movzx eax, byte [rcx]
lea rcx, [rcx + 1]
mov byte [rdx + rcx - 1], al
test al, al
jne 0x14000f210
mov rcx, qword [rbx + 0xd0]
dec rcx
nop dword [rax]
cmp byte [rcx + 1], 0
lea rcx, [rcx + 1]
jne 0x14000f230
lea r8, [rbp - 0x18]
xor edx, edx
movzx eax, byte [r8 + rdx]
inc rdx
mov byte [rcx + rdx - 1], al
test al, al
jne 0x14000f240
inc r10d
mov rcx, qword [rbx + 0xe0]
movsxd r9, r10d
add rcx, r9
movzx edx, byte [rcx]
cmp dl, 0x85
jne 0x14000f32f
mov r11b, 0x42
mov word [rbp - 0x30], 0x85
lea rcx, [rbp - 0x30]
or rax, 0xffffffffffffffff
nop dword [rax]
inc rax
cmp byte [rcx + rax], 0
jne 0x14000f280
cmp eax, 2
jg 0x14000f2b2
test eax, eax
je 0x14000f2b2
cmp eax, 1
jne 0x14000f2b2
xor ecx, ecx
nop dword [rax]
mov rax, qword [rdi + rcx*8]
cmp byte [rax], 0x85
je 0x14000f31f
inc rcx
cmp rcx, 0x6b
jb 0x14000f2a0
xor ecx, ecx
lea rdx, [rbp - 0x18]
sub rdx, rcx
nop dword [rax + rax]
movzx eax, byte [rcx]
lea rcx, [rcx + 1]
mov byte [rdx + rcx - 1], al
test al, al
jne 0x14000f2c0
mov rcx, qword [rbx + 0xd0]
dec rcx
nop dword [rax]
cmp byte [rcx + 1], 0
lea rcx, [rcx + 1]
jne 0x14000f2e0
lea r8, [rbp - 0x18]
xor edx, edx
movzx eax, byte [r8 + rdx]
inc rdx
mov byte [rcx + rdx - 1], al
test al, al
jne 0x14000f2f0
inc r10d
jmp 0x14000f51f
test ecx, ecx
js 0x14000f206
movsxd rax, ecx
mov rcx, qword [rdi + rax*8]
inc rcx
jmp 0x14000f208
test ecx, ecx
js 0x14000f2b2
movsxd rax, ecx
mov rcx, qword [rdi + rax*8]
inc rcx
jmp 0x14000f2b4
cmp r11b, 0x43
jne 0x14000f515
movsx eax, dl
sub eax, 0x30
cmp eax, 9
ja 0x14000f476
test dl, dl
je 0x14000f5c3
movsx eax, dl
sub eax, 0x30
cmp eax, 9
ja 0x14000f5c3
movzx r8d, byte [rcx + 1]
mov byte [rbp - 0x30], dl
mov byte [rbp - 0x2e], 0
lea rcx, [rbp - 0x30]
or rax, 0xffffffffffffffff
mov byte [rbp - 0x2f], r8b
inc rax
cmp byte [rcx + rax], 0
jne 0x14000f377
cmp eax, 2
jg 0x14000f3a5
test eax, eax
je 0x14000f3a5
cmp eax, 1
jne 0x14000f422
xor ecx, ecx
mov rax, qword [rdi + rcx*8]
cmp dl, byte [rax]
je 0x14000f412
inc rcx
cmp rcx, 0x6b
jb 0x14000f394
xor eax, eax
lea rdx, [rbp - 0x18]
sub rdx, rax
nop
movzx ecx, byte [rax]
lea rax, [rax + 1]
mov byte [rax + rdx - 1], cl
test cl, cl
jne 0x14000f3b0
mov rcx, qword [rbx + 0xd0]
dec rcx
nop dword [rax]
cmp byte [rcx + 1], 0
lea rcx, [rcx + 1]
jne 0x14000f3d0
lea r8, [rbp - 0x18]
xor edx, edx
movzx eax, byte [r8 + rdx]
inc rdx
mov byte [rcx + rdx - 1], al
test al, al
jne 0x14000f3e0
mov rcx, qword [rbx + 0xe0]
add r9, 2
add r10d, 2
add rcx, r9
movzx edx, byte [rcx]
test dl, dl
jne 0x14000f350
jmp 0x14000f5c3
test ecx, ecx
js 0x14000f3a5
movsxd rax, ecx
mov rax, qword [rdi + rax*8]
inc rax
jmp 0x14000f3a7
cmp eax, 2
jne 0x14000f3a5
movsx ecx, dl
lea eax, [rcx - 0x30]
cmp eax, 9
ja 0x14000f3a5
movsx edx, r8b
lea eax, [rdx - 0x30]
cmp eax, 9
ja 0x14000f3a5
lea eax, [rcx - 0x42]
lea eax, [rcx + rax*4]
lea eax, [rdx + rax*2]
cdqe
cmp rax, 0x6b
jae 0x14000f467
mov rax, qword [rdi + rax*8]
inc rax
jmp 0x14000f3a7
lea rax, [0x1400350e8]
inc rax
jmp 0x14000f3a7
mov byte [rbp - 0x30], dl
mov byte [rbp - 0x2f], 0
lea rcx, [rbp - 0x30]
or rax, 0xffffffffffffffff
inc rax
cmp byte [rcx + rax], 0
jne 0x14000f485
cmp eax, 2
jg 0x14000f4b1
test eax, eax
je 0x14000f4b1
cmp eax, 1
jne 0x14000f4b1
xor ecx, ecx
nop
mov rax, qword [rdi + rcx*8]
cmp dl, byte [rax]
je 0x14000f505
inc rcx
cmp rcx, 0x6b
jb 0x14000f4a0
xor ecx, ecx
lea rdx, [rbp - 0x18]
sub rdx, rcx
nop word [rax + rax]
movzx eax, byte [rcx]
lea rcx, [rcx + 1]
mov byte [rcx + rdx - 1], al
test al, al
jne 0x14000f4c0
mov rcx, qword [rbx + 0xd0]
dec rcx
nop dword [rax]
cmp byte [rcx + 1], 0
lea rcx, [rcx + 1]
jne 0x14000f4e0
lea r8, [rbp - 0x18]
xor edx, edx
movzx eax, byte [r8 + rdx]
inc rdx
mov byte [rcx + rdx - 1], al
test al, al
jne 0x14000f4f0
jmp 0x14000f5c0
test ecx, ecx
js 0x14000f4b1
movsxd rax, ecx
mov rcx, qword [rdi + rax*8]
inc rcx
jmp 0x14000f4b3
cmp r11b, 0x42
jne 0x14000f5c3
mov rax, qword [rbx + 0xe0]
movsxd rcx, r10d
movzx edx, byte [rcx + rax]
cmp dl, 0x84
je 0x14000f5c3
mov byte [rbp - 0x30], dl
mov byte [rbp - 0x2f], 0
lea rcx, [rbp - 0x30]
or rax, 0xffffffffffffffff
inc rax
cmp byte [rcx + rax], 0
jne 0x14000f545
cmp eax, 2
jg 0x14000f575
test eax, eax
je 0x14000f575
cmp eax, 1
jne 0x14000f575
xor ecx, ecx
nop
mov rax, qword [rdi + rcx*8]
cmp dl, byte [rax]
je 0x14000f60d
inc rcx
cmp rcx, 0x6b
jb 0x14000f560
xor ecx, ecx
lea rdx, [rbp - 0x18]
sub rdx, rcx
nop
movzx eax, byte [rcx]
lea rcx, [rcx + 1]
mov byte [rcx + rdx - 1], al
test al, al
jne 0x14000f580
mov rcx, qword [rbx + 0xd0]
dec rcx
nop dword [rax]
cmp byte [rcx + 1], 0
lea rcx, [rcx + 1]
jne 0x14000f5a0
lea r8, [rbp - 0x18]
xor edx, edx
movzx eax, byte [r8 + rdx]
inc rdx
mov byte [rcx + rdx - 1], al
test al, al
jne 0x14000f5b0
inc r10d
mov rcx, qword [rbx + 0xe0]
movsxd rax, r10d
cmp byte [rax + rcx], 0
jne 0x14000f1b3
mov ecx, dword [rbx + reloc.mfc120u.dll_Ordinal_296]
cmp ecx, 0x64
jl 0x14000f679
jne 0x14000f624
mov eax, dword [0x140037928]
movsd xmm0, qword [str.B1S1B4S1B3S1]
mov dword [rbp - 0x10], eax
movzx eax, byte [0x14003792c]
movsd qword [rbp - 0x18], xmm0
mov byte [rbp - 0xc], al
jmp 0x14000f6df
test ecx, ecx
js 0x14000f575
movsxd rax, ecx
mov rcx, qword [rdi + rax*8]
inc rcx
jmp 0x14000f577
cmp ecx, 0x65
jne 0x14000f64e
mov eax, dword [0x140037938]
movsd xmm0, qword [str.B3S1B1S1B4S1]
mov dword [rbp - 0x10], eax
movzx eax, byte [0x14003793c]
movsd qword [rbp - 0x18], xmm0
mov byte [rbp - 0xc], al
jmp 0x14000f6df
cmp ecx, 0x66
jne 0x14000f6df
mov eax, dword [0x140037948]
movsd xmm0, qword [str.B4S1B1S1B3S1]
mov dword [rbp - 0x10], eax
movzx eax, byte [0x14003794c]
movsd qword [rbp - 0x18], xmm0
mov byte [rbp - 0xc], al
jmp 0x14000f6df
mov eax, 0x66666667
lea r8, [rbp - 0x28]
mov byte [rbp - 0x2e], 0
mov qword [rbp - 0x28], rdi
mov qword [rbp - 0x20], 0x6b
imul ecx
sar edx, 2
mov eax, edx
shr eax, 0x1f
add edx, eax
movzx ecx, dl
lea eax, [rdx + 0x30]
shl dl, 2
mov byte [rbp - 0x30], al
movzx eax, byte [rbx + reloc.mfc120u.dll_Ordinal_296]
add cl, dl
add cl, cl
lea rdx, [rbp - 0x30]
sub al, cl
mov rcx, rbx
add al, 0x30
mov byte [rbp - 0x2f], al
call fcn.14000f040
lea rdx, [rbp - 0x18]
sub rdx, rax
nop
movzx ecx, byte [rax]
lea rax, [rax + 1]
mov byte [rax + rdx - 1], cl
test cl, cl
jne 0x14000f6d0
mov rcx, qword [rbx + 0xd0]
dec rcx
nop dword [rax]
cmp byte [rcx + 1], 0
lea rcx, [rcx + 1]
jne 0x14000f6f0
lea r8, [rbp - 0x18]
xor edx, edx
movzx eax, byte [r8 + rdx]
lea rdx, [rdx + 1]
mov byte [rcx + rdx - 1], al
test al, al
jne 0x14000f700
lea r8, [rbp - 0x28]
lea rdx, [rbp - 0x30]
mov rcx, rbx
mov word [rbp - 0x30], 0x89
mov qword [rbp - 0x28], rdi
mov qword [rbp - 0x20], 0x6b
call fcn.14000f040
mov rdi, qword [rsp + 0x68]
lea rdx, [rbp - 0x18]
sub rdx, rax
nop
movzx ecx, byte [rax]
lea rax, [rax + 1]
mov byte [rax + rdx - 1], cl
test cl, cl
jne 0x14000f740
mov rdx, qword [rbx + 0xd0]
dec rdx
nop dword [rax]
cmp byte [rdx + 1], 0
lea rdx, [rdx + 1]
jne 0x14000f760
lea r9, [rbp - 0x18]
xor r8d, r8d
nop dword [rax]
nop word [rax + rax]
movzx ecx, byte [r9 + r8]
lea r8, [r8 + 1]
mov byte [rdx + r8 - 1], cl
test cl, cl
jne 0x14000f780
mov eax, 1
mov rcx, qword [rbp - 8]
xor rcx, rsp
call fcn.14002cc50
mov rbx, qword [rsp + 0x70]
add rsp, 0x50
pop rbp
ret