Function at 0x14015ce70
Capabilities:
Parse credit card information

Disassembly:
mov qword [rsp + 0x20], r9
mov qword [rsp + 0x18], r8
push rbx
push rdi
push r12
push r14
sub rsp, 0x58
mov r14d, dword [r8]
mov rdi, rdx
mov r12, rcx
mov qword [rsp + 0x20], rcx
mov dword [rsp + 0x80], 0
mov rbx, rdx
test rdx, rdx
je 0x14015cec0
cmp byte [rdx], 0
je 0x14015ceb8
nop word [rax + rax]
inc rbx
cmp byte [rbx], 0
jne 0x14015ceb0
sub ebx, edx
and ebx, 0x3fffffff
mov qword [rsp + 0x50], rbp
mov qword [rsp + 0x48], rsi
mov qword [rsp + 0x40], r13
mov qword [rsp + 0x38], r15
test r14b, 0x40
jne 0x14015cee7
cmp dword [0x1402a489c], 0
je 0x14015d41e
cmp ebx, 5
jl 0x14015d41e
mov edx, dword [rdx]
lea rcx, [0x140000000]
cmp edx, dword [rcx + 0x228854]
lea rcx, [rcx + 0x228854]
jne 0x14015cf15
movzx edx, byte [rdi + 4]
cmp dl, byte [rcx + 4]
jne 0x14015cf15
xor eax, eax
jmp 0x14015cf1a
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x14015d41e
or r14d, 0x40
movsxd r8, ebx
xor esi, esi
xor ebp, ebp
xor r13d, r13d
xor ecx, ecx
lea r12d, [rbx + 2]
mov dword [rsp + 0x88], r14d
cmp r8, 2
jl 0x14015cf70
lea rdx, [r8 - 1]
nop dword [rax + rax]
xor eax, eax
cmp byte [rdi + rcx], 0x26
sete al
add esi, eax
xor eax, eax
cmp byte [rdi + rcx + 1], 0x26
sete al
add rcx, 2
add ebp, eax
cmp rcx, rdx
jl 0x14015cf50
cmp rcx, r8
jge 0x14015cf81
xor eax, eax
cmp byte [rcx + rdi], 0x26
sete al
add r12d, eax
call fcn.14015a7c0
test eax, eax
jne 0x14015d4e3
lea ecx, [rsi + rbp]
add ecx, r12d
call fcn.1400e8e00
mov rsi, rax
mov qword [rsp + 0x28], rax
test rax, rax
je 0x14015d4e3
cmp byte [rdi + 5], 0x2f
jne 0x14015d04e
cmp byte [rdi + 6], 0x2f
jne 0x14015d04e
movzx ecx, byte [rdi + 7]
lea r8, [rdi + 7]
mov r9d, 7
test cl, cl
je 0x14015d054
mov rax, r8
cmp cl, 0x2f
je 0x14015cfea
movzx ecx, byte [rax + 1]
inc rax
inc r9d
test cl, cl
jne 0x14015cfd7
cmp r9d, 7
je 0x14015d054
cmp r9d, 0x10
jne 0x14015d02b
lea r12, [0x140000000]
mov rcx, r8
mov rdx, qword [r12 + 0x228860]
cmp rdx, qword [r8]
jne 0x14015d022
movzx edx, byte [r12 + 0x228868]
add rcx, 8
cmp dl, byte [rcx]
jne 0x14015d022
xor eax, eax
jmp 0x14015d027
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x14015d05b
lea edx, [r9 - 7]
lea rcx, str.invalid_uri_authority:__.s
call fcn.1400eada0
mov r11, rax
mov rax, qword [rsp + 0xa8]
mov qword [rax], r11
jmp 0x14015d4a7
mov r9d, 5
lea r12, [0x140000000]
movsxd rax, r9d
xor r11d, r11d
xor r10d, r10d
movzx edx, byte [rax + rdi]
test dl, dl
je 0x14015d1ef
cmp dl, 0x23
je 0x14015d1df
inc r9d
cmp dl, 0x25
jne 0x14015d14a
movsxd rax, r9d
movzx ecx, byte [rax + rdi]
test byte [rcx + r12 + 0x1f2380], 8
je 0x14015d14a
movzx eax, byte [rax + rdi + 1]
test byte [rax + r12 + 0x1f2380], 8
je 0x14015d14a
movsx edx, cl
inc r9d
mov ecx, edx
movsxd rax, r9d
inc r9d
movsx r8d, byte [rax + rdi]
sar ecx, 6
mov al, 7
and cl, 1
imul cl
mov ecx, r8d
sar ecx, 6
sub dl, al
and cl, 1
mov al, 7
and edx, 0xf
shl edx, 4
imul cl
movzx ecx, r8b
sub cl, al
and ecx, 0xf
add edx, ecx
jne 0x14015d1c6
movsxd rax, r9d
movsxd rcx, r11d
lea rdx, [rax + rdi]
movzx eax, byte [rax + rdi]
test al, al
je 0x14015d1d0
cmp al, 0x23
je 0x14015d1d0
test r11d, r11d
jne 0x14015d119
cmp al, 0x3f
jmp 0x14015d131
cmp rcx, 1
jne 0x14015d129
cmp al, 0x3d
je 0x14015d1d0
jmp 0x14015d12f
cmp rcx, 2
jne 0x14015d137
cmp al, 0x26
je 0x14015d1d0
movzx eax, byte [rdx + 1]
inc rdx
inc r9d
test al, al
jne 0x14015d108
jmp 0x14015d1d0
cmp r11d, 1
jne 0x14015d1a7
cmp dl, 0x26
je 0x14015d15a
cmp dl, 0x3d
jne 0x14015d1c6
cmp byte [r10 + rsi - 1], 0
jne 0x14015d18d
movsxd rax, r9d
cmp byte [rax + rdi], 0
je 0x14015d1d0
movzx ecx, byte [rax + rdi]
nop
cmp cl, 0x23
je 0x14015d1d0
cmp byte [rax + rdi - 1], 0x26
je 0x14015d1d0
movzx ecx, byte [rax + rdi + 1]
inc rax
inc r9d
test cl, cl
jne 0x14015d170
jmp 0x14015d1d0
cmp dl, 0x26
jne 0x14015d19f
mov byte [r10 + rsi], 0
inc r13d
inc r10
jmp 0x14015d1c4
mov r11d, 2
jmp 0x14015d1c4
test r11d, r11d
jne 0x14015d1b3
cmp dl, 0x3f
je 0x14015d1be
jmp 0x14015d1c6
cmp r11d, 2
jne 0x14015d1c6
cmp dl, 0x26
jne 0x14015d1c6
mov r11d, 1
xor dl, dl
mov byte [r10 + rsi], dl
inc r13d
inc r10
movsxd rax, r9d
movzx edx, byte [rax + rdi]
test dl, dl
jne 0x14015d070
cmp r11d, 1
jne 0x14015d1ef
movsxd rax, r13d
inc r13d
mov byte [rax + rsi], 0
movsxd rax, r13d
mov word [rax + rsi], 0
cmp byte [rsi], 0
mov rax, rsi
je 0x14015d208
inc rax
cmp byte [rax], 0
jne 0x14015d200
sub eax, esi
and eax, 0x3fffffff
inc eax
movsxd rdx, eax
add rdx, rsi
cmp byte [rdx], 0
je 0x14015d470
mov r15d, dword [str.mode]
nop word [rax + rax]
mov rcx, rdx
inc rcx
cmp byte [rcx], 0
jne 0x14015d233
sub ecx, edx
and ecx, 0x3fffffff
lea eax, [rcx + 1]
movsxd rbp, eax
add rbp, rdx
mov rbx, rbp
jne 0x14015d255
xor ebx, ebx
jmp 0x14015d270
cmp byte [rbp], 0
je 0x14015d268
nop dword [rax + rax]
inc rbx
cmp byte [rbx], 0
jne 0x14015d260
sub ebx, ebp
and ebx, 0x3fffffff
cmp ecx, 3
jne 0x14015d2af
movzx ecx, word [r12 + 0x22888c]
cmp cx, word [rdx]
jne 0x14015d295
movzx ecx, byte [r12 + 0x22888e]
cmp cl, byte [rdx + 2]
jne 0x14015d295
xor eax, eax
jmp 0x14015d29a
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x14015d3cb
mov r12, rbp
mov qword [rsp + 0x20], rbp
jmp 0x14015d3d0
cmp ecx, 5
jne 0x14015d2f4
lea rax, str.cache
mov ecx, dword [rax]
cmp ecx, dword [rdx]
jne 0x14015d2ce
movzx ecx, byte [rax + 4]
cmp cl, byte [rdx + 4]
jne 0x14015d2ce
xor eax, eax
jmp 0x14015d2d3
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x14015d3cb
mov r12d, 0x60000
lea rsi, [0x1402a63c0]
lea r14, str.cache
mov r13d, r12d
jmp 0x14015d320
cmp ecx, 4
jne 0x14015d3cb
cmp r15d, dword [rdx]
jne 0x14015d3cb
mov r13d, r14d
mov r12d, 0x87
lea rsi, [0x1402a63f0]
and r13d, r12d
lea r14, str.access
mov rcx, qword [rsi]
xor edi, edi
test rcx, rcx
je 0x14015d377
nop word [rax + rax]
mov rax, rcx
test rcx, rcx
je 0x14015d34f
cmp byte [rcx], 0
je 0x14015d348
nop dword [rax]
inc rax
cmp byte [rax], 0
jne 0x14015d340
sub eax, ecx
and eax, 0x3fffffff
cmp ebx, eax
jne 0x14015d365
mov rdx, rcx
movsxd r8, ebx
mov rcx, rbp
call fcn.1401bcc4c
test eax, eax
je 0x14015d39c
inc rdi
mov rax, rdi
add rax, rax
mov rcx, qword [rsi + rax*8]
test rcx, rcx
jne 0x14015d330
lea rcx, str.no_such__s_mode:__s
mov r8, rbp
mov rdx, r14
call fcn.1400eada0
mov r11, rax
mov rax, qword [rsp + 0xa8]
mov qword [rax], r11
jmp 0x14015d4a7
add rdi, rdi
mov ecx, dword [rsi + rdi*8 + 8]
test ecx, ecx
je 0x14015d377
mov eax, ecx
btr eax, 7
cmp eax, r13d
jg 0x14015d3ee
mov r14d, dword [rsp + 0x88]
not r12d
and r14d, r12d
or r14d, ecx
mov dword [rsp + 0x88], r14d
mov r12, qword [rsp + 0x20]
lea eax, [rbx + 1]
movsxd rdx, eax
add rdx, rbp
cmp byte [rdx], 0
je 0x14015d469
lea r12, [0x140000000]
jmp 0x14015d230
lea rcx, str._s_mode_not_allowed:__s
mov r8, rbp
mov rdx, r14
call fcn.1400eada0
mov dword [rsp + 0x80], 3
mov r11, rax
mov rax, qword [rsp + 0xa8]
mov qword [rax], r11
jmp 0x14015d4b2
call fcn.14015a7c0
test eax, eax
jne 0x14015d4e3
lea ecx, [rbx + 2]
call fcn.1400e8e00
mov rsi, rax
mov qword [rsp + 0x28], rax
test rax, rax
je 0x14015d4e3
movsxd rbx, ebx
mov rdx, rdi
mov rcx, rax
mov r8, rbx
call fcn.1401bcc22
and r14d, 0xffffffbf
mov word [rbx + rsi], 0
mov dword [rsp + 0x88], r14d
jmp 0x14015d475
mov rsi, qword [rsp + 0x28]
jmp 0x14015d475
mov r12, qword [rsp + 0x20]
mov rcx, r12
call fcn.1400e83b0
mov rcx, qword [rsp + 0x98]
mov qword [rcx], rax
test rax, rax
jne 0x14015d4be
lea rcx, str.no_such_vfs:__s
mov rdx, r12
call fcn.1400eada0
mov rcx, qword [rsp + 0xa8]
mov qword [rcx], rax
mov dword [rsp + 0x80], 1
mov rcx, qword [rsp + 0x28]
call fcn.1400e9140
xor esi, esi
mov rcx, qword [rsp + 0x90]
mov eax, dword [rsp + 0x88]
mov dword [rcx], eax
mov rcx, qword [rsp + 0xa0]
mov eax, dword [rsp + 0x80]
mov qword [rcx], rsi
jmp 0x14015d4e8
mov eax, 7
mov r15, qword [rsp + 0x38]
mov r13, qword [rsp + 0x40]
mov rsi, qword [rsp + 0x48]
mov rbp, qword [rsp + 0x50]
add rsp, 0x58
pop r14
pop r12
pop rdi
pop rbx
ret