Function at 0x1001ec1b
Capabilities:
Parse credit card information

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x14
push ebx
push esi
push edi
mov edi, edx
mov edx, ecx
mov dword [esp + 0x14], edi
mov dword [esp + 0x10], edx
mov esi, dword [edx + 0x10]
lea eax, [esi - 1]
mov dword [edx + 0x10], eax
test esi, esi
je 0x1001f143
mov edx, dword [edx + 8]
mov esi, dword [ebp + 8]
cmp esi, edx
je 0x1001eee8
mov cl, byte [esi]
movsx eax, cl
add eax, 0xffffffdc
cmp eax, 5
ja case.0x1001ec57.58
jmp dword [eax*4 + 0x1001f1b4]
lea eax, [esi + 1]
cmp eax, edx
je 0x1001ef21
lea eax, [esi + 1]
cmp cl, 0x25
je 0x1001ee36
cmp cl, 0x5b
je 0x1001ee0d
mov ebx, eax
jmp 0x1001ee41
mov bl, byte [esi + 1]
movsx eax, bl
add eax, 0xffffffd0
cmp eax, 0x36
ja case.0x1001ec57.58
movzx eax, byte [eax + 0x1001f1dc]
jmp dword [eax*4 + 0x1001f1cc]
lea ecx, [esi + 2]
lea eax, [edx - 1]
cmp ecx, eax
jae 0x1001f150
mov bl, byte [ecx]
cmp byte [edi], bl
jne 0x1001f075
mov dh, byte [ecx + 1]
lea eax, [edi + 1]
mov edi, dword [esp + 0x10]
mov ecx, 1
mov edi, dword [edi + 4]
cmp eax, edi
jae 0x1001f075
mov dl, byte [eax]
cmp dl, dh
jne 0x1001ecb5
sub ecx, 1
jne 0x1001ecba
lea edi, [eax + 1]
mov dword [esp + 0x14], edi
test edi, edi
je 0x1001eee8
add esi, 4
mov dword [ebp + 8], esi
jmp 0x1001ef02
cmp dl, bl
jne 0x1001ecba
inc ecx
inc eax
cmp eax, edi
jb 0x1001ec90
mov eax, dword [esp + 0x10]
xor edi, edi
inc dword [eax + 0x10]
mov eax, edi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
add esi, 2
cmp byte [esi], 0x5b
jne 0x1001f172
xor eax, eax
cmp byte [esi + 1], 0x5e
sete al
inc eax
add eax, esi
nop dword [eax]
cmp eax, edx
je 0x1001f161
mov cl, byte [eax]
inc eax
cmp cl, 0x25
jne 0x1001ed05
cmp eax, edx
jae 0x1001ed05
inc eax
cmp byte [eax], 0x5d
jne 0x1001ecf0
lea ebx, [eax + 1]
mov eax, dword [esp + 0x10]
cmp edi, dword [eax]
jne 0x1001ed19
xor al, al
jmp 0x1001ed1c
mov al, byte [edi - 1]
lea ecx, [ebx - 1]
mov edx, esi
push ecx
movzx ecx, al
call fcn.1001eaf0
add esp, 4
test eax, eax
jne 0x1001f075
movzx ecx, byte [edi]
lea eax, [ebx - 1]
push eax
mov edx, esi
call fcn.1001eaf0
add esp, 4
test eax, eax
je 0x1001f075
mov esi, ebx
mov dword [ebp + 8], esi
jmp 0x1001ef02
mov edx, dword [esp + 0x10]
movzx ecx, bl
sub ecx, 0x31
js 0x1001f183
movzx eax, byte [edx + 0x14]
cmp ecx, eax
jge 0x1001f183
mov ebx, dword [edx + ecx*8 + 0x1c]
cmp ebx, 0xffffffff
je 0x1001f183
mov eax, dword [edx + 4]
sub eax, edi
cmp eax, ebx
jb 0x1001f075
mov ecx, dword [edx + ecx*8 + 0x18]
mov esi, ebx
mov edx, edi
sub esi, 4
jb 0x1001edb1
nop dword [eax + eax]
mov eax, dword [ecx]
cmp eax, dword [edx]
jne 0x1001edb6
add ecx, 4
add edx, 4
sub esi, 4
jae 0x1001eda0
cmp esi, 0xfffffffc
je 0x1001edf3
mov al, byte [ecx]
cmp al, byte [edx]
jne 0x1001f075
cmp esi, 0xfffffffd
je 0x1001edf3
mov al, byte [ecx + 1]
cmp al, byte [edx + 1]
jne 0x1001f075
cmp esi, 0xfffffffe
je 0x1001edf3
mov al, byte [ecx + 2]
cmp al, byte [edx + 2]
jne 0x1001f075
cmp esi, 0xffffffff
je 0x1001edf3
mov al, byte [ecx + 3]
cmp al, byte [edx + 3]
jne 0x1001f075
add edi, ebx
mov dword [esp + 0x14], edi
je 0x1001eee8
mov esi, dword [ebp + 8]
add esi, 2
mov dword [ebp + 8], esi
jmp 0x1001ef02
xor ecx, ecx
cmp byte [eax], 0x5e
sete cl
inc ecx
add ecx, esi
cmp ecx, edx
je 0x1001f1a1
mov al, byte [ecx]
inc ecx
cmp al, 0x25
jne 0x1001ee2c
cmp ecx, edx
jae 0x1001ee2c
inc ecx
cmp byte [ecx], 0x5d
jne 0x1001ee18
lea ebx, [ecx + 1]
jmp 0x1001ee41
cmp eax, edx
je 0x1001f132
lea ebx, [esi + 2]
mov eax, dword [esp + 0x10]
cmp edi, dword [eax + 4]
jb 0x1001ee4e
xor ecx, ecx
jmp 0x1001ee95
mov dl, byte [esi]
movzx ecx, byte [edi]
mov al, dl
mov dword [esp + 0x18], ecx
cmp al, 0x25
je 0x1001ee8a
cmp al, 0x2e
je 0x1001ee83
cmp al, 0x5b
je 0x1001ee73
movzx eax, dl
xor ecx, ecx
cmp eax, dword [esp + 0x18]
sete cl
jmp 0x1001ee95
lea eax, [ebx - 1]
mov edx, esi
push eax
call fcn.1001eaf0
add esp, 4
jmp 0x1001ee93
mov ecx, 1
jmp 0x1001ee95
movzx edx, byte [esi + 1]
call fcn.1001e9b0
mov ecx, eax
mov al, byte [ebx]
test ecx, ecx
jne 0x1001eeb3
cmp al, 0x2a
je 0x1001eeab
cmp al, 0x3f
je 0x1001eeab
cmp al, 0x2d
jne 0x1001f075
lea esi, [ebx + 1]
mov dword [ebp + 8], esi
jmp 0x1001ef02
movsx eax, al
add eax, 0xffffffd6
cmp eax, 0x15
ja case.0x1001eec5.44
movzx eax, byte [eax + 0x1001f228]
jmp dword [eax*4 + 0x1001f214]
mov ecx, dword [esp + 0x10]
lea esi, [ebx + 1]
push esi
lea edx, [edi + 1]
mov dword [ebp + 8], esi
call fcn.1001ebd0
add esp, 4
test eax, eax
je 0x1001ef02
mov edi, eax
mov eax, dword [esp + 0x10]
inc dword [eax + 0x10]
mov eax, edi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
inc edi
mov dword [ebp + 8], ebx
mov dword [esp + 0x14], edi
mov esi, ebx
mov edx, dword [esp + 0x10]
mov edx, dword [edx + 8]
cmp esi, edx
jne 0x1001ec07
mov eax, dword [esp + 0x10]
inc dword [eax + 0x10]
mov eax, edi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov ecx, dword [esp + 0x10]
xor eax, eax
cmp edi, dword [ecx + 4]
cmove eax, edi
mov edi, eax
mov eax, ecx
inc dword [eax + 0x10]
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 [esi + 1], 0x29
mov edx, edi
setne al
add eax, 0xfffffffe
push eax
xor eax, eax
cmp byte [esi + 1], 0x29
sete al
inc eax
add eax, esi
push eax
call fcn.1001eb80
mov edi, eax
add esp, 8
mov eax, dword [esp + 0x10]
inc dword [eax + 0x10]
mov eax, edi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov edx, dword [esp + 0x10]
movzx ecx, byte [edx + 0x14]
sub ecx, 1
js 0x1001f194
lea eax, [edx + 0x1c]
lea eax, [eax + ecx*8]
nop
cmp dword [eax], 0xffffffff
je 0x1001efa3
sub eax, 8
sub ecx, 1
js 0x1001f194
jmp 0x1001ef90
lea ebx, [edx + ecx*8]
mov eax, edi
sub eax, dword [edx + ecx*8 + 0x18]
mov edx, edi
mov ecx, dword [esp + 0x10]
mov dword [ebx + 0x1c], eax
lea eax, [esi + 1]
push eax
call fcn.1001ebd0
mov edi, eax
add esp, 4
test edi, edi
jne 0x1001eee8
mov eax, dword [esp + 0x10]
mov dword [ebx + 0x1c], 0xffffffff
inc dword [eax + 0x10]
mov eax, edi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
inc edi
mov dword [esp + 0x14], edi
mov edx, edi
xor esi, esi
mov edi, dword [ebp + 8]
mov eax, dword [esp + 0x10]
mov dword [esp + 0x18], edx
cmp edx, dword [eax + 4]
jae 0x1001f04d
mov al, byte [edi]
movzx ecx, byte [edx]
mov dword [esp + 0x1c], ecx
mov byte [esp + 0xf], al
cmp al, 0x25
je 0x1001f032
cmp al, 0x2e
je 0x1001f045
cmp al, 0x5b
je 0x1001f022
movzx eax, al
xor ecx, ecx
cmp eax, dword [esp + 0x1c]
sete cl
jmp 0x1001f041
lea eax, [ebx - 1]
mov edx, edi
push eax
call fcn.1001eaf0
add esp, 4
jmp 0x1001f03b
movzx edx, byte [edi + 1]
call fcn.1001e9b0
mov edx, dword [esp + 0x18]
mov ecx, eax
test ecx, ecx
je 0x1001f049
inc esi
inc edx
jmp 0x1001efee
mov eax, dword [esp + 0x10]
mov edi, dword [esp + 0x14]
test esi, esi
js 0x1001f075
inc ebx
push ebx
lea edx, [esi + edi]
mov ecx, eax
call fcn.1001ebd0
add esp, 4
test eax, eax
jne 0x1001eee6
sub esi, 1
mov eax, dword [esp + 0x10]
jns 0x1001f056
mov eax, dword [esp + 0x10]
xor edi, edi
inc dword [eax + 0x10]
mov eax, edi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov ecx, dword [esp + 0x10]
lea eax, [ebx + 1]
push eax
mov edx, edi
mov dword [esp + 0x18], edi
call fcn.1001ebd0
mov edi, eax
add esp, 4
test edi, edi
jne 0x1001eee8
nop word [eax + eax]
mov eax, dword [esp + 0x10]
mov edx, dword [esp + 0x14]
cmp edx, dword [eax + 4]
jae 0x1001f075
mov cl, byte [esi]
movzx edi, byte [edx]
mov al, cl
cmp al, 0x25
je 0x1001f0ee
cmp al, 0x2e
je 0x1001f107
cmp al, 0x5b
je 0x1001f0dc
movzx eax, cl
xor ecx, ecx
cmp eax, edi
sete cl
jmp 0x1001f0ff
lea eax, [ebx - 1]
mov edx, esi
push eax
mov ecx, edi
call fcn.1001eaf0
add esp, 4
jmp 0x1001f0f9
movzx edx, byte [esi + 1]
mov ecx, edi
call fcn.1001e9b0
mov edx, dword [esp + 0x14]
mov ecx, eax
test ecx, ecx
je 0x1001f075
mov ecx, dword [esp + 0x10]
lea eax, [ebx + 1]
inc edx
push eax
mov dword [esp + 0x18], edx
call fcn.1001ebd0
mov edi, eax
add esp, 4
test edi, edi
je 0x1001f0b0
mov eax, dword [esp + 0x10]
inc dword [eax + 0x10]
mov eax, edi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [esp + 0x10]
push str.malformed_pattern__ends_with____
push dword [eax + 0xc]
call sym.lua53.dll_luaL_error
push str.pattern_too_complex
push dword [edx + 0xc]
call sym.lua53.dll_luaL_error
mov eax, dword [esp + 0x10]
push str.malformed_pattern__missing_arguments_to___b_
push dword [eax + 0xc]
call sym.lua53.dll_luaL_error
mov eax, dword [esp + 0x10]
push str.malformed_pattern__missing___
push dword [eax + 0xc]
call sym.lua53.dll_luaL_error
mov eax, dword [esp + 0x10]
push str.missing___after___f_in_pattern
push dword [eax + 0xc]
call sym.lua53.dll_luaL_error
lea eax, [ecx + 1]
push eax
push str.invalid_capture_index____d
push dword [edx + 0xc]
call sym.lua53.dll_luaL_error
push str.invalid_pattern_capture
push dword [edx + 0xc]
call sym.lua53.dll_luaL_error
mov eax, dword [esp + 0x10]
push str.malformed_pattern__missing___
push dword [eax + 0xc]
call sym.lua53.dll_luaL_error
nop
sbb ebp, esp
add dword [eax], edx
inc edx
in al, dx
add dword [eax], edx
in al, dx
add dword [eax], edx
in al, dx
add dword [eax], edx
cmp eax, 0x771001ef
out dx, eax
add dword [eax], edx
pop eax
in eax, dx
add dword [eax], edx
pop esi
in al, dx
add dword [eax], edx
shr esp, 1
add dword [eax], edx
in al, dx
add dword [eax], edx
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], 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 [ebx]
add dword [ebx], eax
add eax, dword [ebx]
add dl, byte [eax + case.0x1001eec5.42]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ecx]
add eax, dword [ebx]
add eax, dword [edx]
nop
out 0xef, eax
add dword [eax], edx
loop 0x1001f209
add dword [eax], edx
xchg eax, esi
add dword [eax], edx
int3