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

Disassembly:
mov qword [rsp + 0x10], rbx
mov qword [rsp + 0x20], r9
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x20
mov r14, qword [rcx + 0x138]
lea r12, [rcx + 0xc08]
mov rdi, qword [r8]
mov r13, r8
mov rbp, rdx
mov qword [rsp + 0x60], rdi
mov rsi, rcx
mov qword [rsp + 0x70], r14
mov r8, rdi
mov rcx, r14
mov edx, 0xa
mov r15, r14
call fcn.1800af010
xor ebx, ebx
mov edi, 1
mov rcx, rax
mov rdx, r15
test rax, rax
je 0x18006f99c
mov rax, qword [rsi + 0x138]
lea r8, [rcx + 1]
sub rax, rcx
mov rcx, r12
sub rax, rdi
add qword [r13], rax
mov qword [rsi + 0x138], r8
sub r8, r15
call fcn.180059b6c
test eax, eax
jne 0x18006f873
cmp dword [rsi + 0x134], ebx
jne 0x18006f050
mov rcx, r12
call fcn.180059bb0
mov rcx, r12
mov rbx, rax
call fcn.180059bb8
mov r8, rax
mov r9, rbx
mov rdx, rbp
mov rcx, rsi
call fcn.18007006c
cmp eax, 2
je 0x18006f841
xor ebx, ebx
mov rcx, r12
call fcn.180059bb8
mov r14, rax
cmp byte [rax], 0xa
je 0x18006f452
cmp byte [rax], 0xd
je 0x18006f452
mov edx, dword [rsi + 0x134]
xor r15d, r15d
mov ebx, 2
lea ecx, [rdx + 1]
mov dword [rsi + 0x134], ecx
test edx, edx
jne 0x18006f3ab
mov rax, qword [rbp + 0x2e8]
mov ecx, dword [rax + 0x84]
test cl, 3
je 0x18006f2aa
mov al, byte [r14]
mov rbx, r14
jmp 0x18006f0b7
cmp al, 0x20
je 0x18006f0b2
cmp al, 9
jne 0x18006f0bb
add rbx, rdi
mov al, byte [rbx]
test al, al
jne 0x18006f0aa
mov r8d, 5
lea rdx, str.HTTP_
mov rcx, rbx
call fcn.1800c3730
test eax, eax
jne 0x18006f16f
add rbx, 5
movsx edx, byte [rbx]
mov ecx, edx
sub ecx, 0x31
je 0x18006f1ae
sub ecx, 1
je 0x18006f0f8
cmp ecx, 1
jne 0x18006f8a9
mov al, byte [rbx + 1]
mov r8b, 9
cmp al, 0x20
je 0x18006f107
cmp al, r8b
jne 0x18006f16f
lea eax, [rdx - 0x30]
mov r10b, 0x30
lea r9d, [rax + rax*4]
mov al, byte [rbx + 2]
sub al, r10b
add r9d, r9d
cmp al, r8b
ja 0x18006f16f
mov al, byte [rbx + 3]
sub al, r10b
cmp al, r8b
ja 0x18006f16f
mov al, byte [rbx + 4]
sub al, r10b
cmp al, r8b
ja 0x18006f16f
movsx eax, byte [rbx + 2]
lea ecx, [rax + rax*4]
movsx eax, byte [rbx + 3]
lea ecx, [rax + rcx*2]
movsx eax, byte [rbx + 4]
lea ecx, [rcx + rcx*4]
lea ecx, [rcx - 0xa68]
lea ecx, [rax + rcx*2]
mov dword [rsi + 0x148], ecx
mov al, byte [rbx + 5]
cmp al, 0x20
je 0x18006f24f
sub al, r8b
cmp al, 4
jbe 0x18006f24f
mov rcx, r12
call fcn.180059bb0
mov rcx, r12
mov rbx, rax
call fcn.180059bb8
mov rdx, rax
mov r8, rbx
mov rcx, rsi
call fcn.18006ff98
cmp eax, edi
jne 0x18006f908
mov dword [rsi + 0x148], 0xc8
mov byte [rbp + 0x617], 0xa
jmp 0x18006f395
add rbx, rdi
cmp byte [rbx], 0x2e
jne 0x18006f8f2
mov al, byte [rbx + 1]
mov r10b, 0x30
sub al, r10b
cmp al, dil
ja 0x18006f8f2
mov al, byte [rbx + 2]
mov r8b, 9
cmp al, 0x20
je 0x18006f1df
cmp al, r8b
jne 0x18006f8f2
movsx r9d, byte [rbx + 1]
mov al, byte [rbx + 3]
sub r9d, 0x26
sub al, r10b
cmp al, r8b
ja 0x18006f8f2
mov al, byte [rbx + 4]
sub al, r10b
cmp al, r8b
ja 0x18006f8f2
mov al, byte [rbx + 5]
sub al, r10b
cmp al, r8b
ja 0x18006f8f2
movsx eax, byte [rbx + 3]
lea ecx, [rax + rax*4]
movsx eax, byte [rbx + 4]
lea ecx, [rax + rcx*2]
movsx eax, byte [rbx + 5]
lea ecx, [rcx + rcx*4]
lea ecx, [rcx - 0xa68]
lea ecx, [rax + rcx*2]
mov dword [rsi + 0x148], ecx
mov al, byte [rbx + 6]
cmp al, 0x20
je 0x18006f24f
cmp al, r8b
je 0x18006f24f
sub al, 0xa
cmp al, 3
ja 0x18006f8f2
cmp ecx, 0x64
jl 0x18006f8e6
mov ecx, r9d
sub ecx, 0xa
je 0x18006f269
cmp ecx, 1
jne 0x18006f8b5
mov byte [rbp + 0x617], r9b
cmp dword [rsi + 0x164], 3
jne 0x18006f28e
cmp r9b, 0x14
je 0x18006f28e
lea rdx, str.Lying_server__not_serving_HTTP_2
mov rcx, rsi
call fcn.18006419c
cmp byte [rbp + 0x617], 0x14
jae 0x18006f395
mov rax, qword [rbp + 0x5d8]
or dword [rax], 0xffffffff
jmp 0x18006f395
bt ecx, 0x12
jae 0x18006f908
mov al, byte [r14]
mov rbx, r14
jmp 0x18006f2c9
cmp al, 0x20
je 0x18006f2c4
cmp al, 9
jne 0x18006f2cd
add rbx, rdi
mov al, byte [rbx]
test al, al
jne 0x18006f2bc
mov r8d, 5
lea rdx, str.RTSP_
mov rcx, rbx
call fcn.1800c3730
test eax, eax
jne 0x18006f908
add rbx, 5
mov cl, 0x30
mov r8b, 9
mov al, byte [rbx]
sub al, cl
cmp al, r8b
ja 0x18006f8fe
add rbx, rdi
cmp byte [rbx], 0x2e
jne 0x18006f8fe
mov al, byte [rbx + 1]
sub al, cl
cmp al, r8b
ja 0x18006f8fe
mov al, byte [rbx + 2]
cmp al, 0x20
je 0x18006f32a
cmp al, r8b
jne 0x18006f8fe
mov al, byte [rbx + 3]
sub al, cl
cmp al, r8b
ja 0x18006f8fe
mov al, byte [rbx + 4]
sub al, cl
cmp al, r8b
ja 0x18006f8fe
mov al, byte [rbx + 5]
sub al, cl
cmp al, r8b
ja 0x18006f8fe
movsx eax, byte [rbx + 3]
lea ecx, [rax + rax*4]
movsx eax, byte [rbx + 4]
lea ecx, [rax + rcx*2]
movsx eax, byte [rbx + 5]
lea ecx, [rcx + rcx*4]
lea ecx, [rcx - 0xa68]
lea ecx, [rax + rcx*2]
mov dword [rsi + 0x148], ecx
mov al, byte [rbx + 6]
cmp al, 0x20
je 0x18006f38e
cmp al, r8b
je 0x18006f38e
sub al, 0xa
cmp al, 3
ja 0x18006f8fe
mov byte [rbp + 0x617], recv
mov rdx, rbp
mov rcx, rsi
call fcn.18006fbf8
test eax, eax
jne 0x18006f873
lea ebx, [rax + 6]
mov rcx, rsi
call fcn.180070830
test eax, eax
jne 0x18006f873
mov r8, r14
mov rdx, rbp
mov rcx, rsi
call fcn.18006ded8
test eax, eax
jne 0x18006f873
mov edi, ebx
mov rcx, r12
or edi, 1
cmp byte [rsi + 0xa24], r15b
cmove edi, ebx
mov ebx, dword [rsi + 0x148]
call fcn.180059bb0
mov r9, rax
mov r8, r14
mov edx, 1
mov rcx, rsi
call fcn.180063ff4
mov rcx, r12
call fcn.180059bb0
mov edx, edi
mov r9, rax
or edx, 0x10
lea eax, [rbx - 0x64]
cmp eax, 0x64
mov r8, r14
mov rcx, rsi
cmovae edx, edi
call fcn.18006423c
xor ebx, ebx
test eax, eax
jne 0x18006f873
mov rcx, r12
call fcn.180059bb0
add qword [rsi + 0x12d0], rax
mov rcx, r12
call fcn.180059bb0
add qword [rsi + 0x108], rax
jmp 0x18006f817
mov ecx, dword [rsi + 0x148]
lea eax, [rcx - 0x64]
cmp eax, 0x63
ja 0x18006f4cf
sub ecx, 0x64
je 0x18006f49a
cmp ecx, 1
je 0x18006f47f
lea rdi, [rsi + 0x1c2]
mov dword [rsi + 0x134], ebx
mov byte [rdi], 1
jmp 0x18006f53d
cmp dword [rsi + 0x164], 2
je 0x18006f914
lea rdi, [rsi + 0x1c2]
mov byte [rdi], bl
jmp 0x18006f53d
lea rdi, [rsi + 0x1c2]
mov dword [rsi + 0x134], ebx
mov byte [rdi], 1
cmp dword [rsi + 0x160], ebx
jle 0x18006f53d
or dword [rsi + 0x14c], 2
xor edx, edx
mov rcx, rsi
mov dword [rsi + 0x160], ebx
call fcn.180054278
jmp 0x18006f53d
xor r14d, r14d
lea rbx, [rsi + 0x1c2]
cmp qword [rsi + 0xe8], 0xffffffffffffffff
mov rdi, rbx
mov byte [rbx], r14b
jne 0x18006f53b
cmp byte [rsi + 0x1c7], r14b
jne 0x18006f53b
cmp byte [rbp + 0x2ce], r14b
jne 0x18006f53b
cmp byte [rbp + 0x617], 0xb
jne 0x18006f53b
mov rax, qword [rbp + 0x2e8]
test dword [rax + 0x84], 0x40000
jne 0x18006f53b
cmp byte [rsi + 0x1158], 5
je 0x18006f53b
lea rdx, str.no_chunk__no_close__no_size._Assume_close_to_signal_end
mov rcx, rsi
call fcn.18006419c
lea edx, [r14 + 2]
mov rcx, rbp
call fcn.180064f3c
xor ebx, ebx
cmp byte [rdi], bl
jne 0x18006f551
mov rcx, rsi
call fcn.18006fb7c
test eax, eax
jne 0x18006f873
mov r14d, 0x191
cmp byte [rbp + 0x2ce], bl
je 0x18006f5dd
mov eax, dword [rsi + 0x148]
cmp eax, r14d
jne 0x18006f573
cmp dword [rbp + 0x3b0], 2
je 0x18006f583
cmp eax, 0x197
jne 0x18006f599
cmp dword [rbp + 0x3b4], 2
jne 0x18006f599
lea rdx, str.Connection_closure_while_negotiating_auth__HTTP_1.0__
mov rcx, rsi
call fcn.18006419c
mov byte [rsi + 0x12a5], 1
cmp byte [rbp + 0x2ce], bl
je 0x18006f5dd
mov eax, dword [rsi + 0x148]
cmp eax, r14d
jne 0x18006f5b7
cmp dword [rbp + 0x4a8], 1
je 0x18006f5c7
jmp 0x18006f5dd
cmp eax, 0x197
jne 0x18006f5dd
cmp dword [rbp + 0x4ac], 1
jne 0x18006f5dd
lea rdx, str.Connection_closure_while_negotiating_auth__HTTP_1.0__
mov rcx, rsi
call fcn.18006419c
mov byte [rsi + 0x12a5], 1
cmp dword [rbp + 0x4a8], 3
jne 0x18006f5f9
cmp dword [rsi + 0x148], r14d
je 0x18006f5f9
mov dword [rbp + 0x4a8], 4
cmp dword [rbp + 0x4ac], 3
jne 0x18006f618
cmp dword [rsi + 0x148], 0x197
je 0x18006f618
mov dword [rbp + 0x4ac], 4
mov eax, dword [rsi + 0x148]
sub eax, 0x64
cmp eax, 0x64
mov al, byte [rsi + 0xa24]
sbb ebx, ebx
and ebx, 0x10
neg al
sbb ecx, ecx
neg ecx
add ecx, 2
or ebx, ecx
mov rcx, r12
call fcn.180059bb0
mov rcx, r12
mov r14, rax
call fcn.180059bb8
mov r8, rax
mov r9, r14
mov edx, ebx
mov rcx, rsi
call fcn.18006423c
xor ebx, ebx
test eax, eax
jne 0x18006f873
mov r9, qword [rsi + 0x108]
movsxd rcx, r14d
add qword [rsi + 0x12d0], rcx
add r9, rcx
mov qword [rsi + 0x108], r9
mov rcx, rsi
mov r8d, dword [rsi + 0x148]
call fcn.180070488
test al, al
jne 0x18006f986
lea eax, [r8 - 0x64]
cmp eax, 0x63
cmova r9, rbx
mov qword [rsi + 0x110], r9
call fcn.18006cf0c
test eax, eax
jne 0x18006f873
cmp dword [rsi + 0x148], 0x12c
jl 0x18006f80f
cmp byte [rbp + 0x2d8], bl
jne 0x18006f7e7
cmp byte [rbp + 0x2ce], bl
jne 0x18006f7e7
cmp byte [rsi + 0x12b3], bl
jne 0x18006f7ef
movzx ecx, byte [rsi + 0x1158]
sub ecx, 1
je 0x18006f70b
sub ecx, 1
je 0x18006f70b
sub ecx, 1
je 0x18006f70b
cmp ecx, 1
jne 0x18006f7e7
xor edx, edx
mov rcx, rsi
call fcn.180054278
cmp byte [rsi + 0x1c4], bl
jne 0x18006f7e7
cmp dword [rsi + 0x148], 0x1a1
jne 0x18006f770
cmp byte [rsi + 0x12a7], bl
je 0x18006f770
lea rdx, str.Got_417_while_waiting_for_a_100
mov rcx, rsi
call fcn.18006419c
mov rcx, qword [rsi + 0x1160]
mov byte [rsi + 0x12a8], 1
call qword [case.0x1800602a2.1]
lea rdx, [rsi + 0xe8]
mov rcx, rsi
mov qword [rsi + 0x188], rax
call fcn.1800683e0
jmp 0x18006f7e7
mov rcx, rsi
cmp byte [rsi + 0xa20], bl
je 0x18006f79e
lea rdx, str.HTTP_error_before_end_of_send__keep_sending
call fcn.18006419c
cmp dword [rsi + 0x160], ebx
jle 0x18006f7e7
or dword [rsi + 0x14c], 2
mov dword [rsi + 0x160], ebx
jmp 0x18006f7e7
lea rdx, str.HTTP_error_before_end_of_send__stop_sending
call fcn.18006419c
mov edx, 2
mov rcx, rbp
call fcn.180064f3c
lea rdx, [rsi + 0xe8]
mov rcx, rsi
call fcn.1800683e0
test eax, eax
jne 0x18006f873
mov byte [rsi + 0x1c4], 1
cmp byte [rsi + 0x12a7], bl
je 0x18006f7e7
mov dword [rsi + 0x160], 3
cmp byte [rsi + 0x12b3], bl
je 0x18006f80f
cmp qword [rbp + 0x310], 0xffffffffffffffff
je 0x18006f80f
lea rdx, str.Keep_sending_data_to_get_tossed_away
mov rcx, rsi
call fcn.18006419c
or dword [rsi + 0x14c], 2
cmp byte [rdi], bl
je 0x18006f93f
mov rcx, r12
call fcn.180059bbc
mov r15, qword [rsi + 0x138]
cmp byte [r15], bl
je 0x18006f871
mov r8, qword [r13]
mov edx, 0xa
mov rcx, r15
call fcn.1800af010
jmp 0x18006efd6
mov edx, 2
mov rcx, rbp
call fcn.180064f3c
xor r14d, r14d
cmp byte [rsi + 0xa43], r14b
je 0x18006fa10
mov byte [rsi + 0x1c2], r14b
cmp qword [r13], r14
je 0x18006f888
mov dword [rsi + 0x130], edi
xor eax, eax
mov rbx, qword [rsp + 0x68]
add rsp, 0x20
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret
mov rax, qword [rsp + 0x60]
mov dword [rsi + 0x130], 2
mov qword [r13], rax
mov rax, qword [rsp + 0x70]
mov qword [rsi + 0x138], rax
jmp 0x18006f871
lea rdx, str.Unsupported_HTTP_version_in_response
jmp 0x18006fa17
mov eax, 0x66666667
mov rcx, rsi
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.1800640d0
jmp 0x18006fa1f
lea rdx, str.Unsupported_response_code_in_HTTP_response
jmp 0x18006fa17
lea rdx, str.Unsupported_HTTP_1_subversion_in_response
jmp 0x18006fa17
mov eax, 8
jmp 0x18006f873
mov byte [rsi + 0x1c2], r15b
jmp 0x18006f871
lea rdx, str.Received_101__Switching_to_HTTP_2
mov rcx, rsi
call fcn.18006419c
mov dword [rsi + 0x164], 3
mov byte [rsi + 0x1c2], dil
mov dword [rsi + 0x134], ebx
jmp 0x18006fa1f
mov rcx, qword [rsp + 0x78]
cmp byte [rsi + 0x1cc], bl
je 0x18006f953
mov byte [rcx], 1
mov al, 1
jmp 0x18006f955
mov al, byte [rcx]
cmp qword [rsi + 0xf0], rbx
jne 0x18006f963
mov byte [rcx], 1
jmp 0x18006f967
test al, al
je 0x18006f96e
and dword [rsi + 0x14c], 0xfffffffe
mov r9, r14
mov r8, r15
mov edx, 1
mov rcx, rsi
call fcn.180063ff4
jmp 0x18006f871
lea rdx, str.The_requested_URL_returned_error:__d
call fcn.1800640d0
mov eax, socket
jmp 0x18006f873
mov r8, qword [r13]
mov rcx, r12
call fcn.180059b6c
test eax, eax
jne 0x18006f873
cmp dword [rsi + 0x134], ebx
jne 0x18006f871
mov rcx, r12
call fcn.180059bb0
mov rcx, r12
mov rbx, rax
call fcn.180059bb8
mov r8, rax
mov r9, rbx
mov rdx, rbp
mov rcx, rsi
call fcn.18007006c
cmp eax, 2
jne 0x18006f871
xor r14d, r14d
mov dword [rsi + 0x130], eax
mov edx, eax
mov byte [rsi + 0x1c2], r14b
mov rcx, rbp
call fcn.180064f3c
cmp byte [rsi + 0xa43], r14b
jne 0x18006f871
lea rdx, str.Received_HTTP_0.9_when_not_allowed
mov rcx, rsi
call fcn.1800640d0
mov eax, edi
jmp 0x18006f873