Function at 0x3009a88a
Capabilities:
Parse credit card information

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x34
mov eax, dword [0x30229f54]
mov ecx, dword [eax + 0x38]
mov dword [ebp - 4], ecx
mov ecx, dword [eax + 0x30]
mov dword [ebp - 0xc], ecx
xor ecx, ecx
cmp dword [eax + 0x18], ecx
push edi
mov edi, dword [eax + 0x34]
mov dword [ebp - 8], edi
mov dword [ebp - 0x14], ecx
mov dword [ebp - 0x20], ecx
mov dword [ebp - 0x10], ecx
mov dword [ebp - 0x18], ecx
je 0x3009a8de
and dword [eax + 0x18], ecx
jmp 0x3009a8c3
mov edi, dword [ebp - 8]
cmp edi, dword [ebp - 4]
je 0x3009a92e
movzx eax, byte [edi]
inc edi
cmp eax, 0xd
mov dword [ebp - 8], edi
je 0x3009a8d9
cmp eax, 0xa
jne 0x3009a8c3
mov eax, dword [0x30229f54]
push ebx
xor ebx, ebx
push esi
cmp edi, dword [ebp - 4]
je 0x3009a90e
movzx esi, byte [edi]
inc edi
cmp esi, 0xd
mov dword [ebp - 8], edi
je 0x3009a956
cmp esi, 0xa
je 0x3009a956
xor ecx, ecx
cmp esi, 0x20
je 0x3009a909
cmp esi, 9
je 0x3009a909
cmp esi, 0xd
jne 0x3009a96c
cmp edi, dword [ebp - 4]
jne 0x3009a95b
push dword [ebp - 0xc]
push dword [eax + 0x2c]
lea eax, [ebp - 4]
push eax
lea eax, [ebp - 8]
push eax
call fcn.3009a1f0
test eax, eax
je 0x3009acec
mov edi, dword [ebp - 8]
jmp 0x3009a962
push dword [ebp - 0xc]
mov eax, dword [0x30229f54]
push dword [eax + 0x2c]
lea eax, [ebp - 4]
push eax
lea eax, [ebp - 8]
push eax
call fcn.3009a1f0
test eax, eax
jne 0x3009a8c0
push 0xfffffffffffffffe
pop eax
jmp 0x3009acf1
xor ecx, ecx
inc ecx
jmp 0x3009a909
cmp ecx, ebx
je 0x3009a8e2
inc dword [eax + 0x1c]
mov eax, dword [0x30229f54]
jmp 0x3009a8e2
mov ecx, dword [ebp - 0xc]
sub ecx, edi
cmp ecx, 0x2066
jge 0x3009a994
push dword [ebp - 0xc]
push dword [eax + 0x2c]
lea eax, [ebp - 4]
push eax
lea eax, [ebp - 8]
push eax
call fcn.3009a1f0
mov edi, dword [ebp - 8]
mov eax, dword [0x30229f54]
inc dword [eax + 0x1c]
cmp esi, 0x49
mov dword [ebp - 8], ebx
mov dword [ebp - 0x30], ebx
mov dword [ebp - 0x2c], ebx
mov dword [0x30229f60], ebx
mov dword [ebp - 0x1c], esi
jg 0x3009a9d2
je 0x3009a9c8
cmp esi, 0x42
jl 0x3009a9e6
cmp esi, 0x43
jle 0x3009aa8b
cmp esi, 0x44
jle 0x3009a9e6
cmp esi, 0x46
jmp 0x3009a9e0
mov al, byte [edi]
inc edi
cmp al, 0x44
jmp 0x3009aa85
cmp esi, 0x4e
je 0x3009aa70
jle 0x3009a9e6
cmp esi, 0x50
jle 0x3009aa8b
cmp edi, dword [ebp - 4]
jbe 0x3009a9ec
dec edi
mov eax, dword [0x30229f54]
or dword [ebp - 0x1c], 0xffffffff
mov dword [eax + 0x18], 1
mov eax, dword [0x30229f54]
mov ecx, dword [ebp - 4]
mov dword [eax + 0x34], edi
mov eax, dword [0x30229f54]
mov dword [eax + 0x38], ecx
mov eax, dword [0x30229f54]
mov ecx, dword [ebp - 0x2c]
mov dword [eax + 0x3c], ecx
mov eax, dword [0x30229f54]
mov ecx, dword [ebp - 0x30]
push 0
mov dword [eax + 0x40], ecx
mov eax, dword [0x30229f54]
mov esi, 0xfa1
push esi
push 1
add eax, 4
push eax
push 0x17
call fcn.3009a37d
test eax, eax
je 0x3009aa4b
mov eax, dword [0x30229f54]
dec dword [eax + 4]
push 0
push esi
push 1
push dword [0x30229f54]
push 0x18
call fcn.3009a37d
test eax, eax
je 0x3009aa68
mov eax, dword [0x30229f54]
dec dword [eax]
mov eax, dword [ebp - 0x1c]
jmp 0x3009acef
movzx eax, byte [edi]
inc edi
cmp eax, 0x45
jne 0x3009aa82
mov dword [ebp - 0x1c], 0x58
jmp 0x3009aa8b
cmp eax, 0x4e
jne 0x3009a9e6
movzx eax, byte [edi]
cmp eax, 0x20
je 0x3009aa98
cmp eax, 9
jne 0x3009aa9b
inc edi
jmp 0x3009aa8b
cmp edi, dword [ebp - 4]
jae 0x3009aab3
cmp eax, 0x3b
je 0x3009aab3
cmp eax, 0xd
je 0x3009aab3
cmp eax, 0xa
jne 0x3009a9e6
and dword [ebp - 0x28], 0
and dword [ebp - 0x34], 0
mov esi, dword [ebp - 0x14]
xor edx, edx
mov ebx, edi
inc edx
movzx ecx, byte [edi]
inc edi
cmp ecx, 0xd
mov dword [ebp - 0x24], ecx
jg 0x3009ab03
test ecx, ecx
je 0x3009aae5
cmp ecx, 0xa
je 0x3009aafa
cmp ecx, 0xd
jne 0x3009ab03
cmp byte [edi], 0xa
jne 0x3009aafa
inc edi
jmp 0x3009aafa
mov eax, dword [ebp - 4]
inc eax
cmp edi, eax
jne 0x3009ab03
mov eax, dword [ebp - 4]
dec edi
cmp eax, dword [ebp - 0xc]
je 0x3009a9e6
mov dword [ebp - 0x34], 1
jmp 0x3009ab3d
mov eax, edx
sub eax, 0
je 0x3009acbd
dec eax
je 0x3009ac77
dec eax
je 0x3009ac57
dec eax
je 0x3009ac29
dec eax
je 0x3009ac07
dec eax
je 0x3009abd9
dec eax
jne 0x3009aac3
cmp ecx, 0x3b
je 0x3009ac46
xor eax, eax
cmp dword [ebp - 0x28], eax
je 0x3009ab59
dec ebx
cmp byte [ebx], 0x22
mov dword [ebp - 0x28], eax
jne 0x3009ab52
cmp ebx, dword [ebp - 0x20]
jae 0x3009ab53
inc ebx
mov edx, dword [ebp - 8]
or dword [ebp - 0x2c], edx
cmp dword [ebp - 8], eax
je 0x3009ab8e
mov eax, dword [0x30229f54]
mov edx, dword [ebp - 0x18]
mov dword [eax + edx*4 + 0xc4], ebx
mov edx, dword [ebp - 0x20]
mov al, bl
sub al, dl
cmp al, 0xff
mov byte [edx - 1], al
ja 0x3009ab81
mov eax, dword [ebp - 8]
or dword [ebp - 0x30], eax
mov eax, dword [ebp - 8]
or dword [0x30229f60], eax
mov byte [ebx], 0
inc ebx
cmp dword [ebp - 0x34], 0
jne 0x3009a9fc
add ecx, 0xffffffbf
cmp ecx, 0x19
mov dword [ebp - 0x18], ecx
ja 0x3009abcb
xor eax, eax
inc eax
shl eax, cl
test dword [0x30229f60], eax
mov dword [ebp - 8], eax
jne 0x3009a9e6
mov eax, dword [0x30229f54]
inc ebx
mov esi, ebx
mov dword [ebp - 0x20], ebx
mov dword [eax + ecx*4 + 0x5c], ebx
mov dword [ebp - 0x14], esi
jmp 0x3009abd2
and dword [ebp - 8], 0
mov esi, dword [ebp - 0x14]
xor edx, edx
jmp 0x3009aac3
cmp dword [ebp - 0x10], 1
je 0x3009abfe
mov eax, dword [ebp - 0x10]
lea eax, [eax + 0x30208cc0]
movzx edx, byte [eax]
add edx, eax
push edx
inc eax
push eax
lea eax, [ebp - 0x24]
push eax
push ecx
call fcn.30099e60
test eax, eax
jne 0x3009ac43
xor edx, edx
inc edx
dec edi
jmp 0x3009aac3
lea eax, [ecx - 0x40]
cmp eax, 0xf
ja 0x3009ac1d
movzx eax, byte [ecx + 0x30208cf4]
mov dword [ebp - 0x10], eax
push 5
jmp 0x3009ac5e
push 0x30208d9a
push 0x30208d48
jmp 0x3009abf0
mov eax, ecx
and ax, 0xf0
cmp al, 0x30
jne 0x3009abfe
mov eax, dword [ebp - 0x10]
and eax, 0xf
shl eax, 4
and ecx, 0xf
or ecx, eax
jmp 0x3009ac46
mov ecx, dword [ebp - 0x24]
xor edx, edx
inc edx
lea ebx, [esi + 1]
mov byte [esi], cl
inc esi
mov dword [ebp - 0x14], esi
jmp 0x3009aac3
cmp ecx, 0x4e
jne 0x3009ac64
push 4
pop edx
jmp 0x3009aac3
mov eax, ecx
and al, 0xf0
cmp al, 0x20
jne 0x3009abfe
push 3
pop edx
mov dword [ebp - 0x10], ecx
jmp 0x3009aac3
cmp ecx, 9
je 0x3009ac4c
cmp ecx, 0x1b
je 0x3009acb9
cmp ecx, 0x20
je 0x3009ac4c
cmp ecx, 0x3b
je 0x3009acb5
cmp ecx, 0x5c
jne 0x3009ac49
cmp dword [ebp - 0x1c], 0x50
jne 0x3009ac49
cmp dword [ebp - 0x18], 0xf
jne 0x3009ac49
cmp byte [edi], 0x1b
je 0x3009ac49
mov byte [esi], cl
mov al, byte [edi]
lea ebx, [esi + 2]
inc esi
mov byte [esi], al
inc esi
mov dword [ebp - 0x14], esi
inc edi
jmp 0x3009aac3
push 6
jmp 0x3009ac5e
push 2
jmp 0x3009ac5e
sub ecx, 9
je 0x3009aac3
sub ecx, 0x17
je 0x3009aac3
dec ecx
dec ecx
jne 0x3009abfe
cmp dword [ebp - 0x18], 0xa
jne 0x3009abfe
xor edx, edx
inc edx
mov dword [ebp - 0x28], edx
jmp 0x3009aac3
push 0xfffffffffffffffe
pop eax
pop esi
pop ebx
pop edi
leave
ret