Function at 0x140036ea0
Capabilities:
Parse credit card information

Disassembly:
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x190]
sub rsp, 0x290
mov qword [rbp + 0x50], 0xfffffffffffffffe
mov qword [rsp + 0x2e8], rbx
mov rax, qword [0x1400f4d50]
xor rax, rsp
mov qword [rbp + 0x180], rax
mov r14, r8
mov qword [rsp + 0x40], rdx
mov r15, rcx
mov qword [rbp + 0x58], rdx
xor edi, edi
mov dword [rsp + 0x30], edi
lea rax, [0x1400be190]
mov qword [rsp + 0x50], rax
lea rax, [0x1400c09a8]
mov qword [rsp + 0x60], rax
mov dword [rsp + 0x30], 2
lea rax, vtable.std::basic_istream_wchar_t__struct_std::char_traits_wchar_t__.0
mov qword [rbp - 0x18], rax
mov qword [rsp + 0x58], rdi
lea rcx, [rbp - 0x18]
call fcn.1400053d0
lea r11, [rsp + 0x68]
mov qword [rbp + 0x30], r11
mov qword [rbp + 0x38], rdi
mov dl, 0x20
lea rcx, [rbp - 0x18]
call fcn.140007710
mov word [rbp + 0x40], ax
cmp qword [rbp + 0x30], rdi
jne 0x140036f5f
mov edx, dword [rbp - 8]
or edx, 4
xor r8d, r8d
lea rcx, [rbp - 0x18]
call fcn.140005240
nop
mov rax, qword [rsp + 0x60]
movsxd rcx, dword [rax + 4]
lea rax, vtable.std::basic_ostream_wchar_t__struct_std::char_traits_wchar_t__.0
mov qword [rsp + rcx + 0x60], rax
mov rax, qword [rsp + 0x50]
movsxd rcx, dword [rax + 4]
lea rax, vtable.std::basic_iostream_wchar_t__struct_std::char_traits_wchar_t__.0
mov qword [rsp + rcx + 0x50], rax
mov rax, qword [rsp + 0x50]
movsxd rcx, dword [rax + 4]
lea rax, vtable.std::basic_stringstream_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__.0
mov qword [rsp + rcx + 0x50], rax
lea rcx, [rsp + 0x68]
call fcn.140005d90
nop
lea rax, vtable.std::basic_stringbuf_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__.0
mov qword [rsp + 0x68], rax
mov qword [rbp - 0x28], rdi
mov dword [rbp - 0x20], edi
mov r11d, reloc.WS2_32.dll_ntohs
mov qword [rbp + 0xa0], r11
mov qword [rbp + 0x98], rdi
mov byte [rbp + 0x88], 0
mov edx, r11d
mov qword [rbp + 0x78], rdx
mov qword [rbp + 0x70], rdi
mov byte [rbp + 0x60], 0
mov r13d, edi
cmp qword [r14 + 0x18], 0x10
jb 0x140036ff5
mov rbx, qword [r14]
jmp 0x140036ff8
mov rbx, r14
mov rsi, rbx
lea rcx, [r14 + 0x10]
mov qword [rsp + 0x38], rcx
mov r12, qword [rbp + 0x88]
mov r9, qword [rbp + 0x60]
nop
mov r8, qword [r14 + 0x18]
cmp r8, 0x10
jb 0x14003701f
mov rax, qword [r14]
jmp 0x140037022
mov rax, r14
mov r10, qword [rcx]
add rax, r10
cmp rsi, rax
je 0x1400375a0
test r13d, r13d
jne 0x140037112
cmp byte [rsi], 0x3d
jne 0x14003757e
cmp r8, 0x10
jb 0x14003704e
mov rax, qword [r14]
jmp 0x140037051
mov rax, r14
add rax, r10
lea rdi, [rsi + 1]
cmp rdi, rax
je 0x14003757e
cmp byte [rdi], 0x3f
jne 0x14003757e
mov rax, rsi
sub rax, rbx
je 0x1400370c0
lea rcx, [r15 + 0x1c8]
mov dword [rsp + 0x20], eax
mov r9, rbx
lea r8, str.us_ascii
lea rdx, [rbp + 0xb0]
call fcn.140039ab0
nop
mov rdx, rax
lea rcx, [rsp + 0x60]
call fcn.1400081f0
nop
cmp qword [rbp + 0xc8], 8
jb 0x1400370b8
mov rcx, qword [rbp + 0xb0]
call fcn.140095520
mov r9, qword [rbp + 0x60]
mov rdx, qword [rbp + 0x78]
lea rbx, [rsi + 2]
mov rsi, rdi
xor eax, eax
lea r13d, [rax + 1]
mov qword [rbp + 0x70], rax
lea rax, [rbp + 0x60]
cmp rdx, 0x10
cmovae rax, r9
mov byte [rax], 0
lea r8d, [r13 + 7]
lea rdx, str.us_ascii
lea rcx, [rbp + 0x88]
call fcn.140007a00
mov r11, qword [rbp + 0xa0]
mov r12, qword [rbp + 0x88]
mov rdx, qword [rbp + 0x78]
mov r9, qword [rbp + 0x60]
jmp 0x140037579
cmp byte [rsi], 0x3f
jne 0x14003757e
mov ecx, r13d
inc r13d
dec ecx
je 0x14003743b
dec ecx
je 0x140037352
dec ecx
jne 0x140037575
cmp r8, 0x10
jb 0x140037144
mov rax, qword [r14]
jmp 0x140037147
mov rax, r14
add rax, r10
lea rdi, [rsi + 1]
cmp rdi, rax
je 0x14003734a
cmp byte [rdi], 0x3d
jne 0x14003734a
cmp qword [rbp + 0x70], 0
jbe 0x1400372ec
lea rax, [rbp + 0x60]
cmp rdx, 0x10
cmovae rax, r9
cmp byte [rax], 0x42
jne 0x14003722f
sub rsi, rbx
mov r8d, esi
mov rdx, rbx
lea rcx, [rbp + 0x150]
call fcn.140035460
nop
cmp qword [rax + 0x18], 0x10
jb 0x1400371a0
mov rax, qword [rax]
lea r8, [rbp + 0x88]
cmp qword [rbp + 0xa0], 0x10
cmovae r8, qword [rbp + 0x88]
lea rcx, [r15 + 0x1c8]
mov dword [rsp + 0x20], 0xffffffff
mov r9, rax
lea rdx, [rbp + 0xd8]
call fcn.140039ab0
nop
mov rdx, rax
lea rcx, [rsp + 0x60]
call fcn.1400081f0
nop
cmp qword [rbp + 0xf0], 8
jb 0x1400371fa
mov rcx, qword [rbp + 0xd8]
call fcn.140095520
mov qword [rbp + 0xf0], 7
xor esi, esi
mov qword [rbp + 0xe8], rsi
mov word [rbp + 0xd8], si
cmp qword [rbp + 0x168], 0x10
jb 0x14003733d
mov rcx, qword [rbp + 0x150]
jmp 0x140037338
lea rax, [rbp + 0x60]
cmp rdx, 0x10
cmovae rax, r9
cmp byte [rax], 0x51
jne 0x1400372ec
sub rsi, rbx
mov r8d, esi
mov rdx, rbx
lea rcx, [rbp + 0x128]
call fcn.140036bb0
nop
cmp qword [rax + 0x18], 0x10
jb 0x140037264
mov rax, qword [rax]
lea r8, [rbp + 0x88]
cmp qword [rbp + 0xa0], 0x10
cmovae r8, qword [rbp + 0x88]
lea rcx, [r15 + 0x1c8]
mov dword [rsp + 0x20], 0xffffffff
mov r9, rax
lea rdx, [rbp + 0xb0]
call fcn.140039ab0
nop
mov rdx, rax
lea rcx, [rsp + 0x60]
call fcn.1400081f0
nop
cmp qword [rbp + 0xc8], 8
jb 0x1400372be
mov rcx, qword [rbp + 0xb0]
call fcn.140095520
mov qword [rbp + 0xc8], 7
xor esi, esi
mov qword [rbp + 0xc0], rsi
mov word [rbp + 0xb0], si
cmp qword [rbp + 0x140], 0x10
jb 0x14003733d
mov rcx, qword [rbp + 0x128]
jmp 0x140037338
sub rsi, rbx
lea r8, [rbp + 0x88]
cmp r11, 0x10
cmovae r8, r12
lea rcx, [r15 + 0x1c8]
mov dword [rsp + 0x20], esi
mov r9, rbx
lea rdx, [rbp + 0x100]
call fcn.140039ab0
nop
mov rdx, rax
lea rcx, [rsp + 0x60]
call fcn.1400081f0
nop
cmp qword [rbp + 0x118], 8
jb 0x14003733d
mov rcx, qword [rbp + 0x100]
call fcn.140095520
mov rsi, rdi
xor eax, eax
mov r13d, eax
jmp 0x14003755f
dec r13d
jmp 0x140037575
lea rdi, [rbp + 0x60]
cmp rdx, 0x10
cmovae rdi, r9
add rdi, qword [rbp + 0x70]
lea r10, [rbp + 0x60]
cmp rdx, 0x10
cmovae r10, r9
lea rax, [rbp + 0x60]
cmp rbx, rsi
jne 0x14003740d
cmp rdx, 0x10
cmovae rax, r9
test rdi, rdi
jne 0x140037390
xor r8d, r8d
mov edi, r8d
jmp 0x140037396
sub rdi, r10
xor r8d, r8d
test r10, r10
jne 0x1400373a0
mov r10, r8
jmp 0x1400373a3
sub r10, rax
mov r8, qword [rbp + 0x70]
cmp r8, r10
jb 0x140037586
sub r8, r10
cmp r8, rdi
cmovb rdi, r8
test rdi, rdi
je 0x140037575
lea rcx, [rbp + 0x60]
cmp rdx, 0x10
cmovae rcx, r9
lea rax, [rbp + 0x60]
cmovae rax, r9
sub r8, rdi
lea rdx, [r10 + rcx]
add rdx, rdi
lea rcx, [r10 + rax]
call fcn.140095540
mov r11, qword [rbp + 0x70]
sub r11, rdi
mov qword [rbp + 0x70], r11
lea rax, [rbp + 0x60]
cmp qword [rbp + 0x78], 0x10
cmovae rax, qword [rbp + 0x60]
mov byte [rax + r11], 0
jmp 0x14003755f
cmp rdx, 0x10
cmovae rax, r9
test rdi, rdi
jne 0x140037420
xor ecx, ecx
mov edi, ecx
jmp 0x140037425
sub rdi, r10
xor ecx, ecx
test r10, r10
jne 0x14003742f
mov r10, rcx
jmp 0x140037432
sub r10, rax
lea rcx, [rbp + 0x60]
jmp 0x140037546
lea rcx, [rbp + 0x88]
cmp r11, 0x10
cmovae rcx, r12
mov rdi, qword [rbp + 0x98]
add rdi, rcx
lea r10, [rbp + 0x88]
cmp r11, 0x10
cmovae r10, r12
lea rax, [rbp + 0x88]
cmp rbx, rsi
jne 0x14003751a
cmp r11, 0x10
cmovae rax, r12
test rdi, rdi
jne 0x140037488
xor r8d, r8d
mov edi, r8d
jmp 0x14003748e
sub rdi, r10
xor r8d, r8d
test r10, r10
jne 0x140037498
mov r10, r8
jmp 0x14003749b
sub r10, rax
mov r8, qword [rbp + 0x98]
cmp r8, r10
jb 0x140037593
sub r8, r10
cmp r8, rdi
cmovb rdi, r8
test rdi, rdi
je 0x140037575
lea rcx, [rbp + 0x88]
cmp r11, 0x10
cmovae rcx, r12
lea rax, [rbp + 0x88]
cmovae rax, r12
sub r8, rdi
lea rdx, [r10 + rdi]
add rdx, rcx
lea rcx, [r10 + rax]
call fcn.140095540
mov r11, qword [rbp + 0x98]
sub r11, rdi
mov qword [rbp + 0x98], r11
lea rax, [rbp + 0x88]
cmp qword [rbp + 0xa0], 0x10
cmovae rax, qword [rbp + 0x88]
mov byte [r11 + rax], 0
jmp 0x14003755f
cmp r11, 0x10
cmovae rax, r12
test rdi, rdi
jne 0x14003752d
xor ecx, ecx
mov edi, ecx
jmp 0x140037532
sub rdi, r10
xor ecx, ecx
test r10, r10
jne 0x14003753c
mov r10, rcx
jmp 0x14003753f
sub r10, rax
lea rcx, [rbp + 0x88]
mov rax, rsi
sub rax, rbx
mov qword [rsp + 0x20], rax
mov r9, rbx
mov r8, rdi
mov rdx, r10
call fcn.140034f80
mov r11, qword [rbp + 0xa0]
mov r12, qword [rbp + 0x88]
mov rdx, qword [rbp + 0x78]
mov r9, qword [rbp + 0x60]
lea rbx, [rsi + 1]
mov rcx, qword [rsp + 0x38]
inc rsi
jmp 0x140037010
lea rcx, str.invalid_string_position
call fcn.140075774
int3
lea rcx, str.invalid_string_position
call fcn.140075774
int3
cmp r8, 0x10
jb 0x1400375a9
mov r14, qword [r14]
lea rdx, [r14 + r10]
sub rdx, rbx
je 0x1400375f8
lea rcx, [r15 + 0x1c8]
mov dword [rsp + 0x20], edx
mov r9, rbx
lea r8, str.us_ascii
lea rdx, [rbp + 0x100]
call fcn.140039ab0
nop
mov rdx, rax
lea rcx, [rsp + 0x60]
call fcn.1400081f0
nop
cmp qword [rbp + 0x118], 8
jb 0x1400375f8
mov rcx, qword [rbp + 0x100]
call fcn.140095520
xor esi, esi
mov ebx, esi
mov rax, qword [rsp + 0x60]
movsxd rcx, dword [rax + 4]
test byte [rsp + rcx + 0x70], 6
jne 0x140037627
mov rcx, qword [rbp + rcx - 0x58]
mov rax, qword [rcx]
call qword [rax + 0x68]
mov ecx, 4
cmp eax, 0xffffffff
cmove ebx, ecx
mov rax, qword [rsp + 0x60]
movsxd rax, dword [rax + 4]
lea rcx, [rsp + rax + 0x60]
test ebx, ebx
je 0x14003764a
mov edx, dword [rcx + 0x10]
or edx, ebx
cmp qword [rcx + 0x48], rsi
jne 0x140037642
or edx, 4
xor r8d, r8d
call fcn.140005240
mov rdi, qword [rsp + 0x40]
mov rdx, rdi
lea rcx, [rsp + 0x50]
call fcn.140014cb0
mov dword [rsp + 0x30], 3
cmp qword [rbp + 0x78], 0x10
jb 0x140037674
mov rcx, qword [rbp + 0x60]
call fcn.140095520
mov qword [rbp + 0x78], reloc.WS2_32.dll_ntohs
mov qword [rbp + 0x70], rsi
mov byte [rbp + 0x60], 0
cmp qword [rbp + 0xa0], 0x10
jb 0x14003769a
mov rcx, qword [rbp + 0x88]
call fcn.140095520
mov qword [rbp + 0xa0], reloc.WS2_32.dll_ntohs
mov qword [rbp + 0x98], rsi
mov byte [rbp + 0x88], 0
lea rax, [rbp - 0x18]
mov qword [rsp + 0x40], rax
mov rax, qword [rsp + 0x50]
movsxd rcx, dword [rax + 4]
lea rax, vtable.std::basic_stringstream_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__.0
mov qword [rsp + rcx + 0x50], rax
lea rcx, [rsp + 0x68]
call fcn.1400057c0
nop
mov rax, qword [rsp + 0x50]
movsxd rcx, dword [rax + 4]
lea rax, vtable.std::basic_iostream_wchar_t__struct_std::char_traits_wchar_t__.0
mov qword [rsp + rcx + 0x50], rax
mov rcx, qword [rsp + 0x60]
movsxd rdx, dword [rcx + 4]
lea rax, vtable.std::basic_ostream_wchar_t__struct_std::char_traits_wchar_t__.0
mov qword [rsp + rdx + 0x60], rax
mov rcx, qword [rsp + 0x50]
movsxd rdx, dword [rcx + 4]
lea rax, vtable.std::basic_istream_wchar_t__struct_std::char_traits_wchar_t__.0
mov qword [rsp + rdx + 0x50], rax
lea rax, vtable.std::ios_base.0
mov qword [rbp - 0x18], rax
lea rcx, [rbp - 0x18]
call fcn.14007610c
mov rax, rdi
mov rcx, qword [rbp + 0x180]
xor rcx, rsp
call fcn.1400959a0
mov rbx, qword [rsp + 0x2e8]
add rsp, 0x290
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret