Function at 0x2915e222b
Capabilities:
Parse credit card information

Disassembly:
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x38
mov sil, byte [r8 + 1]
mov bpl, byte [r8]
mov rbx, rdx
mov rdi, r8
test sil, sil
je 0x2915e22b4
test bpl, bpl
jne 0x2915e228e
mov word [rdx + 4], 1
mov rcx, rbx
call qword [rbx + 0x10]
mov eax, dword [rbx]
cmp eax, 0x24
je 0x2915e2295
jg 0x2915e2269
test eax, eax
je 0x2915e228e
jmp 0x2915e22aa
sub eax, 0x5c
and eax, 0xfffffffb
jne 0x2915e22aa
jmp 0x2915e2448
cmp byte [r8 + 2], 0
jne 0x2915e2472
mov sil, byte [r8 + 3]
test sil, sil
jne 0x2915e2486
xor esi, esi
jmp 0x2915e255e
mov rcx, rbx
call sym.advance
cmp dword [rbx], 0x7b
je 0x2915e2448
mov ebp, esi
jmp 0x2915e2254
mov rcx, rbx
call sym.advance
jmp 0x2915e22a6
test bpl, bpl
je 0x2915e2276
mov r12b, byte [r8 + 4]
mov byte [rsp + 0x2f], 0
mov rcx, rdx
lea r13, [rsp + 0x2f]
mov word [rdx + 4], 0
call qword [rdx + 0x10]
mov eax, dword [rbx]
test eax, eax
je 0x2915e2448
cmp eax, 0x2f
jne 0x2915e2319
mov rdx, r13
mov rcx, rbx
call sym.scan_whitespace_and_comments
test al, al
je 0x2915e244f
mov eax, dword [rbx]
test r12b, r12b
jne 0x2915e2319
cmp eax, 0x2c
je 0x2915e230a
cmp eax, 0x3d
jne 0x2915e2448
mov rcx, rbx
call qword [rbx + 0x20]
test al, al
je 0x2915e2323
jmp 0x2915e2448
cmp dword [rbx], 0x7d
jne 0x2915e230a
jmp 0x2915e2448
mov ecx, dword [rbx]
lea eax, [rcx - 0x2028]
cmp eax, 1
jbe 0x2915e2357
cmp ecx, 0xa
je 0x2915e2357
movzx ecx, cx
mov edx, 8
call sym.iswctype
test eax, eax
je 0x2915e244f
mov rcx, rbx
call sym.skip
jmp 0x2915e22d3
mov rcx, rbx
call sym.skip
lea rdx, [rsp + 0x2f]
mov rcx, rbx
call sym.scan_whitespace_and_comments
test al, al
je 0x2915e244f
mov eax, dword [rbx]
cmp eax, 0x3f
jg 0x2915e23c7
cmp eax, 0x24
jg 0x2915e2399
cmp eax, 0x21
jne 0x2915e2448
mov rcx, rbx
call sym.skip
cmp dword [rbx], 0x3d
jmp 0x2915e2446
mov edx, 0x7e006ab
shl rdx, 0x25
bt rdx, rax
jb 0x2915e244f
cmp eax, 0x2d
je 0x2915e23dd
cmp eax, 0x2b
jne 0x2915e2448
mov rcx, rbx
call sym.skip
cmp dword [rbx], 0x2b
jmp 0x2915e23e8
cmp eax, 0x69
je 0x2915e23ec
jg 0x2915e23d8
cmp eax, 0x5b
je 0x2915e244f
cmp eax, 0x5e
jmp 0x2915e2446
cmp eax, 0x7c
jmp 0x2915e2446
mov rcx, rbx
call sym.skip
cmp dword [rbx], 0x2d
jne 0x2915e244f
jmp 0x2915e2448
mov rcx, rbx
call sym.skip
cmp dword [rbx], 0x6e
jne 0x2915e2448
mov rcx, rbx
call sym.skip
movzx ecx, word [rbx]
mov edx, 0x103
call sym.iswctype
test eax, eax
je 0x2915e244f
xor r12d, r12d
lea r13, str.stanceof
movsx eax, byte [r13 + r12]
cmp dword [rbx], eax
jne 0x2915e2448
mov rcx, rbx
inc r12
call sym.skip
cmp r12, 8
jne 0x2915e241c
movzx ecx, word [rbx]
mov edx, 0x103
call sym.iswctype
test eax, eax
je 0x2915e244f
mov esi, ebp
jmp 0x2915e255e
cmp byte [rsp + 0x2f], 0
jne 0x2915e255e
mov sil, byte [rdi + 2]
test sil, sil
je 0x2915e255e
xor esi, esi
cmp dword [rbx], 0x3f
jne 0x2915e255e
mov rcx, rbx
add rsp, 0x38
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
jmp sym.scan_ternary_qmark
cmp byte [r8 + 4], 0
jne 0x2915e228e
cmp byte [r8 + 5], 0
jne 0x2915e228e
cmp byte [r8 + 6], 0
jne 0x2915e228e
movzx ecx, word [rbx]
mov edx, 8
call sym.iswctype
test eax, eax
je 0x2915e24c2
mov rcx, rbx
call sym.skip
jmp 0x2915e24a7
mov eax, dword [rbx]
lea edx, [rax - 0x2028]
cmp edx, 1
jbe 0x2915e24b8
cmp eax, 0x3c
jne 0x2915e24fd
xor edi, edi
lea rbp, str.____
movsx eax, byte [rbp + rdi]
cmp dword [rbx], eax
jne 0x2915e228e
mov rcx, rbx
inc rdi
call sym.advance
cmp rdi, 4
jne 0x2915e24dd
jmp 0x2915e2541
cmp eax, 0x2d
jne 0x2915e228e
xor edi, edi
lea rbp, [0x29166498e]
movsx eax, byte [rbp + rdi]
cmp dword [rbx], eax
jne 0x2915e228e
mov rcx, rbx
inc rdi
call sym.advance
cmp rdi, 3
jne 0x2915e250f
jmp 0x2915e2541
sub eax, 0x2028
cmp eax, 1
jbe 0x2915e2552
mov rcx, rbx
call sym.advance
mov eax, dword [rbx]
test eax, eax
setne cl
cmp eax, 0xa
setne dl
test cl, dl
jne 0x2915e252f
mov word [rbx + 4], 3
mov rcx, rbx
call qword [rbx + 0x10]
mov eax, esi
add rsp, 0x38
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
ret