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

Disassembly:
mov qword [rsp + 0x20], r9
mov qword [rsp + 0x18], r8
push rbx
push rbp
push rsi
push rdi
push r12
push r14
push r15
sub rsp, 0x70
mov r15, qword [r8]
lea rbx, [rcx + 0xe8]
mov r12, qword [rbx + 0x60]
mov rdi, r8
mov qword [rsp + 0x60], r12
mov r14, rdx
mov rbp, rcx
mov qword [rsp + 0x58], r15
mov qword [rsp + 0xb8], r13
mov r8, qword [rdi]
xor esi, esi
mov rcx, r12
mov r15d, 5
lea edx, [rsi + 0xa]
call fcn.18020d420
mov r8, rax
mov rdx, r12
test rax, rax
je 0x1801db501
mov rax, qword [rbx + 0x60]
lea r13, [rbp + 0xcb0]
sub rax, r8
mov rcx, r13
dec rax
add qword [rdi], rax
inc r8
mov qword [rbx + 0x60], r8
sub r8, r12
call fcn.1801c2370
test eax, eax
jne 0x1801daee6
cmp dword [rbx + 0x5c], eax
jne 0x1801dad6d
mov rcx, r13
call fcn.180207d50
mov rcx, r13
mov rsi, rax
call sym.gcm64.dll_public:_char_const____ptr64___cdecl_Json::StaticString::operator_char_const____ptr64_void_const___ptr64
mov rdx, rax
mov rax, qword [r14 + 0x370]
test dword [rax + 0x84], 0x40000
je 0x1801dad55
xor edi, edi
lea rcx, str.RTSP_
cmp rsi, r15
setae dil
cmp rsi, r15
cmova rsi, r15
mov r8, rsi
call sym.gcm64.dll_curl_strnequal
test eax, eax
mov ecx, 2
cmovne ecx, edi
mov rdi, qword [rsp + 0xc0]
jmp 0x1801dad62
mov r8, rsi
mov rcx, rbp
call fcn.1801dbbd0
mov ecx, eax
cmp ecx, 2
je 0x1801db395
xor esi, esi
mov rcx, r13
call sym.gcm64.dll_public:_char_const____ptr64___cdecl_Json::StaticString::operator_char_const____ptr64_void_const___ptr64
mov r15, rax
movzx ecx, byte [rax]
cmp cl, 0xa
je 0x1801db066
cmp cl, 0xd
je 0x1801db066
mov ecx, dword [rbx + 0x5c]
mov edi, 2
lea eax, [rcx + 1]
mov dword [rbx + 0x5c], eax
test ecx, ecx
jne 0x1801dafc5
mov rax, qword [r14 + 0x370]
mov ecx, dword [rax + 0x84]
test cl, 3
je 0x1801daf5d
lea rax, [rsp + 0xb0]
mov dword [rsp + 0x44], esi
mov qword [rsp + 0x30], rax
lea rsi, [rbx + 0x70]
lea rax, [rsp + 0x40]
mov qword [rsp + 0x28], rsi
lea r9, [rsp + 0x44]
mov qword [rsp + 0x20], rax
lea r8, [rsp + 0x48]
mov byte [rsp + 0xb0], 0
lea rdx, str._HTTP__1d._1d_c_3d_c
mov rcx, r15
call fcn.1801c1890
mov edi, eax
cmp eax, 1
jne 0x1801dae3a
cmp dword [rsp + 0x48], 2
jl 0x1801dae3a
mov r9, rsi
lea r8, [rsp + 0x4c]
lea rdx, str._HTTP__1_23___d
mov rcx, r15
call fcn.1801c1890
cmp eax, 2
jne 0x1801dae3a
mov byte [r14 + 0x55f], 0
lea edi, [rax + 2]
mov byte [rsp + 0x40], reloc.WLDAP32.dll_Ordinal_32
jmp 0x1801dae69
movzx eax, byte [rsp + 0xb0]
sub al, 0x30
cmp al, 9
jbe 0x1801db434
cmp edi, 4
jl 0x1801daefd
cmp dword [rsi], 0x64
jl 0x1801db434
cmp byte [rsp + 0x40], 0x20
jne 0x1801daefd
mov eax, dword [rsp + 0x48]
lea ecx, [rax + rax*4]
mov eax, dword [rsp + 0x44]
lea r9d, [rax + rcx*2]
lea eax, [r9 - 0xa]
mov dword [rsp + 0x44], r9d
cmp eax, 1
ja 0x1801db3e5
mov byte [r14 + 0x55f], r9b
cmp dword [rbx + 0x8c], 3
jne 0x1801daeaf
cmp r9b, 0x14
je 0x1801daeaf
lea rdx, str.Lying_server__not_serving_HTTP_2
mov rcx, rbp
call fcn.1801cdb50
cmp byte [r14 + 0x55f], 0x14
jae 0x1801daed5
mov rax, qword [r14 + 0x520]
lea rdx, str.Mark_bundle_as_not_supporting_multiuse
mov rcx, rbp
mov dword [rax], 0xffffffff
call fcn.1801cdb50
test edi, edi
jne 0x1801dafaf
mov byte [rbx + 0xd9], 0
xor eax, eax
mov r13, qword [rsp + 0xb8]
add rsp, 0x70
pop r15
pop r14
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
ret
test edi, edi
jne 0x1801db41b
mov r8, rsi
lea rdx, str._HTTP__3d
mov rcx, r15
call fcn.1801c1890
mov byte [r14 + 0x55f], 0xa
test eax, eax
jne 0x1801dafaf
mov rcx, r13
call fcn.180207d50
mov rcx, r13
mov rdi, rax
call sym.gcm64.dll_public:_char_const____ptr64___cdecl_Json::StaticString::operator_char_const____ptr64_void_const___ptr64
mov rdx, rax
mov r8, rdi
mov rcx, rbp
call fcn.1801dbbd0
cmp eax, 1
jne 0x1801daedd
mov dword [rsi], reloc.WLDAP32.dll_Ordinal_200
mov byte [r14 + 0x55f], 0xa
jmp 0x1801dafaf
bt ecx, 0x12
jae 0x1801daedd
lea rax, [rbx + 0x70]
mov rcx, r15
mov qword [rsp + 0x28], rax
lea r9, [rsp + 0x50]
lea rax, [rsp + 0x41]
lea r8, [rsp + 0x54]
mov qword [rsp + 0x20], rax
lea rdx, str._RTSP__1d._1d_c_3d
call fcn.1801c1890
cmp eax, 4
jne 0x1801daedd
cmp byte [rsp + 0x41], 0x20
jne 0x1801daedd
mov byte [r14 + 0x55f], 0xb
mov rdx, r14
mov rcx, rbp
call fcn.1801db7a0
test eax, eax
jne 0x1801daee6
lea edi, [rax + 6]
mov rcx, rbp
call fcn.1801dc4e0
test eax, eax
jne 0x1801daee6
mov r8, r15
mov rdx, r14
mov rcx, rbp
call fcn.1801d9b80
test eax, eax
jne 0x1801daee6
mov esi, edi
mov rcx, r13
or esi, 1
cmp byte [rbp + 0xaca], al
cmove esi, edi
mov edi, dword [rbx + 0x70]
sub edi, 0x64
call fcn.180207d50
mov r9, rax
mov r8, r15
mov edx, 1
mov rcx, rbp
call fcn.1801cd8e0
mov rcx, r13
call fcn.180207d50
mov edx, esi
mov r9, rax
or edx, 0x10
mov r8, r15
cmp edi, 0x64
mov rcx, rbp
cmovae edx, esi
call fcn.1801cd8d0
test eax, eax
jne 0x1801daee6
mov rcx, r13
call fcn.180207d50
add qword [rbp + 0x13a8], rax
mov rcx, r13
call fcn.180207d50
add qword [rbp + 0x108], rax
jmp 0x1801db371
mov ecx, dword [rbx + 0x70]
lea eax, [rcx - 0x64]
cmp eax, 0x63
ja 0x1801db0cc
sub ecx, 0x64
je 0x1801db0a3
cmp ecx, 1
je 0x1801db08a
mov byte [rbx + 0xd9], 1
mov dword [rbx + 0x5c], esi
jmp 0x1801db12e
cmp dword [rbx + 0x8c], 2
je 0x1801db44d
mov byte [rbx + 0xd9], 0
jmp 0x1801db12e
cmp dword [rbx + 0x88], 0
mov byte [rbx + 0xd9], 1
mov dword [rbx + 0x5c], esi
jle 0x1801db12e
or dword [rbx + 0x74], 2
xor edx, edx
mov rcx, rbp
mov dword [rbx + 0x88], esi
call fcn.1801bb480
jmp 0x1801db12e
cmp qword [rbx], 0xffffffffffffffff
mov byte [rbx + 0xd9], 0
jne 0x1801db12e
cmp byte [rbx + 0xde], 0
jne 0x1801db12e
cmp byte [r14 + 0x336], 0
jne 0x1801db12e
cmp byte [r14 + 0x55f], 0xb
jne 0x1801db12e
mov rax, qword [r14 + 0x370]
test dword [rax + 0x84], 0x40000
jne 0x1801db12e
cmp byte [rbp + 0x1208], 5
je 0x1801db12e
lea rdx, str.no_chunk__no_close__no_size._Assume_close_to_signal_end
mov rcx, rbp
call fcn.1801cdb50
mov edx, 2
mov rcx, r14
call fcn.1801ceb70
cmp byte [rbx + 0xd9], 0
jne 0x1801db147
mov rcx, rbp
call fcn.1801db710
test eax, eax
jne 0x1801daee6
cmp byte [r14 + 0x336], 0
je 0x1801db18f
mov eax, dword [rbp + 0x158]
cmp eax, 0x191
jne 0x1801db168
cmp dword [r14 + 0x3d0], 2
je 0x1801db179
cmp eax, 0x197
jne 0x1801db18f
cmp dword [r14 + 0x3d4], 2
jne 0x1801db18f
lea rdx, str.Connection_closure_while_negotiating_auth__HTTP_1.0__
mov rcx, rbp
call fcn.1801cdb50
mov byte [rbp + 0x132d], 1
mov eax, dword [rbx + 0x70]
mov rcx, r13
sub eax, 0x64
cmp eax, 0x64
mov eax, esi
sbb edi, edi
and edi, 0x10
cmp byte [rbp + 0xaca], 0
setne al
add eax, 2
or edi, eax
call fcn.180207d50
mov rcx, r13
mov rsi, rax
call sym.gcm64.dll_public:_char_const____ptr64___cdecl_Json::StaticString::operator_char_const____ptr64_void_const___ptr64
mov r8, rax
mov r9, rsi
mov edx, edi
mov rcx, rbp
call fcn.1801cd8d0
test eax, eax
jne 0x1801daee6
movsxd rax, esi
mov rcx, rbp
add qword [rbp + 0x13a8], rax
add qword [rbp + 0x108], rax
call fcn.1801dc0a0
test al, al
jne 0x1801db4e7
mov eax, dword [rbx + 0x70]
xor ecx, ecx
sub eax, 0x64
cmp eax, 0x63
cmovbe rcx, qword [rbp + 0x108]
mov qword [rbp + 0x110], rcx
mov rcx, rbp
call fcn.1801d8b20
test eax, eax
jne 0x1801daee6
cmp dword [rbx + 0x70], 0x12c
jl 0x1801db364
cmp byte [r14 + 0x340], al
jne 0x1801db33e
cmp byte [r14 + 0x336], al
jne 0x1801db33e
cmp byte [rbp + 0x133c], al
jne 0x1801db347
movzx eax, byte [rbp + 0x1208]
dec al
cmp al, 3
ja 0x1801db33e
xor edx, edx
mov rcx, rbp
call fcn.1801bb480
cmp byte [rbx + 0xdb], 0
jne 0x1801db33e
cmp dword [rbx + 0x70], 0x1a1
jne 0x1801db2c8
cmp byte [rbp + 0x132f], 0
je 0x1801db2c8
lea rdx, str.Got_417_while_waiting_for_a_100
mov rcx, rbp
call fcn.1801cdb50
mov rcx, qword [rbp + 0x1210]
mov byte [rbp + 0x1330], 1
call qword [case.0x1801c1865.0]
mov rdx, rbx
mov rcx, rbp
mov qword [rbp + 0x198], rax
call fcn.1801dc6c0
jmp 0x1801db33e
cmp byte [rbp + 0xac6], 0
mov rcx, rbp
je 0x1801db2f9
lea rdx, str.HTTP_error_before_end_of_send__keep_sending
call fcn.1801cdb50
cmp dword [rbx + 0x88], 0
jle 0x1801db33e
or dword [rbx + 0x74], 2
mov dword [rbx + 0x88], 0
jmp 0x1801db33e
lea rdx, str.HTTP_error_before_end_of_send__stop_sending
call fcn.1801cdb50
mov edx, 2
mov rcx, r14
call fcn.1801ceb70
mov rdx, rbx
mov rcx, rbp
call fcn.1801dc6c0
test eax, eax
jne 0x1801daee6
mov byte [rbx + 0xdb], 1
cmp byte [rbp + 0x132f], al
je 0x1801db33e
mov dword [rbx + 0x88], 3
cmp byte [rbp + 0x133c], 0
je 0x1801db364
cmp qword [r14 + 0x398], 0xffffffffffffffff
je 0x1801db364
lea rdx, str.Keep_sending_data_to_get_tossed_away
mov rcx, rbp
call fcn.1801cdb50
or dword [rbx + 0x74], 2
cmp byte [rbx + 0xd9], 0
je 0x1801db47a
mov rcx, r13
call fcn.1801c23e0
mov r12, qword [rbx + 0x60]
cmp byte [r12], 0
je 0x1801daee4
mov rdi, qword [rsp + 0xc0]
jmp 0x1801daca1
mov edx, 2
mov rcx, r14
call fcn.1801ceb70
cmp byte [rbp + 0xae9], 0
je 0x1801db577
mov byte [rbx + 0xd9], 0
cmp qword [rdi], 0
je 0x1801db3c8
mov dword [rbx + 0x58], 1
jmp 0x1801daee4
mov rax, qword [rsp + 0x58]
mov dword [rbx + 0x58], 2
mov qword [rdi], rax
mov rax, qword [rsp + 0x60]
mov qword [rbx + 0x60], rax
jmp 0x1801daee4
mov eax, 0x66666667
mov rcx, rbp
imul r9d
sar edx, 2
mov eax, edx
shr eax, 0x1f
add edx, eax
mov r8d, edx
lea eax, [rdx + rdx*4]
add eax, eax
lea rdx, str.Unsupported_HTTP_version___u._d__in_response
sub r9d, eax
call fcn.1801cd9c0
mov eax, 1
jmp 0x1801daee6
lea rdx, str.Unsupported_HTTP_version_in_response
mov rcx, rbp
call fcn.1801cd9c0
mov eax, 1
jmp 0x1801daee6
lea rdx, str.Unsupported_response_code_in_HTTP_response
mov rcx, rbp
call fcn.1801cd9c0
mov eax, 1
jmp 0x1801daee6
lea rdx, str.Received_101__Switching_to_HTTP_2
mov rcx, rbp
call fcn.1801cdb50
mov eax, 1
mov dword [rbx + 0x8c], 3
mov byte [rbx + 0xd9], 1
mov dword [rbx + 0x5c], esi
jmp 0x1801daee6
cmp byte [rbp + 0x1cb], 0
je 0x1801db48d
mov rax, qword [rsp + 0xc8]
jmp 0x1801db4b7
mov rax, qword [r14 + 0x370]
test dword [rax + 0x84], 0x40000
mov rax, qword [rsp + 0xc8]
je 0x1801db4ba
cmp dword [rbp + 0xa18], 2
jne 0x1801db4ba
cmp qword [rbx], 0xffffffffffffffff
jg 0x1801db4ba
mov byte [rax], 1
cmp qword [rbx + 8], 0
jne 0x1801db4c6
mov byte [rax], 1
jmp 0x1801db4cb
cmp byte [rax], 0
je 0x1801db4cf
and dword [rbx + 0x74], 0xfffffffe
mov r9, rsi
mov r8, r12
mov edx, 1
mov rcx, rbp
call fcn.1801cd8e0
jmp 0x1801daee4
mov r8d, dword [rbx + 0x70]
lea rdx, str.The_requested_URL_returned_error:__d
call fcn.1801cd9c0
mov eax, reloc.WLDAP32.dll_Ordinal_22
jmp 0x1801daee6
mov r8, qword [rdi]
lea rcx, [rbp + 0xcb0]
call fcn.1801c2370
test eax, eax
jne 0x1801daee6
cmp dword [rbx + 0x5c], eax
jne 0x1801daee4
lea rcx, [rbp + 0xcb0]
call fcn.180207d50
lea rcx, [rbp + 0xcb0]
mov rdi, rax
call sym.gcm64.dll_public:_char_const____ptr64___cdecl_Json::StaticString::operator_char_const____ptr64_void_const___ptr64
mov r8, rax
mov r9, rdi
mov rdx, r14
mov rcx, rbp
call fcn.1801dbca0
cmp eax, 2
jne 0x1801daee4
mov edx, eax
mov byte [rbx + 0xd9], 0
mov rcx, r14
mov dword [rbx + 0x58], eax
call fcn.1801ceb70
cmp byte [rbp + 0xae9], 0
jne 0x1801daee4
lea rdx, str.Received_HTTP_0.9_when_not_allowed
mov rcx, rbp
call fcn.1801cd9c0
mov eax, 1
jmp 0x1801daee6