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

Disassembly:
mov qword [rsp + 0x18], r8
push rbx
push rbp
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x80
mov rax, qword [rdx]
mov rbx, rdx
movaps xmmword [rsp + 0x70], xmm6
mov r13, rcx
movaps xmmword [rsp + 0x50], xmm8
xorps xmm6, xmm6
movaps xmmword [rsp + 0x40], xmm9
mov r15, qword [rax + 0x30]
sub r15, qword [rax + 8]
add r15, qword [rax + 0x20]
movzx eax, word [rdx + 8]
movaps xmmword [rsp + 0x30], xmm10
xorps xmm10, xmm10
mov qword [rsp + 0x20], r15
cmp ax, 0x2d
jne 0x14003f2ca
mov rcx, rdx
call fcn.1400685f0
movzx eax, word [rbx + 8]
mov r12b, 1
jmp 0x14003f2cd
xor r12b, r12b
movsd xmm8, qword [0x140098998]
xor r14d, r14d
movsd xmm9, qword [0x1400a1b28]
mov edi, r14d
mov qword [rsp + 0xc0], rsi
mov ebp, r14d
mov byte [rsp + 0xc8], dil
mov byte [rsp + 0xd8], r12b
movaps xmmword [rsp + 0x60], xmm7
cmp ax, 0x30
jne 0x14003f35f
mov rcx, rbx
mov esi, r14d
call fcn.1400685f0
movzx eax, word [rbx + 8]
xor r12b, r12b
mov r15d, r14d
cmp ax, 0x2e
jne 0x14003f651
mov rcx, rbx
call fcn.1400685f0
movzx ecx, word [rbx + 8]
lea eax, [rcx - 0x30]
cmp ax, 9
jbe 0x14003f56a
mov rax, qword [rbx]
mov rcx, qword [rax + 0x30]
sub rcx, qword [rax + 8]
add rcx, qword [rax + 0x20]
mov dword [r13 + 0x30], send
jmp 0x14003f893
sub ax, 0x31
cmp ax, 8
ja 0x14003f87c
mov rcx, rbx
call fcn.1400685f0
movzx esi, ax
movzx eax, word [rbx + 8]
sub esi, 0x30
test r12b, r12b
je 0x14003f3d0
cmp ax, 0x30
jb 0x14003f425
movzx ecx, ax
cmp cx, 0x39
ja 0x14003f425
cmp esi, 0xccccccc
jb 0x14003f3ab
jne 0x14003f41b
cmp cx, 0x38
ja 0x14003f41b
mov rcx, rbx
call fcn.1400685f0
movzx ecx, ax
inc ebp
lea eax, [rsi + rsi*4]
lea esi, [rcx - 0x30]
lea esi, [rsi + rax*2]
movzx eax, word [rbx + 8]
movzx ecx, ax
cmp ax, 0x30
jae 0x14003f391
jmp 0x14003f425
cmp ax, 0x30
jb 0x14003f425
movzx ecx, ax
nop dword [rax]
cmp cx, 0x39
ja 0x14003f425
cmp esi, 0x19999999
jb 0x14003f3f6
jne 0x14003f41b
cmp cx, 0x35
ja 0x14003f41b
mov rcx, rbx
call fcn.1400685f0
movzx ecx, ax
inc ebp
lea eax, [rsi + rsi*4]
lea esi, [rcx - 0x30]
lea esi, [rsi + rax*2]
movzx eax, word [rbx + 8]
movzx ecx, ax
cmp ax, 0x30
jae 0x14003f3e0
jmp 0x14003f425
mov byte [rsp + 0xc8], 1
mov edi, esi
xor r12b, r12b
movzx ecx, ax
cmp byte [rsp + 0xc8], r12b
je 0x14003f4f7
cmp byte [rsp + 0xd8], r14b
je 0x14003f495
cmp ax, 0x30
jb 0x14003f4f7
movabs rdx, 0xccccccccccccccc
cmp ax, 0x39
ja 0x14003f4f7
cmp rdi, rdx
jb 0x14003f46e
jne 0x14003f4e2
cmp ax, 0x38
ja 0x14003f4e2
mov rcx, rbx
call fcn.1400685f0
movzx ecx, ax
inc ebp
sub ecx, 0x30
lea rax, [rdi + rdi*4]
lea rdi, [rcx + rax*2]
movzx ecx, word [rbx + 8]
movzx eax, cx
cmp cx, 0x30
jb 0x14003f4f7
jmp 0x14003f44d
cmp ax, 0x30
jb 0x14003f4f7
movzx ecx, ax
movabs rdx, 0x1999999999999999
cmp ax, 0x39
ja 0x14003f4f7
cmp rdi, rdx
jb 0x14003f4bb
jne 0x14003f4e2
cmp ax, 0x35
ja 0x14003f4e2
mov rcx, rbx
call fcn.1400685f0
movzx ecx, ax
inc ebp
sub ecx, 0x30
lea rax, [rdi + rdi*4]
lea rdi, [rcx + rax*2]
movzx ecx, word [rbx + 8]
movzx eax, cx
cmp cx, 0x30
jb 0x14003f4f7
jmp 0x14003f49e
xorps xmm6, xmm6
cvtsi2sd xmm6, rdi
test rdi, rdi
jns 0x14003f4f4
addsd xmm6, xmm9
mov r12b, 1
movzx eax, cx
test r12b, r12b
je 0x14003f31d
cmp cx, 0x30
jb 0x14003f31d
movsd xmm7, qword [0x1400a1b38]
cmp cx, 0x39
ja 0x14003f31d
comisd xmm6, xmm7
jae 0x14003f559
mov rcx, rbx
call fcn.1400685f0
movzx eax, ax
sub eax, 0x30
mulsd xmm6, xmm8
movd xmm0, eax
movzx eax, word [rbx + 8]
movzx ecx, ax
cvtdq2pd xmm0, xmm0
addsd xmm0, xmm6
movaps xmm6, xmm0
cmp ax, 0x30
jae 0x14003f515
jmp 0x14003f31d
mov dword [r13 + 0x30], reloc.WS2_32.dll_listen
mov qword [r13 + 0x38], r15
jmp 0x14003f897
test r12b, r12b
jne 0x14003f5f3
cmp byte [rsp + 0xc8], r14b
movzx r8d, cx
mov eax, esi
movabs r12, 0x1fffffffffffff
cmovne rax, rdi
mov rdi, rax
movzx edx, cx
movzx eax, r8w
cmp cx, 0x39
ja 0x14003f5dc
cmp rdi, r12
ja 0x14003f5dc
mov rcx, rbx
call fcn.1400685f0
movzx ecx, ax
dec r15d
sub ecx, 0x30
lea rax, [rdi + rdi*4]
lea rdi, [rcx + rax*2]
movzx ecx, word [rbx + 8]
test rdi, rdi
lea eax, [rbp + 1]
movzx r8d, cx
movzx edx, cx
cmove eax, ebp
mov ebp, eax
movzx eax, cx
cmp cx, 0x30
jae 0x14003f592
xorps xmm6, xmm6
cvtsi2sd xmm6, rdi
test rdi, rdi
jns 0x14003f5ee
addsd xmm6, xmm9
mov r12b, 1
jmp 0x14003f5f9
movzx edx, cx
movzx eax, cx
cmp dx, 0x30
jb 0x14003f651
nop
cmp dx, 0x39
ja 0x14003f651
mov rcx, rbx
cmp ebp, 0x11
jge 0x14003f63f
call fcn.1400685f0
movzx eax, ax
dec r15d
sub eax, 0x30
mulsd xmm6, xmm8
movd xmm0, eax
lea eax, [rbp + 1]
cvtdq2pd xmm0, xmm0
addsd xmm0, xmm6
comisd xmm0, xmm10
movaps xmm6, xmm0
cmovbe eax, ebp
mov ebp, eax
jmp 0x14003f644
call fcn.1400685f0
movzx eax, word [rbx + 8]
movzx edx, ax
cmp ax, 0x30
jae 0x14003f600
sub ax, 0x45
mov ecx, 0xffdf
test cx, ax
jne 0x14003f767
mov rcx, rbx
call fcn.1400685f0
test r12b, r12b
jne 0x14003f696
cmp byte [rsp + 0xc8], r14b
mov rcx, rdi
mov eax, esi
xorps xmm6, xmm6
cmove rcx, rax
cvtsi2sd xmm6, rcx
test rcx, rcx
jns 0x14003f693
addsd xmm6, xmm9
mov r12b, 1
movzx eax, word [rbx + 8]
xor bpl, bpl
cmp ax, 0x2b
jne 0x14003f6ad
mov rcx, rbx
call fcn.1400685f0
jmp 0x14003f6be
cmp ax, 0x2d
jne 0x14003f6c2
mov rcx, rbx
call fcn.1400685f0
mov bpl, 1
movzx eax, word [rbx + 8]
sub ax, 0x30
cmp ax, 9
ja 0x14003f7f8
mov rcx, rbx
call fcn.1400685f0
movzx r8d, word [rbx + 8]
movzx r14d, ax
sub r14d, 0x30
test bpl, bpl
je 0x14003f7a2
lea ecx, [r15 + 0x7ffffff7]
mov eax, 0x66666667
imul ecx
mov ebp, edx
sar ebp, 2
mov eax, ebp
shr eax, 0x1f
add ebp, eax
cmp r8w, 0x30
jb 0x14003f764
nop
cmp r8w, 0x39
ja 0x14003f764
mov rcx, rbx
call fcn.1400685f0
movzx ecx, ax
lea eax, [r14 + r14*4]
lea r14d, [rcx - 0x30]
lea r14d, [r14 + rax*2]
cmp r14d, ebp
jle 0x14003f758
movzx eax, word [rbx + 8]
cmp ax, 0x30
jb 0x14003f758
nop dword [rax]
cmp ax, 0x39
ja 0x14003f758
mov rcx, rbx
call fcn.1400685f0
movzx eax, word [rbx + 8]
cmp ax, 0x30
jae 0x14003f740
movzx r8d, word [rbx + 8]
cmp r8w, 0x30
jae 0x14003f710
neg r14d
test r12b, r12b
je 0x14003f814
lea edx, [r14 + r15]
movaps xmm0, xmm6
call fcn.140060ac0
cmp byte [rsp + 0xd8], 0
je 0x14003f78d
xorps xmm0, xmmword [0x1400a1ba0]
mov rcx, qword [rsp + 0xd0]
movaps xmm1, xmm0
call fcn.140047bc0
jmp 0x14003f865
mov ebp, 0x134
sub ebp, r15d
cmp r8w, 0x30
jb 0x14003f767
cmp r8w, 0x39
ja 0x14003f767
mov rcx, rbx
call fcn.1400685f0
lea r14d, [r14 + r14*4]
movzx ecx, ax
lea r14d, [r14 - 0x18]
lea r14d, [rcx + r14*2]
cmp r14d, ebp
jg 0x14003f7e2
movzx r8d, word [rbx + 8]
cmp r8w, 0x30
jae 0x14003f7b1
jmp 0x14003f767
mov rax, qword [rsp + 0x20]
mov qword [r13 + 0x38], rax
mov dword [r13 + 0x30], reloc.WS2_32.dll_listen
jmp 0x14003f897
mov rax, qword [rbx]
mov rcx, qword [rax + 0x30]
sub rcx, qword [rax + 8]
add rcx, qword [rax + 0x20]
mov dword [r13 + 0x30], send
jmp 0x14003f893
cmp byte [rsp + 0xc8], 0
mov rcx, qword [rsp + 0xd0]
je 0x14003f848
cmp byte [rsp + 0xd8], 0
je 0x14003f83e
not rdi
lea rdx, [rdi + 1]
call fcn.140048620
jmp 0x14003f865
mov rdx, rdi
call fcn.140068660
jmp 0x14003f865
cmp byte [rsp + 0xd8], 0
je 0x14003f85e
not esi
lea edx, [rsi + 1]
call fcn.1400486d0
jmp 0x14003f865
mov edx, esi
call fcn.1400686f0
test al, al
jne 0x14003f897
mov rax, qword [rsp + 0x20]
mov qword [r13 + 0x38], rax
mov dword [r13 + 0x30], reloc.WS2_32.dll_recv
jmp 0x14003f897
mov rax, qword [rbx]
mov rcx, qword [rax + 0x30]
sub rcx, qword [rax + 8]
add rcx, qword [rax + 0x20]
mov dword [r13 + 0x30], 3
mov qword [r13 + 0x38], rcx
movaps xmm7, xmmword [rsp + 0x60]
mov rsi, qword [rsp + 0xc0]
movaps xmm6, xmmword [rsp + 0x70]
movaps xmm8, xmmword [rsp + 0x50]
movaps xmm9, xmmword [rsp + 0x40]
movaps xmm10, xmmword [rsp + 0x30]
add rsp, 0x80
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rbp
pop rbx
ret
mov qword [rsp + 8], rbx
mov qword [rsp + 0x10], rbp
mov qword [rsp + 0x18], rsi
push rdi
sub rsp, 0x20
mov rdi, rcx
mov rbp, r8
mov rcx, rdx
mov rbx, rdx
call fcn.1400685f0
mov rcx, qword [rbp + 0x38]
lea rax, [rcx + 0x10]
cmp rax, qword [rbp + 0x40]
jbe 0x140040265
mov edx, 1
lea rcx, [rbp + 0x20]
call fcn.14003e4a0
mov rcx, qword [rbp + 0x38]
lea rax, [rcx + 0x10]
mov esi, 3
mov qword [rbp + 0x38], rax
xor eax, eax
mov qword [rcx], rax
mov qword [rcx + 8], rax
mov word [rcx + 0xe], si
mov rcx, rbx
call fcn.140041de0
cmp dword [rdi + 0x30], 0
jne 0x1400403f3
cmp word [rbx + 8], 0x7d
jne 0x1400402c1
mov rcx, rbx
call fcn.1400685f0
mov rax, qword [rbp + 0x38]
movabs rcx, 0xffff000000000000
mov word [rax - 2], si
and qword [rax - 8], rcx
xor esi, esi
mov qword [rax - 0x10], rsi
jmp 0x1400403f3
xor esi, esi
cmp word [rbx + 8], 0x22
jne 0x1400403d9
mov r9b, 1
mov r8, rbp
mov rdx, rbx
mov rcx, rdi
call fcn.140040e90
cmp dword [rdi + 0x30], 0
jne 0x1400403f3
mov rcx, rbx
call fcn.140041de0
cmp dword [rdi + 0x30], 0
jne 0x1400403f3
cmp word [rbx + 8], 0x3a
jne 0x1400403c1
mov rcx, rbx
call fcn.1400685f0
mov rcx, rbx
call fcn.140041de0
cmp dword [rdi + 0x30], 0
jne 0x1400403f3
mov r8, rbp
mov rdx, rbx
mov rcx, rdi
call fcn.140041780
cmp dword [rdi + 0x30], 0
jne 0x1400403f3
mov rcx, rbx
call fcn.140041de0
cmp dword [rdi + 0x30], 0
jne 0x1400403f3
movzx eax, word [rbx + 8]
inc esi
cmp ax, 0x2c
jne 0x140040375
mov rcx, rbx
call fcn.1400685f0
mov rcx, rbx
call fcn.140041de0
cmp dword [rdi + 0x30], 0
je 0x1400402c3
jmp 0x1400403f3
cmp ax, 0x7d
je 0x140040393
mov rax, qword [rbx]
mov rcx, qword [rax + 0x30]
sub rcx, qword [rax + 8]
add rcx, qword [rax + 0x20]
mov dword [rdi + 0x30], 6
jmp 0x1400403ef
mov rcx, rbx
call fcn.1400685f0
mov edx, esi
mov rcx, rbp
call fcn.140047e40
test al, al
jne 0x1400403f3
mov rax, qword [rbx]
mov rcx, qword [rax + 0x30]
sub rcx, qword [rax + 8]
add rcx, qword [rax + 0x20]
mov dword [rdi + 0x30], reloc.WS2_32.dll_recv
jmp 0x1400403ef
mov rax, qword [rbx]
mov rcx, qword [rax + 0x30]
sub rcx, qword [rax + 8]
add rcx, qword [rax + 0x20]
mov dword [rdi + 0x30], 5
jmp 0x1400403ef
mov rax, qword [rbx]
mov rcx, qword [rax + 0x30]
sub rcx, qword [rax + 8]
add rcx, qword [rax + 0x20]
mov dword [rdi + 0x30], 4
mov qword [rdi + 0x38], rcx
mov rbx, qword [rsp + 0x30]
mov rbp, qword [rsp + 0x38]
mov rsi, qword [rsp + 0x40]
add rsp, 0x20
pop rdi
ret
mov qword [rsp + 0x10], rbx
mov qword [rsp + 0x18], rsi
push rdi
sub rsp, 0x20
movzx eax, word [rdx + 8]
mov rsi, r8
add eax, 0xffffffde
mov rbx, rdx
mov rdi, rcx
cmp eax, 0x59
ja case.0x1400417c4.35
lea rcx, [0x140000000]
cdqe
movzx eax, byte [rcx + rax + 0x41ab0]
mov r9d, dword [rcx + rax*4 + 0x41a94]
add r9, rcx
jmp r9
mov rcx, rbx
call fcn.1400685f0
cmp word [rbx + 8], 0x75
jne 0x140041836
mov rcx, rbx
call fcn.1400685f0
cmp word [rbx + 8], 0x6c
jne 0x140041836
mov rcx, rbx
call fcn.1400685f0
cmp word [rbx + 8], 0x6c
jne 0x140041836
mov rcx, rbx
call fcn.1400685f0
mov rcx, rsi
call fcn.14005fe70
test al, al
jne 0x140041a53
mov rax, qword [rbx]
mov rcx, qword [rax + 0x30]
sub rcx, qword [rax + 8]
add rcx, qword [rax + 0x20]
mov dword [rdi + 0x30], reloc.WS2_32.dll_recv
mov qword [rdi + 0x38], rcx
mov rbx, qword [rsp + 0x38]
mov rsi, qword [rsp + 0x40]
add rsp, 0x20
pop rdi
ret
mov rax, qword [rbx]
mov rcx, qword [rax + 0x30]
sub rcx, qword [rax + 8]
add rcx, qword [rax + 0x20]
mov dword [rdi + 0x30], 3
mov qword [rdi + 0x38], rcx
mov rbx, qword [rsp + 0x38]
mov rsi, qword [rsp + 0x40]
add rsp, 0x20
pop rdi
ret
mov rcx, rbx
call fcn.1400685f0
cmp word [rbx + 8], 0x72
jne 0x140041836
mov rcx, rbx
call fcn.1400685f0
cmp word [rbx + 8], 0x75
jne 0x140041836
mov rcx, rbx
call fcn.1400685f0
cmp word [rbx + 8], 0x65
jne 0x140041836
mov rcx, rbx
call fcn.1400685f0
mov dl, 1
mov rcx, rsi
call fcn.1400476d0
jmp 0x140041804
mov rcx, rbx
call fcn.1400685f0
cmp word [rbx + 8], 0x61
jne 0x140041836
mov rcx, rbx
call fcn.1400685f0
cmp word [rbx + 8], 0x6c
jne 0x140041836
mov rcx, rbx
call fcn.1400685f0
cmp word [rbx + 8], 0x73
jne 0x140041836
mov rcx, rbx
call fcn.1400685f0
cmp word [rbx + 8], 0x65
jne 0x140041836
mov rcx, rbx
call fcn.1400685f0
xor edx, edx
mov rcx, rsi
call fcn.1400476d0
jmp 0x140041804
xor r9d, r9d
mov rcx, rdi
mov rbx, qword [rsp + 0x38]
mov rsi, qword [rsp + 0x40]
add rsp, 0x20
pop rdi
jmp fcn.140040e90
mov rcx, rdi
mov rbx, qword [rsp + 0x38]
mov rsi, qword [rsp + 0x40]
add rsp, 0x20
pop rdi
jmp 0x140040220
mov rcx, rbx
mov qword [rsp + 0x30], rbp
call fcn.1400685f0
mov rcx, qword [rsi + 0x38]
lea rax, [rcx + 0x10]
cmp rax, qword [rsi + 0x40]
jbe 0x140041961
mov edx, 1
lea rcx, [rsi + 0x20]
call fcn.14003e4a0
mov rcx, qword [rsi + 0x38]
lea rax, [rcx + 0x10]
mov ebp, 4
mov qword [rsi + 0x38], rax
xor eax, eax
mov qword [rcx], rax
mov qword [rcx + 8], rax
mov word [rcx + 0xe], bp
mov rcx, rbx
call fcn.140041de0
cmp dword [rdi + 0x30], 0
jne 0x140041a4e
cmp word [rbx + 8], 0x5d
jne 0x1400419bd
mov rcx, rbx
call fcn.1400685f0
mov rax, qword [rsi + 0x38]
movabs rcx, 0xffff000000000000
mov word [rax - 2], bp
and qword [rax - 8], rcx
xor ebp, ebp
mov qword [rax - 0x10], rbp
jmp 0x140041a4e
mov r8, rsi
mov rdx, rbx
mov rcx, rdi
xor ebp, ebp
call fcn.140041780
cmp dword [rdi + 0x30], ebp
jne 0x140041a4e
mov rcx, rbx
inc ebp
call fcn.140041de0
cmp dword [rdi + 0x30], 0
jne 0x140041a4e
movzx eax, word [rbx + 8]
cmp ax, 0x2c
jne 0x140041a18
mov rcx, rbx
call fcn.1400685f0
mov rcx, rbx
call fcn.140041de0
cmp dword [rdi + 0x30], 0
jne 0x140041a4e
mov r8, rsi
mov rdx, rbx
mov rcx, rdi
call fcn.140041780
cmp dword [rdi + 0x30], 0
je 0x1400419d2
jmp 0x140041a4e
cmp ax, 0x5d
jne 0x140041a63
mov rcx, rbx
call fcn.1400685f0
mov edx, ebp
mov rcx, rsi
call fcn.140047d10
test al, al
jne 0x140041a4e
mov rax, qword [rbx]
mov rcx, qword [rax + 0x30]
sub rcx, qword [rax + 8]
add rcx, qword [rax + 0x20]
mov dword [rdi + 0x30], reloc.WS2_32.dll_recv
mov qword [rdi + 0x38], rcx
mov rbp, qword [rsp + 0x30]
mov rbx, qword [rsp + 0x38]
mov rsi, qword [rsp + 0x40]
add rsp, 0x20
pop rdi
ret
mov rax, qword [rbx]
mov rcx, qword [rax + 0x30]
sub rcx, qword [rax + 8]
add rcx, qword [rax + 0x20]
mov dword [rdi + 0x30], 7
jmp 0x140041a4a
mov rcx, rdi
mov rbx, qword [rsp + 0x38]
mov rsi, qword [rsp + 0x40]
add rsp, 0x20
pop rdi
jmp 0x14003f260