Function at 0x140051eb0
Capabilities:
Parse credit card information

Disassembly:
mov qword [rsp + 0x20], r9
mov qword [rsp + 0x10], rdx
mov qword [rsp + 8], rcx
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x68
mov r15, qword [rsp + 0xc0]
mov rsi, r9
mov r13, r8
mov r14, rdx
mov rdi, rcx
mov r12, rdx
test r15, r15
je 0x140051ef0
movsxd rax, dword [r15]
lea r12, [rdx + rax*2]
movzx eax, word [r12]
mov qword [rsp + 0xb0], rbx
mov qword [rsp + 0x60], rbp
test ax, ax
je 0x1400524a5
movzx ebp, word [rsp + 0xc8]
lea r15, [0x140000000]
nop word [rax + rax]
movzx edx, ax
lea rcx, str.__t_____:________n.
call fcn.1400bf5a4
test rax, rax
je 0x140051fa1
movzx eax, word [r12]
cmp ax, bp
je 0x14005249d
cmp ax, 0x25
je 0x140051fa1
cmp ax, 0x2e
jne 0x140052059
add r12, 2
mov rbx, r12
nop dword [rax]
movzx eax, word [r12]
cmp eax, 0x7f
ja 0x140051f80
mov ecx, eax
call fcn.1400c9250
test eax, eax
jne 0x140051f80
movzx eax, word [r12]
cmp ax, 0x5f
jne 0x140051f86
add r12, 2
jmp 0x140051f60
mov qword [rsp + 0x48], r12
cmp ax, 0x25
jne 0x1400522dc
cmp bp, ax
je 0x1400522dc
mov r12, rbx
movzx r9d, word [r12]
test r9w, r9w
je 0x14005249d
cmp r9w, 0x22
je 0x1400527a1
cmp r9w, 0x27
je 0x1400527a1
sub r9w, 0x30
cmp r9w, 9
ja 0x140052310
lea rdx, [rsp + 0x48]
mov rcx, r12
call fcn.1400a0bf0
cmp word [r12], 0x30
mov r15, qword [rsp + 0x48]
jne 0x140052017
movzx eax, word [r12 + 2]
mov ecx, 0xffdf
sub ax, 0x58
test cx, ax
jne 0x140052017
movzx ecx, word [r12 + 4]
call fcn.1400c93b0
test eax, eax
jne 0x1400522f7
lea rdx, [rsp + 0x50]
mov rcx, r12
call fcn.1400cfe74
mov rdx, qword [rsp + 0x50]
cmp r15, rdx
jae 0x1400522f7
movzx edx, word [rdx]
lea rcx, str.__t_____:________n.
call fcn.1400bf5a4
test rax, rax
je 0x1400522f7
mov r15, qword [rsp + 0x50]
mov qword [rsp + 0x48], r15
jmp 0x14005248d
cmp ax, 0xa
je 0x1400522d1
cmp ax, 0x28
je 0x1400520d5
cmp ax, 0x5b
je 0x1400520ce
cmp ax, 0x7b
jne 0x1400522d8
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, rdi
mov qword [rsp + 0x20], rax
mov r9, rsi
mov r8, r13
mov rdx, r14
call fcn.140051eb0
test eax, eax
je 0x140052400
movsxd rax, dword [rsp + 0x40]
cmp word [r14 + rax*2], 0
lea r12, [r14 + rax*2]
je 0x1400522dc
jmp 0x1400522d8
mov ecx, 0x5d
jmp 0x14005207e
mov r8, r12
mov ebx, 0x29
sub r8, r14
mov edx, ebx
sar r8, 1
mov r9, r13
inc r8d
mov rcx, r14
mov dword [rsp + 0x40], r8d
call fcn.1400a2dc0
movsxd rcx, eax
cmp word [r14 + rcx*2], 0
lea rbp, [r14 + rcx*2]
movzx ecx, bx
je 0x14005208c
lea r8, [rbp + 2]
nop
movzx eax, word [r8]
cmp ax, 0x20
je 0x140052120
cmp ax, 9
jne 0x140052126
add r8, 2
jmp 0x140052110
cmp ax, 0x3d
jne 0x14005208c
cmp word [r8 + 2], 0x3e
jne 0x14005208c
movsxd rax, dword [rsi + 0xc]
test eax, eax
je 0x140052166
lea rcx, [rax + rax*2]
mov rax, qword [rsi]
cmp byte [rax + rcx*8 - 8], 0
jne 0x140052166
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.0x1400521b3.0
cmp r11d, 0x7d
ja case.0x1400521b3.8
movzx ecx, byte [r15 + r11 + 0x52b98]
mov edx, dword [r15 + rcx*4 + 0x52b74]
add rdx, r15
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 0x1400521f0
test r13, r13
je 0x1400522bb
cmp word [r8], 0
je 0x1400522bb
inc eax
add r8, 2
add rdx, 2
jmp 0x1400521c7
test cx, cx
je 0x1400522bb
cmp cx, 0x60
jne 0x140052215
test r13, r13
jne 0x140052215
cmp word [rdx + 2], r13w
je 0x140052215
inc eax
add r8, 2
add rdx, 2
inc eax
add r8, 2
add rdx, 2
jmp 0x1400521c7
cmp word [r14 + r8*2 + 2], 0x3d
je case.0x1400521b3.8
movsxd rcx, eax
mov r9, rbp
movsxd rax, edi
mov r8, r12
mov rdi, qword [rsp + 0xa0]
lea rbx, [r14 + rcx*2]
lea rcx, [rax*2]
add rcx, r13
mov qword [rsp + 0x30], rcx
mov rcx, rdi
mov qword [rsp + 0x28], rbx
mov qword [rsp + 0x20], rsi
mov rsi, qword [rsp + 0xb8]
mov rdx, rsi
call fcn.140052f20
test eax, eax
je 0x140052400
mov r12, rbx
jmp 0x1400522dc
inc eax
cmp word [r14 + r9*2 + 2], 0x3f
je case.0x1400521b3.8
mov edx, 0x3a
mov r8d, eax
jmp 0x1400522b0
mov edx, 0x25
jmp 0x1400522ac
mov edx, ebx
jmp 0x1400522ac
mov edx, 0x5d
jmp 0x1400522ac
mov edx, 0x7d
lea r8d, [rax + 1]
mov r9, r13
mov rcx, r14
call fcn.1400a2dc0
movsxd rcx, eax
cmp word [r14 + rcx*2], 0
je case.0x1400521b3.0
inc eax
jmp 0x140052180
mov word [r12], SafeArrayAllocDescriptor
add r12, 2
movzx eax, word [r12]
movzx ebp, word [rsp + 0xc8]
test ax, ax
je 0x140051fa1
jmp 0x140051f20
movzx edx, word [r15]
lea rcx, str.__t_____:________n.
call fcn.1400bf5a4
test rax, rax
jne 0x14005248d
mov r15, r12
movzx eax, word [r15]
cmp eax, 0x7f
ja 0x140052331
mov ecx, eax
call fcn.1400c9250
test eax, eax
jne 0x140052331
movzx eax, word [r15]
cmp ax, 0x5f
jne 0x140052337
add r15, 2
jmp 0x140052313
mov r14, r15
mov qword [rsp + 0x48], r15
sub r14, r12
sar r14, 1
cmp ax, 0x25
jne 0x140052407
cmp bp, ax
je 0x140052407
mov rdi, qword [rsp + 0xa8]
mov rax, r12
mov rcx, qword [rsp + 0xa0]
sub rax, rdi
sar rax, 1
mov r9, rsi
mov dword [rsp + 0x40], eax
mov r8, r13
lea rax, [rsp + 0x40]
mov rdx, rdi
mov qword [rsp + 0x20], rax
mov bl, 1
call fcn.140052cc0
test eax, eax
je 0x140052400
movsxd rax, dword [rsp + 0x40]
lea r15, [rdi + rax*2]
mov qword [rsp + 0x48], r15
mov eax, dword [rsi + 8]
cmp dword [rsi + 0xc], eax
jne 0x140052665
sub eax, 0xffffff80
movsxd rcx, eax
lea rdx, [rcx + rcx*2]
mov rcx, qword [rsi]
shl rdx, 3
call fcn.1400c46b4
test rax, rax
jne 0x14005265e
mov rax, qword [0x14012c4e8]
lea rdx, str.Out_of_memory.
mov qword [rsp + 0x28], rax
lea rcx, [0x14012c670]
xor ebp, ebp
xor r9d, r9d
xor r8d, r8d
mov qword [rsp + 0x20], rbp
call fcn.14000f460
test eax, eax
jne 0x14005266a
xor eax, eax
jmp 0x1400524b8
xor bl, bl
test r14, r14
je 0x1400529ab
mov rcx, r15
cmp ax, 0x20
je 0x140052421
cmp ax, 9
jne 0x14005242b
movzx eax, word [rcx + 2]
add rcx, 2
jmp 0x140052415
cmp ax, 0x3a
jne 0x1400524d4
cmp word [rcx + 2], 0x3d
je 0x1400523a1
mov rdi, qword [rsp + 0xa8]
lea rax, [r12 - 2]
cmp rax, rdi
jbe 0x14005246a
movzx ecx, word [rax]
cmp cx, 0x20
je 0x140052461
cmp cx, 9
jne 0x14005246a
sub rax, 2
cmp rax, rdi
ja 0x140052452
movzx ecx, word [rax]
cmp cx, 0x2c
je 0x14005247d
cmp cx, 0x7b
jne 0x1400523a1
mov r14, qword [rsp + 0xa8]
mov rdi, qword [rsp + 0xa0]
movzx eax, word [r15]
mov r12, r15
test ax, ax
jne 0x140051f0b
mov r15, qword [rsp + 0xc0]
test r15, r15
je 0x1400524b3
sub r12, r14
sar r12, 1
mov dword [r15], r12d
mov eax, 1
mov rbp, qword [rsp + 0x60]
mov rbx, qword [rsp + 0xb0]
add rsp, 0x68
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
ret
cmp ax, 0x3d
jne 0x1400523a1
cmp word [rcx + 2], 0x3e
jne 0x1400523a1
mov r14, qword [rsp + 0xa8]
lea rsi, [rcx + 4]
mov rdi, rsi
lea rbx, [0x140000000]
sub rdi, r14
mov ebp, 0x29
sar rdi, 1
mov r8d, edi
nop dword [rax]
movsxd rdx, r8d
movsxd r9, r8d
movzx r11d, word [r14 + rdx*2]
test r11w, r11w
je case.0x140052542.0
cmp r11d, 0x7d
ja case.0x140052542.8
movzx eax, byte [rbx + r11 + 0x52c3c]
mov ecx, dword [rbx + rax*4 + 0x52c18]
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 0x140052579
test r13, r13
je 0x14005256b
cmp word [rdx], 0
jne 0x14005259b
movsxd rax, r8d
cmp word [r14 + rax*2], 0
jmp 0x140052650
test ax, ax
je 0x14005256b
cmp ax, 0x60
jne 0x14005259b
test r13, r13
jne 0x14005259b
cmp word [rcx + 2], r13w
je 0x14005259b
inc r8d
add rdx, 2
add rcx, 2
inc r8d
add rdx, 2
add rcx, 2
jmp 0x140052557
cmp word [r14 + rdx*2 + 2], 0x3d
je case.0x140052542.8
movsxd rax, r8d
mov r9, r15
mov r8, r12
lea rbx, [r14 + rax*2]
movsxd rax, edi
mov rdi, qword [rsp + 0xa0]
lea rcx, [rax*2]
add rcx, r13
mov qword [rsp + 0x30], rcx
mov rcx, rdi
mov qword [rsp + 0x28], rbx
mov qword [rsp + 0x20], rsi
mov rsi, qword [rsp + 0xb8]
mov rdx, rsi
call fcn.140052f20
test eax, eax
je 0x140052400
mov r15, rbx
mov qword [rsp + 0x48], rbx
jmp 0x14005248d
inc r8d
cmp word [r14 + r9*2 + 2], 0x3f
je case.0x140052542.8
mov edx, 0x3a
jmp 0x14005263c
mov edx, 0x25
jmp 0x140052639
mov edx, ebp
jmp 0x140052639
mov edx, 0x5d
jmp 0x140052639
mov edx, 0x7d
inc r8d
mov r9, r13
mov rcx, r14
call fcn.1400a2dc0
movsxd r8, eax
cmp word [r14 + r8*2], 0
je case.0x140052542.0
inc r8d
jmp 0x140052510
sub dword [rsi + 8], 0xffffff80
mov qword [rsi], rax
inc dword [rsi + 0xc]
xor ebp, ebp
movsxd rax, dword [rsi + 0xc]
lea rcx, [rax + rax*2]
mov rax, qword [rsi]
lea rdi, [rax + rcx*8]
test bl, bl
je 0x1400526a6
mov r14, qword [rsp + 0xa8]
mov qword [rdi - 0x18], r15
mov dword [rdi - 4], ebp
cmp r12, r14
jbe 0x14005269c
cmp word [r12 - 2], 0x2e
mov al, 6
je 0x14005269e
mov al, 1
mov byte [rdi - 8], al
jmp 0x140052485
cmp r14, 9
jae 0x1400526f3
mov esi, ebp
lea rbx, [0x140128cf0]
nop word [rax + rax]
mov rcx, qword [rbx]
mov r8, r14
mov rdx, r12
call fcn.1400c4708
test eax, eax
jne 0x1400526dd
mov rax, qword [rbx]
cmp word [rax + r14*2], 0
je 0x140052751
inc esi
inc rbp
add rbx, 0x10
cmp esi, 0xa
jb 0x1400526c0
mov rsi, qword [rsp + 0xb8]
cmp r14, 4
jne 0x14005270f
mov r8, r14
lea rdx, str.True
mov rcx, r12
call fcn.1400c4708
test eax, eax
je 0x14005272b
cmp r14, 5
jne 0x140052788
mov r8, r14
lea rdx, str.False
mov rcx, r12
call fcn.1400c4708
test eax, eax
jne 0x140052788
mov qword [rdi - 0x18], r12
mov dword [rdi - 4], r14d
mov byte [rdi - 8], 5
movzx ecx, word [r12]
call fcn.1400d07e8
xor ecx, ecx
cmp eax, 0x54
sete cl
mov dword [rdi - 0x10], ecx
jmp 0x14005247d
add rbp, rbp
lea rcx, [0x140128cf0]
mov eax, dword [rcx + rbp*8 + 8]
test eax, eax
je 0x1400526eb
cmp eax, 0x47
jge 0x1400528cb
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 0x14005247d
mov qword [rdi - 0x18], r12
mov dword [rdi - 4], r14d
mov byte [rdi - 8], 0
mov qword [rdi - 0x10], 0
jmp 0x14005247d
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 0x14005284f
test r13, r13
je 0x1400527dd
cmp word [r8], 0
jne 0x140052870
movsxd rax, ecx
cmp word [r14 + rax*2], 0
lea r15, [r14 + rax*2]
je 0x140052a8d
mov eax, dword [rsi + 8]
cmp dword [rsi + 0xc], eax
jne 0x140052886
sub eax, 0xffffff80
movsxd rcx, eax
lea rdx, [rcx + rcx*2]
mov rcx, qword [rsi]
shl rdx, 3
call fcn.1400c46b4
test rax, rax
jne 0x14005287f
mov rax, qword [0x14012c4e8]
lea rdx, str.Out_of_memory.
mov qword [rsp + 0x28], rax
lea rcx, [0x14012c670]
xor r9d, r9d
mov qword [rsp + 0x20], 0
xor r8d, r8d
call fcn.14000f460
test eax, eax
je 0x140052400
jmp 0x140052889
test ax, ax
je 0x1400527dd
cmp ax, 0x60
jne 0x140052870
test r13, r13
jne 0x140052870
cmp word [rdx + 2], r13w
je 0x140052870
inc ecx
add r8, 2
add rdx, 2
inc ecx
add r8, 2
add rdx, 2
jmp 0x1400527c0
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 0x14005248d
mov rcx, qword [rsp + 0xa0]
movzx eax, byte [0x14012ce0c]
mov r9, qword [rcx + 0x6b8]
test r9, r9
je 0x14005294f
test al, al
je 0x14005294f
mov rax, qword [0x1401241d8]
cmp dword [rax + 0x60], 0
jne 0x14005292e
cmp dword [rcx + 0x718], 0
jne 0x14005292e
cmp byte [0x140126ada], 0
jne 0x14005292e
xor ebx, ebx
lea rdx, str.Unexpected_reserved_word.
mov qword [rsp + 0x28], rbx
xor r8d, r8d
mov qword [rsp + 0x20], r9
mov r9, r12
call fcn.140010320
mov ebx, eax
jmp 0x1400524b8
xor ebx, ebx
lea rdx, str.Unexpected_reserved_word.
mov qword [rsp + 0x28], rbx
mov r8, r12
mov dword [rsp + 0x20], ebx
call fcn.14000ef70
mov ebx, eax
jmp 0x1400524b8
cmp byte [0x14012ce0f], 0
je 0x140052986
test al, al
jne 0x140052986
mov eax, dword [rcx + 0x2dc]
lea rdx, str.Unexpected_reserved_word.
movzx r9d, word [rcx + 0x2d8]
mov r8, r12
mov dword [rsp + 0x20], eax
call fcn.14000f310
xor ebx, ebx
mov eax, ebx
jmp 0x1400524b8
xor ebx, ebx
lea rdx, str.Unexpected_reserved_word.
mov qword [rsp + 0x28], rbx
mov r9, r12
xor r8d, r8d
mov qword [rsp + 0x20], rbx
call fcn.140010320
mov eax, ebx
jmp 0x1400524b8
mov r9, qword [rdi + 0x6b8]
movzx eax, byte [0x14012ce0c]
test r9, r9
je 0x140052a2c
test al, al
je 0x140052a2c
mov rax, qword [0x1401241d8]
cmp dword [rax + 0x60], 0
jne 0x140052a08
cmp dword [rdi + 0x718], 0
jne 0x140052a08
cmp byte [0x140126ada], bl
jne 0x140052a08
xor ebx, ebx
lea rdx, str.Illegal_character_in_expression.
mov qword [rsp + 0x28], rbx
xor r8d, r8d
mov qword [rsp + 0x20], r9
mov rcx, rdi
mov r9, r15
call fcn.140010320
mov ebx, eax
jmp 0x1400524b8
xor ebx, ebx
lea rdx, str.Illegal_character_in_expression.
mov qword [rsp + 0x28], rbx
mov r8, r15
mov rcx, rdi
mov dword [rsp + 0x20], ebx
call fcn.14000ef70
mov ebx, eax
jmp 0x1400524b8
cmp byte [0x14012ce0f], bl
je 0x140052a65
test al, al
jne 0x140052a65
mov eax, dword [rdi + 0x2dc]
lea rdx, str.Illegal_character_in_expression.
movzx r9d, word [rdi + 0x2d8]
mov r8, r15
mov rcx, rdi
mov dword [rsp + 0x20], eax
call fcn.14000f310
xor ebx, ebx
mov eax, ebx
jmp 0x1400524b8
xor ebx, ebx
lea rdx, str.Illegal_character_in_expression.
mov qword [rsp + 0x28], rbx
mov r9, r15
xor r8d, r8d
mov qword [rsp + 0x20], rbx
mov rcx, rdi
call fcn.140010320
mov eax, ebx
jmp 0x1400524b8
mov r9, qword [rdi + 0x6b8]
movzx eax, byte [0x14012ce0c]
test r9, r9
je 0x140052b0f
test al, al
je 0x140052b0f
mov rax, qword [0x1401241d8]
cmp dword [rax + 0x60], 0
jne 0x140052aeb
cmp dword [rdi + 0x718], 0
jne 0x140052aeb
cmp byte [0x140126ada], 0
jne 0x140052aeb
xor ebx, ebx
lea rdx, str.Missing_close_quote
mov qword [rsp + 0x28], rbx
xor r8d, r8d
mov qword [rsp + 0x20], r9
mov rcx, rdi
mov r9, r12
call fcn.140010320
mov ebx, eax
jmp 0x1400524b8
xor ebx, ebx
lea rdx, str.Missing_close_quote
mov qword [rsp + 0x28], rbx
mov r8, r12
mov rcx, rdi
mov dword [rsp + 0x20], ebx
call fcn.14000ef70
mov ebx, eax
jmp 0x1400524b8
cmp byte [0x14012ce0f], 0
je 0x140052b49
test al, al
jne 0x140052b49
mov eax, dword [rdi + 0x2dc]
lea rdx, str.Missing_close_quote
movzx r9d, word [rdi + 0x2d8]
mov r8, r12
mov rcx, rdi
mov dword [rsp + 0x20], eax
call fcn.14000f310
xor ebx, ebx
mov eax, ebx
jmp 0x1400524b8
xor ebx, ebx
lea rdx, str.Missing_close_quote
mov qword [rsp + 0x28], rbx
mov r9, r12
xor r8d, r8d
mov qword [rsp + 0x20], rbx
mov rcx, rdi
call fcn.140010320
mov eax, ebx
jmp 0x1400524b8