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

Disassembly:
mov qword [rsp + 0x18], r8
mov qword [rsp + 8], rcx
push rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
sub rsp, 0x90
movaps xmmword [rsp + 0x60], xmm7
mov rbx, rdx
mov rdx, qword [rdx + 0x20]
mov r13, rcx
movaps xmmword [rsp + 0x50], xmm8
xorps xmm7, xmm7
movaps xmmword [rsp + 0x40], xmm9
mov rax, qword [rbx + 0x30]
sub rax, qword [rbx + 8]
movzx edi, byte [rdx]
add rax, rdx
movaps xmmword [rsp + 0x30], xmm10
xorps xmm10, xmm10
mov qword [rsp + 0x20], rax
cmp dil, 0x2d
jne 0x14003f940
mov rcx, rbx
call fcn.1400603a0
mov rdx, qword [rbx + 0x20]
mov r12b, 1
movzx edi, byte [rdx]
jmp 0x14003f943
xor r12b, r12b
movsd xmm8, qword [0x140098998]
xor ebp, ebp
movsd xmm9, qword [0x1400a1b28]
mov esi, ebp
mov qword [rsp + 0x88], r15
mov r14d, ebp
mov byte [rsp + 0xd8], sil
mov byte [rsp + 0xe8], r12b
movaps xmmword [rsp + 0x70], xmm6
cmp dil, 0x30
jne 0x14003f9da
mov rcx, rbx
mov r15d, ebp
call fcn.1400603a0
mov rcx, qword [rbx + 0x20]
xor r12b, r12b
cmp byte [rcx], 0x2e
mov r13d, ebp
jne 0x14003fce7
mov rcx, rbx
call fcn.1400603a0
mov rcx, qword [rbx + 0x20]
movzx edi, byte [rcx]
lea eax, [rdi - 0x30]
cmp al, 9
jbe 0x14003fc09
mov rax, qword [rbx + 0x30]
sub rax, qword [rbx + 8]
add rax, rcx
mov rcx, qword [rsp + 0xd0]
mov dword [rcx + 0x30], send
mov qword [rcx + 0x38], rax
jmp 0x14003ff4c
lea eax, [rdi - 0x31]
cmp al, 8
ja 0x14003ff35
mov rcx, rbx
call fcn.1400603a0
mov rax, qword [rbx + 0x20]
movsx r15d, dil
sub r15d, 0x30
movzx edi, byte [rax]
test r12b, r12b
je 0x14003fa55
cmp dil, 0x30
jl 0x14003faac
nop dword [rax + rax]
cmp dil, 0x39
jg 0x14003faac
cmp r15d, 0xccccccc
jb 0x14003fa2b
jne 0x14003faa1
cmp dil, 0x38
jg 0x14003faa1
mov rcx, rbx
call fcn.1400603a0
mov rax, qword [rbx + 0x20]
lea ecx, [r15 + r15*4]
movsx r15d, dil
inc r14d
add r15d, 0xffffffd0
movzx edi, byte [rax]
lea r15d, [r15 + rcx*2]
cmp dil, 0x30
jge 0x14003fa10
jmp 0x14003faac
cmp dil, 0x30
jl 0x14003faac
nop dword [rax + rax]
cmp dil, 0x39
jg 0x14003faac
cmp r15d, 0x19999999
jb 0x14003fa77
jne 0x14003faa1
cmp dil, 0x35
jg 0x14003faa1
mov rcx, rbx
call fcn.1400603a0
mov rax, qword [rbx + 0x20]
lea ecx, [r15 + r15*4]
movsx r15d, dil
inc r14d
add r15d, 0xffffffd0
movzx edi, byte [rax]
lea r15d, [r15 + rcx*2]
cmp dil, 0x30
jge 0x14003fa60
jmp 0x14003faac
mov byte [rsp + 0xd8], 1
mov esi, r15d
xor r12b, r12b
mov rdx, rax
cmp byte [rsp + 0xd8], bpl
je 0x14003fb86
movzx ecx, byte [rax]
cmp byte [rsp + 0xe8], bpl
je 0x14003fb23
cmp cl, 0x30
jl 0x14003fb86
movzx edi, cl
movabs rax, 0xccccccccccccccc
cmp dil, 0x39
jg 0x14003fb86
cmp rsi, rax
jb 0x14003fafa
jne 0x14003fb71
cmp dil, 0x38
jg 0x14003fb71
mov rcx, rbx
call fcn.1400603a0
mov rdx, qword [rbx + 0x20]
lea rax, [rsi + rsi*4]
movsx ecx, dil
inc r14d
sub ecx, 0x30
movzx edi, byte [rdx]
lea rsi, [rcx + rax*2]
cmp dil, 0x30
jl 0x14003fb86
jmp 0x14003fad9
cmp cl, 0x30
jl 0x14003fb86
movzx edi, byte [rax]
movabs rax, 0x1999999999999999
cmp dil, 0x39
jg 0x14003fb86
cmp rsi, rax
jb 0x14003fb48
jne 0x14003fb71
cmp dil, 0x35
jg 0x14003fb71
mov rcx, rbx
call fcn.1400603a0
mov rdx, qword [rbx + 0x20]
lea rax, [rsi + rsi*4]
movsx ecx, dil
inc r14d
sub ecx, 0x30
movzx edi, byte [rdx]
lea rsi, [rcx + rax*2]
cmp dil, 0x30
jl 0x14003fb86
jmp 0x14003fb2b
xorps xmm7, xmm7
cvtsi2sd xmm7, rsi
test rsi, rsi
jns 0x14003fb83
addsd xmm7, xmm9
mov r12b, 1
mov rcx, rdx
test r12b, r12b
je 0x14003f991
movzx edi, byte [rdx]
cmp dil, 0x30
jl 0x14003f991
movsd xmm6, qword [0x1400a1b38]
movzx eax, dil
nop dword [rax + rax]
cmp al, 0x39
jg 0x14003f991
comisd xmm7, xmm6
jae 0x14003fbf7
mov rcx, rbx
call fcn.1400603a0
mov rcx, qword [rbx + 0x20]
movsx eax, dil
sub eax, 0x30
mulsd xmm7, xmm8
movzx edi, byte [rcx]
movd xmm0, eax
movzx eax, dil
cvtdq2pd xmm0, xmm0
addsd xmm0, xmm7
movaps xmm7, xmm0
cmp dil, 0x30
jge 0x14003fbb0
jmp 0x14003f991
mov rax, qword [rsp + 0x20]
mov dword [r13 + 0x30], reloc.WS2_32.dll_listen
jmp 0x14003ff48
test r12b, r12b
jne 0x14003fc92
cmp byte [rsp + 0xd8], bpl
movabs r12, 0x1fffffffffffff
mov eax, r15d
cmovne rax, rsi
mov rsi, rax
nop
mov rdx, rcx
cmp dil, 0x39
jg 0x14003fc76
cmp rsi, r12
ja 0x14003fc76
mov rcx, rbx
call fcn.1400603a0
movsx ecx, dil
lea rax, [rsi + rsi*4]
sub ecx, 0x30
dec r13d
lea rsi, [rcx + rax*2]
mov rcx, qword [rbx + 0x20]
test rsi, rsi
lea eax, [r14 + 1]
mov rdx, rcx
cmove eax, r14d
movzx edi, byte [rcx]
mov r14d, eax
cmp dil, 0x30
jge 0x14003fc30
xorps xmm7, xmm7
cvtsi2sd xmm7, rsi
test rsi, rsi
jns 0x14003fc88
addsd xmm7, xmm9
movzx edi, byte [rdx]
mov r12b, 1
mov rcx, qword [rbx + 0x20]
cmp dil, 0x30
jl 0x14003fce7
cmp dil, 0x39
jg 0x14003fce7
cmp r14d, 0x11
jge 0x14003fcd2
mulsd xmm7, xmm8
dec r13d
movsx eax, dil
sub eax, 0x30
movd xmm0, eax
lea eax, [r14 + 1]
cvtdq2pd xmm0, xmm0
addsd xmm0, xmm7
comisd xmm0, xmm10
movaps xmm7, xmm0
cmovbe eax, r14d
mov r14d, eax
mov rcx, rbx
call fcn.1400603a0
mov rcx, qword [rbx + 0x20]
movzx edi, byte [rcx]
cmp dil, 0x30
jge 0x14003fc98
movzx eax, byte [rcx]
sub al, 0x45
test al, 0xdf
jne 0x14003fe08
mov rcx, rbx
call fcn.1400603a0
test r12b, r12b
jne 0x14003fd28
cmp byte [rsp + 0xd8], bpl
mov rcx, rsi
mov eax, r15d
xorps xmm7, xmm7
cmove rcx, rax
cvtsi2sd xmm7, rcx
test rcx, rcx
jns 0x14003fd25
addsd xmm7, xmm9
mov r12b, 1
mov rcx, qword [rbx + 0x20]
xor r14b, r14b
movzx edi, byte [rcx]
cmp dil, 0x2b
jne 0x14003fd42
mov rcx, rbx
call fcn.1400603a0
jmp 0x14003fd53
cmp dil, 0x2d
jne 0x14003fd5a
mov rcx, rbx
call fcn.1400603a0
mov r14b, 1
mov rcx, qword [rbx + 0x20]
movzx edi, byte [rcx]
lea eax, [rdi - 0x30]
cmp al, 9
ja 0x14003fea0
mov rcx, rbx
call fcn.1400603a0
mov rax, qword [rbx + 0x20]
movsx ebp, dil
sub ebp, 0x30
movzx edi, byte [rax]
test r14b, r14b
je 0x14003fe44
lea ecx, [r13 + 0x7ffffff7]
mov eax, 0x66666667
imul ecx
mov r14d, edx
sar r14d, 2
mov eax, r14d
shr eax, 0x1f
add r14d, eax
cmp dil, 0x30
jl 0x14003fe06
cmp dil, 0x39
jg 0x14003fe06
mov rcx, rbx
call fcn.1400603a0
lea ecx, [rbp*4]
movsx eax, dil
add ecx, ebp
lea ebp, [rcx - 0x18]
lea ebp, [rax + rbp*2]
cmp ebp, r14d
jle 0x14003fdf9
mov rax, qword [rbx + 0x20]
movzx ecx, byte [rax]
cmp cl, 0x30
jl 0x14003fdf9
nop word [rax + rax]
cmp cl, 0x39
jg 0x14003fdf9
mov rcx, rbx
call fcn.1400603a0
mov rax, qword [rbx + 0x20]
movzx ecx, byte [rax]
cmp cl, 0x30
jge 0x14003fde0
mov rax, qword [rbx + 0x20]
movzx edi, byte [rax]
cmp dil, 0x30
jge 0x14003fda8
neg ebp
test r12b, r12b
je 0x14003fec3
mov edx, ebp
movaps xmm0, xmm7
add edx, r13d
call fcn.140060ac0
cmp byte [rsp + 0xe8], 0
je 0x14003fe2f
xorps xmm0, xmmword [0x1400a1ba0]
mov rcx, qword [rsp + 0xe0]
movaps xmm1, xmm0
call fcn.140047bc0
jmp 0x14003ff17
mov r14d, 0x134
sub r14d, r13d
cmp dil, 0x30
jl 0x14003fe08
cmp dil, 0x39
jg 0x14003fe08
mov rcx, rbx
call fcn.1400603a0
lea ebp, [rbp + rbp*4]
movsx eax, dil
lea ebp, [rbp - 0x18]
lea ebp, [rax + rbp*2]
cmp ebp, r14d
jg 0x14003fe83
mov rax, qword [rbx + 0x20]
movzx edi, byte [rax]
cmp dil, 0x30
jge 0x14003fe53
jmp 0x14003fe08
mov rcx, qword [rsp + 0xd0]
mov rax, qword [rsp + 0x20]
mov dword [rcx + 0x30], reloc.WS2_32.dll_listen
mov qword [rcx + 0x38], rax
jmp 0x14003ff4c
mov rax, qword [rbx + 0x30]
sub rax, qword [rbx + 8]
add rax, rcx
mov rcx, qword [rsp + 0xd0]
mov dword [rcx + 0x30], send
mov qword [rcx + 0x38], rax
jmp 0x14003ff4c
cmp byte [rsp + 0xd8], 0
mov rcx, qword [rsp + 0xe0]
je 0x14003fef7
cmp byte [rsp + 0xe8], 0
je 0x14003feed
not rsi
lea rdx, [rsi + 1]
call fcn.140048620
jmp 0x14003ff17
mov rdx, rsi
call fcn.140068660
jmp 0x14003ff17
cmp byte [rsp + 0xe8], 0
je 0x14003ff0f
not r15d
lea edx, [r15 + 1]
call fcn.1400486d0
jmp 0x14003ff17
mov edx, r15d
call fcn.1400686f0
test al, al
jne 0x14003ff4c
mov rcx, qword [rsp + 0xd0]
mov rax, qword [rsp + 0x20]
mov dword [rcx + 0x30], reloc.WS2_32.dll_recv
mov qword [rcx + 0x38], rax
jmp 0x14003ff4c
mov rax, qword [rbx + 0x30]
sub rax, qword [rbx + 8]
add rax, rdx
mov dword [r13 + 0x30], 3
mov qword [r13 + 0x38], rax
movaps xmm6, xmmword [rsp + 0x70]
mov r15, qword [rsp + 0x88]
movaps xmm7, xmmword [rsp + 0x60]
movaps xmm8, xmmword [rsp + 0x50]
movaps xmm9, xmmword [rsp + 0x40]
movaps xmm10, xmmword [rsp + 0x30]
add rsp, 0x90
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
ret