Function at 0x140050490
Capabilities:
Parse credit card information

Disassembly:
mov qword [rsp + 0x20], r9
mov qword [rsp + 0x10], rdx
mov qword [rsp + 8], rcx
push rbx
push rsi
push r12
push r13
push r14
push r15
sub rsp, 0x68
mov rbx, qword [rsp + 0xc0]
mov rsi, r9
mov r13, r8
mov r14, rdx
mov r15, rcx
mov r12, rdx
test rbx, rbx
je 0x1400504d0
movsxd rax, dword [rbx]
lea r12, [rdx + rax*2]
movzx eax, word [r12]
mov qword [rsp + 0xb0], rbp
mov qword [rsp + 0x60], rdi
test ax, ax
je 0x140050fae
movzx edi, word [rsp + 0xc8]
lea rbx, [0x140000000]
movzx edx, ax
lea rcx, str.__t_____:________n.
mov ebp, 0x29
call fcn.1400bbb88
test rax, rax
je 0x140050827
movzx eax, word [r12]
cmp ax, di
je 0x140050fa6
cmp ax, 0x25
je 0x140050827
cmp ax, 0x2e
jne 0x140050586
add r12, 2
mov rbx, r12
nop dword [rax]
movzx eax, word [r12]
cmp eax, 0x7f
ja 0x140050560
mov ecx, eax
call fcn.1400c5240
test eax, eax
jne 0x140050560
movzx eax, word [r12]
cmp ax, 0x5f
jne 0x140050566
add r12, 2
jmp 0x140050540
mov qword [rsp + 0x48], r12
cmp ax, 0x25
jne 0x14005057a
cmp di, ax
jne 0x140050824
lea rbx, [0x140000000]
jmp 0x140050815
cmp ax, 0xa
je 0x14005080a
cmp ax, 0x28
je 0x140050602
cmp ax, 0x5b
je 0x1400505fb
cmp ax, 0x7b
jne 0x140050811
mov ecx, 0x7d
sub r12, r14
sar r12, 1
inc r12d
mov dword [rsp + 0x40], r12d
mov word [rsp + 0x28], cx
lea rax, [rsp + 0x40]
mov rcx, r15
mov qword [rsp + 0x20], rax
mov r9, rsi
mov r8, r13
mov rdx, r14
call fcn.140050490
test eax, eax
je 0x140050ab9
movsxd rax, dword [rsp + 0x40]
cmp word [r14 + rax*2], 0
lea r12, [r14 + rax*2]
je 0x140050815
jmp 0x140050811
mov ecx, 0x5d
jmp 0x1400505ab
mov r8, r12
mov edx, ebp
sub r8, r14
mov r9, r13
sar r8, 1
mov rcx, r14
inc r8d
mov dword [rsp + 0x40], r8d
call fcn.14009f1c0
movsxd rcx, eax
mov eax, 0x29
cmp word [r14 + rcx*2], 0
lea rbp, [r14 + rcx*2]
movzx ecx, ax
je 0x1400505b9
lea r8, [rbp + 2]
nop dword [rax + rax]
movzx eax, word [r8]
cmp ax, 0x20
je 0x140050650
cmp ax, 9
jne 0x140050656
add r8, 2
jmp 0x140050640
cmp ax, 0x3d
jne 0x1400505b9
cmp word [r8 + 2], 0x3e
jne 0x1400505b9
movsxd rax, dword [rsi + 0xc]
test eax, eax
je 0x140050696
lea rcx, [rax + rax*2]
mov rax, qword [rsi]
cmp byte [rax + rcx*8 - 8], 0
jne 0x140050696
mov rdx, qword [rax + rcx*8 - 0x18]
mov eax, dword [rax + rcx*8 - 4]
lea rcx, [rdx + rax*2]
cmp rcx, r12
cmove r12, rdx
lea rsi, [r8 + 4]
mov rdi, rsi
sub rdi, r14
sar rdi, 1
mov eax, edi
nop word [rax + rax]
movsxd r8, eax
movsxd r9, eax
movzx r11d, word [r14 + r8*2]
test r11w, r11w
je case.0x1400506e2.0
cmp r11d, 0x7d
ja case.0x1400506e2.8
movzx ecx, byte [rbx + r11 + 0x51004]
mov edx, dword [rbx + rcx*4 + 0x50fe0]
add rdx, rbx
jmp rdx
lea rdx, [r9 + 1]
inc eax
lea r8, [r13 + 2]
lea rdx, [r14 + rdx*2]
lea r8, [r8 + r9*2]
movzx ecx, word [rdx]
cmp cx, r11w
jne 0x14005071f
test r13, r13
je 0x1400507f4
cmp word [r8], 0
je 0x1400507f4
inc eax
add r8, 2
add rdx, 2
jmp 0x1400506f6
test cx, cx
je 0x1400507f4
cmp cx, 0x60
jne 0x140050744
test r13, r13
jne 0x140050744
cmp word [rdx + 2], r13w
je 0x140050744
inc eax
add r8, 2
add rdx, 2
inc eax
add r8, 2
add rdx, 2
jmp 0x1400506f6
cmp word [r14 + r8*2 + 2], 0x3d
je case.0x1400506e2.8
movsxd rcx, eax
mov r9, rbp
movsxd rax, edi
mov r8, r12
lea rbx, [r14 + rcx*2]
lea rcx, [rax*2]
add rcx, r13
mov qword [rsp + 0x30], rcx
mov rcx, r15
mov qword [rsp + 0x28], rbx
mov qword [rsp + 0x20], rsi
mov rsi, qword [rsp + 0xb8]
mov rdx, rsi
call fcn.140051130
test eax, eax
je 0x140050ab9
movzx edi, word [rsp + 0xc8]
mov r12, rbx
lea rbx, [0x140000000]
jmp 0x140050815
inc eax
cmp word [r14 + r9*2 + 2], 0x3f
je case.0x1400506e2.8
mov edx, 0x3a
mov r8d, eax
jmp 0x1400507e9
mov edx, 0x25
jmp 0x1400507e5
mov edx, 0x29
jmp 0x1400507e5
mov edx, 0x5d
jmp 0x1400507e5
mov edx, 0x7d
lea r8d, [rax + 1]
mov r9, r13
mov rcx, r14
call fcn.14009f1c0
movsxd rcx, eax
cmp word [r14 + rcx*2], 0
je case.0x1400506e2.0
inc eax
jmp 0x1400506b0
mov word [r12], SafeArrayAllocDescriptor
add r12, 2
movzx eax, word [r12]
test ax, ax
je 0x140050827
jmp 0x1400504fa
mov r12, rbx
movzx r9d, word [r12]
test r9w, r9w
je 0x140050fa6
cmp r9w, 0x22
je 0x140050e31
cmp r9w, 0x27
je 0x140050e31
sub r9w, 0x30
cmp r9w, 9
ja 0x1400508ec
lea rdx, [rsp + 0x48]
mov rcx, r12
call fcn.14009d020
cmp word [r12], 0x30
mov r15, qword [rsp + 0x48]
jne 0x140050899
movzx eax, word [r12 + 2]
mov ecx, 0xffdf
sub ax, 0x58
test cx, ax
jne 0x140050899
movzx ecx, word [r12 + 4]
call fcn.1400c53a0
test eax, eax
jne 0x1400508d3
lea rdx, [rsp + 0x50]
mov rcx, r12
call fcn.1400ccac4
mov rdx, qword [rsp + 0x50]
cmp r15, rdx
jae 0x1400508d3
movzx edx, word [rdx]
lea rcx, str.__t_____:________n.
call fcn.1400bbb88
test rax, rax
je 0x1400508d3
mov r15, qword [rsp + 0x50]
mov qword [rsp + 0x48], r15
jmp 0x140050b43
movzx edx, word [r15]
lea rcx, str.__t_____:________n.
call fcn.1400bbb88
test rax, rax
jne 0x140050b43
mov r15, r12
nop
movzx eax, word [r15]
cmp eax, 0x7f
ja 0x14005090e
mov ecx, eax
call fcn.1400c5240
test eax, eax
jne 0x14005090e
movzx eax, word [r15]
cmp ax, 0x5f
jne 0x140050914
add r15, 2
jmp 0x1400508f0
mov r14, r15
mov qword [rsp + 0x48], r15
sub r14, r12
sar r14, 1
cmp ax, 0x25
jne 0x140050ac0
cmp di, ax
je 0x140050ac0
mov r15, qword [rsp + 0xa8]
mov rax, r12
sub rax, r15
mov bpl, 1
sar rax, 1
mov dword [rsp + 0x40], eax
xor esi, esi
cdqe
lea rdi, [r15 + rax*2]
mov rbx, rdi
movzx eax, word [rbx]
cmp eax, 0x7f
ja 0x140050971
mov ecx, eax
call fcn.1400c5240
test eax, eax
jne 0x140050971
cmp word [rbx], 0x5f
jne 0x140050977
add rbx, 2
jmp 0x140050958
mov rcx, qword [rsp + 0xb8]
call fcn.140050410
test eax, eax
je 0x140050ab9
mov r8, qword [rsp + 0xb8]
movsxd rax, dword [r8 + 0xc]
lea rcx, [rax + rax*2]
mov rax, qword [r8]
lea rdx, [rax + rcx*8]
mov byte [rdx - 8], 2
cmp word [rbx], 0x25
mov qword [rdx - 0x18], rdi
setne al
inc esi
mov byte [rdx - 0x10], al
mov rax, rbx
sub rax, rdi
mov byte [rdx - 7], sil
sub rbx, r15
sar rax, 1
sar rbx, 1
mov dword [rdx - 4], eax
mov dword [rsp + 0x40], ebx
cmp byte [rdx - 0x10], 0
jne 0x140050a44
lea eax, [rbx + 1]
mov word [rsp + 0x28], 0x25
mov rbx, qword [rsp + 0xa0]
mov r9, r8
mov dword [rsp + 0x40], eax
mov r8, r13
lea rax, [rsp + 0x40]
mov rdx, r15
mov rcx, rbx
mov qword [rsp + 0x20], rax
call fcn.140050490
test eax, eax
je 0x140050ab9
movsxd rax, dword [rsp + 0x40]
cmp word [r15 + rax*2], 0x25
jne 0x140050a2a
lea rdi, [rax + 1]
lea rdi, [r15 + rdi*2]
jmp 0x140050955
mov r8, rdi
lea rdx, str.Missing_ending____
mov rcx, rbx
call fcn.140010a80
test eax, eax
je 0x140050ab9
mov ebx, dword [rsp + 0x40]
mov rsi, qword [rsp + 0xb8]
movsxd rax, ebx
lea r15, [r15 + rax*2]
mov qword [rsp + 0x48], r15
mov eax, dword [rsi + 8]
cmp dword [rsi + 0xc], eax
jne 0x140050cf5
sub eax, 0xffffff80
movsxd rcx, eax
lea rdx, [rcx + rcx*2]
mov rcx, qword [rsi]
shl rdx, 3
call fcn.1400c069c
test rax, rax
jne 0x140050cee
mov rax, qword [0x140127498]
lea rdx, str.Out_of_memory.
mov qword [rsp + 0x28], rax
lea rcx, [0x140127620]
xor r9d, r9d
mov qword [rsp + 0x20], 0
xor r8d, r8d
call fcn.14000f840
test eax, eax
jne 0x140050cf8
xor eax, eax
jmp 0x140050fc1
xor bpl, bpl
test r14, r14
je 0x140050f74
mov rcx, r15
nop
cmp ax, 0x20
je 0x140050adc
cmp ax, 9
jne 0x140050ae6
movzx eax, word [rcx + 2]
add rcx, 2
jmp 0x140050ad0
cmp ax, 0x3a
jne 0x140050b60
cmp word [rcx + 2], 0x3d
je 0x140050a58
mov rdx, qword [rsp + 0xa8]
lea rax, [r12 - 2]
cmp rax, rdx
jbe 0x140050b28
nop dword [rax]
movzx ecx, word [rax]
cmp cx, 0x20
je 0x140050b1f
cmp cx, 9
jne 0x140050b28
sub rax, 2
cmp rax, rdx
ja 0x140050b10
movzx ecx, word [rax]
cmp cx, 0x2c
je 0x140050b3b
cmp cx, 0x7b
jne 0x140050a58
mov r14, qword [rsp + 0xa8]
movzx eax, word [r15]
mov r12, r15
test ax, ax
je 0x140050fa6
mov r15, qword [rsp + 0xa0]
jmp 0x1400504eb
cmp ax, 0x3d
jne 0x140050a58
cmp word [rcx + 2], 0x3e
jne 0x140050a58
mov r14, qword [rsp + 0xa8]
lea rsi, [rcx + 4]
mov rdi, rsi
lea rbx, [0x140000000]
sub rdi, r14
sar rdi, 1
mov r8d, edi
nop dword [rax]
nop dword [rax + rax]
movsxd rdx, r8d
movsxd r9, r8d
movzx r11d, word [r14 + rdx*2]
test r11w, r11w
je case.0x140050bd2.0
cmp r11d, 0x7d
ja case.0x140050bd2.8
movzx eax, byte [rbx + r11 + 0x510a8]
mov ecx, dword [rbx + rax*4 + 0x51084]
add rcx, rbx
jmp rcx
lea rcx, [r14 + 2]
inc r8d
lea rdx, [r13 + 2]
lea rcx, [rcx + r9*2]
lea rdx, [rdx + r9*2]
movzx eax, word [rcx]
cmp ax, r11w
jne 0x140050c09
test r13, r13
je 0x140050bfb
cmp word [rdx], 0
jne 0x140050c2b
movsxd rax, r8d
cmp word [r14 + rax*2], 0
jmp 0x140050ce0
test ax, ax
je 0x140050bfb
cmp ax, 0x60
jne 0x140050c2b
test r13, r13
jne 0x140050c2b
cmp word [rcx + 2], r13w
je 0x140050c2b
inc r8d
add rdx, 2
add rcx, 2
inc r8d
add rdx, 2
add rcx, 2
jmp 0x140050be7
cmp word [r14 + rdx*2 + 2], 0x3d
je case.0x140050bd2.8
movsxd rax, r8d
mov r9, r15
mov r8, r12
lea rbx, [r14 + rax*2]
movsxd rax, edi
lea rcx, [rax*2]
add rcx, r13
mov qword [rsp + 0x30], rcx
mov rcx, qword [rsp + 0xa0]
mov qword [rsp + 0x28], rbx
mov qword [rsp + 0x20], rsi
mov rsi, qword [rsp + 0xb8]
mov rdx, rsi
call fcn.140051130
test eax, eax
je 0x140050ab9
mov r15, rbx
mov qword [rsp + 0x48], rbx
jmp 0x140050b43
inc r8d
cmp word [r14 + r9*2 + 2], 0x3f
je case.0x140050bd2.8
mov edx, 0x3a
jmp 0x140050ccc
mov edx, 0x25
jmp 0x140050cc9
mov edx, 0x29
jmp 0x140050cc9
mov edx, 0x5d
jmp 0x140050cc9
mov edx, 0x7d
inc r8d
mov r9, r13
mov rcx, r14
call fcn.14009f1c0
movsxd r8, eax
cmp word [r14 + r8*2], 0
je case.0x140050bd2.0
inc r8d
jmp 0x140050ba0
sub dword [rsi + 8], 0xffffff80
mov qword [rsi], rax
inc dword [rsi + 0xc]
movsxd rax, dword [rsi + 0xc]
lea rcx, [rax + rax*2]
mov rax, qword [rsi]
lea rdi, [rax + rcx*8]
test bpl, bpl
je 0x140050d39
mov r14, qword [rsp + 0xa8]
mov qword [rdi - 0x18], r15
mov dword [rdi - 4], 0
cmp r12, r14
jbe 0x140050d2f
cmp word [r12 - 2], 0x2e
mov al, 6
je 0x140050d31
mov al, 1
mov byte [rdi - 8], al
jmp 0x140050b43
cmp r14, 9
jae 0x140050d83
xor esi, esi
lea rbx, [0x140123ca0]
xor ebp, ebp
nop word [rax + rax]
mov rcx, qword [rbx]
mov r8, r14
mov rdx, r12
call fcn.1400c06f0
test eax, eax
jne 0x140050d6d
mov rax, qword [rbx]
cmp word [rax + r14*2], 0
je 0x140050de1
inc esi
inc rbp
add rbx, 0x10
cmp esi, 0xa
jb 0x140050d50
mov rsi, qword [rsp + 0xb8]
cmp r14, 4
jne 0x140050d9f
mov r8, r14
lea rdx, str.True
mov rcx, r12
call fcn.1400c06f0
test eax, eax
je 0x140050dbb
cmp r14, 5
jne 0x140050e18
mov r8, r14
lea rdx, str.False
mov rcx, r12
call fcn.1400c06f0
test eax, eax
jne 0x140050e18
mov qword [rdi - 0x18], r12
mov dword [rdi - 4], r14d
mov byte [rdi - 8], 5
movzx ecx, word [r12]
call fcn.1400cc728
xor ecx, ecx
cmp eax, 0x54
sete cl
mov dword [rdi - 0x10], ecx
jmp 0x140050b3b
add rbp, rbp
lea rcx, [0x140123ca0]
mov eax, dword [rcx + rbp*8 + 8]
test eax, eax
je 0x140050d7b
cmp eax, 0x47
jge 0x140050f5b
mov rsi, qword [rsp + 0xb8]
mov qword [rdi - 0x18], r12
mov dword [rdi - 4], r14d
mov byte [rdi - 8], 4
mov dword [rdi - 0x10], eax
jmp 0x140050b3b
mov qword [rdi - 0x18], r12
mov dword [rdi - 4], r14d
mov byte [rdi - 8], 0
mov qword [rdi - 0x10], 0
jmp 0x140050b3b
mov rcx, r12
sub rcx, r14
sar rcx, 1
inc ecx
movsxd rax, ecx
lea r8, [rax*2]
add r8, r13
lea rdx, [r14 + rax*2]
nop
movzx eax, word [rdx]
cmp ax, r9w
jne 0x140050edf
test r13, r13
je 0x140050e6d
cmp word [r8], 0
jne 0x140050f00
movsxd rax, ecx
cmp word [r14 + rax*2], 0
lea r15, [r14 + rax*2]
je 0x140050f8d
mov eax, dword [rsi + 8]
cmp dword [rsi + 0xc], eax
jne 0x140050f16
sub eax, 0xffffff80
movsxd rcx, eax
lea rdx, [rcx + rcx*2]
mov rcx, qword [rsi]
shl rdx, 3
call fcn.1400c069c
test rax, rax
jne 0x140050f0f
mov rax, qword [0x140127498]
lea rdx, str.Out_of_memory.
mov qword [rsp + 0x28], rax
lea rcx, [0x140127620]
xor r9d, r9d
mov qword [rsp + 0x20], 0
xor r8d, r8d
call fcn.14000f840
test eax, eax
je 0x140050ab9
jmp 0x140050f19
test ax, ax
je 0x140050e6d
cmp ax, 0x60
jne 0x140050f00
test r13, r13
jne 0x140050f00
cmp word [rdx + 2], r13w
je 0x140050f00
inc ecx
add r8, 2
add rdx, 2
inc ecx
add r8, 2
add rdx, 2
jmp 0x140050e50
sub dword [rsi + 8], 0xffffff80
mov qword [rsi], rax
inc dword [rsi + 0xc]
movsxd rax, dword [rsi + 0xc]
lea rcx, [rax + rax*2]
mov rax, qword [rsi]
mov word [rax + rcx*8 - 8], 0x103
mov byte [rax + rcx*8 - 0x10], 1
lea rdx, [rax + rcx*8]
lea rax, [r12 + 2]
mov qword [rdx - 0x18], rax
mov rax, r15
sub rax, r12
sub rax, 2
sar rax, 1
add r15, 2
mov dword [rdx - 4], eax
mov qword [rsp + 0x48], r15
jmp 0x140050b43
mov rcx, qword [rsp + 0xa0]
lea rdx, str.Unexpected_reserved_word.
mov r8, r12
call fcn.140010a80
jmp 0x140050fc1
mov rcx, qword [rsp + 0xa0]
lea rdx, str.Illegal_character_in_expression.
mov r8, r15
call fcn.140010a80
jmp 0x140050fc1
mov rcx, qword [rsp + 0xa0]
lea rdx, str.Missing_close_quote
mov r8, r12
call fcn.140010a80
jmp 0x140050fc1
mov rbx, qword [rsp + 0xc0]
test rbx, rbx
je 0x140050fbc
sub r12, r14
sar r12, 1
mov dword [rbx], r12d
mov eax, 1
mov rdi, qword [rsp + 0x60]
mov rbp, qword [rsp + 0xb0]
add rsp, 0x68
pop r15
pop r14
pop r13
pop r12
pop rsi
pop rbx
ret