Function at 0x406910
Capabilities:
Parse credit card information

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x24
push ebx
xor eax, eax
xor ebx, ebx
push esi
mov esi, ecx
mov dword [esp + 0x10], eax
mov ecx, dword [ebp + 8]
or edx, 0xffffffff
mov dword [esp + 0x20], eax
mov dword [esp + 0x1c], eax
mov dword [esp + 0x24], eax
mov eax, dword [esi + 8]
mov dword [ecx + 4], eax
mov dword [ecx + 0xc], ebx
mov ecx, dword [esi + 8]
mov eax, dword [esi + 0xc]
push edi
mov dword [esp + 0x1c], esi
xor edi, edi
mov dword [esp + 0x10], ebx
mov dword [esp + 0xc], edx
lea ecx, [eax + ecx*2]
movzx esi, word [ecx]
mov dword [esp + 0x18], ecx
test esi, esi
jne 0x406a18
mov eax, ecx
mov ecx, dword [esp + 0x1c]
sub eax, dword [ecx + 0xc]
sar eax, 1
mov dword [ecx + 8], eax
mov eax, dword [ecx + 0x1c]
test eax, eax
je 0x407071
mov ecx, dword [eax + 0xa4]
mov dword [esp + 0x2c], ecx
mov ecx, eax
call fcn.00406190
test al, al
je 0x4069f3
mov eax, dword [ebp + 8]
mov esi, dword [esp + 0x1c]
mov ecx, dword [eax + 4]
mov eax, dword [esi + 8]
mov edx, dword [esi + 0x1c]
sub eax, ecx
mov dword [esp + 0x18], eax
mov eax, dword [edx + 0xa4]
test eax, eax
je 0x4069d7
mov edx, dword [ebp + 8]
sub ecx, eax
mov dword [edx + 4], ecx
test edi, edi
je 0x4069c5
sub edi, eax
jmp 0x4069d1
cmp dword [esp + 0x24], 0
je 0x4069d1
sub dword [esi], eax
sub dword [esi + 4], eax
sub dword [esi + 8], eax
mov edx, dword [esi + 0x1c]
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 4]
mov eax, dword [edx + 0x28]
add ecx, dword [esp + 0x18]
mov eax, dword [eax]
mov dword [esi + 0xc], eax
lea eax, [eax + ecx*2]
movzx esi, word [eax]
mov dword [esp + 0x18], eax
mov edx, dword [esp + 0x2c]
mov ecx, dword [esp + 0x1c]
test edx, edx
je 0x406a08
mov eax, dword [ecx + 0x1c]
mov dword [eax + 0xa4], edx
mov edx, dword [esp + 0xc]
test esi, esi
je 0x407071
mov ecx, dword [esp + 0x18]
test edi, edi
je 0x406a5c
lea eax, [esi - 9]
cmp eax, 0x35
ja 0x407069
cmp byte [esi + 0x5b9c9b], 0
je 0x407069
mov eax, ecx
mov ecx, dword [esp + 0x1c]
sub eax, dword [ecx + 0xc]
sar eax, 1
mov dword [esp + 0x24], eax
dec eax
sub dword [esp + 0x24], edi
mov dword [ecx], edi
xor edi, edi
mov dword [ecx + 4], eax
xor eax, eax
mov dword [esp + 0x28], eax
mov dword [esp + 0x20], eax
jmp 0x406a60
mov ecx, dword [esp + 0x1c]
cmp dword [esp + 0x10], 0
je 0x406d1b
cmp esi, 0x3e
jne 0x406b60
test bl, 0xc0
jne 0x406b77
mov esi, dword [esp + 0x1c]
mov ecx, dword [esp + 0x18]
sub ecx, dword [esi + 0xc]
sar ecx, 1
lea eax, [ecx + 1]
mov dword [esi + 8], eax
mov esi, dword [esp + 0x14]
cmp esi, 1
jne 0x406adf
mov dword [esp + 0x10], 0
cmp edx, esi
jne 0x406ad7
cmp dword [esp + 0x20], 0x2f
jne 0x406ad7
mov ecx, dword [esp + 0x28]
test ecx, ecx
je 0x406acd
test ebx, 0x200
je 0x406acd
lea eax, [ecx - 9]
cmp eax, 0x1e
ja 0x406ad7
cmp byte [ecx + 0x5b9cd3], 0
je 0x406ad7
mov eax, dword [ebp + 8]
or dword [eax + 0xc], 0x10000
and ebx, 0xfffffdff
jmp 0x406b2e
cmp ecx, esi
jle 0x406b18
mov edx, dword [esp + 0x18]
lea eax, [esi + esi]
sub edx, eax
mov eax, dword [esp + 0x10]
add edx, 2
sub eax, edx
mov dword [esp + 0x2c], eax
nop dword [eax]
sub esi, 1
je 0x406b58
mov ax, word [eax + edx]
movzx ecx, word [edx]
add edx, 2
cmp cx, ax
mov eax, dword [esp + 0x2c]
je 0x406b00
mov eax, dword [esp + 0x10]
mov edx, dword [esp + 0xc]
and ebx, 0xfffffdff
test eax, eax
jne 0x407065
test bl, 0x20
jne 0x407065
mov esi, dword [esp + 0xc]
mov ecx, dword [esp + 0x1c]
mov eax, dword [ebp + 8]
mov ecx, dword [ecx + 8]
sub ecx, dword [eax + 4]
mov dword [eax + 8], ecx
mov dword [eax], esi
mov eax, esi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
xor eax, eax
mov dword [esp + 0x10], eax
jmp 0x406b1c
cmp esi, 0x3c
jne 0x406b77
cmp edx, 2
je 0x40711e
cmp edx, 0xffffffff
je 0x40711e
test dl, 1
je 0x406cd2
test ebx, 0x2c0
je 0x406c1b
cmp esi, 0x22
jne 0x406bb3
test bl, bl
jns 0x406bd8
mov eax, dword [esp + 0x20]
xor ebx, 0x80
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x28], eax
add ecx, 2
mov dword [esp + 0x20], esi
jmp 0x406958
cmp esi, 0x27
jne 0x406bd8
test bl, 0x40
je 0x406bd8
mov eax, dword [esp + 0x20]
xor ebx, 0x40
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x28], eax
add ecx, 2
mov dword [esp + 0x20], esi
jmp 0x406958
test ebx, 0x200
je 0x406cba
lea eax, [esi - 9]
cmp eax, 0x17
ja 0x406cba
cmp byte [esi + 0x5b992f], 0
je 0x406cba
mov eax, dword [esp + 0x20]
xor ebx, 0x200
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x28], eax
add ecx, 2
mov dword [esp + 0x20], esi
jmp 0x406958
mov eax, ebx
and eax, 0x100
cmp esi, 0x22
jne 0x406c49
test eax, eax
je 0x406c49
mov eax, dword [esp + 0x20]
xor ebx, 0x180
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x28], eax
add ecx, 2
mov dword [esp + 0x20], esi
jmp 0x406958
cmp esi, 0x27
jne 0x406c70
test eax, eax
je 0x406cba
mov eax, dword [esp + 0x20]
xor ebx, 0x140
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x28], eax
add ecx, 2
mov dword [esp + 0x20], esi
jmp 0x406958
cmp esi, 0x3d
jne 0x406c9d
cmp dword [esp + 0x20], esi
je 0x406c9d
test eax, eax
jne 0x406cb4
mov eax, dword [esp + 0x20]
xor ebx, 0x100
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x28], eax
add ecx, 2
mov dword [esp + 0x20], esi
jmp 0x406958
test eax, eax
je 0x406cba
cmp esi, 9
jb 0x406cb4
cmp esi, 0x20
ja 0x406cb4
cmp byte [esi + 0x5b992f], 0
jne 0x406cba
xor ebx, 0x300
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x28], eax
add ecx, 2
mov dword [esp + 0x20], esi
jmp 0x406958
test dl, 0x40
je 0x407065
cmp esi, 0x22
jne 0x406cfb
test bl, 0x40
jne 0x407065
mov ecx, dword [esp + 0x18]
xor ebx, 0x80
add ecx, 2
jmp 0x406958
cmp esi, 0x27
jne 0x407065
test bl, bl
js 0x407065
mov ecx, dword [esp + 0x18]
xor ebx, 0x40
add ecx, 2
jmp 0x406958
test ebx, ebx
je 0x40700f
test bl, 0x10
je 0x406d79
cmp esi, 0x3c
je 0x407133
lea eax, [esi - 9]
cmp eax, 0x17
ja 0x406d46
movsx ecx, byte [esi + 0x5b992f]
test ecx, ecx
jne 0x406d61
jmp 0x406d48
xor ecx, ecx
mov edx, 2
mov dword [esp + 0x10], 0x5b9cfc
mov dword [esp + 0x14], 1
mov dword [esp + 0xc], edx
mov eax, ebx
xor eax, 0x10
test ecx, ecx
mov ecx, dword [esp + 0x18]
cmovne eax, ebx
add ecx, 2
mov ebx, eax
jmp 0x406958
test bl, 1
je 0x406e77
xor ebx, 1
cmp esi, 0x60
ja 0x406e5c
cmp esi, 0x40
jbe 0x406d9c
cmp esi, 0x5b
jb 0x406e5c
cmp esi, 0x5f
je 0x406e5c
cmp esi, 0x3a
je 0x406e5c
cmp esi, 0x2f
jne 0x406dcc
mov edi, dword [esp + 0x18]
xor edx, edx
sub edi, dword [ecx + 0xc]
sar edi, 1
mov dword [esp + 0x10], 0x5b9d00
inc edi
jmp 0x407059
cmp esi, 0x21
jne 0x406de0
mov ecx, dword [esp + 0x18]
or ebx, 2
add ecx, 2
jmp 0x406958
cmp esi, 0x3f
jne 0x406e12
mov edi, dword [esp + 0x18]
lea edx, [esi - 0x2f]
sub edi, dword [ecx + 0xc]
mov ecx, dword [esp + 0x18]
sar edi, 1
inc edi
mov dword [esp + 0x10], 0x5b9d04
mov dword [esp + 0x14], 2
add ecx, 2
mov dword [esp + 0xc], edx
jmp 0x406958
push 0xffffffffffffffff
push dword [ecx + 8]
push ecx
mov eax, esp
push ecx
mov dword [eax], 0
mov eax, esp
mov dword [eax], str.first_tag_syntax
mov ecx, dword [ebp + 8]
xor edx, edx
mov dword [esp + 0x24], 1
mov dword [esp + 0x20], 0x5b9d00
lea ecx, [ecx + 0x10]
call fcn.00403520
mov ecx, dword [esp + 0x28]
or edx, 0xffffffff
add esp, 0x10
mov dword [esp + 0xc], edx
add ecx, 2
jmp 0x406958
mov edi, dword [esp + 0x18]
mov edx, 1
sub edi, dword [ecx + 0xc]
mov dword [esp + 0x10], 0x5b9d00
sar edi, 1
jmp 0x407059
test bl, 2
je 0x406f3a
xor ebx, 2
cmp esi, 0x2d
jne 0x406e97
mov ecx, dword [esp + 0x18]
or ebx, 4
add ecx, 2
jmp 0x406958
test bl, 0x20
je 0x406ef6
lea eax, [esi - 0x41]
cmp eax, 0xd
ja 0x406ebf
cmp byte [esi + 0x5b9cef], 0
je 0x406ebf
mov edx, 0x40
mov dword [esp + 0x10], 0x5b9d00
jmp 0x407059
push 0xffffffffffffffff
push dword [ecx + 8]
xor edx, edx
push ecx
mov eax, esp
push ecx
mov ecx, dword [ebp + 8]
mov dword [eax], 0
mov eax, esp
lea ecx, [ecx + 0x10]
mov dword [eax], str.doctype_tag_syntax
call fcn.00403520
add esp, 0x10
mov dword [esp + 0x10], 0x5b9d00
or edx, 0xffffffff
jmp 0x407059
cmp esi, 0x5b
jne 0x406f0a
mov ecx, dword [esp + 0x18]
or ebx, 8
add ecx, 2
jmp 0x406958
cmp esi, 0x44
jne 0x406f1e
mov ecx, dword [esp + 0x18]
or ebx, 0x20
add ecx, 2
jmp 0x406958
push 0xffffffffffffffff
push dword [ecx + 8]
push ecx
mov eax, esp
push ecx
mov dword [eax], 0
mov eax, esp
mov dword [eax], str.exclamation_tag_syntax
jmp 0x406e29
test bl, 4
je 0x406f88
xor ebx, 4
cmp esi, 0x2d
jne 0x406f6c
mov ecx, dword [esp + 0x18]
mov edx, 0x20
mov dword [esp + 0x10], 0x5b9d98
add ecx, 2
mov dword [esp + 0x14], 3
mov dword [esp + 0xc], edx
jmp 0x406958
push 0xffffffffffffffff
push dword [ecx + 8]
push ecx
mov eax, esp
push ecx
mov dword [eax], 0
mov eax, esp
mov dword [eax], str.comment_tag_syntax
jmp 0x406e29
test bl, 8
je 0x406fd6
xor ebx, 8
cmp esi, 0x43
jne 0x406fba
mov ecx, dword [esp + 0x18]
mov edx, 8
mov dword [esp + 0x10], 0x5b9dc8
add ecx, 2
mov dword [esp + 0x14], 3
mov dword [esp + 0xc], edx
jmp 0x406958
push 0xffffffffffffffff
push dword [ecx + 8]
push ecx
mov eax, esp
push ecx
mov dword [eax], 0
mov eax, esp
mov dword [eax], str.cdata_section_syntax
jmp 0x406e29
test bl, 0x20
je 0x407065
cmp esi, 0x3c
jne 0x406ff3
mov ecx, dword [esp + 0x18]
or ebx, 1
add ecx, 2
jmp 0x406958
cmp esi, 0x3e
jne 0x407065
mov eax, dword [esp + 0x18]
mov esi, 0x40
sub eax, dword [ecx + 0xc]
sar eax, 1
inc eax
mov dword [ecx + 8], eax
jmp 0x406b3f
cmp esi, 0x3c
jne 0x407023
mov ecx, dword [esp + 0x18]
lea ebx, [esi - 0x3b]
add ecx, 2
jmp 0x406958
lea eax, [esi - 9]
mov edx, 4
mov dword [esp + 0xc], edx
cmp eax, 0x17
ja 0x40704c
cmp byte [esi + 0x5b992f], 0
je 0x40704c
mov ecx, dword [esp + 0x18]
lea ebx, [edx + 0xc]
add ecx, 2
jmp 0x406958
mov dword [esp + 0x10], 0x5b9cfc
mov edx, 2
mov dword [esp + 0x14], 1
mov dword [esp + 0xc], edx
mov ecx, dword [esp + 0x18]
add ecx, 2
jmp 0x406958
mov edi, dword [ebp + 8]
mov eax, dword [edi + 4]
cmp dword [ecx + 8], eax
jne 0x407097
mov dword [edi + 8], 0
mov eax, 0xfffffffe
mov dword [edi], 0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
cmp edx, 4
je 0x40712a
cmp edx, 2
je 0x40712a
mov ecx, 0x5b9bd0
test bl, 0x20
jne 0x4070f3
cmp edx, 0x40
je 0x4070f3
cmp edx, 1
jne 0x4070c4
mov ecx, str.start_tag
jmp 0x4070f8
test edx, edx
jne 0x4070cf
mov ecx, str.end_tag
jmp 0x4070f8
cmp edx, 8
jne 0x4070db
mov ecx, str.cdata_section
jmp 0x4070f8
cmp edx, 0x10
jne 0x4070e7
mov ecx, str.processing_instruction
jmp 0x4070f8
cmp edx, 0x20
jne 0x4070f8
mov ecx, str.comment
jmp 0x4070f8
mov ecx, str.document_type
or esi, 0xffffffff
push esi
push eax
push ecx
mov eax, esp
lea edx, [esi + 3]
push ecx
mov dword [eax], ecx
mov eax, esp
lea ecx, [edi + 0x10]
mov dword [eax], str.unterminated_tag_syntax
call fcn.00403520
add esp, 0x10
jmp 0x406b3b
mov eax, dword [esp + 0x18]
sub eax, dword [ecx + 0xc]
sar eax, 1
mov dword [ecx + 8], eax
mov esi, dword [esp + 0xc]
jmp 0x406b3f
mov eax, dword [esp + 0x18]
mov esi, 4
sub eax, dword [ecx + 0xc]
sar eax, 1
mov dword [ecx + 8], eax
jmp 0x406b3f