Function at 0x1009a2c6
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]
lea ecx, [eax - 1]
push edi
mov dword [esi], ecx
test eax, eax
jne 0x1009a2a6
mov edx, dword [esi + 0x10]
push str.pattern_too_complex
push edx
call fcn.1006b3f0
mov ebx, dword [ebp + 0x10]
cmp ebx, dword [esi + 0xc]
je 0x1009a589
mov dl, byte [ebx]
movsx ecx, dl
lea eax, [ecx - 0x24]
cmp eax, 5
ja case.0x1009a303.58
jmp dword [eax*4 + 0x1009a598]
lea eax, [ebx + 1]
cmp eax, dword [esi + 0xc]
je 0x1009a4fe
lea eax, [ebx + 1]
cmp ecx, 0x25
je 0x1009a3dc
cmp ecx, 0x5b
je 0x1009a3b1
mov esi, eax
jmp 0x1009a3e8
mov al, byte [ebx + 1]
movsx edi, al
add edi, 0xffffffd0
cmp edi, 0x36
ja case.0x1009a303.58
movzx edi, byte [edi + 0x1009a5c0]
jmp dword [edi*4 + 0x1009a5b0]
mov eax, dword [ebp + 0xc]
lea ecx, [ebx + 2]
call fcn.10099fb0
mov esi, dword [ebp + 8]
mov dword [ebp + 0xc], eax
test eax, eax
je 0x1009a589
add ebx, 4
jmp 0x1009a48b
add ebx, 2
cmp byte [ebx], 0x5b
jne 0x1009a51a
mov eax, ebx
call fcn.10099c40
mov edx, dword [ebp + 8]
mov ecx, dword [ebp + 0xc]
mov dword [esp + 0xc], eax
cmp ecx, dword [edx + 4]
jne 0x1009a351
xor cl, cl
jmp 0x1009a354
mov cl, byte [ecx - 1]
lea esi, [eax - 1]
push esi
movzx edi, cl
push ebx
call fcn.10099de0
add esp, 8
test eax, eax
jne 0x1009a544
mov eax, dword [ebp + 0xc]
movzx edi, byte [eax]
push esi
push ebx
call fcn.10099de0
add esp, 8
test eax, eax
je 0x1009a544
mov ebx, dword [esp + 0xc]
jmp 0x1009a488
mov ecx, dword [ebp + 0xc]
movzx edx, al
push ecx
mov eax, esi
call fcn.1009a1f0
add esp, 4
mov dword [ebp + 0xc], eax
test eax, eax
je 0x1009a589
add ebx, 2
jmp 0x1009a48b
cmp byte [eax], 0x5e
jne 0x1009a3b7
inc eax
mov edi, dword [esi + 0xc]
lea ebx, [ebx]
cmp eax, edi
je 0x1009a528
mov cl, byte [eax]
inc eax
cmp cl, 0x25
jne 0x1009a3d5
cmp eax, edi
jae 0x1009a3d5
inc eax
cmp byte [eax], 0x5d
jne 0x1009a3c0
jmp 0x1009a3e5
cmp eax, dword [esi + 0xc]
je 0x1009a536
lea esi, [eax + 1]
mov edi, dword [ebp + 0xc]
mov ecx, dword [ebp + 8]
cmp edi, dword [ecx + 8]
jae 0x1009a438
movzx eax, byte [edi]
cmp dl, 0x25
je 0x1009a427
cmp dl, 0x2e
je 0x1009a452
cmp dl, 0x5b
je 0x1009a413
movzx edx, dl
xor ecx, ecx
cmp edx, eax
sete cl
mov eax, ecx
jmp 0x1009a434
lea edx, [esi - 1]
push edx
push ebx
mov edi, eax
call fcn.10099de0
mov edi, dword [ebp + 0xc]
add esp, 8
jmp 0x1009a434
movzx ecx, byte [ebx + 1]
push ecx
call fcn.10099ca0
add esp, 4
test eax, eax
jne 0x1009a44f
mov al, byte [esi]
cmp al, 0x2a
je 0x1009a44a
cmp al, 0x3f
je 0x1009a44a
cmp al, 0x2d
jne 0x1009a544
lea ebx, [esi + 1]
jmp 0x1009a488
mov ecx, dword [ebp + 8]
movsx eax, byte [esi]
add eax, 0xffffffd6
cmp eax, 0x15
ja case.0x1009a464.44
movzx edx, byte [eax + 0x1009a60c]
jmp dword [edx*4 + 0x1009a5f8]
inc esi
push esi
inc edi
push edi
push ecx
call fcn.1009a280
add esp, 0xc
test eax, eax
jne 0x1009a583
jmp 0x1009a486
inc edi
mov dword [ebp + 0xc], edi
mov ebx, esi
mov esi, dword [ebp + 8]
cmp ebx, dword [esi + 0xc]
jne 0x1009a2b2
inc dword [esi]
mov eax, dword [ebp + 0xc]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
cmp byte [ebx + 1], 0x29
mov ecx, dword [ebp + 0xc]
lea eax, [ebx + 1]
jne 0x1009a4c9
push 0xfffffffffffffffe
add ebx, 2
push ebx
call fcn.1009a160
mov esi, dword [ebp + 8]
add esp, 8
inc dword [esi]
mov dword [ebp + 0xc], eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
push 0xffffffffffffffff
push eax
call fcn.1009a160
mov esi, dword [ebp + 8]
add esp, 8
inc dword [esi]
mov dword [ebp + 0xc], eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov ecx, dword [ebp + 0xc]
inc ebx
push ebx
mov edi, esi
call fcn.1009a1a0
add esp, 4
inc dword [esi]
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 + 8]
setne cl
dec ecx
and ecx, eax
inc dword [esi]
mov dword [ebp + 0xc], ecx
mov eax, ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov edx, dword [esi + 0x10]
push str.missing___after___f_in_pattern
push edx
call fcn.1006b3f0
mov eax, dword [esi + 0x10]
push str.malformed_pattern__missing___
push eax
call fcn.1006b3f0
mov ecx, dword [esi + 0x10]
push str.malformed_pattern__ends_with____
push ecx
call fcn.1006b3f0
mov esi, dword [ebp + 8]
inc dword [esi]
mov dword [ebp + 0xc], 0
mov eax, dword [ebp + 0xc]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
inc edi
push esi
push ebx
push edi
push ecx
call fcn.1009a020
mov esi, dword [ebp + 8]
add esp, 0x10
inc dword [esi]
mov dword [ebp + 0xc], eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
push esi
push ebx
push ecx
mov eax, edi
call fcn.1009a0c0
add esp, 0xc
mov esi, dword [ebp + 8]
mov dword [ebp + 0xc], eax
inc dword [esi]
mov eax, dword [ebp + 0xc]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret