Function at 0x1401d973c
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, 0x40
mov r12, qword [rcx + 0x138]
lea r13, [rcx + 0xc30]
mov rdi, qword [r8]
mov r14, r8
mov rsi, rcx
mov qword [rsp + 0x80], rdi
mov qword [rsp + 0x30], r12
mov r15, r12
mov r8, rdi
mov rcx, r12
mov rbp, rdx
mov edx, 0xa
call sub.VCRUNTIME140.dll_memchr
mov rcx, rax
mov rdx, r15
test rax, rax
je 0x1401da225
mov rax, qword [rsi + 0x138]
lea r8, [rcx + 1]
sub rax, rcx
mov edi, 9
dec rax
mov rcx, r13
add qword [r14], rax
mov qword [rsi + 0x138], r8
sub r8, r15
call fcn.1401d3e00
test eax, eax
jne 0x1401da0ee
cmp dword [rsi + 0x134], eax
jne 0x1401d9808
mov rcx, r13
call fcn.1400b8234
mov rcx, r13
mov rbx, rax
call fcn.1401d3e44
mov r8, rbx
mov rdx, rax
mov rcx, rsi
call fcn.1401daeb0
cmp eax, 2
je 0x1401da0bc
mov rcx, r13
call fcn.1401d3e44
mov r12, rax
cmp byte [rax], 0xa
je 0x1401d9c54
cmp byte [rax], 0xd
je 0x1401d9c54
mov edx, dword [rsi + 0x134]
mov r14d, 2
lea ecx, [rdx + 1]
mov dword [rsi + 0x134], ecx
test edx, edx
jne 0x1401d9b5f
mov rax, qword [rbp + 0x2e8]
mov ecx, dword [rax + 0x84]
test cl, 3
je 0x1401d9a5c
mov al, byte [r12]
mov rbx, r12
jmp 0x1401d986f
cmp al, 0x20
je 0x1401d986a
cmp al, dil
jne 0x1401d9873
inc rbx
mov al, byte [rbx]
test al, al
jne 0x1401d9861
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 0x1401d9922
movsx edx, byte [rbx + 5]
mov ecx, edx
sub ecx, 0x31
je 0x1401d9962
sub ecx, 1
je 0x1401d98ae
cmp ecx, 1
jne 0x1401da129
mov al, byte [rbx + 6]
cmp al, 0x20
je 0x1401d98ba
cmp al, dil
jne 0x1401d9922
lea eax, [rdx - 0x30]
mov r14b, 0x30
lea r9d, [rax + rax*4]
mov al, byte [rbx + 7]
sub al, r14b
add r9d, r9d
cmp al, dil
ja 0x1401d9922
mov al, byte [rbx + 8]
sub al, r14b
cmp al, dil
ja 0x1401d9922
mov al, byte [rbx + 9]
sub al, r14b
cmp al, dil
ja 0x1401d9922
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 + 0x148], ecx
mov al, byte [rbx + 0xa]
cmp al, 0x20
je 0x1401d99fd
sub al, dil
cmp al, 4
jbe 0x1401d99fd
mov rcx, r13
call fcn.1400b8234
mov rcx, r13
mov rbx, rax
call fcn.1401d3e44
mov rdx, rax
mov r8, rbx
mov rcx, rsi
call fcn.1401daeb0
cmp eax, 1
jne 0x1401da188
mov dword [rsi + 0x148], 0xc8
mov byte [rbp + 0x525], 0xa
jmp 0x1401d9b48
cmp byte [rbx + 6], 0x2e
jne 0x1401da172
mov al, byte [rbx + 7]
mov r14b, 0x30
sub al, r14b
cmp al, 1
ja 0x1401da172
mov al, byte [rbx + 8]
cmp al, 0x20
je 0x1401d998d
cmp al, dil
jne 0x1401da172
movsx r9d, byte [rbx + 7]
mov al, byte [rbx + 9]
sub r9d, 0x26
sub al, r14b
cmp al, dil
ja 0x1401da172
mov al, byte [rbx + 0xa]
sub al, r14b
cmp al, dil
ja 0x1401da172
mov al, byte [rbx + 0xb]
sub al, r14b
cmp al, dil
ja 0x1401da172
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 + 0x148], ecx
mov al, byte [rbx + 0xc]
cmp al, 0x20
je 0x1401d99fd
cmp al, dil
je 0x1401d99fd
sub al, 0xa
cmp al, 3
ja 0x1401da172
cmp ecx, 0x64
jl 0x1401da166
mov ecx, r9d
sub ecx, 0xa
je 0x1401d9a1b
sub ecx, 1
je 0x1401d9a1b
cmp ecx, edi
jne 0x1401da135
mov byte [rbp + 0x525], r9b
cmp dword [rsi + 0x164], 3
jne 0x1401d9a40
cmp r9b, 0x14
je 0x1401d9a40
lea rdx, str.Lying_server__not_serving_HTTP_2
mov rcx, rsi
call fcn.1401e3bac
cmp byte [rbp + 0x525], 0x14
jae 0x1401d9b48
mov rax, qword [rbp + 0x4e8]
or dword [rax], 0xffffffff
jmp 0x1401d9b48
bt ecx, 0x12
jae 0x1401da188
mov al, byte [r12]
mov rbx, r12
jmp 0x1401d9a7d
cmp al, 0x20
je 0x1401d9a78
cmp al, dil
jne 0x1401d9a81
inc rbx
mov al, byte [rbx]
test al, al
jne 0x1401d9a6f
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 0x1401da188
mov al, byte [rbx + 5]
mov r14b, 0x30
sub al, r14b
cmp al, dil
ja 0x1401da17e
cmp byte [rbx + 6], 0x2e
jne 0x1401da17e
mov al, byte [rbx + 7]
sub al, r14b
cmp al, dil
ja 0x1401da17e
mov al, byte [rbx + 8]
cmp al, 0x20
je 0x1401d9ada
cmp al, dil
jne 0x1401da17e
mov al, byte [rbx + 9]
sub al, r14b
cmp al, dil
ja 0x1401da17e
mov al, byte [rbx + 0xa]
sub al, r14b
cmp al, dil
ja 0x1401da17e
mov al, byte [rbx + 0xb]
sub al, r14b
cmp al, dil
ja 0x1401da17e
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 + 0x148], ecx
mov al, byte [rbx + 0xc]
cmp al, 0x20
je 0x1401d9b41
cmp al, dil
je 0x1401d9b41
sub al, 0xa
cmp al, 3
ja 0x1401da17e
mov byte [rbp + 0x525], recvfrom
mov rdx, rbp
mov rcx, rsi
call fcn.1401daa50
test eax, eax
jne 0x1401da0ee
lea r14d, [rax + 6]
mov rcx, r13
call fcn.1401d3e44
mov rcx, r13
mov rbx, rax
call fcn.1400b8234
mov r8, rax
xor edx, edx
mov rcx, rbx
mov rdi, rax
call sub.VCRUNTIME140.dll_memchr
test rax, rax
jne 0x1401da19d
mov ecx, dword [rsi + 0x134]
cmp ecx, 2
jl 0x1401d9bbe
cmp byte [rbx], 0x20
je 0x1401d9ba0
cmp byte [rbx], 9
jne 0x1401d9ba5
cmp ecx, 2
jg 0x1401d9bbe
mov r8, rdi
mov edx, 0x3a
mov rcx, rbx
call sub.VCRUNTIME140.dll_memchr
test rax, rax
je 0x1401da194
mov r8, r12
mov rdx, rbp
mov rcx, rsi
call fcn.1401d86a0
test eax, eax
jne 0x1401da0ee
mov ebx, dword [rsi + 0x148]
mov edi, r14d
or edi, 1
mov rcx, r13
cmp byte [rsi + 0xa43], al
cmove edi, r14d
call fcn.1400b8234
mov r9, rax
mov r8, r12
mov edx, 1
mov rcx, rsi
call fcn.1401e3a00
mov rcx, r13
call fcn.1400b8234
mov edx, edi
mov r9, rax
or edx, 0x10
lea eax, [rbx - 0x64]
cmp eax, 0x64
mov r8, r12
mov rcx, rsi
cmovae edx, edi
call fcn.1401e6a98
test eax, eax
jne 0x1401da0ee
mov rcx, r13
call fcn.1400b8234
mov rdx, rax
xor r8d, r8d
mov rcx, rsi
call fcn.1401d7094
test eax, eax
jne 0x1401da0ee
jmp 0x1401da094
mov ecx, dword [rsi + 0x148]
lea eax, [rcx - 0x64]
cmp eax, 0x63
ja 0x1401d9d32
sub ecx, 0x64
je 0x1401d9cf4
cmp ecx, 1
je 0x1401d9c8a
and dword [rsi + 0x134], 0
lea rdi, [rsi + 0x1c2]
mov byte [rdi], 1
jmp 0x1401d9d26
cmp dword [rsi + 0x164], 2
jne 0x1401d9ce8
lea rdx, str.Received_101__Switching_to_HTTP_2
mov rcx, rsi
call fcn.1401e3bac
and dword [rsi + 0x134], 0
lea rdi, [rsi + 0x1c2]
mov r9, qword [rsi + 0x138]
xor r8d, r8d
mov byte [rdi], 1
mov rdx, rbp
mov dword [rsi + 0x164], 3
mov rcx, rsi
mov rax, qword [r14]
mov qword [rsp + 0x20], rax
call fcn.1401cb784
test eax, eax
jne 0x1401da0ee
and qword [r14], 0
jmp 0x1401d9d26
lea rdi, [rsi + 0x1c2]
mov byte [rdi], 0
jmp 0x1401d9d26
and dword [rsi + 0x134], 0
lea rdi, [rsi + 0x1c2]
cmp dword [rsi + 0x160], 0
mov byte [rdi], 1
jle 0x1401d9d26
and dword [rsi + 0x160], 0
xor edx, edx
or dword [rsi + 0x14c], 2
mov rcx, rsi
call fcn.1401c1f0c
lea r12, [rsi + 0xf0]
jmp 0x1401d9db4
cmp dword [rsi + 0x164], 2
jne 0x1401d9d47
mov rcx, qword [rsi + 0xd8]
call fcn.1401c20b0
xor eax, eax
lea rbx, [rsi + 0x1c2]
lea r12, [rsi + 0xf0]
mov byte [rbx], al
cmp qword [r12], 0xffffffffffffffff
mov rdi, rbx
jne 0x1401d9db4
cmp byte [rsi + 0x1c7], al
jne 0x1401d9db4
cmp byte [rbp + 0x2ce], al
jne 0x1401d9db4
cmp byte [rbp + 0x525], 0xb
jne 0x1401d9db4
mov rax, qword [rbp + 0x2e8]
test dword [rax + 0x84], 0x40000
jne 0x1401d9db4
cmp byte [rsi + 0x12e2], 5
je 0x1401d9db4
lea rdx, str.no_chunk__no_close__no_size._Assume_close_to_signal_end
mov rcx, rsi
call fcn.1401e3bac
mov edx, 2
mov rcx, rbp
call fcn.1401e1d94
cmp byte [rdi], 0
jne 0x1401d9dc9
mov rcx, rsi
call fcn.1401da9d4
test eax, eax
jne 0x1401da0ee
cmp byte [rbp + 0x2ce], 0
je 0x1401d9e10
mov eax, dword [rsi + 0x148]
cmp eax, 0x191
jne 0x1401d9dea
cmp dword [rbp + 0x3b0], 1
je 0x1401d9dfa
jmp 0x1401d9e10
cmp eax, 0x197
jne 0x1401d9e10
cmp dword [rbp + 0x3b4], 1
jne 0x1401d9e10
lea rdx, str.Connection_closure_while_negotiating_auth__HTTP_1.0__
mov rcx, rsi
call fcn.1401e3bac
mov byte [rsi + 0x12e9], 1
cmp dword [rbp + 0x3b0], 3
jne 0x1401d9e2f
cmp dword [rsi + 0x148], 0x191
je 0x1401d9e2f
mov dword [rbp + 0x3b0], 4
cmp dword [rbp + 0x3b4], 3
jne 0x1401d9e4e
cmp dword [rsi + 0x148], 0x197
je 0x1401d9e4e
mov dword [rbp + 0x3b4], 4
mov eax, dword [rsi + 0x148]
sub eax, 0x64
cmp eax, 0x64
mov al, byte [rsi + 0xa43]
sbb ebx, ebx
and ebx, 0x10
neg al
sbb ecx, ecx
neg ecx
add ecx, 2
or ebx, ecx
mov rcx, r13
call fcn.1400b8234
mov rcx, r13
mov r14, rax
call fcn.1401d3e44
mov r8, rax
mov r9, r14
mov edx, ebx
mov rcx, rsi
call fcn.1401e6a98
test eax, eax
jne 0x1401da0ee
xor r8d, r8d
mov rdx, r14
mov rcx, rsi
call fcn.1401d7094
test eax, eax
jne 0x1401da0ee
mov r8d, dword [rsi + 0x148]
mov rcx, rsi
call fcn.1401db2d0
test al, al
jne 0x1401da20f
lea eax, [r8 - 0x64]
cmp eax, 0x63
ja 0x1401d9ed9
mov eax, dword [rsi + 0x128]
jmp 0x1401d9edb
xor eax, eax
mov dword [rsi + 0x12c], eax
call fcn.1401d7638
test eax, eax
jne 0x1401da0ee
cmp dword [rsi + 0x148], 0x12c
jl 0x1401da08b
cmp byte [rbp + 0x2d8], al
jne 0x1401da062
cmp byte [rbp + 0x2ce], al
jne 0x1401da062
cmp byte [rsi + 0x12f6], al
jne 0x1401da06b
movzx ecx, byte [rsi + 0x12e2]
sub ecx, 1
je 0x1401d9f41
sub ecx, 1
je 0x1401d9f41
sub ecx, 1
je 0x1401d9f41
cmp ecx, 1
jne 0x1401da062
xor edx, edx
mov rcx, rsi
call fcn.1401c1f0c
cmp byte [rsi + 0x1c4], 0
jne 0x1401da062
cmp dword [rsi + 0x148], 0x1a1
jne 0x1401d9fec
cmp byte [rsi + 0x12eb], 0
je 0x1401d9fec
cmp qword [rsi + 0x108], 0
jne 0x1401d9f95
cmp dword [rsi + 0x160], 1
jne 0x1401d9f95
lea rdx, str.Got_HTTP_failure_417_while_waiting_for_a_100
mov rcx, rsi
call fcn.1401e3bac
jmp 0x1401d9fc4
lea rdx, str.Got_HTTP_failure_417_while_sending_data
mov rcx, rsi
call fcn.1401e3bac
mov edx, 2
mov rcx, rbp
call fcn.1401e1d94
mov rdx, rbp
mov rcx, rsi
call fcn.1401db184
test eax, eax
jne 0x1401da0ee
mov rcx, qword [rsi + 0x1190]
mov byte [rsi + 0x12ec], 1
call qword [case.0x1401dde7e.1]
mov rdx, r12
mov rcx, rsi
mov qword [rsi + 0x188], rax
call fcn.1401cf928
jmp 0x1401da062
cmp byte [rsi + 0xa3f], 0
mov rcx, rsi
je 0x1401da01d
lea rdx, str.HTTP_error_before_end_of_send__keep_sending
call fcn.1401e3bac
cmp dword [rsi + 0x160], 0
jle 0x1401da062
and dword [rsi + 0x160], 0
or dword [rsi + 0x14c], 2
jmp 0x1401da062
lea rdx, str.HTTP_error_before_end_of_send__stop_sending
call fcn.1401e3bac
mov edx, 2
mov rcx, rbp
call fcn.1401e1d94
mov rdx, r12
mov rcx, rsi
call fcn.1401cf928
test eax, eax
jne 0x1401da0ee
mov byte [rsi + 0x1c4], 1
cmp byte [rsi + 0x12eb], al
je 0x1401da062
mov dword [rsi + 0x160], 3
cmp byte [rsi + 0x12f6], 0
je 0x1401da08b
cmp qword [rbp + 0x310], 0xffffffffffffffff
je 0x1401da08b
lea rdx, str.Keep_sending_data_to_get_tossed_away
mov rcx, rsi
call fcn.1401e3bac
or dword [rsi + 0x14c], 2
cmp byte [rdi], 0
je 0x1401da1b8
mov rcx, r13
call fcn.1401d3e48
mov r15, qword [rsi + 0x138]
cmp byte [r15], 0
je 0x1401da0ec
mov r14, qword [rsp + 0x90]
mov rcx, r15
mov r8, qword [r14]
jmp 0x1401d978a
mov edx, 2
mov rcx, rbp
call fcn.1401e1d94
xor eax, eax
cmp byte [rsi + 0xa61], al
je 0x1401da292
mov byte [rsi + 0x1c2], al
cmp qword [r14], rax
je 0x1401da106
mov dword [rsi + 0x130], 1
xor eax, eax
mov rbx, qword [rsp + 0x88]
add rsp, 0x40
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret
mov rax, qword [rsp + 0x80]
mov dword [rsi + 0x130], 2
mov qword [r14], rax
mov rax, qword [rsp + 0x30]
mov qword [rsi + 0x138], rax
jmp 0x1401da0ec
lea rdx, str.Unsupported_HTTP_version_in_response
jmp 0x1401da299
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.1401e3ae0
jmp 0x1401da2a1
lea rdx, str.Unsupported_response_code_in_HTTP_response
jmp 0x1401da299
lea rdx, str.Unsupported_HTTP_1_subversion_in_response
jmp 0x1401da299
mov eax, 8
jmp 0x1401da0ee
mov byte [rsi + 0x1c2], 0
jmp 0x1401da0ec
lea rdx, str.Header_without_colon
jmp 0x1401da1a4
lea rdx, str.Nul_byte_in_header
mov rcx, rsi
mov ebx, 8
call fcn.1401e3ae0
mov eax, ebx
jmp 0x1401da0ee
cmp byte [rsi + 0x1cc], 0
mov rbx, qword [rsp + 0x98]
je 0x1401da1cc
mov byte [rbx], 1
cmp qword [rsi + 0xf8], 0
jne 0x1401da1eb
xor r8d, r8d
mov rdx, rbp
mov rcx, rsi
call fcn.1401cb450
test al, al
jne 0x1401da1eb
mov byte [rbx], 1
cmp byte [rbx], 0
je 0x1401da1f7
and dword [rsi + 0x14c], 0xfffffffe
mov r9, r14
mov r8, r15
mov edx, 1
mov rcx, rsi
call fcn.1401e3a00
jmp 0x1401da0ec
lea rdx, str.The_requested_URL_returned_error:__d
call fcn.1401e3ae0
mov eax, reloc.WS2_32.dll_shutdown
jmp 0x1401da0ee
mov r8, qword [r14]
mov rcx, r13
call fcn.1401d3e00
test eax, eax
jne 0x1401da0ee
cmp dword [rsi + 0x134], eax
jne 0x1401da0ec
mov rcx, r13
call fcn.1400b8234
mov rcx, r13
mov rbx, rax
call fcn.1401d3e44
mov r8, rbx
mov rdx, rax
mov rcx, rsi
call fcn.1401daeb0
cmp eax, 2
jne 0x1401da0ec
mov edx, eax
mov byte [rsi + 0x1c2], 0
mov rcx, rbp
mov dword [rsi + 0x130], eax
call fcn.1401e1d94
cmp byte [rsi + 0xa61], 0
jne 0x1401da0ec
lea rdx, str.Received_HTTP_0.9_when_not_allowed
mov rcx, rsi
call fcn.1401e3ae0
mov eax, 1
jmp 0x1401da0ee