Function at 0x665058
Capabilities:
Parse credit card information

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffffd0
push ebx
push esi
push edi
xor ebx, ebx
mov dword [ebp - 0x30], ebx
mov edi, ecx
mov dword [ebp - 4], edx
mov ebx, eax
xor eax, eax
push ebp
push 0x66584c
push dword fs:[eax]
mov dword fs:[eax], esp
xor eax, eax
mov dword [ebp - 8], eax
xor eax, eax
mov dword [ebp - 0xc], eax
cmp word [edi], 0x1b
jne 0x6650ea
mov eax, dword [ebx + 0x5a8]
cmp byte [eax + 0x228], 0
jne 0x6650ea
mov dl, 1
mov eax, dword [ebx + 0x4a0]
call fcn.00577450
push 0
xor ecx, ecx
mov edx, 0xb014
mov eax, dword [ebx + 0x5a8]
call fcn.0047e250
push 0
push 0
mov cl, byte [0x66585c]
xor edx, edx
mov eax, dword [ebx + 0x5a8]
call fcn.0066076c
mov eax, ebx
call fcn.00664f18
mov eax, ebx
mov edx, dword [eax]
call dword [edx + 0x108]
mov eax, ebx
call fcn.00666088
cmp word [edi], 0x7a
jne 0x6650fb
mov eax, dword [ebx + 0x5ac]
call fcn.00643680
cmp word [edi], 0xd
jne 0x665121
mov eax, dword [ebx + 0x220]
cmp eax, dword [ebx + 0x468]
jne 0x665121
mov word [edi], 0
mov edx, dword [ebx + 0x468]
mov eax, ebx
call fcn.00666608
cmp word [edi], 0xd
jne 0x665147
mov eax, dword [ebx + 0x220]
cmp eax, dword [ebx + 0x588]
jne 0x665147
mov word [edi], 0
mov edx, dword [ebx + 0x588]
mov eax, ebx
call fcn.00666608
cmp word [edi], 0x2d
jne 0x66516e
mov al, byte [0x66585c]
cmp al, byte [ebp + 8]
jne 0x66516e
cmp byte [ebx + 0x1056], 0
jne 0x66516e
mov dl, 1
mov eax, ebx
call fcn.0066cd78
mov word [edi], 0
cmp word [edi], 0x2e
jne 0x665199
mov eax, ebx
call fcn.00665d10
test al, al
je 0x665199
mov eax, dword [ebx + 0x220]
cmp eax, dword [ebx + 0x468]
je 0x665199
mov eax, ebx
call fcn.0066597c
mov word [edi], 0
cmp word [edi], 0xd
jne 0x6651c2
mov eax, ebx
call fcn.00665d38
test al, al
je 0x6651c2
test byte [ebp + 8], 4
je 0x6651bb
xor edx, edx
mov eax, ebx
call fcn.00668ce4
jmp 0x6651c2
mov eax, ebx
call fcn.00668d94
mov ax, word [edi]
add al, 0xcf
sub al, 9
jae 0x665207
test byte [ebp + 8], 4
je 0x665207
mov eax, ebx
call fcn.00665d10
test al, al
je 0x665207
lea eax, [ebp - 0x30]
mov dx, word [edi]
call fcn.004049c8
mov edx, dword [ebp - 0x30]
mov eax, dword [ebx + 0x588]
call fcn.0047d048
mov edx, dword [ebx + 0x588]
mov eax, ebx
call fcn.00666608
mov word [edi], 0
mov ax, word [edi]
cmp al, 0x46
jne 0x665233
test byte [ebp + 8], 4
je 0x665233
mov eax, ebx
call fcn.00665d10
test al, al
je 0x665233
mov eax, dword [ebx + 0x448]
mov si, 0xffeb
call fcn.00403b68
mov word [edi], 0
mov ax, word [edi]
cmp al, 0x44
jne 0x66525f
test byte [ebp + 8], 4
je 0x66525f
mov eax, ebx
call fcn.00665d10
test al, al
je 0x66525f
mov eax, dword [ebx + 0x44c]
mov si, 0xffeb
call fcn.00403b68
mov word [edi], 0
mov ax, word [edi]
cmp al, 0x47
jne 0x665281
test byte [ebp + 8], 4
je 0x665281
mov dl, byte [ebx + 0x5d0]
xor dl, 1
mov eax, ebx
call fcn.00664114
mov word [edi], 0
test byte [ebp + 8], 4
je 0x66530e
mov eax, ebx
call fcn.00665d38
test al, al
je 0x66530e
mov ax, word [edi]
cmp al, 0x42
jne 0x6652be
mov eax, dword [ebx + 0x410]
mov dl, byte [eax + 0x170]
xor dl, 1
call fcn.00577450
mov edx, dword [ebx + 0x410]
mov eax, ebx
call fcn.00666608
mov ax, word [edi]
cmp al, 0x49
jne 0x6652e6
mov eax, dword [ebx + 0x414]
mov dl, byte [eax + 0x170]
xor dl, 1
call fcn.00577450
mov edx, dword [ebx + 0x414]
mov eax, ebx
call fcn.00666608
mov ax, word [edi]
cmp al, 0x55
jne 0x66530e
mov eax, dword [ebx + 0x418]
mov dl, byte [eax + 0x170]
xor dl, 1
call fcn.00577450
mov edx, dword [ebx + 0x418]
mov eax, ebx
call fcn.00666608
mov eax, ebx
call fcn.00665cac
test al, al
je 0x66532e
cmp word [edi], 0x2e
jne 0x66532e
test byte [ebp + 8], 1
je 0x66532e
mov edx, ebx
mov eax, ebx
call fcn.006698d4
mov eax, ebx
call fcn.00665cd4
test al, al
je 0x66534e
cmp word [edi], 0x2d
jne 0x66534e
test byte [ebp + 8], 4
je 0x66534e
mov edx, ebx
mov eax, ebx
call fcn.00669908
mov eax, ebx
call fcn.00665cfc
test al, al
je 0x66536e
cmp word [edi], 0x2d
jne 0x66536e
test byte [ebp + 8], 1
je 0x66536e
mov edx, ebx
mov eax, ebx
call fcn.00669aa4
cmp word [edi], 0x21
jne 0x665393
mov eax, dword [ebx + 0x4ec]
mov eax, dword [eax + 0x20c]
mov edx, dword [eax + 0xc]
sub edx, 0xc8
call fcn.00495d74
mov word [edi], 0
cmp word [edi], 0x22
jne 0x6653b8
mov eax, dword [ebx + 0x4ec]
mov eax, dword [eax + 0x20c]
mov edx, dword [eax + 0xc]
add edx, 0xc8
call fcn.00495d74
mov word [edi], 0
cmp dword [0x6f4b2c], 0
jle 0x665836
cmp word [edi], 0x26
jne 0x6653d4
mov dword [ebp - 0xc], 0xffffffff
jmp 0x6653ff
cmp word [edi], 0x28
jne 0x6653e3
mov dword [ebp - 0xc], 1
jmp 0x6653ff
cmp word [edi], 0x25
jne 0x6653f2
mov dword [ebp - 8], 0xffffffff
jmp 0x6653ff
cmp word [edi], 0x27
jne 0x6653ff
mov dword [ebp - 8], 1
cmp dword [ebp - 8], 0
jne 0x66540f
cmp dword [ebp - 0xc], 0
je 0x665836
test byte [ebp + 8], 4
je 0x665429
push 0
mov ecx, dword [ebp - 0xc]
mov edx, dword [ebp - 8]
mov eax, ebx
call fcn.00665864
jmp 0x665836
test byte [ebp + 8], 1
je 0x665443
push 1
mov ecx, dword [ebp - 0xc]
mov edx, dword [ebp - 8]
mov eax, ebx
call fcn.00665864
jmp 0x665836
cmp dword [0x6f4b2c], 1
jne 0x665836
call fcn.0065dedc
push eax
call fcn.0065dda0
pop edx
call fcn.0041f734
mov esi, eax
mov eax, dword [esi + 0x94]
mov dword [ebp - 0x14], eax
mov edx, dword [esi + 0x98]
mov dword [ebp - 0x18], edx
add eax, dword [esi + 0x9c]
mov dword [ebp - 0x1c], eax
mov eax, dword [esi + 0x98]
add eax, dword [esi + 0xa0]
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x24], 0x2710
xor eax, eax
mov dword [ebp - 0x28], eax
call fcn.0065dda0
mov eax, dword [eax + 8]
dec eax
test eax, eax
jl 0x6656c4
inc eax
mov dword [ebp - 0x2c], eax
mov dword [ebp - 0x10], 0
call fcn.0065dda0
mov edx, dword [ebp - 0x10]
call fcn.0041f734
mov esi, eax
cmp byte [esi + 0x60], 0
jne 0x6656b8
cmp byte [esi + 0x58], 2
je 0x6656b8
mov eax, 0x2710
cmp dword [ebp - 8], 0
je 0x6655c7
mov eax, dword [esi + 0x98]
mov edx, eax
add edx, dword [esi + 0xa0]
cmp edx, dword [ebp - 0x18]
jge 0x66550f
mov eax, dword [esi + 0x98]
add eax, dword [esi + 0xa0]
push eax
mov eax, dword [ebp - 0x18]
pop edx
sub eax, edx
jmp 0x665538
cmp eax, dword [ebp - 0x20]
jle 0x665519
sub eax, dword [ebp - 0x20]
jmp 0x665538
mov eax, dword [esi + 0x98]
cmp eax, dword [ebp - 0x18]
jg 0x665535
mov edx, eax
add edx, dword [esi + 0xa0]
cmp edx, dword [ebp - 0x20]
jl 0x665535
xor eax, eax
jmp 0x665538
sub eax, dword [ebp - 0x18]
mov edx, dword [esi + 0x94]
cmp edx, dword [ebp - 0x14]
jg 0x665549
cmp dword [ebp - 8], 1
je 0x665560
mov edx, dword [esi + 0x94]
add edx, dword [esi + 0x9c]
cmp edx, dword [ebp - 0x1c]
jl 0x665565
cmp dword [ebp - 8], 0xffffffff
jne 0x665565
mov eax, 0x2710
cmp dword [ebp - 8], 1
jne 0x66558a
mov edx, dword [esi + 0x94]
cmp edx, dword [ebp - 0x1c]
jl 0x665580
add eax, edx
sub eax, dword [ebp - 0x1c]
jmp 0x6656ad
add eax, edx
sub eax, dword [ebp - 0x14]
jmp 0x6656ad
mov edx, dword [esi + 0x94]
add edx, dword [esi + 0x9c]
cmp edx, dword [ebp - 0x14]
jg 0x6655b1
mov edx, dword [esi + 0x94]
add edx, dword [esi + 0x9c]
add eax, dword [ebp - 0x14]
sub eax, edx
jmp 0x6656ad
mov edx, dword [esi + 0x94]
add edx, dword [esi + 0x9c]
add eax, dword [ebp - 0x1c]
sub eax, edx
jmp 0x6656ad
cmp dword [ebp - 0xc], 0
je 0x6656ad
mov eax, dword [esi + 0x94]
mov edx, eax
add edx, dword [esi + 0x9c]
cmp edx, dword [ebp - 0x14]
jge 0x6655f9
mov eax, dword [esi + 0x94]
add eax, dword [esi + 0x9c]
push eax
mov eax, dword [ebp - 0x14]
pop edx
sub eax, edx
jmp 0x66562c
cmp eax, dword [ebp - 0x1c]
jle 0x665603
sub eax, dword [ebp - 0x1c]
jmp 0x66562c
mov eax, dword [esi + 0x94]
cmp eax, dword [ebp - 0x14]
jg 0x665623
mov eax, dword [esi + 0x94]
add eax, dword [esi + 0x9c]
cmp eax, dword [ebp - 0x1c]
jl 0x665623
xor eax, eax
jmp 0x66562c
mov eax, dword [esi + 0x94]
sub eax, dword [ebp - 0x14]
mov edx, dword [esi + 0x98]
cmp edx, dword [ebp - 0x18]
jg 0x66563d
cmp dword [ebp - 0xc], 1
je 0x665654
mov edx, dword [esi + 0x98]
add edx, dword [esi + 0xa0]
cmp edx, dword [ebp - 0x20]
jl 0x665659
cmp dword [ebp - 0xc], 0xffffffff
jne 0x665659
mov eax, 0x2710
cmp dword [ebp - 0xc], 1
jne 0x665678
mov edx, dword [esi + 0x98]
cmp edx, dword [ebp - 0x20]
jl 0x665671
add eax, edx
sub eax, dword [ebp - 0x20]
jmp 0x6656ad
add eax, edx
sub eax, dword [ebp - 0x18]
jmp 0x6656ad
mov edx, dword [esi + 0x98]
add edx, dword [esi + 0xa0]
cmp edx, dword [ebp - 0x18]
jg 0x66569c
mov edx, dword [esi + 0x98]
add edx, dword [esi + 0xa0]
add eax, dword [ebp - 0x18]
sub eax, edx
jmp 0x6656ad
mov edx, dword [esi + 0x98]
add edx, dword [esi + 0xa0]
add eax, dword [ebp - 0x20]
sub eax, edx
cmp eax, dword [ebp - 0x24]
jge 0x6656b8
mov dword [ebp - 0x24], eax
mov dword [ebp - 0x28], esi
inc dword [ebp - 0x10]
dec dword [ebp - 0x2c]
jne 0x6654b5
cmp dword [ebp - 0x28], 0
je 0x665836
call fcn.0065dedc
push eax
call fcn.0065dda0
pop edx
call fcn.0041f734
mov esi, eax
test byte [ebp + 8], 2
jne 0x66571e
mov dl, 1
mov eax, dword [ebx + 0x5a8]
call fcn.0065ef94
mov eax, ebx
call fcn.00664f18
mov dword [0x6f4b2c], 1
mov eax, dword [ebp - 0x28]
mov byte [eax + 0x60], 1
mov dl, 1
mov eax, dword [ebx + 0x5a8]
call fcn.0065ef94
jmp 0x66582f
mov ax, word [0x665860]
and ax, word [0x6f4b20]
mov dx, word [0x66585c]
cmp dx, ax
jne 0x66582f
test byte [esi + 0xcc], 0x20
jne 0x66582f
mov eax, dword [esi + 0x94]
add eax, dword [esi + 0x9c]
mov edx, dword [ebp - 0x28]
cmp eax, dword [edx + 0x94]
jg 0x66577f
cmp word [edi], 0x27
jne 0x66577f
mov eax, dword [ebp - 0x28]
mov eax, dword [eax + 0x94]
sub eax, dword [esi + 0x9c]
mov dword [esi + 0x94], eax
jmp 0x665825
mov eax, dword [esi + 0x98]
add eax, dword [esi + 0xa0]
mov edx, dword [ebp - 0x28]
cmp eax, dword [edx + 0x98]
jge 0x6657b3
cmp word [edi], 0x28
jne 0x6657b3
mov eax, dword [ebp - 0x28]
mov eax, dword [eax + 0x98]
sub eax, dword [esi + 0xa0]
mov dword [esi + 0x98], eax
jmp 0x665825
mov eax, dword [ebp - 0x28]
mov eax, dword [eax + 0x94]
mov edx, dword [ebp - 0x28]
add eax, dword [edx + 0x9c]
cmp eax, dword [esi + 0x94]
jg 0x6657ed
cmp word [edi], 0x25
jne 0x6657ed
mov eax, dword [ebp - 0x28]
mov eax, dword [eax + 0x94]
mov edx, dword [ebp - 0x28]
add eax, dword [edx + 0x9c]
mov dword [esi + 0x94], eax
jmp 0x665825
mov eax, dword [ebp - 0x28]
mov eax, dword [eax + 0x98]
mov edx, dword [ebp - 0x28]
add eax, dword [edx + 0xa0]
cmp eax, dword [esi + 0x98]
jg 0x665825
cmp word [edi], 0x26
jne 0x665825
mov eax, dword [ebp - 0x28]
mov eax, dword [eax + 0x98]
mov edx, dword [ebp - 0x28]
add eax, dword [edx + 0xa0]
mov dword [esi + 0x98], eax
mov eax, ebx
mov edx, dword [eax]
call dword [edx + 0x108]
mov eax, ebx
call fcn.00666088
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x665853
lea eax, [ebp - 0x30]
call fcn.004047e0
ret