Function at 0x4163d0
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 0x4163f6
mov edx, dword [esi + 0x10]
push str.pattern_too_complex
push edx
call fcn.004040e0
mov ebx, dword [ebp + 0x10]
cmp ebx, dword [esi + 0xc]
je 0x4166eb
movsx ecx, byte [ebx]
lea eax, [ecx - 0x24]
cmp eax, 5
ja case.0x416453.58
jmp dword [eax*4 + 0x4166f8]
lea eax, [ebx + 1]
cmp eax, dword [esi + 0xc]
je 0x41665a
lea edi, [ebx + 1]
mov eax, edi
cmp ecx, 0x25
je 0x416534
cmp ecx, 0x5b
je 0x41650a
mov esi, edi
jmp 0x416540
mov al, byte [ebx + 1]
movsx edx, al
add edx, 0xffffffd0
cmp edx, 0x36
ja case.0x416453.58
movzx edx, byte [edx + 0x416720]
jmp dword [edx*4 + 0x416710]
mov eax, dword [ebp + 0xc]
lea ecx, [ebx + 2]
call fcn.00416110
mov dword [ebp + 0xc], eax
test eax, eax
je 0x4166e8
add ebx, 4
mov dword [ebp + 0x10], ebx
jmp 0x4165e2
add ebx, 2
cmp byte [ebx], 0x5b
mov dword [ebp + 0x10], ebx
jne 0x416676
mov eax, ebx
call fcn.00415dd0
mov ecx, dword [ebp + 8]
mov esi, eax
mov eax, dword [ebp + 0xc]
mov dword [esp + 0xc], esi
cmp eax, dword [ecx + 4]
jne 0x4164a6
xor al, al
jmp 0x4164a9
mov al, byte [eax - 1]
mov edi, dword [ebp + 0x10]
movzx ebx, al
dec esi
push esi
mov eax, edi
call fcn.00415f50
add esp, 4
test eax, eax
jne 0x416684
mov edx, dword [ebp + 0xc]
movzx ebx, byte [edx]
push esi
mov eax, edi
call fcn.00415f50
add esp, 4
test eax, eax
je 0x416684
mov eax, dword [esp + 0xc]
mov dword [ebp + 0x10], eax
jmp 0x4165df
mov ebx, dword [ebp + 0xc]
movzx edx, al
mov eax, dword [ebp + 8]
call fcn.00416340
mov dword [ebp + 0xc], eax
test eax, eax
je 0x4166e8
add dword [ebp + 0x10], 2
jmp 0x4165df
cmp byte [edi], 0x5e
jne 0x416512
lea eax, [edi + 1]
mov ecx, dword [esi + 0xc]
cmp eax, ecx
je 0x41669a
mov dl, byte [eax]
inc eax
cmp dl, 0x25
jne 0x41652a
cmp eax, ecx
jae 0x41652a
inc eax
cmp byte [eax], 0x5d
jne 0x416515
lea esi, [eax + 1]
jmp 0x416540
cmp edi, dword [esi + 0xc]
je 0x4166a8
lea esi, [edi + 1]
mov ecx, dword [ebp + 0xc]
mov eax, dword [ebp + 8]
cmp ecx, dword [eax + 8]
jae 0x416590
mov al, byte [ebx]
movzx edx, byte [ecx]
cmp al, 0x25
je 0x41657f
cmp al, 0x2e
je 0x4165a5
cmp al, 0x5b
je 0x41656a
movzx eax, al
xor ecx, ecx
cmp eax, edx
sete cl
mov eax, ecx
jmp 0x416589
lea ecx, [esi - 1]
mov eax, ebx
push ecx
mov ebx, edx
call fcn.00415f50
mov ebx, dword [ebp + 0x10]
add esp, 4
jmp 0x416589
movzx edi, byte [edi]
mov eax, edx
call fcn.00415e30
mov ecx, dword [ebp + 0xc]
test eax, eax
jne 0x4165a5
mov al, byte [esi]
cmp al, 0x2a
je 0x4165a2
cmp al, 0x3f
je 0x4165a2
cmp al, 0x2d
jne 0x416684
inc esi
jmp 0x4165dc
movsx eax, byte [esi]
add eax, 0xffffffd6
cmp eax, 0x15
ja case.0x4165b7.44
movzx edx, byte [eax + 0x41676c]
jmp dword [edx*4 + 0x416758]
mov eax, dword [ebp + 8]
inc esi
push esi
inc ecx
push ecx
push eax
call fcn.004163d0
add esp, 0xc
test eax, eax
jne 0x4166e5
jmp 0x4165dc
inc ecx
mov dword [ebp + 0xc], ecx
mov dword [ebp + 0x10], esi
mov ebx, dword [ebp + 0x10]
mov ecx, dword [ebp + 8]
mov esi, ecx
cmp ebx, dword [ecx + 0xc]
jne 0x416402
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 0x416625
push 0xfffffffffffffffe
add ebx, 2
push ebx
call fcn.004162b0
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.004162b0
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.004162f0
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 edx, edx
cmp eax, dword [esi + 8]
setne dl
dec edx
and edx, eax
inc dword [esi]
mov dword [ebp + 0xc], edx
mov eax, edx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [esi + 0x10]
push str.missing___after___f_in_pattern
push eax
call fcn.004040e0
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
mov ecx, dword [esi + 0x10]
push str.malformed_pattern__missing___
push ecx
call fcn.004040e0
mov edx, dword [esi + 0x10]
push str.malformed_pattern__ends_with____
push edx
call fcn.004040e0
inc ecx
mov eax, dword [ebp + 8]
push esi
push ebx
push ecx
push eax
call fcn.00416180
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
mov edx, dword [ebp + 8]
push esi
push ebx
push edx
mov eax, ecx
call fcn.00416220
add esp, 0xc
mov dword [ebp + 0xc], eax
mov esi, dword [ebp + 8]
inc dword [esi]
mov eax, dword [ebp + 0xc]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret