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

Disassembly:
mov qword [rsp + 0x10], rbx
mov qword [rsp + 0x20], r9
mov qword [rsp + 0x18], r8
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x30
mov rax, qword [r8]
mov rbx, rcx
mov rcx, qword [rcx + 0x138]
mov r15, r8
mov r14, rdx
mov qword [rsp + 0x70], rax
mov qword [rsp + 0x20], rcx
mov rdi, rcx
lea r13, [rbx + 0xc98]
mov r12, rcx
mov rsi, rax
mov rbp, rax
mov r8, rax
mov edx, 0xa
call fcn.1401f9890
mov rcx, rax
mov rdx, r12
test rax, rax
je 0x140096be3
lea r8, [rcx + 1]
sub rdi, rax
lea rax, [rsi - 1]
mov rcx, r13
add rax, rdi
xor ebp, ebp
mov qword [r15], rax
mov qword [rbx + 0x138], r8
sub r8, r12
call fcn.140080ec0
test eax, eax
jne 0x140096a64
cmp dword [rbx + 0x134], eax
jne 0x14009625c
mov rcx, r13
call fcn.140080f20
mov rcx, r13
mov rdi, rax
call fcn.140080f30
mov r8, rax
mov r9, rdi
mov rdx, r14
mov rcx, rbx
call fcn.140097350
cmp eax, 2
je 0x140096a31
mov rcx, r13
call fcn.140080f30
mov r15, rax
movzx ecx, byte [rax]
cmp cl, 0xa
je 0x14009663b
cmp cl, 0xd
je 0x14009663b
mov edx, dword [rbx + 0x134]
mov edi, 2
lea ecx, [rdx + 1]
mov dword [rbx + 0x134], ecx
test edx, edx
jne 0x140096597
mov rax, qword [r14 + 0x2e8]
mov ecx, dword [rax + 0x84]
test cl, 3
je 0x1400964a0
movzx eax, byte [r15]
mov rdi, r15
test al, al
je 0x1400962d3
nop dword [rax]
cmp al, 0x20
je 0x1400962c8
cmp al, 9
jne 0x1400962d3
movzx eax, byte [rdi + 1]
inc rdi
test al, al
jne 0x1400962c0
mov r8d, 5
lea rdx, str.HTTP_
mov rcx, rdi
call fcn.140209580
test eax, eax
jne 0x140096375
movsx edx, byte [rdi + 5]
mov ecx, edx
sub ecx, 0x31
je 0x1400963b6
sub ecx, 1
je 0x14009630d
cmp ecx, 1
jne 0x140096a99
movzx eax, byte [rdi + 6]
cmp al, 0x20
je 0x140096319
cmp al, 9
jne 0x140096375
movsx ecx, byte [rdi + 7]
lea eax, [rdx - 0x30]
lea r9d, [rax + rax*4]
add r9d, r9d
lea eax, [rcx - 0x30]
cmp al, 9
ja 0x140096375
movsx edx, byte [rdi + 8]
lea eax, [rdx - 0x30]
cmp al, 9
ja 0x140096375
movsx r8d, byte [rdi + 9]
lea eax, [r8 - 0x30]
cmp al, 9
ja 0x140096375
lea ecx, [rcx + rcx*4]
lea ecx, [rdx + rcx*2]
lea ecx, [rcx + rcx*4]
lea ecx, [rcx - 0xa68]
lea ecx, [r8 + rcx*2]
mov dword [rbx + 0x148], ecx
movzx eax, byte [rdi + 0xa]
cmp al, 0x20
je 0x140096441
sub al, 9
cmp al, 4
jbe 0x140096441
mov rcx, r13
call fcn.140080f20
mov rcx, r13
mov rdi, rax
call fcn.140080f30
mov rdx, rax
mov r8, rdi
mov rcx, rbx
call fcn.140097260
cmp eax, 1
jne 0x140096b1e
mov dword [rbx + 0x148], Ordinal_208
mov byte [r14 + 0x4d9], 0xa
jmp 0x140096581
cmp byte [rdi + 6], 0x2e
jne 0x140096afb
movsx ecx, byte [rdi + 7]
lea eax, [rcx - 0x30]
cmp al, 1
ja 0x140096afb
movzx eax, byte [rdi + 8]
cmp al, 0x20
je 0x1400963df
cmp al, 9
jne 0x140096afb
lea r9d, [rcx - 0x26]
movsx ecx, byte [rdi + 9]
lea eax, [rcx - 0x30]
cmp al, 9
ja 0x140096afb
movsx edx, byte [rdi + 0xa]
lea eax, [rdx - 0x30]
cmp al, 9
ja 0x140096afb
movsx r8d, byte [rdi + 0xb]
lea eax, [r8 - 0x30]
cmp al, 9
ja 0x140096afb
lea ecx, [rcx + rcx*4]
lea ecx, [rdx + rcx*2]
lea ecx, [rcx + rcx*4]
lea ecx, [rcx - 0xa68]
lea ecx, [r8 + rcx*2]
mov dword [rbx + 0x148], ecx
movzx eax, byte [rdi + 0xc]
cmp al, 0x20
je 0x140096441
cmp al, 9
je 0x140096441
sub al, 0xa
cmp al, 3
ja 0x140096afb
cmp ecx, 0x64
jl 0x140096ae2
mov ecx, r9d
sub ecx, 0xa
je 0x14009645b
cmp ecx, 1
jne 0x140096aaf
mov byte [r14 + 0x4d9], r9b
cmp dword [rbx + 0x164], 3
jne 0x140096480
cmp r9b, 0x14
je 0x140096480
lea rdx, str.Lying_server__not_serving_HTTP_2
mov rcx, rbx
call fcn.14008bfe0
cmp byte [r14 + 0x4d9], 0x14
jae 0x140096581
mov rax, qword [r14 + 0x4a0]
mov dword [rax], 0xffffffff
jmp 0x140096581
bt ecx, 0x12
jae 0x140096b1e
movzx eax, byte [r15]
mov rdi, r15
test al, al
je 0x1400964c8
cmp al, 0x20
je 0x1400964bd
cmp al, 9
jne 0x1400964c8
movzx eax, byte [rdi + 1]
inc rdi
test al, al
jne 0x1400964b5
mov r8d, 5
lea rdx, str.RTSP_
mov rcx, rdi
call fcn.140209580
test eax, eax
jne 0x140096b1e
movzx eax, byte [rdi + 5]
sub al, 0x30
cmp al, 9
ja 0x140096b14
cmp byte [rdi + 6], 0x2e
jne 0x140096b14
movzx eax, byte [rdi + 7]
sub al, 0x30
cmp al, 9
ja 0x140096b14
movzx eax, byte [rdi + 8]
cmp al, 0x20
je 0x14009651b
cmp al, 9
jne 0x140096b14
movsx ecx, byte [rdi + 9]
lea eax, [rcx - 0x30]
cmp al, 9
ja 0x140096b14
movsx edx, byte [rdi + 0xa]
lea eax, [rdx - 0x30]
cmp al, 9
ja 0x140096b14
movsx r8d, byte [rdi + 0xb]
lea eax, [r8 - 0x30]
cmp al, 9
ja 0x140096b14
lea ecx, [rcx + rcx*4]
lea ecx, [rdx + rcx*2]
lea ecx, [rcx + rcx*4]
lea ecx, [rcx - 0xa68]
lea ecx, [r8 + rcx*2]
mov dword [rbx + 0x148], ecx
movzx eax, byte [rdi + 0xc]
cmp al, 0x20
je 0x140096579
cmp al, 9
je 0x140096579
sub al, 0xa
cmp al, 3
ja 0x140096b14
mov byte [r14 + 0x4d9], 0xb
mov rdx, r14
mov rcx, rbx
call fcn.140096e90
test eax, eax
jne 0x140096a64
lea edi, [rax + 6]
mov rcx, rbx
call fcn.140097bf0
test eax, eax
jne 0x140096a64
mov r8, r15
mov rdx, r14
mov rcx, rbx
call fcn.1400950f0
test eax, eax
jne 0x140096a64
mov esi, edi
mov rcx, r13
or esi, 1
cmp byte [rbx + 0xaab], al
cmove esi, edi
mov edi, dword [rbx + 0x148]
call fcn.140080f20
mov r9, rax
mov r8, r15
mov edx, 1
mov rcx, rbx
call fcn.14008be10
mov rcx, r13
call fcn.140080f20
mov edx, esi
mov r9, rax
or edx, 0x10
lea eax, [rdi - 0x64]
cmp eax, 0x64
mov r8, r15
mov rcx, rbx
cmovae edx, esi
call fcn.14008c180
test eax, eax
jne 0x140096a64
mov rcx, r13
call fcn.140080f20
mov rdx, rax
xor r8d, r8d
mov rcx, rbx
call fcn.140093d20
test eax, eax
jne 0x140096a64
jmp 0x140096a01
mov ecx, dword [rbx + 0x148]
lea eax, [rcx - 0x64]
cmp eax, 0x63
ja 0x1400966d2
sub ecx, 0x64
je 0x140096696
cmp ecx, 1
je 0x140096673
lea rsi, [rbx + 0x1c2]
mov dword [rbx + 0x134], ebp
mov byte [rsi], 1
lea r15, [rbx + 0xf0]
jmp 0x140096756
cmp dword [rbx + 0x164], 2
je 0x140096b2a
lea rsi, [rbx + 0x1c2]
mov byte [rsi], 0
lea r15, [rbx + 0xf0]
jmp 0x140096756
cmp dword [rbx + 0x160], 0
lea rsi, [rbx + 0x1c2]
mov byte [rsi], 1
mov dword [rbx + 0x134], ebp
jle 0x1400966c6
or dword [rbx + 0x14c], 2
xor edx, edx
mov rcx, rbx
mov dword [rbx + 0x160], ebp
call fcn.14007ad50
lea r15, [rbx + 0xf0]
jmp 0x140096756
cmp dword [rbx + 0x164], 2
jne 0x1400966e7
mov rcx, qword [rbx + 0xd8]
call fcn.14007ae60
lea rdi, [rbx + 0x1c2]
lea r15, [rbx + 0xf0]
mov byte [rdi], 0
cmp qword [r15], 0xffffffffffffffff
mov rsi, rdi
jne 0x140096756
cmp byte [rbx + 0x1c7], 0
jne 0x140096756
cmp byte [r14 + 0x2ce], 0
jne 0x140096756
cmp byte [r14 + 0x4d9], 0xb
jne 0x140096756
mov rax, qword [r14 + 0x2e8]
test dword [rax + 0x84], 0x40000
jne 0x140096756
cmp byte [rbx + 0x138a], 5
je 0x140096756
lea rdx, str.no_chunk__no_close__no_size._Assume_close_to_signal_end
mov rcx, rbx
call fcn.14008bfe0
mov edx, 2
mov rcx, r14
call fcn.14008cf60
cmp byte [rsi], 0
jne 0x14009676b
mov rcx, rbx
call fcn.140096e00
test eax, eax
jne 0x140096a64
cmp byte [r14 + 0x2ce], 0
je 0x1400967b5
mov eax, dword [rbx + 0x148]
cmp eax, 0x191
jne 0x14009678e
cmp dword [r14 + 0x348], 2
je 0x14009679f
jmp 0x1400967b5
cmp eax, 0x197
jne 0x1400967b5
cmp dword [r14 + 0x34c], 2
jne 0x1400967b5
lea rdx, str.Connection_closure_while_negotiating_auth__HTTP_1.0__
mov rcx, rbx
call fcn.14008bfe0
mov byte [rbx + 0x1391], 1
cmp byte [rbx + 0xaab], 0
mov edi, ebp
mov eax, dword [rbx + 0x148]
mov rcx, r13
setne dil
sub eax, 0x64
add edi, 2
cmp eax, 0x64
sbb eax, eax
and eax, 0x10
or edi, eax
call fcn.140080f20
mov rcx, r13
mov rbp, rax
call fcn.140080f30
mov r8, rax
mov r9, rbp
mov edx, edi
mov rcx, rbx
call fcn.14008c180
test eax, eax
jne 0x140096a64
xor r8d, r8d
mov rdx, rbp
mov rcx, rbx
call fcn.140093d20
test eax, eax
jne 0x140096a64
mov r8d, dword [rbx + 0x148]
mov rcx, rbx
call fcn.1400977e0
test al, al
jne 0x140096bcd
lea eax, [r8 - 0x64]
cmp eax, 0x63
ja 0x140096841
mov eax, dword [rbx + 0x128]
jmp 0x140096843
xor eax, eax
mov dword [rbx + 0x12c], eax
call fcn.140094000
test eax, eax
jne 0x140096a64
cmp dword [rbx + 0x148], 0x12c
jl 0x1400969f8
cmp byte [r14 + 0x2d8], al
jne 0x1400969cf
cmp byte [r14 + 0x2ce], al
jne 0x1400969cf
cmp byte [rbx + 0x139f], al
jne 0x1400969d8
movzx ecx, byte [rbx + 0x138a]
sub ecx, 1
je 0x1400968ab
sub ecx, 1
je 0x1400968ab
sub ecx, 1
je 0x1400968ab
cmp ecx, 1
jne 0x1400969cf
xor edx, edx
mov rcx, rbx
call fcn.14007ad50
cmp byte [rbx + 0x1c4], 0
jne 0x1400969cf
cmp dword [rbx + 0x148], 0x1a1
jne 0x140096956
cmp byte [rbx + 0x1393], 0
je 0x140096956
cmp qword [rbx + 0x108], 0
jne 0x1400968ff
cmp dword [rbx + 0x160], 1
jne 0x1400968ff
lea rdx, str.Got_HTTP_failure_417_while_waiting_for_a_100
mov rcx, rbx
call fcn.14008bfe0
jmp 0x14009692e
lea rdx, str.Got_HTTP_failure_417_while_sending_data
mov rcx, rbx
call fcn.14008bfe0
mov edx, 2
mov rcx, r14
call fcn.14008cf60
mov rdx, r14
mov rcx, rbx
call fcn.140097650
test eax, eax
jne 0x140096a64
mov rcx, qword [rbx + 0x1238]
mov byte [rbx + 0x1394], 1
call qword [case.0x140088280.1]
mov rdx, r15
mov rcx, rbx
mov qword [rbx + 0x188], rax
call fcn.140098cc0
jmp 0x1400969cf
cmp byte [rbx + 0xaa7], 0
mov rcx, rbx
je 0x14009698a
lea rdx, str.HTTP_error_before_end_of_send__keep_sending
call fcn.14008bfe0
cmp dword [rbx + 0x160], 0
jle 0x1400969cf
or dword [rbx + 0x14c], 2
mov dword [rbx + 0x160], 0
jmp 0x1400969cf
lea rdx, str.HTTP_error_before_end_of_send__stop_sending
call fcn.14008bfe0
mov edx, 2
mov rcx, r14
call fcn.14008cf60
mov rdx, r15
mov rcx, rbx
call fcn.140098cc0
test eax, eax
jne 0x140096a64
mov byte [rbx + 0x1c4], 1
cmp byte [rbx + 0x1393], al
je 0x1400969cf
mov dword [rbx + 0x160], 3
cmp byte [rbx + 0x139f], 0
je 0x1400969f8
cmp qword [r14 + 0x310], 0xffffffffffffffff
je 0x1400969f8
lea rdx, str.Keep_sending_data_to_get_tossed_away
mov rcx, rbx
call fcn.14008bfe0
or dword [rbx + 0x14c], 2
cmp byte [rsi], 0
je 0x140096b5a
mov rcx, r13
call fcn.140080f40
mov rdi, qword [rbx + 0x138]
cmp byte [rdi], 0
je 0x140096a62
mov r15, qword [rsp + 0x80]
mov r12, rdi
mov rcx, rdi
mov rsi, qword [r15]
mov rbp, rsi
mov r8, rsi
jmp 0x1400961e1
mov edx, 2
mov rcx, r14
call fcn.14008cf60
cmp byte [rbx + 0xac8], 0
je 0x140096c53
mov byte [rbx + 0x1c2], 0
cmp qword [r15], 0
je 0x140096a79
mov dword [rbx + 0x130], 1
xor eax, eax
mov rbx, qword [rsp + 0x78]
add rsp, 0x30
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret
mov rax, qword [rsp + 0x70]
mov dword [rbx + 0x130], 2
mov qword [r15], rax
mov rax, qword [rsp + 0x20]
mov qword [rbx + 0x138], rax
jmp 0x140096a62
lea rdx, str.Unsupported_HTTP_version_in_response
mov rcx, rbx
call fcn.14008bef0
mov eax, 1
jmp 0x140096a64
mov eax, 0x66666667
mov rcx, rbx
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.14008bef0
mov eax, 1
jmp 0x140096a64
lea rdx, str.Unsupported_response_code_in_HTTP_response
mov rcx, rbx
call fcn.14008bef0
mov eax, 1
jmp 0x140096a64
lea rdx, str.Unsupported_HTTP_1_subversion_in_response
mov rcx, rbx
call fcn.14008bef0
mov eax, 1
jmp 0x140096a64
mov eax, 8
jmp 0x140096a64
mov byte [rbx + 0x1c2], 0
jmp 0x140096a62
lea rdx, str.Received_101__Switching_to_HTTP_2
mov rcx, rbx
call fcn.14008bfe0
mov eax, 1
mov dword [rbx + 0x164], 3
mov byte [rbx + 0x1c2], 1
mov dword [rbx + 0x134], ebp
jmp 0x140096a64
cmp byte [rbx + 0x1cc], 0
jne 0x140096b85
mov rax, qword [r14 + 0x2e8]
test dword [rax + 0x84], 0x40000
je 0x140096b92
cmp dword [rbx + 0x9f0], 2
jne 0x140096b92
cmp qword [r15], 0xffffffffffffffff
jg 0x140096b92
mov rax, qword [rsp + 0x88]
mov byte [rax], 1
jmp 0x140096b9a
mov rax, qword [rsp + 0x88]
cmp qword [rbx + 0xf8], 0
jne 0x140096ba9
mov byte [rax], 1
jmp 0x140096bae
cmp byte [rax], 0
je 0x140096bb5
and dword [rbx + 0x14c], 0xfffffffe
mov r9, rbp
mov r8, r12
mov edx, 1
mov rcx, rbx
call fcn.14008be10
jmp 0x140096a62
lea rdx, str.The_requested_URL_returned_error:__d
call fcn.14008bef0
mov eax, socket
jmp 0x140096a64
mov r8, rbp
mov rcx, r13
call fcn.140080ec0
test eax, eax
jne 0x140096a64
cmp dword [rbx + 0x134], eax
jne 0x140096a62
mov rcx, r13
call fcn.140080f20
mov rcx, r13
mov rdi, rax
call fcn.140080f30
mov r8, rax
mov r9, rdi
mov rdx, r14
mov rcx, rbx
call fcn.140097350
cmp eax, 2
jne 0x140096a62
mov edx, eax
mov byte [rbx + 0x1c2], 0
mov rcx, r14
mov dword [rbx + 0x130], eax
call fcn.14008cf60
cmp byte [rbx + 0xac8], 0
jne 0x140096a62
lea rdx, str.Received_HTTP_0.9_when_not_allowed
mov rcx, rbx
call fcn.14008bef0
mov eax, 1
jmp 0x140096a64