Function at 0x100667e7
Capabilities:
Parse credit card information

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push ecx
push ebx
push esi
mov esi, dword [ebp + 8]
mov eax, dword [esi + 0x10]
lea ecx, [eax - 1]
push edi
mov dword [esi + 0x10], ecx
test eax, eax
jne 0x100667c7
mov ecx, dword [esi + 0xc]
push str.pattern_too_complex
call fcn.10053000
mov edi, dword [ebp + 0x10]
cmp edi, dword [esi + 8]
je 0x10066aad
mov dl, byte [edi]
movsx ecx, dl
lea eax, [ecx - 0x24]
cmp eax, 5
ja case.0x10066824.58
jmp dword [eax*4 + 0x10066abc]
lea eax, [edi + 1]
cmp eax, dword [esi + 8]
je 0x10066a10
lea eax, [edi + 1]
cmp ecx, 0x25
je 0x100668f4
cmp ecx, 0x5b
je 0x100668cf
mov esi, eax
jmp 0x10066900
mov al, byte [edi + 1]
movsx ebx, al
add ebx, 0xffffffd0
cmp ebx, 0x36
ja case.0x10066824.58
movzx ebx, byte [ebx + 0x10066ae4]
jmp dword [ebx*4 + 0x10066ad4]
mov eax, dword [ebp + 0xc]
lea ecx, [edi + 2]
call fcn.100664e0
mov dword [ebp + 0xc], eax
test eax, eax
je 0x10066aad
add edi, 4
jmp 0x1006699f
add edi, 2
cmp byte [edi], 0x5b
jne 0x10066a2d
mov eax, edi
call fcn.100662b0
mov ebx, eax
mov eax, dword [ebp + 0xc]
mov dword [esp + 0xc], ebx
cmp eax, dword [esi]
jne 0x1006686d
xor al, al
jmp 0x10066870
mov al, byte [eax - 1]
movzx ecx, al
dec ebx
push ebx
push ecx
mov eax, edi
call fcn.10066440
add esp, 8
test eax, eax
jne 0x10066a3a
mov edx, dword [ebp + 0xc]
movzx eax, byte [edx]
push ebx
push eax
mov eax, edi
call fcn.10066440
add esp, 8
test eax, eax
je 0x10066a3a
mov edi, dword [esp + 0xc]
jmp 0x1006699f
mov ecx, dword [ebp + 0xc]
movzx edx, al
push ecx
mov eax, esi
call fcn.10066710
add esp, 4
mov dword [ebp + 0xc], eax
test eax, eax
je 0x10066aad
add edi, 2
jmp 0x1006699f
cmp byte [eax], 0x5e
jne 0x100668d5
inc eax
mov ecx, dword [esi + 8]
cmp eax, ecx
je 0x10066a4e
mov bl, byte [eax]
inc eax
cmp bl, 0x25
jne 0x100668ed
cmp eax, ecx
jae 0x100668ed
inc eax
cmp byte [eax], 0x5d
jne 0x100668d8
jmp 0x100668fd
cmp eax, dword [esi + 8]
je 0x10066a5b
lea esi, [eax + 1]
mov ebx, dword [ebp + 0xc]
mov ecx, dword [ebp + 8]
cmp ebx, dword [ecx + 4]
jae 0x1006694c
movzx eax, byte [ebx]
cmp dl, 0x25
je 0x1006693c
cmp dl, 0x2e
je 0x10066966
cmp dl, 0x5b
je 0x1006692b
movzx edx, dl
xor ecx, ecx
cmp edx, eax
sete cl
mov eax, ecx
jmp 0x10066948
lea edx, [esi - 1]
push edx
push eax
mov eax, edi
call fcn.10066440
add esp, 8
jmp 0x10066948
movzx ebx, byte [edi + 1]
call fcn.10066300
mov ebx, dword [ebp + 0xc]
test eax, eax
jne 0x10066963
mov al, byte [esi]
cmp al, 0x2a
je 0x1006695e
cmp al, 0x3f
je 0x1006695e
cmp al, 0x2d
jne 0x10066a68
lea edi, [esi + 1]
jmp 0x1006699c
mov ecx, dword [ebp + 8]
movsx eax, byte [esi]
add eax, 0xffffffd6
cmp eax, 0x15
ja case.0x10066978.44
movzx eax, byte [eax + 0x10066b30]
jmp dword [eax*4 + 0x10066b1c]
inc esi
push esi
inc ebx
push ebx
push ecx
call fcn.100667a0
add esp, 0xc
test eax, eax
jne 0x10066a8b
jmp 0x1006699a
inc ebx
mov dword [ebp + 0xc], ebx
mov edi, esi
mov esi, dword [ebp + 8]
cmp edi, dword [esi + 8]
jne 0x100667d3
inc dword [esi + 0x10]
mov eax, dword [ebp + 0xc]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
cmp byte [edi + 1], 0x29
mov ecx, dword [ebp + 0xc]
lea eax, [edi + 1]
jne 0x100669dc
push 0xfffffffffffffffe
add edi, 2
push edi
call fcn.10066670
add esp, 8
inc dword [esi + 0x10]
mov dword [ebp + 0xc], eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
push 0xffffffffffffffff
push eax
call fcn.10066670
add esp, 8
inc dword [esi + 0x10]
mov dword [ebp + 0xc], eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov ecx, dword [ebp + 0xc]
inc edi
push edi
mov edi, esi
call fcn.100666b0
add esp, 4
inc dword [esi + 0x10]
mov dword [ebp + 0xc], eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [ebp + 0xc]
xor ecx, ecx
cmp eax, dword [esi + 4]
setne cl
dec ecx
and ecx, eax
inc dword [esi + 0x10]
mov dword [ebp + 0xc], ecx
mov eax, ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov ecx, dword [esi + 0xc]
push str.missing___after___f_in_pattern
call fcn.10053000
inc dword [esi + 0x10]
mov dword [ebp + 0xc], 0
mov eax, dword [ebp + 0xc]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov ecx, dword [esi + 0xc]
push str.malformed_pattern__missing___
call fcn.10053000
mov ecx, dword [esi + 0xc]
push str.malformed_pattern__ends_with____
call fcn.10053000
mov esi, dword [ebp + 8]
inc dword [esi + 0x10]
mov dword [ebp + 0xc], 0
mov eax, dword [ebp + 0xc]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
inc ebx
push esi
push ebx
push ecx
call fcn.10066540
add esp, 0xc
mov esi, dword [ebp + 8]
inc dword [esi + 0x10]
mov dword [ebp + 0xc], eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
push esi
push ecx
mov eax, ebx
call fcn.100665e0
mov esi, dword [ebp + 8]
add esp, 8
mov dword [ebp + 0xc], eax
inc dword [esi + 0x10]
mov eax, dword [ebp + 0xc]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret