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

Disassembly:
mov qword [rsp + 8], rbx
mov qword [rsp + 0x18], r8
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
mov rbp, rsp
sub rsp, 0x60
mov r12, rdx
mov rbx, rcx
movups xmm0, xmmword [rdx]
movups xmmword [rbp - 0x38], xmm0
mov qword [rbp - 0x28], rdx
movq r9, xmm0
mov rax, r9
mov r13, qword [rdx + 8]
sub rax, r13
mov qword [rbp - 0x40], rax
xorps xmm1, xmm1
cmp byte [r9], 0x2d
jne 0x18003ac09
inc r9
mov qword [rbp - 0x38], r9
mov r11b, 1
jmp 0x18003ac0c
xor r11b, r11b
mov byte [rbp + 0x58], r11b
xor r10d, r10d
xor r14b, r14b
mov byte [rbp + 0x48], r14b
xor edi, edi
movsx ecx, byte [r9]
cmp cl, 0x30
jne 0x18003ac34
xor esi, esi
lea rdx, [r9 + 1]
mov qword [rbp - 0x38], rdx
jmp 0x18003acf3
lea eax, [rcx - 0x31]
cmp al, 8
ja 0x18003b1d4
lea rdx, [r9 + 1]
mov qword [rbp - 0x38], rdx
lea esi, [rcx - 0x30]
test r11b, r11b
je 0x18003aca0
cmp byte [rdx], 0x30
jl 0x18003acf3
mov rcx, rdx
mov r8, rdx
mov al, byte [rdx]
mov r9d, 0xccccccc
cmp al, 0x39
ja 0x18003acf3
cmp esi, r9d
jb 0x18003ac7c
jne 0x18003ace9
mov rcx, r8
cmp al, 0x38
ja 0x18003ace9
movsx eax, byte [rcx]
lea rdx, [rcx + 1]
mov qword [rbp - 0x38], rdx
lea ecx, [rsi - 6]
lea ecx, [rsi + rcx*4]
lea esi, [rax + rcx*2]
inc edi
mov al, byte [rdx]
mov rcx, rdx
mov r8, rdx
cmp al, 0x30
jge 0x18003ac66
jmp 0x18003acf3
cmp byte [rdx], 0x30
jl 0x18003acf3
mov rcx, rdx
mov r8, rdx
mov al, byte [rdx]
mov r9d, 0x19999999
cmp al, 0x39
jg 0x18003acf3
cmp esi, r9d
jb 0x18003acc5
jne 0x18003ace9
mov rcx, r8
cmp al, 0x35
jg 0x18003ace9
movsx eax, byte [rcx]
lea rdx, [rcx + 1]
mov qword [rbp - 0x38], rdx
lea ecx, [rsi - 6]
lea ecx, [rsi + rcx*4]
lea esi, [rax + rcx*2]
inc edi
mov al, byte [rdx]
mov rcx, rdx
mov r8, rdx
cmp al, 0x30
jge 0x18003acb3
jmp 0x18003acf3
mov r14b, 1
mov byte [rbp + 0x48], r14b
mov r10d, esi
xor r15b, r15b
movsd xmm2, qword [0x1801794d0]
test r14b, r14b
je 0x18003ae17
mov al, byte [rdx]
test r11b, r11b
je 0x18003ad7a
cmp al, 0x30
jl 0x18003ae17
mov rcx, rdx
mov r8, rdx
movabs r9, 0xccccccccccccccc
cmp al, 0x39
ja 0x18003ae17
cmp r10, r9
jb 0x18003ad3c
jne 0x18003ad65
mov rcx, r8
cmp al, 0x38
ja 0x18003ad65
movsx eax, byte [rcx]
lea rdx, [rcx + 1]
mov qword [rbp - 0x38], rdx
lea ecx, [rax - 0x30]
lea rax, [r10 + r10*4]
lea r10, [rcx + rax*2]
inc edi
mov rcx, rdx
mov r8, rdx
mov al, byte [rdx]
cmp al, 0x30
jge 0x18003ad26
jmp 0x18003ae17
mov rcx, r10
mov r15b, 1
xorps xmm1, xmm1
test rcx, rcx
js 0x18003adce
cvtsi2sd xmm1, rcx
jmp 0x18003ade3
cmp al, 0x30
jl 0x18003ae17
mov r8, rdx
mov r9, rdx
movabs r11, 0x1999999999999999
mov rcx, r10
cmp al, 0x39
ja 0x18003ae17
cmp r10, r11
jb 0x18003ada7
jne 0x18003ad68
mov r8, r9
cmp al, 0x35
ja 0x18003ad68
movsx ecx, byte [r8]
lea rdx, [r8 + 1]
mov qword [rbp - 0x38], rdx
sub ecx, 0x30
lea rax, [r10 + r10*4]
lea r10, [rcx + rax*2]
inc edi
mov r8, rdx
mov r9, rdx
mov al, byte [rdx]
cmp al, 0x30
jge 0x18003ad92
jmp 0x18003ae17
mov rax, rcx
shr rax, 1
and ecx, 1
or rax, rcx
cvtsi2sd xmm1, rax
addsd xmm1, xmm1
mov al, byte [rdx]
cmp al, 0x30
jl 0x18003ae17
mov rcx, rdx
cmp al, 0x39
ja 0x18003ae17
movsx eax, byte [rcx]
lea rdx, [rcx + 1]
mov qword [rbp - 0x38], rdx
sub eax, 0x30
movd xmm0, eax
cvtdq2pd xmm0, xmm0
mulsd xmm1, xmm2
addsd xmm1, xmm0
mov rcx, rdx
mov al, byte [rdx]
cmp al, 0x30
jge 0x18003adec
xor r14d, r14d
mov al, byte [rdx]
cmp al, 0x2e
jne 0x18003ae27
inc rdx
mov qword [rbp - 0x38], rdx
mov rcx, rdx
cmp al, 0x2e
jne 0x18003af3a
mov r9b, byte [rdx]
lea eax, [r9 - 0x30]
cmp al, 9
ja 0x18003af72
mov r8, rdx
test r15b, r15b
jne 0x18003aecd
cmp byte [rbp + 0x48], r14b
jne 0x18003ae56
mov r10d, esi
mov r9, rcx
mov al, byte [rdx]
cmp al, 0x39
jg 0x18003aea0
mov r8, r9
movabs rax, 0x1fffffffffffff
cmp r10, rax
ja 0x18003aea0
movsx eax, byte [rcx]
lea rdx, [rcx + 1]
mov r8, rdx
mov qword [rbp - 0x38], rdx
lea ecx, [rax - 0x30]
lea rax, [r10 + r10*4]
lea r10, [rcx + rax*2]
dec r14d
test r10, r10
je 0x18003ae94
inc edi
mov al, byte [rdx]
mov rcx, rdx
mov r9, rdx
cmp al, 0x30
jge 0x18003ae5b
xorps xmm1, xmm1
test r10, r10
js 0x18003aeaf
cvtsi2sd xmm1, r10
jmp 0x18003aec7
mov rcx, r10
shr rcx, 1
mov rax, r10
and eax, 1
or rcx, rax
cvtsi2sd xmm1, rcx
addsd xmm1, xmm1
mov r15b, 1
mov r9b, byte [r8]
mov rcx, r8
cmp r9b, 0x30
jl 0x18003af3a
mov r11, r8
mov r9, r8
mov al, byte [rdx]
mov rcx, r9
cmp al, 0x39
jg 0x18003af3a
cmp edi, 0x11
jge 0x18003af20
movsx eax, byte [r8]
lea rcx, [r8 + 1]
mov rdx, rcx
mov qword [rbp - 0x38], rcx
sub eax, 0x30
movd xmm0, eax
cvtdq2pd xmm0, xmm0
mulsd xmm1, xmm2
addsd xmm0, xmm1
movaps xmm1, xmm0
dec r14d
comisd xmm0, xmmword [0x180179470]
jbe 0x18003af2b
inc edi
jmp 0x18003af2b
lea rcx, [r11 + 1]
mov rdx, rcx
mov qword [rbp - 0x38], rcx
mov r8, rcx
mov al, byte [rdx]
mov r11, rcx
mov r9, rcx
cmp al, 0x30
jge 0x18003aede
xor edi, edi
mov r9d, edi
cmp byte [rcx], 0x65
je 0x18003af4d
cmp byte [rcx], 0x45
jne 0x18003b08c
inc rcx
mov qword [rbp - 0x38], rcx
test r15b, r15b
jne 0x18003afc4
mov edx, esi
cmp byte [rbp + 0x48], dil
cmovne rdx, r10
xorps xmm1, xmm1
test rdx, rdx
js 0x18003afac
cvtsi2sd xmm1, rdx
jmp 0x18003afc1
cmp dword [rbx + 0x30], r14d
jne 0x18003b238
mov dword [rbx + 0x30], recvfrom
sub rcx, r13
mov qword [rbx + 0x38], rcx
movups xmm0, xmmword [rbp - 0x38]
movdqu xmmword [r12], xmm0
mov rbx, qword [rsp + 0xa0]
add rsp, 0x60
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret
mov rax, rdx
shr rax, 1
and edx, 1
or rax, rdx
cvtsi2sd xmm1, rax
addsd xmm1, xmm1
mov r15b, 1
mov r11b, dil
cmp byte [rcx], 0x2b
je 0x18003afd4
cmp byte [rcx], 0x2d
jne 0x18003afdb
mov r11b, 1
inc rcx
mov qword [rbp - 0x38], rcx
movsx edx, byte [rcx]
lea eax, [rdx - 0x30]
cmp al, 9
ja 0x18003b14c
lea r8, [rcx + 1]
mov qword [rbp - 0x38], r8
mov r9d, edx
mov r13d, gethostbyname
sub r9d, r13d
test r11b, r11b
je 0x18003b0f2
test r14d, r14d
jg 0x18003b259
lea ecx, [r14 + 0x7ffffff7]
mov eax, 0x66666667
imul ecx
sar edx, 2
mov eax, edx
shr eax, 0x1f
add edx, eax
cmp byte [r8], r13b
jl 0x18003b089
mov rcx, r8
cmp byte [r8], 0x39
jg 0x18003b087
movsx eax, byte [rcx]
lea r8, [rcx + 1]
mov qword [rbp - 0x38], r8
lea ecx, [r9 - 6]
lea ecx, [r9 + rcx*4]
lea r9d, [rax + rcx*2]
mov rcx, r8
cmp r9d, edx
jle 0x18003b082
mov al, byte [r8]
cmp al, r13b
jl 0x18003b082
mov r11, r8
mov rdi, r8
mov rcx, r11
cmp al, 0x39
ja 0x18003b082
lea r8, [rdi + 1]
mov qword [rbp - 0x38], r8
mov al, byte [r8]
mov r11, r8
mov rcx, r8
mov rdi, r8
cmp al, r13b
jge 0x18003b062
cmp byte [r8], r13b
jge 0x18003b02f
xor edi, edi
neg r9d
test r15b, r15b
je 0x18003b17c
lea eax, [r9 + r14]
mov ecx, 0xfffffecc
cmp eax, ecx
jge 0x18003b0aa
divsd xmm1, qword [0x180179530]
lea edx, [rax + 0x134]
cmovge edx, eax
movaps xmm0, xmm1
call fcn.18003cc40
comisd xmm0, xmmword [0x180179538]
jbe 0x18003b161
cmp dword [rbx + 0x30], edi
jne 0x18003b2bc
mov dword [rbx + 0x30], recvfrom
mov rax, qword [rbp - 0x40]
mov qword [rbx + 0x38], rax
movups xmm0, xmmword [rbp - 0x38]
mov rax, qword [rbp - 0x28]
movdqu xmmword [rax], xmm0
jmp 0x18003af94
mov edx, 0x134
sub edx, r14d
cmp byte [r8], r13b
jl 0x18003b08c
mov al, byte [r8]
cmp al, 0x39
jg 0x18003b08c
movsx eax, byte [r8]
inc r8
mov qword [rbp - 0x38], r8
lea r9d, [r9 + r9*4]
lea r9d, [r9 - 0x18]
lea r9d, [rax + r9*2]
cmp r9d, edx
jg 0x18003b12f
mov al, byte [r8]
cmp al, r13b
jge 0x18003b102
jmp 0x18003b08c
cmp dword [rbx + 0x30], edi
jne 0x18003b27a
mov dword [rbx + 0x30], recvfrom
mov rax, qword [rbp - 0x40]
mov qword [rbx + 0x38], rax
jmp 0x18003af8a
cmp dword [rbx + 0x30], edi
jne 0x18003b29b
mov dword [rbx + 0x30], recvfrom
jmp 0x18003af83
cmp byte [rbp + 0x58], dil
je 0x18003b16e
xorps xmm0, xmmword [0x180179750]
movaps xmm1, xmm0
mov rcx, qword [rbp + 0x50]
call fcn.18003b900
jmp 0x18003b1bb
mov rcx, qword [rbp + 0x50]
cmp byte [rbp + 0x48], dil
je 0x18003b1a3
cmp byte [rbp + 0x58], dil
je 0x18003b199
neg r10
mov rdx, r10
call fcn.18003bb84
jmp 0x18003b1bb
mov rdx, r10
call fcn.18003ba24
jmp 0x18003b1bb
cmp byte [rbp + 0x58], dil
je 0x18003b1b4
neg esi
mov edx, esi
call fcn.18003be30
jmp 0x18003b1bb
mov edx, esi
call fcn.18003bcfc
test al, al
jne 0x18003b0e1
cmp dword [rbx + 0x30], edi
jne 0x18003b1f6
mov dword [rbx + 0x30], reloc.WS2_32.dll_recv
jmp 0x18003b0d9
cmp dword [rbx + 0x30], edi
jne 0x18003b217
mov rax, r9
sub rax, r13
mov dword [rbx + 0x30], 3
mov qword [rbx + 0x38], rax
mov qword [rdx], r9
mov qword [rdx + 8], r13
jmp 0x18003af94
lea rdx, str.rapidjson_assert_fail
lea rcx, [rbp - 0x20]
call fcn.180014138
lea rdx, [0x180191838]
lea rcx, [rbp - 0x20]
call fcn.1800cbd00
int3
lea rdx, str.rapidjson_assert_fail
lea rcx, [rbp - 0x20]
call fcn.180014138
lea rdx, [0x180191838]
lea rcx, [rbp - 0x20]
call fcn.1800cbd00
int3
lea rdx, str.rapidjson_assert_fail
lea rcx, [rbp - 0x20]
call fcn.180014138
lea rdx, [0x180191838]
lea rcx, [rbp - 0x20]
call fcn.1800cbd00
int3
lea rdx, str.rapidjson_assert_fail
lea rcx, [rbp - 0x20]
call fcn.180014138
lea rdx, [0x180191838]
lea rcx, [rbp - 0x20]
call fcn.1800cbd00
int3
lea rdx, str.rapidjson_assert_fail
lea rcx, [rbp - 0x20]
call fcn.180014138
lea rdx, [0x180191838]
lea rcx, [rbp - 0x20]
call fcn.1800cbd00
int3
lea rdx, str.rapidjson_assert_fail
lea rcx, [rbp - 0x20]
call fcn.180014138
lea rdx, [0x180191838]
lea rcx, [rbp - 0x20]
call fcn.1800cbd00
int3
lea rdx, str.rapidjson_assert_fail
lea rcx, [rbp - 0x20]
call fcn.180014138
lea rdx, [0x180191838]
lea rcx, [rbp - 0x20]
call fcn.1800cbd00
int3