Function at 0x18008720c
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 r12, qword [r8]
lea rsi, [rcx + 0xe8]
mov rax, qword [rsi + 0x50]
mov r13, r8
mov rbp, rdx
mov qword [rsp + 0x60], r12
mov rdi, rcx
mov qword [rsp + 0x70], rax
mov rcx, rax
mov r8, r12
mov edx, 0xa
mov r15, rax
call sub.VCRUNTIME140.dll_memchr
xor ebx, ebx
mov rcx, rax
test rax, rax
je 0x180087a7c
lea r14, [rdi + 0xc00]
mov rax, qword [rsi + 0x50]
lea r8, [rcx + 1]
sub rax, rcx
mov rdx, r15
dec rax
mov rcx, r14
add qword [r13], rax
mov qword [rsi + 0x50], r8
sub r8, r15
call fcn.180073f3c
test eax, eax
jne 0x180087b31
cmp dword [rsi + 0x4c], ebx
jne 0x1800872ce
mov rcx, r14
call fcn.18001a244
mov rcx, r14
mov rbx, rax
call fcn.180005a04
mov r8, rax
mov r9, rbx
mov rdx, rbp
mov rcx, rdi
call fcn.180088294
cmp eax, 2
je 0x180087b02
xor ebx, ebx
mov rcx, r14
call fcn.180005a04
mov r12, rax
cmp byte [rax], 0xa
je 0x1800876c7
cmp byte [rax], 0xd
je 0x1800876c7
mov edx, dword [rsi + 0x4c]
mov r14d, 2
lea ecx, [rdx + 1]
mov dword [rsi + 0x4c], ecx
test edx, edx
jne 0x180087616
mov rax, qword [rbp + 0x2e8]
mov ecx, dword [rax + 0x84]
test cl, 3
je 0x180087518
mov al, byte [r12]
mov rbx, r12
jmp 0x18008732e
cmp al, 0x20
je 0x180087329
cmp al, 9
jne 0x180087332
inc rbx
mov al, byte [rbx]
test al, al
jne 0x180087321
mov r8d, 5
lea rdx, str.HTTP_
mov rcx, rbx
call qword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_strncmp]
test eax, eax
jne 0x1800873e1
movsx edx, byte [rbx + 5]
mov ecx, edx
sub ecx, 0x31
je 0x180087425
sub ecx, 1
je 0x18008736d
cmp ecx, 1
jne 0x180087b61
mov al, byte [rbx + 6]
mov r15b, 9
cmp al, 0x20
je 0x18008737c
cmp al, r15b
jne 0x1800873e1
lea eax, [rdx - 0x30]
mov r8b, 0x30
lea r9d, [rax + rax*4]
mov al, byte [rbx + 7]
sub al, r8b
add r9d, r9d
cmp al, r15b
ja 0x1800873e1
mov al, byte [rbx + 8]
sub al, r8b
cmp al, r15b
ja 0x1800873e1
mov al, byte [rbx + 9]
sub al, r8b
cmp al, r15b
ja 0x1800873e1
movsx eax, byte [rbx + 7]
lea ecx, [rax + rax*4]
movsx eax, byte [rbx + 8]
lea ecx, [rax + rcx*2]
movsx eax, byte [rbx + 9]
lea ecx, [rcx + rcx*4]
lea ecx, [rcx - 0xa68]
lea ecx, [rax + rcx*2]
mov dword [rsi + 0x60], ecx
mov al, byte [rbx + 0xa]
cmp al, 0x20
je 0x1800874c0
sub al, r15b
cmp al, 4
jbe 0x1800874c0
lea r14, [rdi + 0xc00]
mov rcx, r14
call fcn.18001a244
mov rcx, r14
mov rbx, rax
call fcn.180005a04
mov rdx, rax
mov r8, rbx
mov rcx, rdi
call fcn.1800881c0
cmp eax, 1
jne 0x180087bbd
mov dword [rsi + 0x60], 0xc8
mov byte [rbp + 0x60d], 0xa
jmp 0x1800875fd
cmp byte [rbx + 6], 0x2e
jne 0x180087ba7
mov al, byte [rbx + 7]
mov r8b, 0x30
sub al, r8b
cmp al, 1
ja 0x180087ba7
mov al, byte [rbx + 8]
mov r15b, 9
cmp al, 0x20
je 0x180087453
cmp al, r15b
jne 0x180087ba7
movsx r9d, byte [rbx + 7]
mov al, byte [rbx + 9]
sub r9d, 0x26
sub al, r8b
cmp al, r15b
ja 0x180087ba7
mov al, byte [rbx + 0xa]
sub al, r8b
cmp al, r15b
ja 0x180087ba7
mov al, byte [rbx + 0xb]
sub al, r8b
cmp al, r15b
ja 0x180087ba7
movsx eax, byte [rbx + 9]
lea ecx, [rax + rax*4]
movsx eax, byte [rbx + 0xa]
lea ecx, [rax + rcx*2]
movsx eax, byte [rbx + 0xb]
lea ecx, [rcx + rcx*4]
lea ecx, [rcx - 0xa68]
lea ecx, [rax + rcx*2]
mov dword [rsi + 0x60], ecx
mov al, byte [rbx + 0xc]
cmp al, 0x20
je 0x1800874c0
cmp al, r15b
je 0x1800874c0
sub al, 0xa
cmp al, 3
ja 0x180087ba7
cmp ecx, 0x64
jl 0x180087b9b
mov ecx, r9d
sub ecx, 0xa
je 0x1800874da
cmp ecx, 1
jne 0x180087b6a
mov byte [rbp + 0x60d], r9b
cmp dword [rsi + 0x7c], 3
jne 0x1800874fc
cmp r9b, 0x14
je 0x1800874fc
lea rdx, str.Lying_server__not_serving_HTTP_2
mov rcx, rdi
call fcn.18007c40c
cmp byte [rbp + 0x60d], 0x14
jae 0x1800875fd
mov rax, qword [rbp + 0x5d8]
or dword [rax], 0xffffffff
jmp 0x1800875fd
bt ecx, 0x12
jae 0x180087bbf
mov al, byte [r12]
mov rbx, r12
jmp 0x180087538
cmp al, 0x20
je 0x180087533
cmp al, 9
jne 0x18008753c
inc rbx
mov al, byte [rbx]
test al, al
jne 0x18008752b
mov r8d, 5
lea rdx, str.RTSP_
mov rcx, rbx
call qword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_strncmp]
test eax, eax
jne 0x180087bbd
mov al, byte [rbx + 5]
mov cl, 0x30
sub al, cl
mov r15b, 9
cmp al, r15b
ja 0x180087bb3
cmp byte [rbx + 6], 0x2e
jne 0x180087bb3
mov al, byte [rbx + 7]
sub al, cl
cmp al, r15b
ja 0x180087bb3
mov al, byte [rbx + 8]
cmp al, 0x20
je 0x180087595
cmp al, r15b
jne 0x180087bb3
mov al, byte [rbx + 9]
sub al, cl
cmp al, r15b
ja 0x180087bb3
mov al, byte [rbx + 0xa]
sub al, cl
cmp al, r15b
ja 0x180087bb3
mov al, byte [rbx + 0xb]
sub al, cl
cmp al, r15b
ja 0x180087bb3
movsx eax, byte [rbx + 9]
lea ecx, [rax + rax*4]
movsx eax, byte [rbx + 0xa]
lea ecx, [rax + rcx*2]
movsx eax, byte [rbx + 0xb]
lea ecx, [rcx + rcx*4]
lea ecx, [rcx - 0xa68]
lea ecx, [rax + rcx*2]
mov dword [rsi + 0x60], ecx
mov al, byte [rbx + 0xc]
cmp al, 0x20
je 0x1800875f6
cmp al, r15b
je 0x1800875f6
sub al, 0xa
cmp al, 3
ja 0x180087bb3
mov byte [rbp + 0x60d], recv
mov rdx, rbp
mov rcx, rdi
call fcn.180087e18
xor ebx, ebx
test eax, eax
jne 0x180087b31
lea r14d, [rbx + 6]
mov rcx, rdi
call fcn.180088a60
test eax, eax
jne 0x180087b31
mov r8, r12
mov rdx, rbp
mov rcx, rdi
call fcn.180086128
test eax, eax
jne 0x180087b31
cmp byte [rdi + 0xa1c], bl
je 0x180087648
or r14d, 1
mov ebx, dword [rsi + 0x60]
lea r15, [rdi + 0xc00]
mov rcx, r15
call fcn.18001a244
mov r9, rax
mov r8, r12
mov edx, 1
mov rcx, rdi
call fcn.18007c260
mov rcx, r15
call fcn.18001a244
mov edx, r14d
mov r9, rax
or edx, 0x10
lea eax, [rbx - 0x64]
cmp eax, 0x64
mov r8, r12
mov rcx, rdi
cmovae edx, r14d
call fcn.18007c4ac
xor ebx, ebx
test eax, eax
jne 0x180087b31
lea r14, [rdi + 0xc00]
mov rcx, r14
call fcn.18001a244
add qword [rdi + 0x12c0], rax
mov rcx, r14
call fcn.18001a244
add qword [rdi + 0x108], rax
jmp 0x180087a46
mov ecx, dword [rsi + 0x60]
lea eax, [rcx - 0x64]
cmp eax, 0x63
ja 0x18008771f
sub ecx, 0x64
je 0x1800876fd
cmp ecx, 1
je 0x1800876eb
mov byte [rsi + 0xda], 1
mov dword [rsi + 0x4c], ebx
jmp 0x18008777c
cmp dword [rsi + 0x7c], 2
je 0x180087bca
mov byte [rsi + 0xda], bl
jmp 0x18008777c
mov byte [rsi + 0xda], 1
mov dword [rsi + 0x4c], ebx
cmp dword [rsi + 0x78], ebx
jle 0x18008777c
or dword [rsi + 0x64], 2
xor edx, edx
mov rcx, rdi
mov dword [rsi + 0x78], ebx
call fcn.18006e61c
jmp 0x18008777c
cmp qword [rsi], 0xffffffffffffffff
mov byte [rsi + 0xda], bl
jne 0x18008777c
cmp byte [rsi + 0xdf], bl
jne 0x18008777c
cmp byte [rbp + 0x2ce], bl
jne 0x18008777c
cmp byte [rbp + 0x60d], 0xb
jne 0x18008777c
mov rax, qword [rbp + 0x2e8]
test dword [rax + 0x84], 0x40000
jne 0x18008777c
cmp byte [rdi + 0x128a], 5
je 0x18008777c
lea rdx, str.no_chunk__no_close__no_size._Assume_close_to_signal_end
mov rcx, rdi
call fcn.18007c40c
mov edx, 2
mov rcx, rbp
call fcn.18007d074
cmp byte [rsi + 0xda], bl
jne 0x180087794
mov rcx, rdi
call fcn.180087d9c
test eax, eax
jne 0x180087b31
mov r12d, 0x191
cmp byte [rbp + 0x2ce], bl
je 0x180087820
mov eax, dword [rdi + 0x148]
cmp eax, r12d
jne 0x1800877b6
cmp dword [rbp + 0x3b0], 2
je 0x1800877c6
cmp eax, 0x197
jne 0x1800877dc
cmp dword [rbp + 0x3b4], 2
jne 0x1800877dc
lea rdx, str.Connection_closure_while_negotiating_auth__HTTP_1.0__
mov rcx, rdi
call fcn.18007c40c
mov byte [rdi + 0x1291], 1
cmp byte [rbp + 0x2ce], bl
je 0x180087820
mov eax, dword [rdi + 0x148]
cmp eax, r12d
jne 0x1800877fa
cmp dword [rbp + 0x4a8], 1
je 0x18008780a
jmp 0x180087820
cmp eax, 0x197
jne 0x180087820
cmp dword [rbp + 0x4ac], 1
jne 0x180087820
lea rdx, str.Connection_closure_while_negotiating_auth__HTTP_1.0__
mov rcx, rdi
call fcn.18007c40c
mov byte [rdi + 0x1291], 1
cmp dword [rbp + 0x4a8], 3
jne 0x18008783c
cmp dword [rdi + 0x148], r12d
je 0x18008783c
mov dword [rbp + 0x4a8], 4
cmp dword [rbp + 0x4ac], 3
jne 0x18008785b
cmp dword [rdi + 0x148], 0x197
je 0x18008785b
mov dword [rbp + 0x4ac], 4
mov eax, dword [rsi + 0x60]
sub eax, 0x64
cmp eax, 0x64
mov al, byte [rdi + 0xa1c]
sbb ebx, ebx
and ebx, 0x10
neg al
sbb ecx, ecx
neg ecx
add ecx, 2
or ebx, ecx
mov rcx, r14
call fcn.18001a244
lea rcx, [rdi + 0xc00]
mov r14, rax
call fcn.180005a04
mov r8, rax
mov r9, r14
mov edx, ebx
mov rcx, rdi
call fcn.18007c4ac
xor ebx, ebx
test eax, eax
jne 0x180087b31
mov r9, qword [rdi + 0x108]
movsxd rcx, r14d
add qword [rdi + 0x12c0], rcx
add r9, rcx
mov qword [rdi + 0x108], r9
mov rcx, rdi
mov r8d, dword [rsi + 0x60]
call fcn.1800886b8
test al, al
jne 0x180087c30
lea eax, [r8 - 0x64]
cmp eax, 0x63
cmova r9, rbx
mov qword [rdi + 0x110], r9
call fcn.180085278
test eax, eax
jne 0x180087b31
cmp dword [rsi + 0x60], 0x12c
jl 0x180087a33
cmp byte [rbp + 0x2d8], bl
jne 0x180087a0e
cmp byte [rbp + 0x2ce], bl
jne 0x180087a0e
cmp byte [rdi + 0x129f], bl
jne 0x180087a16
movzx ecx, byte [rdi + 0x128a]
sub ecx, 1
je 0x180087949
sub ecx, 1
je 0x180087949
sub ecx, 1
je 0x180087949
cmp ecx, 1
jne 0x180087a0e
xor edx, edx
mov rcx, rdi
call fcn.18006e61c
cmp byte [rsi + 0xdc], bl
jne 0x180087a0e
cmp dword [rsi + 0x60], 0x1a1
jne 0x1800879a7
cmp byte [rdi + 0x1293], bl
je 0x1800879a7
lea rdx, str.Got_417_while_waiting_for_a_100
mov rcx, rdi
call fcn.18007c40c
mov rcx, qword [rdi + 0x1148]
mov byte [rdi + 0x1294], 1
call qword [case.0x180078642.1]
mov rdx, rsi
mov rcx, rdi
mov qword [rdi + 0x188], rax
call fcn.180080668
jmp 0x180087a0e
mov rcx, rdi
cmp byte [rdi + 0xa18], bl
je 0x1800879cc
lea rdx, str.HTTP_error_before_end_of_send__keep_sending
call fcn.18007c40c
cmp dword [rsi + 0x78], ebx
jle 0x180087a0e
or dword [rsi + 0x64], 2
mov dword [rsi + 0x78], ebx
jmp 0x180087a0e
lea rdx, str.HTTP_error_before_end_of_send__stop_sending
call fcn.18007c40c
mov edx, 2
mov rcx, rbp
call fcn.18007d074
mov rdx, rsi
mov rcx, rdi
call fcn.180080668
test eax, eax
jne 0x180087b31
mov byte [rsi + 0xdc], 1
cmp byte [rdi + 0x1293], bl
je 0x180087a0e
mov dword [rsi + 0x78], 3
cmp byte [rdi + 0x129f], bl
je 0x180087a33
cmp qword [rbp + 0x310], 0xffffffffffffffff
je 0x180087a33
lea rdx, str.Keep_sending_data_to_get_tossed_away
mov rcx, rdi
call fcn.18007c40c
or dword [rsi + 0x64], 2
cmp byte [rsi + 0xda], bl
je 0x180087bef
lea r14, [rdi + 0xc00]
lea rcx, [rdi + 0xc00]
call fcn.180073f80
mov r15, qword [rsi + 0x50]
cmp byte [r15], bl
je 0x180087b2f
mov r8, qword [r13]
mov edx, 0xa
mov rcx, r15
call sub.VCRUNTIME140.dll_memchr
mov rcx, rax
test rax, rax
jne 0x18008726e
mov r8, qword [r13]
lea r14, [rdi + 0xc00]
mov rcx, r14
mov rdx, r15
call fcn.180073f3c
test eax, eax
jne 0x180087b31
cmp dword [rsi + 0x4c], ebx
jne 0x180087b2f
mov rcx, r14
call fcn.18001a244
mov rcx, r14
mov rbx, rax
call fcn.180005a04
mov r8, rax
mov r9, rbx
mov rdx, rbp
mov rcx, rdi
call fcn.180088294
cmp eax, 2
jne 0x180087b2f
xor r14d, r14d
mov dword [rsi + 0x48], eax
mov edx, eax
mov byte [rsi + 0xda], r14b
mov rcx, rbp
call fcn.18007d074
cmp byte [rdi + 0xa3a], r14b
jne 0x180087b2f
lea rdx, str.Received_HTTP_0.9_when_not_allowed
mov rcx, rdi
call fcn.18007c340
mov eax, 1
jmp 0x180087b31
mov edx, 2
mov rcx, rbp
call fcn.18007d074
xor r14d, r14d
cmp byte [rdi + 0xa3a], r14b
je 0x180087aec
mov byte [rsi + 0xda], r14b
cmp qword [r13], r14
je 0x180087b46
mov dword [rsi + 0x48], 1
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 + 0x48], 2
mov qword [r13], rax
mov rax, qword [rsp + 0x70]
mov qword [rsi + 0x50], rax
jmp 0x180087b2f
lea rdx, str.Unsupported_HTTP_version_in_response
jmp 0x180087af3
mov eax, 0x66666667
mov rcx, rdi
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.18007c340
jmp 0x180087afb
lea rdx, str.Unsupported_response_code_in_HTTP_response
jmp 0x180087af3
lea rdx, str.Unsupported_HTTP_1_subversion_in_response
jmp 0x180087af3
mov eax, 8
jmp 0x180087b31
xor ebx, ebx
mov byte [rsi + 0xda], bl
jmp 0x180087b2f
lea rdx, str.Received_101__Switching_to_HTTP_2
mov rcx, rdi
call fcn.18007c40c
mov dword [rsi + 0x7c], 3
mov byte [rsi + 0xda], 1
mov dword [rsi + 0x4c], ebx
jmp 0x180087afb
mov rcx, qword [rsp + 0x78]
cmp byte [rdi + 0x1cc], bl
je 0x180087c03
mov byte [rcx], 1
mov al, 1
jmp 0x180087c05
mov al, byte [rcx]
cmp qword [rsi + 8], rbx
jne 0x180087c10
mov byte [rcx], 1
jmp 0x180087c14
test al, al
je 0x180087c18
and dword [rsi + 0x64], 0xfffffffe
mov r9, r14
mov r8, r15
mov edx, 1
mov rcx, rdi
call fcn.18007c260
jmp 0x180087b2f
lea rdx, str.The_requested_URL_returned_error:__d
call fcn.18007c340
mov eax, socket
jmp 0x180087b31