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

Disassembly:
mov qword [rsp + 8], rbx
mov qword [rsp + 0x10], rbp
mov qword [rsp + 0x18], rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x30
mov r10, qword [r9]
mov r14, rcx
mov eax, dword [rsp + 0x80]
movabs rcx, 0x2386f26fc10000
movsxd rbp, dword [r9 + 8]
mov rdi, rdx
cmp r10, rcx
jb 0x14017e2e2
mov r11d, reloc.WS2_32.dll_recvfrom
jmp 0x14017e40e
movabs rcx, 0x38d7ea4c68000
cmp r10, rcx
jb 0x14017e2fc
mov r11d, reloc.WS2_32.dll_recv
jmp 0x14017e40e
movabs rcx, 0x5af3107a4000
cmp r10, rcx
jb 0x14017e316
mov r11d, reloc.WS2_32.dll_ntohs
jmp 0x14017e40e
movabs rcx, 0x9184e72a000
cmp r10, rcx
jb 0x14017e330
mov r11d, reloc.WS2_32.dll_ntohl
jmp 0x14017e40e
movabs rcx, 0xe8d4a51000
cmp r10, rcx
jb 0x14017e34a
mov r11d, reloc.WS2_32.dll_listen
jmp 0x14017e40e
movabs rcx, 0x174876e800
cmp r10, rcx
jb 0x14017e364
mov r11d, reloc.WS2_32.dll_inet_ntoa
jmp 0x14017e40e
movabs rcx, 0x2540be400
cmp r10, rcx
jb 0x14017e37e
mov r11d, reloc.WS2_32.dll_inet_addr
jmp 0x14017e40e
cmp r10, 0x3b9aca00
jb 0x14017e38f
mov r11d, 0xa
jmp 0x14017e40e
cmp r10, 0x5f5e100
jb 0x14017e3a0
mov r11d, 9
jmp 0x14017e40e
cmp r10, 0x989680
jb 0x14017e3b1
mov r11d, 8
jmp 0x14017e40e
cmp r10, 0xf4240
jb 0x14017e3c2
mov r11d, 7
jmp 0x14017e40e
cmp r10, 0x186a0
jb 0x14017e3d3
mov r11d, 6
jmp 0x14017e40e
cmp r10, 0x2710
jb 0x14017e3e4
mov r11d, 5
jmp 0x14017e40e
cmp r10, 0x3e8
jb 0x14017e3f5
mov r11d, 4
jmp 0x14017e40e
cmp r10, 0x64
jb 0x14017e403
mov r11d, 3
jmp 0x14017e40e
cmp r10, 0xa
sbb r11d, r11d
add r11d, 2
lea r15d, [r11 + rbp]
mov r13d, 1
lea ebx, [r15 - 1]
mov r12d, ebx
test eax, eax
jne 0x14017e483
lea ecx, [rax - 3]
mov eax, ecx
sub eax, r11d
cmp r11d, r13d
cmovne ecx, eax
cmp ecx, ebp
jg 0x14017e444
xor eax, eax
cmp r11d, r13d
setne al
add eax, 4
cmp ebp, eax
jle 0x14017e497
xor ecx, ecx
lea eax, [rbx + 0x63]
cmp eax, 0xc6
seta cl
xor ebp, ebp
add ecx, 4
cmp r11d, r13d
seta bpl
add ebp, ecx
mov rcx, r8
add ebp, r11d
sub rcx, rdi
mov eax, ebp
cmp rcx, rax
jge 0x14017e6d3
mov qword [r14], r8
mov dword [r14 + 8], 0x84
jmp 0x14017e906
cmp eax, 3
jne 0x14017e492
lea eax, [rbx + 4]
cmp eax, 9
ja 0x14017e444
jmp 0x14017e497
cmp eax, 2
jne 0x14017e444
lea rsi, [0x140000000]
test ebp, ebp
js 0x14017e4b7
mov r12d, r15d
cmp r10, r13
jne 0x14017e4cb
movzx eax, byte [rbp + rsi + 0xf04d70]
sub r12d, eax
jmp 0x14017e4cb
test r15d, r15d
jle 0x14017e4c2
lea r12d, [r11 + 1]
jmp 0x14017e4cb
mov r12d, 2
sub r12d, ebp
mov rax, r8
mov ecx, r12d
sub rax, rdi
cmp rax, rcx
jl 0x14017e473
test ebp, ebp
jle 0x14017e501
cmp ebp, 0x16
jg 0x14017e5c9
bsf rcx, r10
mov rax, r10
shr rax, cl
cmp rax, qword [rsi + rbp*8 + 0xf053d0]
ja 0x14017e5c9
mov ecx, r11d
movabs rax, 0xffffffff00000000
lea r9, [rcx + rdx]
mov ebx, 0x51eb851f
mov r13d, 0xd1b71759
test rax, r10
je 0x14017e62a
movabs rax, 0xabcc77118461cefd
mul r10
shr rdx, 0x1a
imul eax, edx, 0x5f5e100
sub r10d, eax
mov eax, r13d
mov ecx, r10d
mov r10, rdx
mul ecx
mov r8d, edx
shr r8d, 0xd
imul eax, r8d, 0x2710
sub ecx, eax
mov eax, r13d
mul r8d
shr edx, 0xd
imul eax, edx, 0x2710
sub r8d, eax
mov eax, ebx
mul ecx
shr edx, 5
imul eax, edx, 0x64
sub ecx, eax
add ecx, ecx
movzx eax, word [rcx + rsi + 0xf05600]
mov word [r9 - 2], ax
lea eax, [rdx + rdx]
movzx eax, word [rax + rsi + 0xf05600]
mov word [r9 - 4], ax
mov eax, ebx
mul r8d
shr edx, 5
imul eax, edx, 0x64
sub r8d, eax
add r8d, r8d
movzx eax, word [r8 + rsi + 0xf05600]
mov word [r9 - 6], ax
sub r9, 8
lea eax, [rdx + rdx]
movzx eax, word [rax + rsi + 0xf05600]
mov word [r9], ax
jmp 0x14017e62a
and dword [rsp + 0x20], 0
mov rcx, r14
movsd xmm3, qword [rsp + 0x88]
call fcn.14017bb7c
jmp 0x14017e906
mov eax, r13d
mul r10d
shr edx, 0xd
imul eax, edx, 0x2710
sub r10d, eax
mov eax, ebx
mov ecx, r10d
mov r10d, edx
mul ecx
shr edx, 5
imul eax, edx, 0x64
sub ecx, eax
add ecx, ecx
movzx eax, word [rcx + rsi + 0xf05600]
lea ecx, [rdx + rdx]
mov word [r9 - 2], ax
sub r9, 4
movzx ecx, word [rcx + rsi + 0xf05600]
mov word [r9], cx
cmp r10d, 0x2710
jae 0x14017e5e4
cmp r10d, 0x64
jb 0x14017e65e
mov eax, ebx
mul r10d
shr edx, 5
imul eax, edx, 0x64
sub r10d, eax
sub r9, 2
lea eax, [r10 + r10]
mov r10d, edx
movzx eax, word [rax + rsi + 0xf05600]
mov word [r9], ax
cmp r10d, 0xa
jb 0x14017e677
lea eax, [r10 + r10]
movzx eax, word [rax + rsi + 0xf05600]
mov word [r9 - 2], ax
jmp 0x14017e67f
add r10b, 0x30
mov byte [r9 - 1], r10b
test ebp, ebp
jle 0x14017e68e
mov ecx, r11d
mov r8, rbp
add rcx, rdi
jmp 0x14017e6c1
je 0x14017e6cb
test r15d, r15d
jle 0x14017e6ad
movsxd rbx, r15d
lea rdx, [rdi + 1]
mov r8, rbx
mov rcx, rdi
call fcn.140cfb740
mov byte [rbx + rdi], 0x2e
jmp 0x14017e6cb
neg r15d
mov word [rdi], 0x2e30
test r15d, r15d
jle 0x14017e6cb
lea rcx, [rdi + 2]
movsxd r8, r15d
mov edx, gethostbyaddr
call fcn.140cfbde0
mov eax, r12d
jmp 0x14017e8fb
xor r9d, r9d
lea rsi, [0x140000000]
movabs rax, 0xffffffff00000000
mov r15d, 0x51eb851f
test rax, r10
je 0x14017e7aa
mov r8d, r11d
movabs rax, 0xabcc77118461cefd
mul r10
shr rdx, 0x1a
imul eax, edx, 0x5f5e100
sub r10d, eax
mov eax, 0xd1b71759
mov ecx, r10d
mov r10, rdx
mul ecx
mov r9d, edx
shr r9d, 0xd
imul eax, r9d, 0x2710
sub ecx, eax
mov eax, 0xd1b71759
mul r9d
shr edx, 0xd
imul eax, edx, 0x2710
sub r9d, eax
mov eax, r15d
mul ecx
shr edx, 5
imul eax, edx, 0x64
sub ecx, eax
add ecx, ecx
movzx eax, word [rcx + rsi + 0xf05600]
mov word [r8 + rdi - 1], ax
lea eax, [rdx + rdx]
movzx eax, word [rax + rsi + 0xf05600]
mov word [r8 + rdi - 3], ax
mov eax, r15d
mul r9d
shr edx, 5
imul eax, edx, 0x64
sub r9d, eax
add r9d, r9d
movzx eax, word [r9 + rsi + 0xf05600]
mov r9d, 8
mov word [r8 + rdi - 5], ax
lea eax, [rdx + rdx]
movzx eax, word [rax + rsi + 0xf05600]
mov word [r8 + rdi - 7], ax
cmp r10d, 0x2710
jb 0x14017e817
mov r12d, r11d
mov eax, 0xd1b71759
mov r8, r12
mul r10d
shr edx, 0xd
imul eax, edx, 0x2710
sub r10d, eax
mov eax, r15d
mov ecx, r10d
mov r10d, edx
mul ecx
mov eax, r9d
add r9d, 4
sub r8, rax
shr edx, 5
imul eax, edx, 0x64
sub ecx, eax
add ecx, ecx
movzx eax, word [rcx + rsi + 0xf05600]
mov word [r8 + rdi - 1], ax
lea eax, [rdx + rdx]
movzx eax, word [rax + rsi + 0xf05600]
mov word [r8 + rdi - 3], ax
cmp r10d, 0x2710
jae 0x14017e7b6
mov r12d, ebx
cmp r10d, 0x64
jb 0x14017e84c
mov eax, r15d
mov ecx, r11d
mul r10d
shr edx, 5
imul eax, edx, 0x64
sub r10d, eax
lea eax, [r10 + r10]
mov r10d, edx
lea rdx, [rax]
mov eax, r9d
sub rcx, rax
movzx eax, word [rdx + rsi + 0xf05600]
mov word [rcx + rdi - 1], ax
cmp r10d, 0xa
jb 0x14017e86d
lea ecx, [r10 + r10]
lea eax, [rcx + 1]
mov al, byte [rax + rsi + 0xf05600]
mov byte [rdi + 2], al
mov r10b, byte [rcx + rsi + 0xf05600]
jmp 0x14017e871
add r10b, 0x30
mov byte [rdi], r10b
cmp r11d, r13d
jbe 0x14017e881
mov byte [rdi + 1], 0x2e
lea r13d, [r11 + 1]
mov eax, r13d
inc r13d
mov byte [rax + rdi], 0x65
test ebx, ebx
jns 0x14017e891
neg ebx
test r12d, r12d
mov eax, 0x2d
lea edx, [rax - 2]
cmovns eax, edx
mov byte [rdi + r13], al
inc r13d
cmp ebx, 0x64
jl 0x14017e8e6
mov eax, 0x66666667
imul ebx
sar edx, 2
mov eax, edx
shr eax, 0x1f
add edx, eax
lea eax, [rdx + rdx]
cdqe
movzx eax, word [rax + rsi + 0xf05600]
mov word [r13 + rdi], ax
mov al, dl
shl dl, 2
add al, dl
add al, al
sub bl, al
lea eax, [r13 + 2]
add bl, 0x30
mov byte [rax + rdi], bl
jmp 0x14017e8f9
lea eax, [rbx + rbx]
cdqe
movzx eax, word [rax + rsi + 0xf05600]
mov word [r13 + rdi], ax
mov eax, ebp
add rax, rdi
and dword [r14 + 8], 0
mov qword [r14], rax
mov rbx, qword [rsp + 0x60]
mov rax, r14
mov rbp, qword [rsp + 0x68]
mov rsi, qword [rsp + 0x70]
add rsp, 0x30
pop r15
pop r14
pop r13
pop r12
pop rdi
ret