Function at 0x1001850b
Capabilities:
Parse credit card information

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x1c
push ebx
push esi
mov esi, dword [ecx]
mov dword [esp + 0xc], ecx
push edi
mov edi, edx
mov dword [esp + 0x18], edi
lea eax, [esi - 1]
mov dword [ecx], eax
test esi, esi
je 0x10018a20
mov edx, dword [ecx + 0xc]
mov ebx, dword [ebp + 8]
cmp ebx, edx
je 0x100187af
mov al, byte [ebx]
mov byte [esp + 0xe], al
movsx eax, al
add eax, 0xffffffdc
cmp eax, 5
ja case.0x1001857b.58
jmp dword [eax*4 + 0x10018a78]
lea eax, [ebx + 1]
cmp eax, edx
je 0x100187e1
mov al, byte [esp + 0xe]
lea esi, [ebx + 1]
cmp al, 0x25
je 0x10018709
cmp al, 0x5b
jne 0x10018714
xor eax, eax
cmp byte [esi], 0x5e
sete al
inc eax
add eax, ebx
cmp eax, edx
je 0x10018a65
mov cl, byte [eax]
inc eax
cmp cl, 0x25
jne 0x1001854d
cmp eax, edx
jae 0x1001854d
inc eax
cmp byte [eax], 0x5d
jne 0x10018538
mov ecx, dword [esp + 0x10]
lea esi, [eax + 1]
mov al, byte [esp + 0xe]
jmp 0x10018714
mov al, byte [ebx + 1]
mov byte [esp + 0xf], al
movsx eax, al
add eax, 0xffffffd0
cmp eax, 0x36
ja case.0x1001857b.58
movzx eax, byte [eax + 0x10018aa0]
jmp dword [eax*4 + 0x10018a90]
lea esi, [ebx + 2]
lea eax, [edx - 1]
cmp esi, eax
jae 0x10018a2d
mov al, byte [esi]
mov byte [esp + 0xe], al
cmp byte [edi], al
jne 0x10018956
mov al, byte [esi + 1]
mov ecx, 1
mov edx, dword [esp + 0x10]
mov byte [esp + 0xf], al
lea eax, [edi + 1]
mov esi, dword [edx + 8]
cmp eax, esi
jae 0x10018956
mov dh, byte [esp + 0xe]
mov dl, byte [eax]
cmp dl, byte [esp + 0xf]
jne 0x100185e4
sub ecx, 1
jne 0x100185e9
lea edi, [eax + 1]
mov dword [esp + 0x18], edi
test edi, edi
je 0x100187af
add ebx, 4
jmp 0x100187c5
cmp dl, dh
jne 0x100185e9
inc ecx
inc eax
cmp eax, esi
jb 0x100185c0
mov eax, dword [esp + 0x10]
xor edi, edi
inc dword [eax]
mov eax, edi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
add ebx, 2
cmp byte [ebx], 0x5b
jne 0x10018a3a
mov edx, ebx
call fcn.10018120
mov esi, eax
mov eax, dword [esp + 0x10]
cmp edi, dword [eax + 4]
jne 0x10018621
xor cl, cl
jmp 0x10018624
mov cl, byte [edi - 1]
lea eax, [esi - 1]
movzx ecx, cl
push eax
mov edx, ebx
call fcn.100182b0
add esp, 4
test eax, eax
jne 0x10018956
movzx ecx, byte [edi]
lea eax, [esi - 1]
push eax
mov edx, ebx
call fcn.100182b0
add esp, 4
test eax, eax
je 0x10018956
jmp 0x100187c3
movzx edx, byte [esp + 0xf]
sub edx, 0x31
js 0x10018a47
cmp edx, dword [ecx + 0x14]
jge 0x10018a47
mov esi, dword [ecx + edx*8 + 0x1c]
mov dword [esp + 0x24], esi
cmp esi, 0xffffffff
je 0x10018a47
mov eax, dword [ecx + 8]
sub eax, edi
cmp eax, esi
jb 0x10018956
mov ecx, dword [ecx + edx*8 + 0x18]
mov edx, edi
sub esi, 4
jb 0x100186b1
nop dword [eax + eax]
mov eax, dword [ecx]
cmp eax, dword [edx]
jne 0x100186b6
add ecx, 4
add edx, 4
sub esi, 4
jae 0x100186a0
cmp esi, 0xfffffffc
je 0x100186f3
mov al, byte [ecx]
cmp al, byte [edx]
jne 0x10018956
cmp esi, 0xfffffffd
je 0x100186f3
mov al, byte [ecx + 1]
cmp al, byte [edx + 1]
jne 0x10018956
cmp esi, 0xfffffffe
je 0x100186f3
mov al, byte [ecx + 2]
cmp al, byte [edx + 2]
jne 0x10018956
cmp esi, 0xffffffff
je 0x100186f3
mov al, byte [ecx + 3]
cmp al, byte [edx + 3]
jne 0x10018956
add edi, dword [esp + 0x24]
mov dword [esp + 0x18], edi
je 0x100187af
add ebx, 2
jmp 0x100187c5
cmp esi, edx
je 0x10018a13
lea esi, [ebx + 2]
cmp edi, dword [ecx + 8]
jb 0x1001871d
xor ecx, ecx
jmp 0x10018762
movzx ecx, byte [edi]
mov dword [esp + 0x24], ecx
cmp al, 0x25
je 0x10018757
cmp al, 0x2e
je 0x10018750
cmp al, 0x5b
je 0x10018740
movzx eax, byte [esp + 0xe]
xor ecx, ecx
cmp eax, dword [esp + 0x24]
sete cl
jmp 0x10018762
lea eax, [esi - 1]
mov edx, ebx
push eax
call fcn.100182b0
add esp, 4
jmp 0x10018760
mov ecx, 1
jmp 0x10018762
movzx edx, byte [ebx + 1]
call fcn.10018180
mov ecx, eax
mov al, byte [esi]
test ecx, ecx
jne 0x1001877d
cmp al, 0x2a
je 0x10018778
cmp al, 0x3f
je 0x10018778
cmp al, 0x2d
jne 0x10018956
lea ebx, [esi + 1]
jmp 0x100187c5
movsx eax, al
add eax, 0xffffffd6
cmp eax, 0x15
ja case.0x1001878f.44
movzx eax, byte [eax + 0x10018aec]
jmp dword [eax*4 + 0x10018ad8]
mov ecx, dword [esp + 0x10]
lea ebx, [esi + 1]
push ebx
lea edx, [edi + 1]
call fcn.100184c0
add esp, 4
test eax, eax
je 0x100187c5
mov edi, eax
mov eax, dword [esp + 0x10]
inc dword [eax]
mov eax, edi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
inc edi
mov dword [esp + 0x18], edi
mov ebx, esi
mov ecx, dword [esp + 0x10]
mov edx, dword [ecx + 0xc]
cmp ebx, edx
jne 0x100184f3
mov eax, ecx
inc dword [eax]
mov eax, edi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
xor eax, eax
cmp edi, dword [ecx + 8]
cmove eax, edi
mov edi, eax
mov eax, dword [esp + 0x10]
inc dword [eax]
mov eax, edi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov ecx, dword [esp + 0x10]
xor eax, eax
cmp byte [ebx + 1], 0x29
mov edx, edi
setne al
add eax, 0xfffffffe
push eax
xor eax, eax
cmp byte [ebx + 1], 0x29
sete al
inc eax
add eax, ebx
push eax
call fcn.10018470
mov edi, eax
add esp, 8
mov eax, dword [esp + 0x10]
inc dword [eax]
mov eax, edi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov ecx, dword [ecx + 0x14]
sub ecx, 1
mov edx, dword [esp + 0x10]
js 0x10018a58
lea eax, [edx + 0x1c]
lea eax, [eax + ecx*8]
nop dword [eax]
cmp dword [eax], 0xffffffff
je 0x10018863
sub eax, 8
sub ecx, 1
js 0x10018a58
jmp 0x10018850
lea esi, [edx + ecx*8]
mov eax, edi
sub eax, dword [edx + ecx*8 + 0x18]
mov edx, edi
mov ecx, dword [esp + 0x10]
mov dword [esi + 0x1c], eax
lea eax, [ebx + 1]
push eax
call fcn.100184c0
mov edi, eax
add esp, 4
test edi, edi
jne 0x100187af
mov eax, dword [esp + 0x10]
mov dword [esi + 0x1c], 0xffffffff
inc dword [eax]
mov eax, edi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
inc edi
mov dword [esp + 0x18], edi
mov edx, dword [esp + 0x10]
xor ecx, ecx
mov eax, edi
mov dword [esp + 0x24], eax
mov dword [esp + 0x14], ecx
cmp eax, dword [edx + 8]
jae 0x10018928
mov cl, byte [ebx]
movzx edi, byte [eax]
cmp cl, 0x25
mov byte [esp + 0xf], cl
mov byte [esp + 0x1c], cl
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x20], edi
je 0x10018905
cmp byte [esp + 0x1c], 0x2e
je 0x10018924
cmp byte [esp + 0x1c], 0x5b
je 0x100188f1
movzx eax, byte [esp + 0xf]
xor edx, edx
cmp eax, edi
sete dl
jmp 0x10018918
mov ecx, dword [esp + 0x20]
lea eax, [esi - 1]
push eax
mov edx, ebx
call fcn.100182b0
add esp, 4
jmp 0x10018912
movzx edx, byte [ebx + 1]
mov ecx, dword [esp + 0x20]
call fcn.10018180
mov ecx, dword [esp + 0x14]
mov edx, eax
test edx, edx
je 0x10018928
mov eax, dword [esp + 0x24]
mov edx, dword [esp + 0x10]
inc ecx
inc eax
jmp 0x100188ae
mov edi, dword [esp + 0x18]
test ecx, ecx
js 0x10018956
inc esi
lea edx, [ecx + edi]
mov ecx, dword [esp + 0x10]
push esi
call fcn.100184c0
add esp, 4
test eax, eax
jne 0x100187ad
mov ecx, dword [esp + 0x14]
sub ecx, 1
mov dword [esp + 0x14], ecx
jns 0x10018931
mov eax, dword [esp + 0x10]
xor edi, edi
inc dword [eax]
mov eax, edi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov ecx, dword [esp + 0x10]
lea eax, [esi + 1]
push eax
mov edx, edi
mov dword [esp + 0x1c], edi
call fcn.100184c0
mov edi, eax
add esp, 4
test edi, edi
jne 0x100187af
nop word [eax + eax]
mov edi, dword [esp + 0x10]
mov edx, dword [esp + 0x18]
cmp edx, dword [edi + 8]
jae 0x10018956
mov al, byte [ebx]
movzx ecx, byte [edx]
mov dword [esp + 0x24], ecx
mov byte [esp + 0xf], al
cmp al, 0x25
je 0x100189d4
cmp al, 0x2e
je 0x100189eb
cmp al, 0x5b
je 0x100189c4
movzx eax, al
xor ecx, ecx
cmp eax, dword [esp + 0x24]
sete cl
jmp 0x100189e3
lea eax, [esi - 1]
mov edx, ebx
push eax
call fcn.100182b0
add esp, 4
jmp 0x100189dd
movzx edx, byte [ebx + 1]
call fcn.10018180
mov edx, dword [esp + 0x18]
mov ecx, eax
test ecx, ecx
je 0x10018956
lea eax, [esi + 1]
inc edx
push eax
mov ecx, edi
mov dword [esp + 0x1c], edx
call fcn.100184c0
mov edi, eax
add esp, 4
test edi, edi
je 0x10018990
mov eax, dword [esp + 0x10]
inc dword [eax]
mov eax, edi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
push str.malformed_pattern__ends_with____
push dword [ecx + 0x10]
call fcn.10004170
push str.pattern_too_complex
push dword [ecx + 0x10]
call fcn.10004170
push str.malformed_pattern__missing_arguments_to___b_
push dword [ecx + 0x10]
call fcn.10004170
push str.missing___after___f_in_pattern
push dword [ecx + 0x10]
call fcn.10004170
lea eax, [edx + 1]
push eax
push str.invalid_capture_index____d
push dword [ecx + 0x10]
call fcn.10004170
push str.invalid_pattern_capture
push dword [edx + 0x10]
call fcn.10004170
mov eax, dword [esp + 0x10]
push str.malformed_pattern__missing___
push dword [eax + 0x10]
call fcn.10004170
nop
or eax, dword [ebp - 0x7a9defff]
add dword [eax], edx
push ss
test dword [ecx], eax
adc byte [esi], dl
test dword [ecx], eax
adc dl, bh
xchg dword [ecx], eax
adc byte [ebx], dh
mov byte [ecx], al
adc byte [ebx - 0x7a], bl
add dword [eax], edx
add byte [ebp - 0x7a00efff], 1
adc byte [esi], dl
test dword [ecx], eax
adc byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [ebx], al
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ecx]
add eax, dword [ebx]
add eax, dword [edx]
nop
cmpsb byte [esi], byte es:[edi]
mov byte [ecx], al
adc byte [ecx + 0x67100188], ah
mov dword [ecx], eax
adc byte [esi - 0x41effe79], dl
xchg dword [ecx], eax
adc byte [eax], al
add dword [edx + eax], eax
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 4
add al, 3
int3