Function at 0x409180
Capabilities:
Parse credit card information

Disassembly:
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x38
cmp cx, 0xffff
mov ebx, ecx
mov edi, edx
je 0x409cd0
xor esi, esi
test ch, 0x10
jne 0x409770
test bh, 0x40
jne 0x409730
test bx, bx
js 0x4097e0
test bh, 0x20
je 0x4091f5
test edi, edi
jne 0x409820
mov edx, 9
mov rcx, rsi
call fcn.00407e70
mov rdx, qword [0x004242b0]
mov rsi, rax
mov rax, qword [rax]
lea rax, [rsi + rax + 0x10]
mov qword [rax], rdx
movzx edx, word [0x004242b8]
mov word [rax + 8], dx
add qword [rsi], 9
mov ecx, ebx
and cx, 0xfff
cmp cx, 0x16
je 0x409f78
jbe 0x4094f0
cmp cx, 0x25
je 0x409f64
jbe 0x409600
cmp cx, 0x44
je 0x40a060
ja 0x409450
cmp cx, 0x41
je 0x409f50
jbe 0x4094c0
cmp cx, 0x42
je 0x409d50
cmp cx, 0x43
jne 0x40a140
lea rcx, [0x00423dc0]
call fcn.00404b30
mov rdi, rax
nop
test rdi, rdi
je 0x409cb0
lea rbx, [rdi + 0x10]
mov rdx, qword [rdi]
mov rcx, rsi
call fcn.00407e70
mov r8, qword [rdi]
mov rdx, qword [rax]
test r8, r8
lea rcx, [rax + rdx + 0x10]
js 0x409436
lea rdx, [rax + rdx + 0x20]
cmp rbx, rdx
lea rdx, [rbx + 0x10]
setae r9b
cmp rcx, rdx
setae dl
or r9b, dl
je 0x409c80
cmp r8, 0xe
jbe 0x409c80
lea r10, [r8 + 1]
xor edx, edx
mov r9, r10
and r9, 0xfffffffffffffff0
nop dword [rax]
nop word cs:[rax + rax]
movdqu xmm1, xmmword [rbx + rdx]
movups xmmword [rcx + rdx], xmm1
add rdx, 0x10
cmp rdx, r9
jne 0x4092d0
mov rdx, r10
and rdx, 0xfffffffffffffff0
cmp rdx, r10
je 0x409430
movzx r9d, byte [rbx + rdx]
cmp r8, rdx
mov byte [rcx + rdx], r9b
lea r9, [rdx + 1]
jle 0x409430
movzx r10d, byte [rbx + rdx + 1]
cmp r8, r9
mov byte [rcx + rdx + 1], r10b
lea r10, [rdx + 2]
jle 0x409430
movzx r9d, byte [rbx + rdx + 2]
cmp r10, r8
mov byte [rcx + rdx + 2], r9b
lea r9, [rdx + 3]
jge 0x409430
movzx r10d, byte [rbx + rdx + 3]
cmp r8, r9
mov byte [rcx + rdx + 3], r10b
lea r10, [rdx + 4]
jle 0x409430
movzx r9d, byte [rbx + rdx + 4]
cmp r8, r10
mov byte [rcx + rdx + 4], r9b
lea r9, [rdx + 5]
jle 0x409430
movzx r10d, byte [rbx + rdx + 5]
cmp r8, r9
mov byte [rcx + rdx + 5], r10b
lea r10, [rdx + 6]
jle 0x409430
movzx r9d, byte [rbx + rdx + 6]
cmp r10, r8
mov byte [rcx + rdx + 6], r9b
lea r9, [rdx + 7]
jge 0x409430
movzx r10d, byte [rbx + rdx + 7]
cmp r8, r9
mov byte [rcx + rdx + 7], r10b
lea r10, [rdx + 8]
jle 0x409430
movzx r9d, byte [rbx + rdx + 8]
cmp r8, r10
mov byte [rcx + rdx + 8], r9b
lea r9, [rdx + 9]
jle 0x409430
movzx r10d, byte [rbx + rdx + 9]
cmp r8, r9
mov byte [rcx + rdx + 9], r10b
lea r10, [rdx + 0xa]
jle 0x409430
movzx r9d, byte [rbx + rdx + 0xa]
cmp r8, r10
mov byte [rcx + rdx + 0xa], r9b
lea r9, [rdx + 0xb]
jle 0x409430
movzx r10d, byte [rbx + rdx + 0xb]
cmp r8, r9
mov byte [rcx + rdx + 0xb], r10b
lea r10, [rdx + 0xc]
jle 0x409430
movzx r9d, byte [rbx + rdx + 0xc]
cmp r8, r10
mov byte [rcx + rdx + 0xc], r9b
lea r9, [rdx + 0xd]
jle 0x409430
movzx r10d, byte [rbx + rdx + 0xd]
cmp r8, r9
mov byte [rcx + rdx + 0xd], r10b
jle 0x409430
movzx r8d, byte [rbx + rdx + 0xe]
mov byte [rcx + rdx + 0xe], r8b
nop
mov rdx, qword [rax]
mov r8, qword [rdi]
add r8, rdx
mov qword [rax], r8
add rsp, 0x38
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
ret
cmp cx, 0x47
je 0x40a040
jbe 0x409490
cmp cx, 0x48
je 0x409d90
cmp cx, 0xfff
jne 0x40a140
lea rcx, [0x00423cc0]
call fcn.00404b30
mov rdi, rax
jmp 0x409260
cmp cx, 0x45
je 0x409d70
cmp cx, 0x46
jne 0x40a140
lea rcx, [0x00423d20]
call fcn.00404b30
mov rdi, rax
jmp 0x409260
cmp cx, 0x26
je 0x409d30
cmp cx, 0x40
jne 0x40a140
lea rcx, [0x00423e20]
call fcn.00404b30
mov rdi, rax
jmp 0x409260
cmp cx, 0xa
je 0x409fe4
ja 0x409550
cmp cx, 4
je 0x409fd0
jbe 0x4096b0
cmp cx, 7
je 0x409fb0
jbe 0x4095d0
cmp cx, 8
je 0x409e10
cmp cx, 9
jne 0x40a140
lea rcx, [0x00424140]
call fcn.00404b30
mov rdi, rax
jmp 0x409260
cmp cx, 0x10
je 0x40a160
jbe 0x4096f0
cmp cx, 0x13
je 0x40a100
jbe 0x4095a0
cmp cx, 0x14
je 0x409e50
cmp cx, 0x15
jne 0x40a140
lea rcx, [0x00423fe0]
call fcn.00404b30
mov rdi, rax
jmp 0x409260
cmp cx, 0x11
je 0x409e30
cmp cx, 0x12
jne 0x40a140
lea rcx, [0x00424040]
call fcn.00404b30
mov rdi, rax
jmp 0x409260
cmp cx, 5
je 0x409df0
cmp cx, 6
jne 0x40a140
lea rcx, [0x004241a0]
call fcn.00404b30
mov rdi, rax
jmp 0x409260
cmp cx, 0x1b
je 0x40a020
jbe 0x409670
cmp cx, 0x1e
je 0x40a000
jbe 0x409640
cmp cx, 0x1f
je 0x409dd0
cmp cx, 0x24
jne 0x40a140
lea rcx, [0x00423e80]
call fcn.00404b30
mov rdi, rax
jmp 0x409260
cmp cx, 0x1c
je 0x409db0
cmp cx, 0x1d
jne 0x40a140
lea rcx, [0x00423ee0]
call fcn.00404b30
mov rdi, rax
jmp 0x409260
cmp cx, 0x18
je 0x409f90
jb 0x40a120
cmp cx, 0x19
je 0x409ea0
cmp cx, 0x1a
jne 0x40a140
lea rcx, [0x00423f40]
call fcn.00404b30
mov rdi, rax
jmp 0x409260
cmp cx, 1
je 0x40a0e0
test cx, cx
je 0x40a0c0
cmp cx, 2
je 0x409ee0
cmp cx, 3
jne 0x40a140
lea rcx, [0x00424200]
call fcn.00404b30
mov rdi, rax
jmp 0x409260
cmp cx, 0xc
je 0x40a0a0
jb 0x40a080
cmp cx, 0xd
je 0x409ec0
cmp cx, 0xe
jne 0x40a140
lea rcx, [0x004240a0]
call fcn.00404b30
mov rdi, rax
jmp 0x409260
mov edx, 9
mov rcx, rsi
call fcn.00407e70
mov rdx, qword [0x004242f0]
mov rsi, rax
mov rax, qword [rax]
lea rax, [rsi + rax + 0x10]
mov qword [rax], rdx
movzx edx, word [0x004242f8]
mov word [rax + 8], dx
add qword [rsi], 9
test bx, bx
jns 0x4091b7
jmp 0x4097e0
lea rcx, [0x00422160]
call fcn.004176a0
mov edx, 0x2b
mov rcx, rax
call fcn.004043a0
mov rcx, qword [0x00424310]
movdqa xmm0, xmmword [0x00427e90]
mov qword [rax + 8], 1
lea rdx, [rax + 0x20]
lea rsi, [rax + 0x10]
movups xmmword [rax + 0x10], xmm0
mov qword [rax + 0x20], rcx
movzx eax, word [0x00424318]
mov word [rdx + 8], ax
movzx eax, byte [0x0042431a]
mov byte [rdx + 0xa], al
add qword [rsi], 0xa
test bh, 0x40
je 0x4091ae
jmp 0x409730
mov edx, 0xc
mov rcx, rsi
call fcn.00407e70
mov rdx, qword [0x004242d0]
mov rsi, rax
mov rax, qword [rax]
lea rax, [rsi + rax + 0x10]
mov qword [rax], rdx
mov edx, dword [0x004242d8]
mov dword [rax + 8], edx
movzx edx, byte [0x004242dc]
mov byte [rax + 0xc], dl
add qword [rsi], 0xc
jmp 0x4091b7
lea rcx, [rsp + 0x28]
mov edx, 1
mov qword [rsp + 0x28], 0
call fcn.00408850
mov rdi, qword [rsp + 0x28]
test rdi, rdi
je 0x409c70
mov rax, qword [rdi]
lea rbp, [rax + 0xc]
mov eax, 7
cmp rbp, 7
cmovl rbp, rax
lea r12, [rbp + 0x21]
lea rcx, [0x00422160]
call fcn.004176a0
mov rdx, r12
mov rcx, rax
call fcn.004043a0
test rdi, rdi
lea r13, [rax + 0x10]
mov qword [rax + 8], 1
mov r12, rax
mov qword [r13 + 8], rbp
lea rbp, [rax + 0x20]
mov rax, qword [0x00424290]
lea rcx, [r12 + 0x29]
mov qword [r12 + 0x20], rax
movzx eax, word [0x00424298]
mov word [rbp + 8], ax
mov qword [r12 + 0x10], 9
je 0x409a75
mov rdx, qword [rdi]
lea rax, [rdi + 0x10]
test rdx, rdx
js 0x409f38
lea r8, [r12 + 0x39]
cmp rax, r8
lea rax, [rdi + 0x20]
setae r8b
cmp rcx, rax
setae al
or r8b, al
je 0x409f15
cmp rdx, 0xe
jbe 0x409f15
lea r9, [rdx + 1]
xor eax, eax
mov r8, r9
and r8, 0xfffffffffffffff0
movdqu xmm3, xmmword [rdi + rax + 0x10]
movups xmmword [rcx + rax], xmm3
add rax, 0x10
cmp rax, r8
jne 0x409900
mov rax, r9
and rax, 0xfffffffffffffff0
cmp rax, r9
je 0x409a60
movzx ecx, byte [rdi + rax + 0x10]
cmp rdx, rax
mov byte [r12 + rax + 0x29], cl
lea rcx, [rax + 1]
jle 0x409a60
movzx r8d, byte [rdi + rax + 0x11]
cmp rdx, rcx
mov byte [r12 + rax + 0x2a], r8b
lea r8, [rax + 2]
jle 0x409a60
movzx ecx, byte [rdi + rax + 0x12]
cmp rdx, r8
mov byte [r12 + rax + 0x2b], cl
lea rcx, [rax + 3]
jle 0x409a60
movzx r8d, byte [rdi + rax + 0x13]
cmp rdx, rcx
mov byte [r12 + rax + 0x2c], r8b
lea r8, [rax + 4]
jle 0x409a60
movzx ecx, byte [rdi + rax + 0x14]
cmp rdx, r8
mov byte [r12 + rax + 0x2d], cl
lea rcx, [rax + 5]
jle 0x409a60
movzx r8d, byte [rdi + rax + 0x15]
cmp rdx, rcx
mov byte [r12 + rax + 0x2e], r8b
lea r8, [rax + 6]
jle 0x409a60
movzx ecx, byte [rdi + rax + 0x16]
cmp rdx, r8
mov byte [r12 + rax + 0x2f], cl
lea rcx, [rax + 7]
jle 0x409a60
movzx r8d, byte [rdi + rax + 0x17]
cmp rdx, rcx
mov byte [r12 + rax + 0x30], r8b
lea r8, [rax + 8]
jle 0x409a60
movzx ecx, byte [rdi + rax + 0x18]
cmp rdx, r8
mov byte [r12 + rax + 0x31], cl
lea rcx, [rax + 9]
jle 0x409a60
movzx r8d, byte [rdi + rax + 0x19]
cmp rdx, rcx
mov byte [r12 + rax + 0x32], r8b
lea r8, [rax + 0xa]
jle 0x409a60
movzx ecx, byte [rdi + rax + 0x1a]
cmp rdx, r8
mov byte [r12 + rax + 0x33], cl
lea rcx, [rax + 0xb]
jle 0x409a60
movzx r8d, byte [rdi + rax + 0x1b]
cmp rdx, rcx
mov byte [r12 + rax + 0x34], r8b
lea r8, [rax + 0xc]
jle 0x409a60
movzx ecx, byte [rdi + rax + 0x1c]
cmp rdx, r8
mov byte [r12 + rax + 0x35], cl
lea rcx, [rax + 0xd]
jle 0x409a60
movzx r8d, byte [rdi + rax + 0x1d]
mov byte [r12 + rax + 0x36], r8b
add rax, 0xe
cmp rdx, rcx
jle 0x409a60
movzx edx, byte [rdi + rax + 0x10]
mov byte [r12 + rax + 0x29], dl
nop
mov rax, qword [r12 + 0x10]
mov rdx, qword [rdi]
add rdx, rax
mov qword [r12 + 0x10], rdx
lea rcx, [r13 + rdx + 0x10]
mov dword [rcx], 0x7c2944
mov rax, qword [r12 + 0x10]
mov rcx, rsi
lea rdx, [rax + 3]
mov qword [r12 + 0x10], rdx
call fcn.00407e70
mov rdx, qword [r12 + 0x10]
mov rsi, rax
mov rax, qword [rax]
test rdx, rdx
lea rcx, [rsi + rax + 0x10]
js 0x409c58
lea r8, [rsi + rax + 0x20]
lea rax, [r13 + 0x10]
cmp r8, rax
setbe r8b
add r13, 0x20
cmp rcx, r13
setae al
or r8b, al
je 0x409ef4
cmp rdx, 0xe
jbe 0x409ef4
lea r10, [rdx + 1]
mov r9, rcx
mov rax, rbp
mov r8, r10
sub r9, r12
and r8, 0xfffffffffffffff0
add r8, rbp
nop
movdqu xmm2, xmmword [rax]
movups xmmword [r9 + rax - 0x20], xmm2
add rax, 0x10
cmp rax, r8
jne 0x409af0
mov rax, r10
and rax, 0xfffffffffffffff0
cmp rax, r10
je 0x409c50
movzx r8d, byte [r12 + rax + 0x20]
cmp rax, rdx
mov byte [rcx + rax], r8b
lea r8, [rax + 1]
jge 0x409c50
movzx r9d, byte [r12 + rax + 0x21]
cmp rdx, r8
mov byte [rcx + rax + 1], r9b
lea r9, [rax + 2]
jle 0x409c50
movzx r8d, byte [r12 + rax + 0x22]
cmp rdx, r9
mov byte [rcx + rax + 2], r8b
lea r8, [rax + 3]
jle 0x409c50
movzx r9d, byte [r12 + rax + 0x23]
cmp rdx, r8
mov byte [rcx + rax + 3], r9b
lea r9, [rax + 4]
jle 0x409c50
movzx r8d, byte [r12 + rax + 0x24]
cmp rdx, r9
mov byte [rcx + rax + 4], r8b
lea r8, [rax + 5]
jle 0x409c50
movzx r9d, byte [r12 + rax + 0x25]
cmp rdx, r8
mov byte [rcx + rax + 5], r9b
lea r9, [rax + 6]
jle 0x409c50
movzx r8d, byte [r12 + rax + 0x26]
cmp rdx, r9
mov byte [rcx + rax + 6], r8b
lea r8, [rax + 7]
jle 0x409c50
movzx r9d, byte [r12 + rax + 0x27]
cmp rdx, r8
mov byte [rcx + rax + 7], r9b
lea r9, [rax + 8]
jle 0x409c50
movzx r8d, byte [r12 + rax + 0x28]
cmp rdx, r9
mov byte [rcx + rax + 8], r8b
lea r8, [rax + 9]
jle 0x409c50
movzx r9d, byte [r12 + rax + 0x29]
cmp rdx, r8
mov byte [rcx + rax + 9], r9b
lea r9, [rax + 0xa]
jle 0x409c50
movzx r8d, byte [r12 + rax + 0x2a]
cmp rdx, r9
mov byte [rcx + rax + 0xa], r8b
lea r8, [rax + 0xb]
jle 0x409c50
movzx r9d, byte [r12 + rax + 0x2b]
cmp rdx, r8
mov byte [rcx + rax + 0xb], r9b
lea r9, [rax + 0xc]
jle 0x409c50
movzx r8d, byte [r12 + rax + 0x2c]
cmp rdx, r9
mov byte [rcx + rax + 0xc], r8b
lea r8, [rax + 0xd]
jle 0x409c50
movzx r9d, byte [r12 + rax + 0x2d]
cmp rdx, r8
mov byte [rcx + rax + 0xd], r9b
jle 0x409c50
movzx edx, byte [r12 + rax + 0x2e]
mov byte [rcx + rax + 0xe], dl
mov rax, qword [rsi]
mov rdx, qword [r12 + 0x10]
add rdx, rax
mov qword [rsi], rdx
jmp 0x4091f5
mov r12d, 0x2d
mov ebp, 0xc
jmp 0x40985e
add r8, 1
xor edx, edx
nop word cs:[rax + rax]
movzx r9d, byte [rbx + rdx]
mov byte [rcx + rdx], r9b
add rdx, 1
cmp rdx, r8
jne 0x409c90
mov rdx, qword [rax]
mov r8, qword [rdi]
jmp 0x409436
xor edx, edx
mov rcx, rsi
call fcn.00407e70
add rsp, 0x38
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
ret
lea rcx, [0x00422160]
call fcn.004176a0
mov edx, 0x2b
mov rcx, rax
call fcn.004043a0
mov r8, qword [0x00424330]
movdqa xmm0, xmmword [0x00427e80]
mov rdx, rax
mov qword [rax + 8], 1
lea rcx, [rdx + 0x20]
movups xmmword [rdx + 0x10], xmm0
lea rax, [rax + 0x10]
mov qword [rdx + 0x20], r8
movzx edx, word [0x00424338]
mov word [rcx + 8], dx
movzx edx, byte [0x0042433a]
mov byte [rcx + 0xa], dl
jmp 0x40943c
lea rcx, [0x00423e40]
call fcn.00404b30
mov rdi, rax
jmp 0x409260
lea rcx, [0x00423de0]
call fcn.00404b30
mov rdi, rax
jmp 0x409260
lea rcx, [0x00423d40]
call fcn.00404b30
mov rdi, rax
jmp 0x409260
lea rcx, [0x00423ce0]
call fcn.00404b30
mov rdi, rax
jmp 0x409260
lea rcx, [0x00423f00]
call fcn.00404b30
mov rdi, rax
jmp 0x409260
lea rcx, [0x00423ea0]
call fcn.00404b30
mov rdi, rax
jmp 0x409260
lea rcx, [0x004241c0]
call fcn.00404b30
mov rdi, rax
jmp 0x409260
lea rcx, [0x00424160]
call fcn.00404b30
mov rdi, rax
jmp 0x409260
lea rcx, [0x00424060]
call fcn.00404b30
mov rdi, rax
jmp 0x409260
lea rcx, [0x00422160]
call fcn.004176a0
mov edx, 0x28
mov rcx, rax
call fcn.004043a0
mov edx, dword [0x00424010]
movdqa xmm0, xmmword [0x00427ea0]
mov qword [rax + 8], 1
lea rbx, [rax + 0x20]
lea rdi, [rax + 0x10]
movups xmmword [rax + 0x10], xmm0
mov dword [rax + 0x20], edx
movzx eax, word [0x00424014]
mov word [rbx + 4], ax
jmp 0x40926d
lea rcx, [0x00423f60]
call fcn.00404b30
mov rdi, rax
jmp 0x409260
lea rcx, [0x004240c0]
call fcn.00404b30
mov rdi, rax
jmp 0x409260
lea rcx, [0x00424220]
call fcn.00404b30
mov rdi, rax
jmp 0x409260
lea r8, [r12 + rdx + 0x21]
mov rax, rbp
sub rcx, r12
nop
movzx edx, byte [rax]
mov byte [rcx + rax - 0x20], dl
add rax, 1
cmp rax, r8
jne 0x409f00
jmp 0x409c50
add rdx, 1
xor eax, eax
nop dword [rax + rax]
movzx r8d, byte [rdi + rax + 0x10]
mov byte [rcx + rax], r8b
add rax, 1
cmp rax, rdx
jne 0x409f20
jmp 0x409a60
mov eax, 9
jmp 0x409a68
lea rcx, [0x00423e00]
call fcn.00404b30
mov rdi, rax
jmp 0x409260
lea rcx, [0x00423e60]
call fcn.00404b30
mov rdi, rax
jmp 0x409260
lea rcx, [0x00423fc0]
call fcn.00404b30
mov rdi, rax
jmp 0x409260
lea rcx, [0x00423f80]
call fcn.00404b30
mov rdi, rax
jmp 0x409260
lea rcx, [0x00424180]
call fcn.00404b30
mov rdi, rax
jmp 0x409260
lea rcx, [0x004241e0]
call fcn.00404b30
mov rdi, rax
jmp 0x409260
lea rcx, [0x00424120]
call fcn.00404b30
mov rdi, rax
jmp 0x409260
lea rcx, [0x00423ec0]
call fcn.00404b30
mov rdi, rax
jmp 0x409260
lea rcx, [0x00423f20]
call fcn.00404b30
mov rdi, rax
jmp 0x409260
lea rcx, [0x00423d00]
call fcn.00404b30
mov rdi, rax
jmp 0x409260
lea rcx, [0x00423d80]
call fcn.00404b30
mov rdi, rax
jmp 0x409260
lea rcx, [0x00424100]
call fcn.00404b30
mov rdi, rax
jmp 0x409260
lea rcx, [0x004240e0]
call fcn.00404b30
mov rdi, rax
jmp 0x409260
lea rcx, [0x00424260]
call fcn.00404b30
mov rdi, rax
jmp 0x409260
lea rcx, [0x00424240]
call fcn.00404b30
mov rdi, rax
jmp 0x409260
lea rcx, [0x00424020]
call fcn.00404b30
mov rdi, rax
jmp 0x409260
lea rcx, [0x00423fa0]
call fcn.00404b30
mov rdi, rax
jmp 0x409260
lea rcx, [0x00424320]
call fcn.00404b30
mov rdi, rax
jmp 0x409260
lea rcx, [0x00422160]
call fcn.004176a0
mov edx, 0x28
mov rcx, rax
call fcn.004043a0
mov edx, dword [0x00424090]
movdqa xmm0, xmmword [0x00427ea0]
mov qword [rax + 8], 1
lea rbx, [rax + 0x20]
lea rdi, [rax + 0x10]
movups xmmword [rax + 0x10], xmm0
mov dword [rax + 0x20], edx
movzx eax, word [0x00424094]
mov word [rbx + 4], ax
jmp 0x40926d