Function at 0x60c67e
Capabilities:
Parse credit card information

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffbb8
xor eax, eax
xor edx, edx
xor ecx, ecx
push ebx
push esi
push edi
mov edi, 3
mov esi, dword [ebp + 0x10]
mov dword [ebp - 8], eax
mov dword [ebp - 0xc], edx
xor eax, eax
mov dword [ebp - 0x10], ecx
mov dword [ebp - 0x18], eax
test esi, esi
jne 0x60c01b
xor eax, eax
jmp 0x60c965
xor edx, edx
mov dword [esi], edx
cmp dword [ebp + 0x14], 0
jne 0x60c032
mov dword [esi], str.erroffset_passed_as_NULL
xor eax, eax
jmp 0x60c965
mov edx, dword [ebp + 0x14]
xor ecx, ecx
mov dword [edx], ecx
test dword [ebp + 0xc], 0xfffffd80
je 0x60c04f
mov dword [esi], str.unknown_option_bit_s__set
xor eax, eax
jmp 0x60c965
cmp dword [ebp + 0x18], 0
jne 0x60c05c
mov dword [ebp + 0x18], 0x628ac8
mov edx, dword [ebp + 0x18]
mov dword [ebp - 0x60], edx
mov ecx, dword [ebp + 0x18]
add ecx, 0x100
mov dword [ebp - 0x5c], ecx
mov eax, dword [ebp + 0x18]
add eax, 0x200
mov dword [ebp - 0x58], eax
mov edx, dword [ebp + 0x18]
add edx, 0x260
mov dword [ebp - 0x54], edx
mov ecx, dword [ebp + 8]
dec ecx
mov dword [ebp - 0x20], ecx
mov eax, dword [ebp - 0x18]
lea edx, [ebp + eax*4 - 0x380]
mov dword [ebp - 0x50], edx
mov ecx, dword [ebp - 0x18]
lea eax, [ebp + ecx - 0x448]
mov dword [ebp - 0x4c], eax
jmp 0x60c811
test byte [ebp + 0xc], 8
je 0x60c0d4
mov edx, dword [ebp - 0x54]
test byte [edx + ebx], 1
jne 0x60c08c
cmp ebx, 0x23
jne 0x60c0d4
inc dword [ebp - 0x20]
mov ecx, dword [ebp - 0x20]
xor ebx, ebx
mov bl, byte [ecx]
test ebx, ebx
je 0x60c08c
cmp ebx, 0xa
jne 0x60c0bf
jmp 0x60c08c
mov eax, ebx
cmp eax, 0x3f
jg 0x60c120
je case.0x60c0ed.36
add eax, 0xffffffdc
cmp eax, 0xa
ja case.0x60c0ed.37
jmp dword [eax*4 + 0x60c0f4]
cmp eax, 0x5e
jg 0x60c13c
je case.0x60c0ed.36
sub eax, 0x5b
je 0x60c2e9
dec eax
je 0x60c151
jmp case.0x60c0ed.37
sub eax, 0x7b
je 0x60c242
dec eax
je 0x60c2dc
jmp case.0x60c0ed.37
mov edx, dword [ebp - 0x20]
lea ecx, [ebp - 0x60]
mov dword [ebp - 0x2c], edx
push ecx
push 0
lea ecx, [ebp - 0x20]
mov eax, dword [ebp + 0xc]
push eax
mov edx, dword [ebp - 8]
push edx
push esi
push ecx
call fcn.0060aa54
add esp, 0x18
mov ebx, eax
cmp dword [esi], 0
jne 0x60c900
test ebx, ebx
jl 0x60c191
mov eax, dword [ebp - 0x2c]
mov ebx, 0x5c
mov dword [ebp - 0x20], eax
jmp case.0x60c0ed.37
inc edi
cmp ebx, 0xfffffff4
jg 0x60c08c
mov eax, ebx
neg eax
add eax, 0xfffffff4
cmp eax, dword [ebp - 0xc]
jle 0x60c1aa
mov dword [ebp - 0xc], eax
inc edi
mov edx, dword [ebp - 0x20]
xor ecx, ecx
mov cl, byte [edx + 1]
cmp ecx, 0x7b
jne 0x60c08c
lea eax, [ebp - 0x60]
push eax
mov edx, dword [ebp - 0x20]
add edx, 2
push edx
call fcn.0060ac04
add esp, 8
test eax, eax
je 0x60c08c
lea ecx, [ebp - 0x60]
lea eax, [ebp - 0x28]
push ecx
push esi
push eax
lea edx, [ebp - 0x24]
push edx
mov ecx, dword [ebp - 0x20]
add ecx, 2
push ecx
call fcn.0060aca0
add esp, 0x14
mov dword [ebp - 0x20], eax
cmp dword [esi], 0
jne 0x60c900
cmp dword [ebp - 0x24], 0
jne 0x60c211
cmp dword [ebp - 0x28], 1
je 0x60c21d
cmp dword [ebp - 0x28], 0xffffffff
je 0x60c21d
cmp dword [ebp - 0x24], 1
jne 0x60c220
cmp dword [ebp - 0x28], 0xffffffff
jne 0x60c220
inc edi
jmp 0x60c223
add edi, 5
mov eax, dword [ebp - 0x20]
xor edx, edx
mov dl, byte [eax + 1]
cmp edx, 0x3f
jne 0x60c08c
inc dword [ebp - 0x20]
jmp 0x60c08c
inc edi
jmp 0x60c08c
lea ecx, [ebp - 0x60]
push ecx
mov ecx, dword [ebp - 0x20]
inc ecx
push ecx
call fcn.0060ac04
add esp, 8
test eax, eax
je case.0x60c0ed.37
lea eax, [ebp - 0x60]
lea edx, [ebp - 0x28]
push eax
push esi
push edx
lea eax, [ebp - 0x24]
push eax
mov edx, dword [ebp - 0x20]
inc edx
push edx
call fcn.0060aca0
add esp, 0x14
mov dword [ebp - 0x20], eax
cmp dword [esi], 0
jne 0x60c900
cmp dword [ebp - 0x24], 0
jne 0x60c293
cmp dword [ebp - 0x28], 1
je 0x60c29f
cmp dword [ebp - 0x28], 0xffffffff
je 0x60c29f
cmp dword [ebp - 0x24], 1
jne 0x60c2a2
cmp dword [ebp - 0x28], 0xffffffff
jne 0x60c2a2
inc edi
jmp 0x60c2c3
dec edi
cmp dword [ebp - 0x24], 1
jne 0x60c2ac
inc edi
jmp 0x60c2b5
cmp dword [ebp - 0x24], 0
jle 0x60c2b5
add edi, 4
cmp dword [ebp - 0x28], 0
jle 0x60c2c0
add edi, 4
jmp 0x60c2c3
add edi, 2
mov ecx, dword [ebp - 0x20]
xor eax, eax
mov al, byte [ecx + 1]
cmp eax, 0x3f
jne 0x60c08c
inc dword [ebp - 0x20]
jmp 0x60c08c
mov edx, dword [ebp - 0x10]
add edx, 3
add edi, edx
jmp 0x60c08c
xor ebx, ebx
inc dword [ebp - 0x20]
mov eax, dword [ebp - 0x20]
xor edx, edx
mov dl, byte [eax]
cmp edx, 0x5e
jne 0x60c2fd
inc dword [ebp - 0x20]
mov ecx, dword [ebp - 0x20]
movzx ecx, byte [ecx]
cmp ecx, 0x5c
jne 0x60c33d
lea eax, [ebp - 0x60]
push eax
push 1
mov edx, dword [ebp + 0xc]
lea eax, [ebp - 0x20]
push edx
mov ecx, dword [ebp - 8]
push ecx
push esi
push eax
call fcn.0060aa54
add esp, 0x18
cmp dword [esi], 0
jne 0x60c900
neg eax
cmp eax, 3
jne 0x60c336
inc ebx
jmp 0x60c33e
mov ebx, 0xa
jmp 0x60c33e
inc ebx
inc dword [ebp - 0x20]
mov eax, dword [ebp - 0x20]
mov al, byte [eax]
test al, al
je 0x60c353
xor edx, edx
mov dl, al
cmp edx, 0x5d
jne 0x60c2fd
dec ebx
jne 0x60c35e
add edi, 3
jmp 0x60c08c
add edi, 0x21
mov ecx, dword [ebp - 0x20]
cmp byte [ecx], 0
je 0x60c08c
mov eax, dword [ebp - 0x20]
xor edx, edx
mov dl, byte [eax + 1]
cmp edx, 0x7b
jne 0x60c08c
lea ecx, [ebp - 0x60]
push ecx
mov eax, dword [ebp - 0x20]
add eax, 2
push eax
call fcn.0060ac04
add esp, 8
test eax, eax
je 0x60c08c
lea edx, [ebp - 0x60]
lea ecx, [ebp - 0x28]
push edx
push esi
push ecx
lea eax, [ebp - 0x24]
push eax
mov edx, dword [ebp - 0x20]
add edx, 2
push edx
call fcn.0060aca0
add esp, 0x14
mov dword [ebp - 0x20], eax
cmp dword [esi], 0
jne 0x60c900
cmp dword [ebp - 0x24], 0
jne 0x60c3d3
cmp dword [ebp - 0x28], 1
je 0x60c3df
cmp dword [ebp - 0x28], 0xffffffff
je 0x60c3df
cmp dword [ebp - 0x24], 1
jne 0x60c3e2
cmp dword [ebp - 0x28], 0xffffffff
jne 0x60c3e2
inc edi
jmp 0x60c3e5
add edi, 5
mov ecx, dword [ebp - 0x20]
xor eax, eax
mov al, byte [ecx + 1]
cmp eax, 0x3f
jne 0x60c08c
inc dword [ebp - 0x20]
jmp 0x60c08c
xor edx, edx
mov dword [ebp - 0x14], edx
mov ecx, dword [ebp - 0x20]
xor eax, eax
mov al, byte [ecx + 1]
cmp eax, 0x3f
jne 0x60c649
mov edx, dword [ebp - 0x20]
xor ebx, ebx
mov bl, byte [edx + 2]
add ebx, 0xffffffdf
cmp ebx, 0x1d
ja case.0x60c42e.33
mov bl, byte [ebx + 0x60c435]
jmp dword [ebx*4 + 0x60c453]
add dword [ebp - 0x20], 3
jmp 0x60c470
inc dword [ebp - 0x20]
mov eax, dword [ebp - 0x20]
mov al, byte [eax]
test al, al
je 0x60c482
xor edx, edx
mov dl, al
cmp edx, 0x29
jne 0x60c46d
mov ecx, dword [ebp - 0x20]
cmp byte [ecx], 0
jne 0x60c08c
mov dword [esi], str.missing___after_comment
jmp 0x60c900
add dword [ebp - 0x20], 2
jmp 0x60c64c
mov eax, dword [ebp - 0x20]
movzx eax, byte [eax + 3]
cmp eax, 0x3d
je 0x60c4b8
cmp eax, 0x21
jne 0x60c4cb
add dword [ebp - 0x20], 3
mov dword [ebp - 0x14], 3
add edi, 3
jmp 0x60c64c
mov dword [esi], str.unrecognized_character_after____
jmp 0x60c900
mov edx, dword [ebp - 0x20]
xor ecx, ecx
mov cl, byte [edx + 3]
mov ebx, dword [ebp - 0x54]
test byte [ebx + ecx], 4
je 0x60c523
add dword [ebp - 0x20], 4
add edi, 2
jmp 0x60c4f3
inc dword [ebp - 0x20]
mov eax, dword [ebp - 0x20]
xor edx, edx
mov dl, byte [eax]
mov ecx, dword [ebp - 0x54]
test byte [ecx + edx], 4
jne 0x60c4f0
mov eax, dword [ebp - 0x20]
xor edx, edx
mov dl, byte [eax]
cmp edx, 0x29
je 0x60c64c
mov dword [esi], str.malformed_number_after____
jmp 0x60c900
inc dword [ebp - 0x20]
mov ecx, dword [ebp - 0x20]
xor eax, eax
mov al, byte [ecx + 2]
cmp eax, 0x3f
jne 0x60c551
mov edx, dword [ebp - 0x20]
xor ecx, ecx
mov cl, byte [edx + 3]
push ecx
push 0x629128
call fcn.006001a4
add esp, 8
test eax, eax
jne 0x60c64c
add dword [ebp - 0x20], 2
mov dword [esi], str.assertion_expected_after____
jmp 0x60c900
xor eax, eax
mov dword [ebp - 0x34], eax
mov dword [ebp - 0x30], eax
add dword [ebp - 0x20], 2
lea eax, [ebp - 0x30]
mov edx, dword [ebp - 0x20]
xor ebx, ebx
mov bl, byte [edx]
mov edx, ebx
cmp edx, 0x58
jg 0x60c59a
je 0x60c5c4
sub edx, 0x29
je 0x60c5d6
sub edx, 4
je 0x60c5d1
sub edx, 0xd
je 0x60c5f4
sub edx, 0x1b
je 0x60c5c9
jmp 0x60c60a
sub edx, 0x69
je 0x60c5b0
sub edx, 4
je 0x60c5b5
sub edx, 6
je 0x60c5ba
sub edx, 5
je 0x60c5bf
jmp 0x60c60a
or dword [eax], 1
jmp 0x60c615
or dword [eax], 2
jmp 0x60c615
or dword [eax], 4
jmp 0x60c615
or dword [eax], 8
jmp 0x60c615
or dword [eax], 0x40
jmp 0x60c615
or dword [eax], 0x200
jmp 0x60c615
lea eax, [ebp - 0x34]
jmp 0x60c615
cmp dword [ebp - 0x18], 0
jne 0x60c5f4
mov ecx, dword [ebp + 0xc]
mov eax, dword [ebp - 0x34]
or ecx, dword [ebp - 0x30]
not eax
and ecx, eax
xor edx, edx
mov dword [ebp + 0xc], ecx
mov dword [ebp - 0x34], edx
mov dword [ebp - 0x30], edx
mov eax, dword [ebp - 0x30]
or eax, dword [ebp - 0x34]
test al, 7
je 0x60c61d
mov dword [ebp - 0x14], 2
add edi, 4
jmp 0x60c61d
mov dword [esi], str.unrecognized_character_after___
jmp 0x60c900
inc dword [ebp - 0x20]
jmp 0x60c574
cmp ebx, 0x29
jne 0x60c64c
cmp dword [ebp - 0x14], 2
jne 0x60c08c
cmp dword [ebp - 0x10], 0
je 0x60c63c
cmp dword [ebp - 0x10], 3
jne 0x60c08c
mov ecx, dword [ebp - 0x14]
add dword [ebp - 0x10], ecx
jmp 0x60c08c
inc dword [ebp - 8]
cmp dword [ebp - 0x18], 0xc8
jb 0x60c660
mov dword [esi], str.too_many_sets_of_parentheses
jmp 0x60c900
mov al, byte [ebp - 0x10]
mov edx, dword [ebp - 0x4c]
mov byte [edx], al
mov ecx, dword [ebp - 0x14]
mov dword [ebp - 0x10], ecx
mov eax, dword [ebp - 0x50]
mov dword [eax], edi
inc dword [ebp - 0x18]
add edi, 3
jmp 0x60c08c
add edi, 3
mov dword [ebp - 0x38], 1
mov dword [ebp - 0x3c], 1
cmp dword [ebp - 0x18], 0
jbe 0x60c6b5
dec dword [ebp - 0x18]
add dword [ebp - 0x50], 0xfffffffc
dec dword [ebp - 0x4c]
mov edx, dword [ebp - 0x50]
mov ecx, edi
sub ecx, dword [edx]
mov dword [ebp - 0x40], ecx
mov eax, dword [ebp - 0x4c]
xor edx, edx
mov dl, byte [eax]
mov dword [ebp - 0x10], edx
jmp 0x60c6ba
xor ecx, ecx
mov dword [ebp - 0x40], ecx
mov eax, dword [ebp - 0x20]
xor ebx, ebx
mov bl, byte [eax + 1]
cmp ebx, 0x7b
jne 0x60c708
lea eax, [ebp - 0x60]
push eax
mov edx, dword [ebp - 0x20]
add edx, 2
push edx
call fcn.0060ac04
add esp, 8
test eax, eax
je 0x60c708
lea ecx, [ebp - 0x60]
lea eax, [ebp - 0x3c]
push ecx
push esi
push eax
lea edx, [ebp - 0x38]
push edx
mov ecx, dword [ebp - 0x20]
add ecx, 2
push ecx
call fcn.0060aca0
add esp, 0x14
mov dword [ebp - 0x20], eax
cmp dword [esi], 0
jne 0x60c900
jmp 0x60c73c
cmp ebx, 0x2a
jne 0x60c71e
xor eax, eax
mov dword [ebp - 0x38], eax
mov dword [ebp - 0x3c], 0xffffffff
inc dword [ebp - 0x20]
jmp 0x60c73c
cmp ebx, 0x2b
jne 0x60c72f
mov dword [ebp - 0x3c], 0xffffffff
inc dword [ebp - 0x20]
jmp 0x60c73c
cmp ebx, 0x3f
jne 0x60c73c
xor edx, edx
mov dword [ebp - 0x38], edx
inc dword [ebp - 0x20]
cmp dword [ebp - 0x38], 0
jne 0x60c745
inc edi
jmp 0x60c755
cmp dword [ebp - 0x38], 1
jle 0x60c755
mov ecx, dword [ebp - 0x38]
dec ecx
imul ecx, dword [ebp - 0x40]
add edi, ecx
mov eax, dword [ebp - 0x3c]
cmp eax, dword [ebp - 0x38]
jle 0x60c08c
mov edx, dword [ebp - 0x3c]
mov ecx, dword [ebp - 0x40]
sub edx, dword [ebp - 0x38]
inc ecx
imul edx, ecx
add edi, edx
jmp 0x60c08c
add edi, 2
xor ecx, ecx
mov dword [ebp - 4], ecx
test byte [ebp + 0xc], 8
je 0x60c7a6
mov eax, dword [ebp - 0x54]
test byte [eax + ebx], 1
jne 0x60c7e6
cmp ebx, 0x23
jne 0x60c7a6
inc dword [ebp - 0x20]
mov edx, dword [ebp - 0x20]
xor ebx, ebx
mov bl, byte [edx]
test ebx, ebx
je 0x60c7e6
cmp ebx, 0xa
jne 0x60c791
jmp 0x60c7e6
cmp ebx, 0x5c
jne 0x60c7e3
mov eax, dword [ebp - 0x20]
lea edx, [ebp - 0x60]
mov dword [ebp - 0x44], eax
push edx
push 0
lea edx, [ebp - 0x20]
mov ecx, dword [ebp + 0xc]
push ecx
mov eax, dword [ebp - 8]
push eax
push esi
push edx
call fcn.0060aa54
add esp, 0x18
mov ebx, eax
cmp dword [esi], 0
jne 0x60c900
test ebx, ebx
jge 0x60c7e3
mov eax, dword [ebp - 0x44]
mov dword [ebp - 0x20], eax
jmp 0x60c806
inc dword [ebp - 4]
cmp dword [ebp - 4], 0xff
jge 0x60c806
inc dword [ebp - 0x20]
mov edx, dword [ebp - 0x20]
xor ebx, ebx
mov bl, byte [edx]
mov eax, dword [ebp - 0x54]
test byte [eax + ebx], 0x80
je 0x60c77d
dec dword [ebp - 0x20]
add edi, dword [ebp - 4]
jmp 0x60c08c
inc dword [ebp - 0x20]
mov edx, dword [ebp - 0x20]
xor ebx, ebx
mov bl, byte [edx]
test ebx, ebx
jne 0x60c0ab
add edi, 4
cmp edi, 0x10003
jle 0x60c83b
mov dword [esi], str.regular_expression_too_large
xor eax, eax
jmp 0x60c965
mov eax, edi
add eax, 0xd
push eax
call dword [0x628ac0]
pop ecx
mov ebx, eax
test ebx, ebx
jne 0x60c85b
mov dword [esi], str.failed_to_get_memory
xor eax, eax
jmp 0x60c965
mov dword [ebx], 0x50435245
lea eax, [ebx + 0xd]
mov dx, word [ebp + 0xc]
mov word [ebx + 8], dx
mov ecx, dword [ebp + 0x18]
mov dword [ebx + 4], ecx
mov ecx, dword [ebp + 8]
mov dword [ebp - 0x20], ecx
mov dword [ebp - 0x1c], eax
mov edx, dword [ebp - 0x1c]
xor ecx, ecx
lea eax, [ebp - 0x60]
mov byte [edx], 0x45
mov dword [ebp - 8], ecx
push eax
push 0xffffffffffffffff
push 0
push esi
lea edx, [ebp - 0x20]
push edx
lea ecx, [ebp - 0x1c]
push ecx
lea eax, [ebp - 8]
push eax
push 0xffffffffffffffff
mov edx, dword [ebp + 0xc]
push edx
call fcn.0060bc20
add esp, 0x24
mov cl, byte [ebp - 8]
mov byte [ebx + 0xa], cl
mov al, byte [ebp - 0xc]
mov byte [ebx + 0xb], al
cmp dword [esi], 0
jne 0x60c8c8
mov edx, dword [ebp - 0x20]
cmp byte [edx], 0
je 0x60c8c8
mov dword [esi], str.unmatched_parentheses
mov ecx, dword [ebp - 0x1c]
mov byte [ecx], 0
inc dword [ebp - 0x1c]
lea eax, [ebx + 0xd]
mov edx, dword [ebp - 0x1c]
sub edx, eax
cmp edi, edx
jge 0x60c8e3
mov dword [esi], str.internal_error:_code_overflow
xor ecx, ecx
mov cl, byte [ebx + 0xa]
cmp ecx, dword [ebp - 0xc]
jge 0x60c8f3
mov dword [esi], str.back_reference_to_non_existent_subpattern
cmp dword [esi], 0
je 0x60c90f
push ebx
call dword [0x628ac4]
pop ecx
mov eax, dword [ebp - 0x20]
mov edx, dword [ebp + 0x14]
sub eax, dword [ebp + 8]
mov dword [edx], eax
xor eax, eax
jmp 0x60c965
test byte [ebp + 0xc], 0x10
jne 0x60c963
mov edx, dword [ebp + 0xc]
mov dword [ebp - 0x48], edx
lea ecx, [ebp - 0x48]
push ecx
lea esi, [ebx + 0xd]
push esi
call fcn.0060be08
add esp, 8
test eax, eax
je 0x60c936
or word [ebx + 8], 0x10
jmp 0x60c963
lea eax, [ebp - 0x48]
push eax
push esi
call fcn.0060bf1c
add esp, 8
test eax, eax
jl 0x60c952
mov byte [ebx + 0xc], al
or word [ebx + 8], 0x8000
jmp 0x60c963
push esi
call fcn.0060bea8
pop ecx
test eax, eax
je 0x60c963
or word [ebx + 8], 0x4000
mov eax, ebx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret