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

Disassembly:
mov qword [rsp + 0x18], rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x27]
sub rsp, 0xc0
mov rax, qword [0x18010e098]
xor rax, rsp
mov qword [rbp + 0x1f], rax
mov rdi, rcx
mov qword [rbp - 0x61], rcx
xor ecx, ecx
mov dword [rbp - 0x79], r8d
xorps xmm0, xmm0
mov dword [rbp - 0x11], ecx
xor r12d, r12d
xor r13d, r13d
xor esi, esi
movabs rcx, 0x8000000000000000
mov qword [rdi], rcx
mov r14, rdx
movups xmmword [rbp - 0x31], xmm0
movups xmmword [rbp - 0x21], xmm0
test r8d, r8d
jne 0x180058ada
call sym.avutil_59.dll_av_gettime
mov rbx, rax
movabs rax, 0x431bde82d7b634db
imul rbx
sar rdx, 0x12
mov rcx, rdx
shr rcx, 0x3f
add rdx, rcx
mov rcx, r14
mov qword [rbp - 0x69], rdx
lea rdx, [0x1800ddd94]
call sym.avutil_59.dll_av_strcasecmp
test eax, eax
jne 0x180058a48
mov qword [rdi], rbx
jmp 0x180058e87
xor ebx, ebx
lea rdi, str._Y____m____d
mov rdx, qword [rdi]
lea r8, [rbp - 0x31]
mov rcx, r14
call sym.avutil_59.dll_av_small_strptime
test rax, rax
jne 0x180058a70
inc ebx
add rdi, 8
cmp ebx, 2
jb 0x180058a51
test rax, rax
mov rdi, rax
cmove rdi, r14
sete r12b
movzx ecx, byte [rdi]
lea eax, [rcx - 0x54]
test al, 0xdf
je 0x180058a9e
cmp cl, 0x20
je 0x180058a95
sub cl, 9
cmp cl, 4
ja 0x180058aa1
movzx ecx, byte [rdi + 1]
inc rdi
jmp 0x180058a88
inc rdi
xor r14d, r14d
lea r15, str._H:_M:_S
nop dword [rax + rax]
mov rdx, qword [r15]
lea r8, [rbp - 0x31]
mov rcx, rdi
call sym.avutil_59.dll_av_small_strptime
mov rbx, rax
test rax, rax
jne 0x180058ad4
inc r14d
add r15, 8
cmp r14d, 2
jb 0x180058ab0
mov rdi, qword [rbp - 0x61]
jmp 0x180058b58
cmp byte [rdx], 0x2d
lea r15, [rdx + 1]
lea r8, [rbp - 0x31]
cmovne r15, r14
lea rdx, str._J:_M:_S
mov rcx, r15
sete r13b
call sym.avutil_59.dll_av_small_strptime
mov rbx, rax
test rax, rax
jne 0x180058b63
lea r8, [rbp - 0x31]
mov rcx, r15
lea rdx, str._M:_S
call sym.avutil_59.dll_av_small_strptime
mov dword [rbp - 0x29], esi
mov rbx, rax
test rax, rax
jne 0x180058b63
call fcn.1800a88f4
lea r8d, [rbx + 0xa]
mov rcx, r15
lea rdx, [rbp - 0x71]
mov dword [rax], esi
call fcn.1800aed70
mov rdi, rax
cmp qword [rbp - 0x71], r15
je 0x180058e1c
call fcn.1800a88f4
cmp dword [rax], 0x22
je 0x180058e82
mov rbx, qword [rbp - 0x71]
test rbx, rbx
je 0x180058e1c
jmp 0x180058b73
imul eax, dword [rbp - 0x29], 0x3c
add eax, dword [rbp - 0x2d]
imul ecx, eax, 0x3c
add ecx, dword [rbp - 0x31]
movsxd rdi, ecx
movzx ecx, byte [rbx]
cmp cl, 0x2e
jne 0x180058bbf
inc rbx
mov ecx, 0x186a0
movsx eax, byte [rbx]
mov edx, eax
sub al, 0x30
cmp al, 9
ja 0x180058bb0
lea eax, [rdx - 0x30]
inc rbx
imul eax, ecx
add esi, eax
mov eax, 0xcccccccd
mul ecx
mov ecx, edx
shr ecx, 3
cmp ecx, 1
jge 0x180058b83
nop word [rax + rax]
movzx ecx, byte [rbx]
lea eax, [rcx - 0x30]
cmp al, 9
ja 0x180058bbf
inc rbx
jmp 0x180058bb0
cmp dword [rbp - 0x79], 0
je 0x180058c2b
cmp cl, 0x6d
jne 0x180058bf2
cmp byte [rbx + 1], 0x73
jne 0x180058c10
mov eax, 0x10624dd3
mov r8d, 0x3e8
imul esi
mov esi, edx
sar esi, 6
mov eax, esi
shr eax, 0x1f
add esi, eax
add rbx, 2
jmp 0x180058e17
cmp cl, 0x75
jne 0x180058c10
cmp byte [rbx + 1], 0x73
lea rax, [rbx + 1]
jne 0x180058c14
xor esi, esi
add rbx, 2
lea r8d, [rsi + 1]
jmp 0x180058e17
lea rax, [rbx + 1]
mov r8d, 0xf4240
cmp cl, 0x73
jne 0x180058e17
mov rbx, rax
jmp 0x180058e17
sub cl, 0x5a
mov edi, 0
test cl, 0xdf
sete dil
mov eax, edi
add rbx, rax
test r12d, r12d
jne 0x180058cc9
test edi, edi
jne 0x180058d2a
movzx r12d, byte [rbx]
lea eax, [r12 - 0x2b]
test al, 0xfd
jne 0x180058d2a
xorps xmm0, xmm0
lea r15, [rbx + 1]
xor eax, eax
lea r14, str._H:_M
movups xmmword [rbp - 9], xmm0
mov dword [rbp + 0x17], eax
movups xmmword [rbp + 7], xmm0
nop dword [rax]
mov rdx, qword [r14]
lea r8, [rbp - 9]
mov rcx, r15
call sym.avutil_59.dll_av_small_strptime
mov rbx, rax
test rax, rax
jne 0x180058caa
inc edi
add r14, 8
cmp edi, 3
jb 0x180058c80
lea eax, [rbx - 0x16]
jmp 0x180058e87
imul edx, dword [rbp - 1], 0x3c
mov dword [rbp - 0x11], 0
add edx, dword [rbp - 5]
mov eax, edx
neg eax
cmp r12b, 0x2b
cmove edx, eax
imul r10d, edx, 0x3c
jmp 0x180058d42
lea rcx, [rbp - 0x69]
test edi, edi
je 0x180058cd8
call fcn.1800b004c
jmp 0x180058cdd
call fcn.1800bbe88
test rax, rax
je 0x180058cfb
movups xmm0, xmmword [rax]
movups xmm1, xmmword [rax + 0x10]
mov eax, dword [rax + 0x20]
mov dword [rbp + 0x17], eax
lea rax, [rbp - 9]
movups xmmword [rbp + 7], xmm1
movups xmmword [rbp - 9], xmm0
movups xmm0, xmmword [rax]
mov ecx, dword [rax + 0x20]
movups xmm1, xmmword [rax + 0x10]
mov eax, dword [rbp - 0x29]
movups xmmword [rbp - 0x59], xmm0
mov dword [rbp - 0x51], eax
mov eax, dword [rbp - 0x2d]
mov dword [rbp - 0x55], eax
mov eax, dword [rbp - 0x31]
mov dword [rbp - 0x59], eax
movups xmm0, xmmword [rbp - 0x59]
mov dword [rbp - 0x11], ecx
movups xmmword [rbp - 0x21], xmm1
movups xmmword [rbp - 0x31], xmm0
mov eax, edi
neg eax
sbb ecx, ecx
xor r10d, r10d
neg ecx
dec ecx
mov dword [rbp - 0x11], ecx
test edi, edi
je 0x180058dfc
mov rcx, qword [rbp - 0x21]
mov edx, dword [rbp - 0x21]
shr rcx, 0x20
inc edx
add ecx, 0x76c
cmp edx, 3
lea eax, [rdx + 0xc]
cmovge eax, edx
lea r9d, [rcx - 1]
cmovge r9d, ecx
imul ecx, eax, 0x99
mov eax, 0x66666667
sub ecx, 0x1c9
imul ecx
mov ecx, edx
sar ecx, 1
mov eax, ecx
shr eax, 0x1f
add ecx, eax
mov rax, qword [rbp - 0x29]
shr rax, 0x20
add ecx, eax
mov eax, 0x51eb851f
imul r9d
mov eax, 0x51eb851f
sar edx, 7
mov r8d, edx
add edx, ecx
shr r8d, 0x1f
add r8d, edx
imul ecx, r9d, 0x16d
imul r9d
add r8d, ecx
mov eax, r9d
sar edx, 5
mov ecx, edx
shr ecx, 0x1f
add edx, ecx
mov rcx, qword [rbp - 0x31]
sub r8d, edx
shr rcx, 0x20
cdq
and edx, 3
add eax, edx
sar eax, 2
add eax, 0xfff50593
add eax, r8d
cdqe
imul rdi, rax, 0x15180
imul eax, dword [rbp - 0x29], 0x3c
add ecx, eax
imul eax, ecx, 0x3c
add eax, dword [rbp - 0x31]
cdqe
add rdi, rax
jmp 0x180058e0b
lea rcx, [rbp - 0x31]
call fcn.1800bc290
mov rdi, rax
xor r10d, r10d
movsxd rax, r10d
mov r8d, 0xf4240
add rdi, rax
cmp byte [rbx], 0
je 0x180058e23
mov eax, 0xffffffea
jmp 0x180058e87
xor edx, edx
movabs rcx, 0x7fffffffffffffff
mov rax, rcx
div r8
cmp rax, rdi
jl 0x180058e82
movabs rax, 0x8000000000000000
cqo
idiv r8
cmp rdi, rax
jl 0x180058e82
imul rdi, r8
movsxd rax, esi
sub rcx, rax
cmp rcx, rdi
jl 0x180058e82
add rdi, rax
test r13d, r13d
je 0x180058e77
movabs rax, 0x8000000000000000
cmp rdi, rax
je 0x180058e82
neg rdi
mov rax, qword [rbp - 0x61]
mov qword [rax], rdi
xor eax, eax
jmp 0x180058e87
mov eax, 0xffffffde
mov rcx, qword [rbp + 0x1f]
xor rcx, rsp
call fcn.1800a4400
mov rbx, qword [rsp + 0x110]
add rsp, 0xc0
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret