Function at 0x140044df0
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]
lea rbx, [rcx + 0xf0]
mov rdi, qword [rbx + 0x50]
lea r13, [rcx + 0xca0]
mov r15, rdx
mov qword [rsp + 0x70], rax
mov rbp, rcx
mov qword [rsp + 0x20], rdi
mov rcx, rdi
mov r8, rax
mov edx, 0xa
mov r12, rdi
mov rsi, rax
mov r14, rax
call sub.VCRUNTIME140.dll_memchr
mov rcx, rax
test rax, rax
je 0x14004585e
xor r13d, r13d
nop dword [rax + rax]
lea r8, [rcx + 1]
sub rsi, rcx
lea rax, [rdi - 1]
mov rdx, r12
mov rdi, qword [rsp + 0x80]
lea r14, [rbp + 0xca0]
add rax, rsi
mov rcx, r14
mov qword [rdi], rax
mov qword [rbx + 0x50], r8
sub r8, r12
call fcn.14002cef0
test eax, eax
jne 0x140045905
cmp dword [rbx + 0x4c], eax
jne 0x140044f15
mov rcx, r14
call fcn.14002cf50
mov rcx, r14
mov rsi, rax
call fcn.14002cf60
mov rcx, qword [r15 + 0x2e8]
mov rdx, rax
test dword [rcx + 0x84], 0x40000
je 0x140044eff
cmp rsi, 5
mov ecx, 5
mov edi, r13d
cmova rsi, rcx
setae dil
mov r8, rsi
lea rcx, str.RTSP_
call fcn.14003cd20
test eax, eax
mov ecx, 2
cmovne ecx, edi
mov rdi, qword [rsp + 0x80]
jmp 0x140044f0c
mov r8, rsi
mov rcx, rbp
call fcn.140045cf0
mov ecx, eax
cmp ecx, 2
je 0x1400458d9
mov rcx, r14
call fcn.14002cf60
mov r13, rax
movzx ecx, byte [rax]
cmp cl, 0xa
je 0x14004543a
cmp cl, 0xd
je 0x14004543a
mov edx, dword [rbx + 0x4c]
mov r14d, 2
lea ecx, [rdx + 1]
mov dword [rbx + 0x4c], ecx
test edx, edx
jne 0x140045333
mov rax, qword [r15 + 0x2e8]
mov ecx, dword [rax + 0x84]
test cl, 3
je 0x140045165
movzx eax, byte [r13]
mov rdi, r13
test al, al
je 0x140044f83
nop
cmp al, 0x20
je 0x140044f78
cmp al, 9
jne 0x140044f83
movzx eax, byte [rdi + 1]
inc rdi
test al, al
jne 0x140044f70
mov r8d, 5
lea rdx, str.HTTP_
mov rcx, rdi
call qword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_strncmp]
test eax, eax
jne 0x14004502c
movzx ecx, byte [rdi + 5]
movzx eax, cl
cmp cl, 0x31
je 0x140045072
sub al, 0x32
cmp al, 1
ja 0x140045934
movzx eax, byte [rdi + 6]
cmp al, 0x20
je 0x140044fc7
cmp al, 9
jne 0x14004502c
movsx eax, cl
movzx ecx, byte [rdi + 7]
sub eax, 0x30
lea r9d, [rax + rax*4]
add r9d, r9d
lea eax, [rcx - 0x30]
cmp al, 9
ja 0x14004502c
movzx edx, byte [rdi + 8]
lea eax, [rdx - 0x30]
cmp al, 9
ja 0x14004502c
movzx r8d, byte [rdi + 9]
lea eax, [r8 - 0x30]
cmp al, 9
ja 0x14004502c
movsx eax, cl
lea ecx, [rax + rax*4]
movsx eax, dl
lea ecx, [rax + rcx*2]
movsx eax, r8b
lea ecx, [rcx + rcx*4]
lea ecx, [rcx - 0xa68]
lea ecx, [rax + rcx*2]
mov dword [rbx + 0x60], ecx
movzx eax, byte [rdi + 0xa]
cmp al, 0x20
je 0x140045107
sub al, 9
cmp al, 4
jbe 0x140045107
lea rcx, [rbp + 0xca0]
call fcn.14002cf50
lea rcx, [rbp + 0xca0]
mov rdi, rax
call fcn.14002cf60
mov rdx, rax
mov r8, rdi
mov rcx, rbp
call fcn.140045cf0
cmp eax, 1
jne 0x1400459af
mov dword [rbx + 0x60], reloc.WLDAP32.dll_Ordinal_200
mov byte [r15 + 0x70d], 0xa
jmp 0x140045253
cmp byte [rdi + 6], 0x2e
jne 0x140045996
movzx ecx, byte [rdi + 7]
lea eax, [rcx - 0x30]
cmp al, 1
ja 0x140045996
movzx eax, byte [rdi + 8]
cmp al, 0x20
je 0x14004509b
cmp al, 9
jne 0x140045996
movsx r9d, cl
movzx ecx, byte [rdi + 9]
sub r9d, 0x26
lea eax, [rcx - 0x30]
cmp al, 9
ja 0x140045996
movzx edx, byte [rdi + 0xa]
lea eax, [rdx - 0x30]
cmp al, 9
ja 0x140045996
movzx r8d, byte [rdi + 0xb]
lea eax, [r8 - 0x30]
cmp al, 9
ja 0x140045996
movsx eax, cl
lea ecx, [rax + rax*4]
movsx eax, dl
lea ecx, [rax + rcx*2]
movsx eax, r8b
lea ecx, [rcx + rcx*4]
lea ecx, [rcx - 0xa68]
lea ecx, [rax + rcx*2]
mov dword [rbx + 0x60], ecx
movzx eax, byte [rdi + 0xc]
cmp al, 0x20
je 0x140045107
cmp al, 9
je 0x140045107
sub al, 0xa
cmp al, 3
ja 0x140045996
cmp ecx, 0x64
jl 0x14004597d
lea eax, [r9 - 0xa]
cmp eax, 1
ja 0x14004594a
mov byte [r15 + 0x70d], r9b
movzx eax, r9b
cmp dword [rbx + 0x7c], 3
jne 0x14004514b
cmp r9b, 0x14
je 0x14004514b
lea rdx, str.Lying_server__not_serving_HTTP_2
mov rcx, rbp
call fcn.1400388c0
movzx eax, byte [r15 + 0x70d]
cmp al, 0x14
jae 0x140045253
mov rax, qword [r15 + 0x6d0]
mov dword [rax], 0xffffffff
jmp 0x140045253
bt ecx, 0x12
jae 0x1400459af
movzx eax, byte [r13]
mov rdi, r13
test al, al
je 0x140045193
nop dword [rax + rax]
cmp al, 0x20
je 0x140045188
cmp al, 9
jne 0x140045193
movzx eax, byte [rdi + 1]
inc rdi
test al, al
jne 0x140045180
mov r8d, 5
lea rdx, str.RTSP_
mov rcx, rdi
call qword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_strncmp]
test eax, eax
jne 0x1400459af
movzx eax, byte [rdi + 5]
sub al, 0x30
cmp al, 9
ja 0x1400459e3
cmp byte [rdi + 6], 0x2e
jne 0x1400459e3
movzx eax, byte [rdi + 7]
sub al, 0x30
cmp al, 9
ja 0x1400459e3
movzx eax, byte [rdi + 8]
cmp al, 0x20
je 0x1400451e7
cmp al, 9
jne 0x1400459e3
movzx ecx, byte [rdi + 9]
lea eax, [rcx - 0x30]
cmp al, 9
ja 0x1400459e3
movzx edx, byte [rdi + 0xa]
lea eax, [rdx - 0x30]
cmp al, 9
ja 0x1400459e3
movzx r8d, byte [rdi + 0xb]
lea eax, [r8 - 0x30]
cmp al, 9
ja 0x1400459e3
movsx eax, cl
lea ecx, [rax + rax*4]
movsx eax, dl
lea ecx, [rax + rcx*2]
movsx eax, r8b
lea ecx, [rcx + rcx*4]
lea ecx, [rcx - 0xa68]
lea ecx, [rax + rcx*2]
mov dword [rbx + 0x60], ecx
movzx eax, byte [rdi + 0xc]
cmp al, 0x20
je 0x14004524b
cmp al, 9
je 0x14004524b
sub al, 0xa
cmp al, 3
ja 0x1400459e3
mov byte [r15 + 0x70d], 0xb
mov eax, dword [rbx + 0x60]
movzx ecx, byte [rbp + 0x1359]
mov dword [rbp + 0x1380], eax
movzx eax, byte [r15 + 0x70d]
mov dword [rbp + 0x1388], eax
movzx eax, byte [r15 + 0x70d]
test cl, cl
je 0x140045281
cmp cl, al
jbe 0x140045287
mov byte [rbp + 0x1359], al
cmp qword [rbp + 0x1180], 0
je 0x1400452aa
cmp byte [rbp + 0x135a], 0
jne 0x1400452aa
cmp dword [rbx + 0x60], 0x1a0
jne 0x1400452aa
mov byte [rbx + 0xdd], 1
movzx eax, byte [r15 + 0x70d]
cmp al, 0xa
jne 0x1400452d4
lea rdx, str.HTTP_1.0__assume_close_after_body
mov rcx, rbp
call fcn.1400388c0
mov edx, 1
mov rcx, r15
call fcn.140039840
jmp 0x1400452ee
cmp al, 0x14
je 0x1400452e4
cmp dword [rbx + 0x7c], r14d
jne 0x1400452ee
cmp dword [rbx + 0x60], 0x65
jne 0x1400452ee
mov rax, qword [r15 + 0x6d0]
mov dword [rax], r14d
mov ecx, dword [rbx + 0x60]
lea eax, [rcx - 0x64]
cmp eax, 0x63
setbe al
mov byte [rbx + 0xde], al
sub ecx, 0xcc
je 0x14004531d
cmp ecx, 0x64
jne 0x14004532d
cmp byte [rbp + 0x530], 0
je 0x14004531d
mov byte [rbp + 0x1464], 1
xor eax, eax
mov byte [rbx + 0xde], 1
mov qword [rbx], rax
mov qword [rbx + 8], rax
mov r14d, 6
lea rcx, [rbp + 0xca0]
call fcn.14002cf60
lea rcx, [rbp + 0xca0]
mov rdi, rax
call fcn.14002cf50
mov r8, rax
xor edx, edx
mov rcx, rdi
mov rsi, rax
call sub.VCRUNTIME140.dll_memchr
test rax, rax
jne 0x1400459d4
mov edx, dword [rbp + 0x13c]
cmp edx, 2
jl 0x14004539d
movzx ecx, byte [rdi]
cmp cl, 0x20
je 0x14004537f
cmp cl, 9
jne 0x140045384
cmp edx, 2
jg 0x14004539d
mov r8, rsi
mov edx, Ordinal_60
mov rcx, rdi
call sub.VCRUNTIME140.dll_memchr
test rax, rax
je 0x1400459bb
mov r8, r13
mov rdx, r15
mov rcx, rbp
call fcn.140043df0
test eax, eax
jne 0x140045905
mov edi, dword [rbx + 0x60]
mov esi, r14d
or esi, 1
cmp byte [rbp + 0xab3], al
cmove esi, r14d
lea r14, [rbp + 0xca0]
mov rcx, r14
call fcn.14002cf50
mov r9, rax
mov r8, r13
mov edx, 1
mov rcx, rbp
call fcn.140038650
mov rcx, r14
call fcn.14002cf50
mov edx, esi
mov r9, rax
or edx, 0x10
lea eax, [rdi - 0x64]
cmp eax, 0x64
mov r8, r13
mov rcx, rbp
cmovae edx, esi
call fcn.140038960
test eax, eax
jne 0x140045905
mov rcx, r14
call fcn.14002cf50
add qword [rbp + 0x1398], rax
mov rcx, r14
call fcn.14002cf50
add qword [rbp + 0x110], rax
xor r13d, r13d
jmp 0x140045815
mov ecx, dword [rbx + 0x60]
lea eax, [rcx - 0x64]
cmp eax, 0x63
ja 0x14004549a
sub ecx, 0x64
je 0x140045476
sub ecx, 1
je 0x140045460
xor eax, eax
mov byte [rbx + 0xda], 1
mov dword [rbx + 0x4c], eax
jmp 0x1400454fc
cmp dword [rbx + 0x7c], 2
je 0x1400459ed
mov byte [rbx + 0xda], 0
jmp 0x1400454fc
xor eax, eax
mov byte [rbx + 0xda], 1
mov dword [rbx + 0x4c], eax
cmp dword [rbx + 0x78], eax
jle 0x1400454fc
or dword [rbx + 0x64], 2
xor edx, edx
mov rcx, rbp
mov dword [rbx + 0x78], eax
call fcn.140026980
jmp 0x1400454fc
xor cl, cl
mov byte [rbx + 0xda], 0
cmp qword [rbx], 0xffffffffffffffff
jne 0x140045503
cmp byte [rbx + 0xdf], cl
jne 0x140045503
cmp byte [r15 + 0x2ce], cl
jne 0x140045503
cmp byte [r15 + 0x70d], 0xb
jne 0x140045503
mov rax, qword [r15 + 0x2e8]
test dword [rax + 0x84], 0x40000
jne 0x140045503
cmp byte [rbp + 0x135a], 5
je 0x140045503
lea rdx, str.no_chunk__no_close__no_size._Assume_close_to_signal_end
mov rcx, rbp
call fcn.1400388c0
mov edx, 2
mov rcx, r15
call fcn.140039840
movzx ecx, byte [rbx + 0xda]
test cl, cl
jne 0x140045555
cmp byte [rbp + 0x1d0], cl
jne 0x140045546
cmp byte [rbx + 0xdf], cl
jne 0x140045546
mov rdx, qword [rbx]
cmp rdx, 0xffffffffffffffff
je 0x140045555
mov rax, qword [rbp + 0x6f0]
test rax, rax
je 0x140045535
cmp rdx, rax
jg 0x140045a19
mov rcx, rbp
call fcn.140047860
mov rax, qword [rbx]
mov qword [rbx + 8], rax
jmp 0x140045555
mov qword [rbx + 8], 0xffffffffffffffff
mov qword [rbx], 0xffffffffffffffff
movzx ecx, byte [r15 + 0x2ce]
movzx eax, cl
test cl, cl
je 0x1400455af
mov edx, dword [rbp + 0x150]
cmp edx, 0x191
jne 0x14004557c
cmp dword [r15 + 0x3b0], 2
je 0x140045591
movzx eax, cl
cmp edx, 0x197
jne 0x1400455af
cmp dword [r15 + 0x3b4], 2
jne 0x1400455af
lea rdx, str.Connection_closure_while_negotiating_auth__HTTP_1.0__
mov rcx, rbp
call fcn.1400388c0
mov byte [rbp + 0x1361], 1
movzx eax, byte [r15 + 0x2ce]
test al, al
je 0x1400455f3
mov eax, dword [rbp + 0x150]
cmp eax, 0x191
jne 0x1400455cc
cmp dword [r15 + 0x4a8], 1
je 0x1400455dd
jmp 0x1400455f3
cmp eax, 0x197
jne 0x1400455f3
cmp dword [r15 + 0x4ac], 1
jne 0x1400455f3
lea rdx, str.Connection_closure_while_negotiating_auth__HTTP_1.0__
mov rcx, rbp
call fcn.1400388c0
mov byte [rbp + 0x1361], 1
cmp dword [r15 + 0x4a8], 3
jne 0x140045614
cmp dword [rbp + 0x150], 0x191
je 0x140045614
mov dword [r15 + 0x4a8], 4
cmp dword [r15 + 0x4ac], 3
jne 0x140045635
cmp dword [rbp + 0x150], 0x197
je 0x140045635
mov dword [r15 + 0x4ac], 4
mov eax, dword [rbx + 0x60]
xor r13d, r13d
mov edi, r13d
mov rcx, r14
cmp byte [rbp + 0xab3], dil
setne dil
sub eax, 0x64
add edi, 2
cmp eax, 0x64
sbb eax, eax
and eax, 0x10
or edi, eax
call fcn.14002cf50
mov rcx, r14
mov rsi, rax
call fcn.14002cf60
mov r8, rax
mov r9, rsi
mov edx, edi
mov rcx, rbp
call fcn.140038960
test eax, eax
jne 0x140045905
mov rdx, qword [rbp + 0x110]
movsxd rcx, esi
add qword [rbp + 0x1398], rcx
add rdx, rcx
mov qword [rbp + 0x110], rdx
mov rcx, rbp
mov r8d, dword [rbx + 0x60]
call fcn.140046100
test al, al
jne 0x140045a9e
lea eax, [r8 - 0x64]
cmp eax, 0x63
cmova rdx, r13
mov qword [rbp + 0x118], rdx
call fcn.140042d30
test eax, eax
jne 0x140045905
cmp dword [rbx + 0x60], 0x12c
jl 0x140045808
cmp byte [r15 + 0x2d8], r13b
jne 0x1400457e2
cmp byte [r15 + 0x2ce], r13b
jne 0x1400457e2
cmp byte [rbp + 0x136f], r13b
jne 0x1400457eb
movzx eax, byte [rbp + 0x135a]
dec al
cmp al, 3
ja 0x1400457e2
xor edx, edx
mov rcx, rbp
call fcn.140026980
cmp byte [rbx + 0xdc], r13b
jne 0x1400457e2
cmp dword [rbx + 0x60], 0x1a1
jne 0x140045777
cmp byte [rbp + 0x1363], r13b
je 0x140045777
lea rdx, str.Got_417_while_waiting_for_a_100
mov rcx, rbp
call fcn.1400388c0
mov rcx, qword [rbp + 0x1218]
mov byte [rbp + 0x1364], 1
call qword [case.0x140034901.1]
mov rdx, rbx
mov rcx, rbp
mov qword [rbp + 0x190], rax
call fcn.14003d4c0
jmp 0x1400457e2
mov rcx, rbp
cmp byte [rbp + 0xaaf], r13b
je 0x14004579f
lea rdx, str.HTTP_error_before_end_of_send__keep_sending
call fcn.1400388c0
cmp dword [rbx + 0x78], r13d
jle 0x1400457e2
or dword [rbx + 0x64], 2
mov dword [rbx + 0x78], r13d
jmp 0x1400457e2
lea rdx, str.HTTP_error_before_end_of_send__stop_sending
call fcn.1400388c0
mov edx, 2
mov rcx, r15
call fcn.140039840
mov rdx, rbx
mov rcx, rbp
call fcn.14003d4c0
test eax, eax
jne 0x140045905
mov byte [rbx + 0xdc], 1
cmp byte [rbp + 0x1363], r13b
je 0x1400457e2
mov dword [rbx + 0x78], 3
cmp byte [rbp + 0x136f], r13b
je 0x140045808
cmp qword [r15 + 0x310], 0xffffffffffffffff
je 0x140045808
lea rdx, str.Keep_sending_data_to_get_tossed_away
mov rcx, rbp
call fcn.1400388c0
or dword [rbx + 0x64], 2
cmp byte [rbx + 0xda], r13b
je 0x140045a32
mov rcx, r14
call fcn.14002cf70
mov rdi, qword [rbx + 0x50]
cmp byte [rdi], 0
je 0x140045903
mov rsi, qword [rsp + 0x80]
mov edx, 0xa
mov rcx, rdi
mov r12, rdi
mov rsi, qword [rsi]
mov r8, rsi
mov r14, rsi
call sub.VCRUNTIME140.dll_memchr
mov rcx, rax
test rax, rax
jne 0x140044e60
lea r13, [rbp + 0xca0]
mov r8, r14
mov rdx, r12
mov rcx, r13
call fcn.14002cef0
test eax, eax
jne 0x140045905
cmp dword [rbx + 0x4c], eax
jne 0x140045903
mov rcx, r13
call fcn.14002cf50
mov rcx, r13
mov rdi, rax
call fcn.14002cf60
mov r8, rax
mov r9, rdi
mov rdx, r15
mov rcx, rbp
call fcn.140045dd0
cmp eax, 2
jne 0x140045903
mov edx, eax
mov byte [rbx + 0xda], 0
mov rcx, r15
mov dword [rbx + 0x48], eax
call fcn.140039840
cmp byte [rbp + 0xad1], 0
jne 0x140045903
lea rdx, str.Received_HTTP_0.9_when_not_allowed
mov rcx, rbp
call fcn.140038730
mov eax, 1
jmp 0x140045905
mov edx, 2
mov rcx, r15
call fcn.140039840
cmp byte [rbp + 0xad1], 0
je 0x1400458c3
mov byte [rbx + 0xda], 0
cmp qword [rdi], 0
je 0x14004591a
mov dword [rbx + 0x48], 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 + 0x48], 2
mov qword [rdi], rax
mov rax, qword [rsp + 0x20]
mov qword [rbx + 0x50], rax
jmp 0x140045903
lea rdx, str.Unsupported_HTTP_version_in_response
mov rcx, rbp
call fcn.140038730
mov eax, 1
jmp 0x140045905
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.140038730
mov eax, 1
jmp 0x140045905
lea rdx, str.Unsupported_response_code_in_HTTP_response
mov rcx, rbp
call fcn.140038730
mov eax, 1
jmp 0x140045905
lea rdx, str.Unsupported_HTTP_1_subversion_in_response
mov rcx, rbp
call fcn.140038730
mov eax, 1
jmp 0x140045905
mov byte [rbx + 0xda], 0
jmp 0x140045903
lea rdx, str.Header_without_colon
mov rcx, rbp
call fcn.140038730
mov eax, 8
jmp 0x140045905
lea rdx, str.Nul_byte_in_header
mov rcx, rbp
call fcn.140038730
mov eax, 8
jmp 0x140045905
lea rdx, str.Received_101__Switching_to_HTTP_2
mov rcx, rbp
call fcn.1400388c0
xor eax, eax
mov dword [rbx + 0x7c], 3
mov dword [rbx + 0x4c], eax
mov eax, 1
mov byte [rbx + 0xda], 1
jmp 0x140045905
lea rdx, str.Maximum_file_size_exceeded
mov rcx, rbp
call fcn.140038730
mov eax, 0x3f
jmp 0x140045905
cmp byte [rbp + 0x1d4], r13b
jne 0x140045a5d
mov rax, qword [r15 + 0x2e8]
test dword [rax + 0x84], 0x40000
je 0x140045a6a
cmp dword [rbp + 0x9f8], 2
jne 0x140045a6a
cmp qword [rbx], 0xffffffffffffffff
jg 0x140045a6a
mov rax, qword [rsp + 0x88]
mov byte [rax], 1
jmp 0x140045a72
mov rax, qword [rsp + 0x88]
cmp qword [rbx + 8], r13
jne 0x140045a7d
mov byte [rax], 1
jmp 0x140045a82
cmp byte [rax], r13b
je 0x140045a86
and dword [rbx + 0x64], 0xfffffffe
mov r9, rsi
mov r8, r12
mov edx, 1
mov rcx, rbp
call fcn.140038650
jmp 0x140045903
lea rdx, str.The_requested_URL_returned_error:__d
call fcn.140038730
mov eax, reloc.WLDAP32.dll_Ordinal_22
jmp 0x140045905