Function at 0x665f1620
Capabilities:
Parse credit card information

Disassembly:
push ebp
mov ebp, edx
push edi
push esi
push ebx
sub esp, 0x4c
mov edi, dword [ecx]
mov dword [esp + 0x2c], eax
mov edx, edi
mov dword [esp + 0x30], ecx
and edx, 0x40
mov dword [esp + 0x10], edx
test ebp, ebp
je 0x665f194a
mov dword [esp], ebp
call sub.msvcrt.dll_strlen
mov edx, dword [esp + 0x10]
and eax, 0x3fffffff
lea ecx, [eax + 8]
mov esi, eax
mov ebx, ecx
sar ebx, 0x1f
test edx, edx
je 0x665f1718
cmp esi, 4
jle 0x665f1679
cmp dword [ebp], 0x656c6966
je 0x665f1775
mov eax, dword [0x6667ced0]
test eax, eax
jne 0x665f1750
mov dword [esp + 0x10], ecx
mov dword [esp + 0x14], ebx
call fcn.66587320
test eax, eax
jne 0x665f1738
call fcn.665cb300
mov ecx, dword [esp + 0x10]
mov ebx, dword [esp + 0x14]
test eax, eax
jne 0x665f1738
mov eax, ecx
mov edx, ebx
call fcn.6658bcf0
test eax, eax
je 0x665f1738
mov dword [eax], 0
lea ebx, [eax + 4]
test esi, esi
jne 0x665f1760
and edi, 0xffffffbf
mov dword [ebx + esi], 0
mov dword [esp + 0x10], edi
mov eax, dword [esp + 0x2c]
xor esi, esi
mov dword [esp], eax
call sym.libsqlite3_0.dll_sqlite3_vfs_find
mov edx, dword [esp + 0x60]
mov dword [edx], eax
test eax, eax
je 0x665f1958
mov eax, dword [esp + 0x30]
mov edx, dword [esp + 0x10]
mov dword [eax], edx
mov eax, dword [esp + 0x64]
mov dword [eax], ebx
add esp, 0x4c
mov eax, esi
pop ebx
pop esi
pop edi
pop ebp
ret
cmp byte [0x6667ce06], 0
je 0x665f1679
cmp esi, 4
jg 0x665f166c
jmp 0x665f1679
add esp, 0x4c
mov esi, 7
pop ebx
mov eax, esi
pop esi
pop edi
pop ebp
ret
lock or dword [esp], 0
jmp 0x665f16b0
mov dword [esp + 8], esi
mov dword [esp + 4], ebp
mov dword [esp], ebx
call sub.msvcrt.dll_memcpy
jmp 0x665f16ce
cmp byte [ebp + 4], 0x3a
jne 0x665f1679
mov dword [esp + 0x1c], 0
or edi, 0x40
add esi, ebp
mov dword [esp + 0x10], edi
mov edi, ebp
lea esi, [esi]
xor eax, eax
cmp byte [edi], 0x26
sete al
xor edx, edx
add ecx, eax
adc ebx, edx
add edi, 1
cmp esi, edi
jne 0x665f1798
mov edx, dword [0x6667ced0]
test edx, edx
jne 0x665f1be0
mov dword [esp + 0x20], ecx
mov dword [esp + 0x24], ebx
call fcn.66587320
mov ecx, dword [esp + 0x20]
mov ebx, dword [esp + 0x24]
test eax, eax
jne 0x665f1738
mov dword [esp + 0x20], ecx
mov dword [esp + 0x24], ebx
call fcn.665cb300
mov ecx, dword [esp + 0x20]
mov ebx, dword [esp + 0x24]
test eax, eax
jne 0x665f1738
mov eax, ecx
mov edx, ebx
call fcn.6658bcf0
test eax, eax
je 0x665f1738
mov dword [eax], 0
lea ebx, [eax + 4]
movzx eax, byte [ebp + 5]
cmp al, 0x2f
je 0x665f1c09
test al, al
mov ecx, 5
mov esi, 5
setne dl
cmp al, 0x23
je 0x665f1d8b
test dl, dl
je 0x665f1d8b
xor edi, edi
mov dword [esp + 0x20], esi
mov esi, dword [esp + 0x1c]
mov dword [esp + 0x34], ebp
mov ebp, edi
mov dword [esp + 0x3c], ecx
mov dword [esp + 0x1c], ebx
jmp 0x665f18a7
cmp ebp, 1
je 0x665f19f0
mov edi, dword [esp + 0x1c]
add esi, 1
lea ecx, [edi + esi]
mov dword [esp + 0x38], ecx
test ebp, ebp
jne 0x665f19c2
cmp al, 0x3f
jne 0x665f19c2
mov ebp, 1
xor eax, eax
mov ecx, dword [esp + 0x28]
mov dword [esp + 0x3c], edx
mov dword [esp + 0x20], edx
mov byte [ecx], al
movzx eax, byte [ebx]
cmp al, 0x23
je 0x665f1a42
test al, al
je 0x665f1a42
mov ecx, dword [esp + 0x20]
mov edi, dword [esp + 0x1c]
lea edx, [ecx + 1]
mov ecx, dword [esp + 0x34]
lea ebx, [ecx + edx]
lea ecx, [edi + esi]
mov dword [esp + 0x28], ecx
cmp al, 0x25
jne 0x665f1858
movzx ecx, byte [ebx]
mov byte [esp + 0x38], cl
test byte [ecx + 0x66690980], 8
je 0x665f19b0
mov ecx, dword [esp + 0x34]
mov edi, dword [esp + 0x3c]
movzx edi, byte [ecx + edi + 2]
mov ecx, edi
test byte [edi + 0x66690980], 8
je 0x665f19b0
movsx edx, byte [esp + 0x38]
movsx ecx, cl
mov eax, edx
sar eax, 6
and eax, 1
lea eax, [eax + eax*8]
add eax, edx
mov edx, dword [esp + 0x20]
and eax, 0xf
shl eax, 4
add edx, 3
mov edi, eax
mov eax, ecx
sar eax, 6
and eax, 1
lea eax, [eax + eax*8]
add eax, ecx
mov ecx, dword [esp + 0x34]
and eax, 0xf
lea ebx, [ecx + edx]
add eax, edi
je 0x665f1d3a
mov ecx, dword [esp + 0x1c]
add esi, 1
lea edi, [ecx + esi]
mov dword [esp + 0x38], edi
jmp 0x665f1886
mov ecx, 8
xor ebx, ebx
xor esi, esi
jmp 0x665f1679
mov eax, dword [esp + 0x2c]
mov dword [esp], str.no_such_vfs:__s
mov esi, 1
mov dword [esp + 4], eax
call sym.libsqlite3_0.dll_sqlite3_mprintf
mov edx, dword [esp + 0x68]
mov dword [edx], eax
jmp 0x665f1983
sub ebx, 1
cmp byte [ebx - 1], 0
jne 0x665f1980
cmp byte [ebx - 2], 0
jne 0x665f1980
cmp byte [ebx - 3], 0
jne 0x665f1980
cmp byte [ebx - 4], 0
jne 0x665f1980
sub ebx, 4
mov dword [esp], ebx
xor ebx, ebx
call sym.libsqlite3_0.dll_sqlite3_free
jmp 0x665f16f8
cmp ebp, 1
je 0x665f1a2a
mov edi, dword [esp + 0x1c]
add esi, 1
add edi, esi
mov dword [esp + 0x38], edi
cmp ebp, 2
jne 0x665f1886
cmp al, 0x26
sete cl
test cl, cl
mov ecx, 1
cmovne ebp, ecx
mov ecx, 0
cmovne eax, ecx
jmp 0x665f1886
cmp al, 0x26
je 0x665f19f8
cmp al, 0x3d
jne 0x665f1a2a
mov edi, dword [esp + 0x1c]
cmp byte [edi + esi - 1], 0
je 0x665f1cdf
mov edi, dword [esp + 0x1c]
lea ecx, [esi + 1]
add edi, ecx
mov dword [esp + 0x38], edi
cmp al, 0x26
je 0x665f1bea
mov esi, ecx
mov ebp, 2
xor eax, eax
jmp 0x665f1886
mov ecx, dword [esp + 0x1c]
add esi, 1
mov ebp, 1
lea edi, [ecx + esi]
mov dword [esp + 0x38], edi
jmp 0x665f1886
mov ebx, dword [esp + 0x1c]
mov dword [esp + 0x1c], esi
mov edi, ebp
cmp edi, 1
je 0x665f1c9b
mov eax, dword [esp + 0x38]
mov dword [eax], 0
mov dword [esp], ebx
call sub.msvcrt.dll_strlen
and eax, 0x3fffffff
lea ebp, [ebx + eax + 1]
cmp byte [ebp], 0
je 0x665f16dc
mov dword [esp + 0x28], ebx
mov ebx, ebp
mov dword [esp], ebx
call sub.msvcrt.dll_strlen
and eax, 0x3fffffff
lea edi, [ebx + eax + 1]
mov ebp, eax
mov dword [esp], edi
call sub.msvcrt.dll_strlen
and eax, 0x3fffffff
mov esi, eax
cmp ebp, 3
je 0x665f1b60
cmp ebp, 5
je 0x665f1bb0
cmp ebp, 4
jne 0x665f1b49
cmp dword [ebx], 0x65646f6d
jne 0x665f1b49
mov eax, dword [esp + 0x10]
mov dword [esp + 0x20], 0x87
mov ebp, 0x6667c540
mov dword [esp + 0x34], 0x66681750
and eax, 0x87
mov dword [esp + 0x1c], eax
jmp 0x665f1af3
add ebp, 8
mov ebx, dword [ebp]
test ebx, ebx
je 0x665f1b80
mov dword [esp], ebx
call sub.msvcrt.dll_strlen
and eax, 0x3fffffff
cmp esi, eax
jne 0x665f1af0
mov dword [esp + 8], esi
mov dword [esp + 4], ebx
mov dword [esp], edi
call sub.msvcrt.dll_memcmp
test eax, eax
jne 0x665f1af0
mov eax, dword [ebp + 4]
test eax, eax
je 0x665f1b80
mov edx, eax
and dl, 0x7f
cmp edx, dword [esp + 0x1c]
jg 0x665f1cb3
mov ebp, dword [esp + 0x20]
not ebp
and ebp, dword [esp + 0x10]
or eax, ebp
mov dword [esp + 0x10], eax
lea ebx, [edi + esi + 1]
cmp byte [ebx], 0
jne 0x665f1a80
mov ebx, dword [esp + 0x28]
jmp 0x665f16dc
cmp word [ebx], 0x6676
jne 0x665f1b49
mov eax, dword [esp + 0x2c]
cmp byte [ebx + 2], 0x73
cmove eax, edi
mov dword [esp + 0x2c], eax
jmp 0x665f1b49
mov eax, dword [esp + 0x34]
mov dword [esp + 8], edi
mov esi, 1
mov dword [esp], str.no_such__s_mode:__s
mov ebx, dword [esp + 0x28]
mov dword [esp + 4], eax
call sym.libsqlite3_0.dll_sqlite3_mprintf
mov edx, dword [esp + 0x68]
mov dword [edx], eax
jmp 0x665f1983
cmp dword [ebx], 0x68636163
jne 0x665f1b49
cmp byte [ebx + 4], 0x65
jne 0x665f1b49
mov dword [esp + 0x1c], 0x60000
mov ebp, 0x6667c568
mov dword [esp + 0x20], 0x60000
mov dword [esp + 0x34], str.cache
jmp 0x665f1af3
lock or dword [esp], 0
jmp 0x665f17f5
mov eax, dword [esp + 0x28]
add esi, 2
mov dword [esp + 0x28], edi
mov byte [eax], 0
mov eax, dword [esp + 0x1c]
add eax, esi
mov dword [esp + 0x38], eax
xor eax, eax
jmp 0x665f1886
cmp byte [ebp + 6], 0x2f
mov esi, 5
mov ecx, 5
jne 0x665f183a
movzx eax, byte [ebp + 7]
lea edi, [ebp + 7]
test al, al
setne cl
mov edx, ecx
cmp al, 0x2f
je 0x665f1df5
test cl, cl
je 0x665f1df5
mov esi, 7
jmp 0x665f1c46
cmp al, 0x2f
je 0x665f1c54
mov edx, esi
add esi, 1
movzx eax, byte [ebp + esi]
test al, al
jne 0x665f1c42
cmp esi, 0x10
jne 0x665f1c66
cmp dword [ebp + 7], 0x61636f6c
je 0x665f1dcb
sub edx, 6
mov dword [esp + 8], edi
mov esi, 1
mov dword [esp + 4], edx
mov dword [esp], str.invalid_uri_authority:__.s
call sym.libsqlite3_0.dll_sqlite3_mprintf
mov edx, dword [esp + 0x68]
mov dword [edx], eax
jmp 0x665f1983
mov eax, dword [esp + 0x28]
mov dword [esp + 0x1c], esi
mov ebx, edi
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x38]
mov byte [eax], 0
mov eax, dword [esp + 0x1c]
lea eax, [ebx + eax + 1]
mov dword [esp + 0x38], eax
jmp 0x665f1a55
mov eax, dword [esp + 0x34]
mov dword [esp + 8], edi
mov esi, 3
mov dword [esp], str._s_mode_not_allowed:__s
mov ebx, dword [esp + 0x28]
mov dword [esp + 4], eax
call sym.libsqlite3_0.dll_sqlite3_mprintf
mov edx, dword [esp + 0x68]
mov dword [edx], eax
jmp 0x665f1983
movzx eax, byte [ebx]
cmp al, 0x23
je 0x665f1e04
test al, al
je 0x665f1e04
mov edi, dword [esp + 0x1c]
mov ebx, dword [esp + 0x34]
jmp 0x665f1d13
add edx, 1
movzx eax, byte [ebx + edx]
test al, al
je 0x665f1c8d
cmp al, 0x23
je 0x665f1c8d
cmp byte [ebx + edx - 1], 0x26
jne 0x665f1d00
mov dword [esp + 0x1c], edi
mov eax, dword [esp + 0x34]
mov dword [esp + 0x3c], edx
mov dword [esp + 0x20], edx
lea ebx, [eax + edx]
mov eax, dword [esp + 0x28]
mov dword [esp + 0x38], eax
jmp 0x665f1894
movzx eax, byte [ebx]
cmp al, 0x23
je 0x665f1e19
test al, al
je 0x665f1e19
test ebp, ebp
mov edi, dword [esp + 0x1c]
mov ebx, dword [esp + 0x34]
setne cl
jmp 0x665f1d74
cmp ebp, 2
jne 0x665f1d65
cmp al, 0x26
je 0x665f1d85
add edx, 1
movzx eax, byte [ebx + edx]
test al, al
je 0x665f1d94
cmp al, 0x23
je 0x665f1d94
cmp al, 0x3f
jne 0x665f1d7c
test cl, cl
je 0x665f1da9
cmp ebp, 1
jne 0x665f1d5c
cmp al, 0x3d
jne 0x665f1d61
mov dword [esp + 0x1c], edi
jmp 0x665f1d1e
mov dword [esp + 0x38], ebx
jmp 0x665f1a55
mov eax, dword [esp + 0x28]
mov ebx, edi
mov dword [esp + 0x1c], esi
mov edi, ebp
mov dword [esp + 0x38], eax
jmp 0x665f1a4c
mov eax, dword [esp + 0x34]
mov dword [esp + 0x1c], edi
xor ebp, ebp
mov dword [esp + 0x3c], edx
lea ebx, [eax + edx]
mov eax, dword [esp + 0x28]
mov dword [esp + 0x20], edx
mov dword [esp + 0x38], eax
jmp 0x665f1894
cmp dword [edi + 4], 0x736f686c
jne 0x665f1c66
cmp byte [edi + 8], 0x74
jne 0x665f1c66
movzx eax, byte [ebp + 0x10]
mov ecx, 0x10
test al, al
setne dl
jmp 0x665f182a
mov ecx, 7
mov esi, 7
jmp 0x665f182a
mov eax, dword [esp + 0x28]
mov ebx, dword [esp + 0x1c]
mov dword [esp + 0x1c], esi
mov dword [esp + 0x38], eax
jmp 0x665f1c9b
mov eax, dword [esp + 0x28]
mov ebx, dword [esp + 0x1c]
mov edi, ebp
mov dword [esp + 0x1c], esi
mov dword [esp + 0x38], eax
jmp 0x665f1a4c