Function at 0x412450
Capabilities:
Parse credit card information

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x24
push ebx
xor eax, eax
xor ebx, ebx
push esi
push edi
mov edi, ecx
mov dword [ebp - 0x14], eax
mov ecx, dword [ebp + 8]
or edx, 0xffffffff
mov dword [ebp - 0xc], eax
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0x18], eax
mov dword [ebp - 0x20], eax
mov eax, dword [edi + 8]
mov dword [ecx + 4], eax
mov dword [ecx + 0xc], ebx
mov eax, dword [edi + 0xc]
mov ecx, dword [edi + 8]
mov dword [ebp - 8], ebx
mov dword [ebp - 4], edx
lea ecx, [eax + ecx*2]
mov dword [ebp - 0x10], ecx
xor ecx, ecx
mov eax, dword [ebp - 0x10]
movzx esi, word [eax]
test esi, esi
jne 0x41253a
sub eax, dword [edi + 0xc]
mov ecx, dword [edi + 0x1c]
sar eax, 1
mov dword [edi + 8], eax
test ecx, ecx
je 0x412b9c
mov eax, dword [ecx + 0xa4]
mov dword [ebp - 0x24], eax
call fcn.0040f150
test al, al
je 0x41251c
mov edx, dword [ebp + 8]
mov eax, dword [edi + 0x1c]
mov esi, dword [edi + 8]
mov edx, dword [edx + 4]
sub esi, edx
mov ecx, dword [eax + 0xa4]
test ecx, ecx
je 0x412500
mov eax, dword [ebp + 8]
sub edx, ecx
mov dword [eax + 4], edx
mov eax, dword [ebp - 0xc]
test eax, eax
je 0x4124f2
sub eax, ecx
mov dword [ebp - 0xc], eax
jmp 0x4124fd
cmp dword [ebp - 0x1c], 0
je 0x4124fd
sub dword [edi], ecx
sub dword [edi + 4], ecx
sub dword [edi + 8], ecx
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 4]
mov eax, dword [edi + 0x1c]
add ecx, esi
mov eax, dword [eax + 0x28]
mov eax, dword [eax]
mov dword [edi + 0xc], eax
lea eax, [eax + ecx*2]
movzx esi, word [eax]
mov dword [ebp - 0x10], eax
mov ecx, dword [ebp - 0x24]
test ecx, ecx
je 0x41252c
mov eax, dword [edi + 0x1c]
mov dword [eax + 0xa4], ecx
mov edx, dword [ebp - 4]
test esi, esi
je 0x412b9c
mov ecx, dword [ebp - 0xc]
test ecx, ecx
je 0x41257c
lea eax, [esi - 9]
cmp eax, 0x35
ja 0x412643
movsx eax, byte [esi + 0x430d0b]
test eax, eax
je 0x412643
mov eax, dword [ebp - 0x10]
sub eax, dword [edi + 0xc]
sar eax, 1
mov dword [ebp - 0x1c], eax
dec eax
sub dword [ebp - 0x1c], ecx
mov dword [edi], ecx
xor ecx, ecx
mov dword [edi + 4], eax
xor eax, eax
mov dword [ebp - 0xc], ecx
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x18], eax
jmp 0x41257f
mov eax, dword [ebp - 0x18]
cmp dword [ebp - 8], 0
je 0x41281d
cmp esi, 0x3e
jne 0x412658
test bl, 0xc0
jne 0x41266f
mov ecx, dword [ebp - 0x10]
mov eax, ecx
sub eax, dword [edi + 0xc]
mov esi, dword [ebp - 0x14]
sar eax, 1
inc eax
mov dword [edi + 8], eax
cmp esi, 1
jne 0x4125f6
mov dword [ebp - 8], 0
cmp edx, esi
jne 0x4125ee
cmp dword [ebp - 0x18], 0x2f
jne 0x4125ee
mov ecx, dword [ebp - 0x20]
test ecx, ecx
je 0x4125e4
test ebx, 0x200
je 0x4125e4
lea eax, [ecx - 9]
cmp eax, 0x1e
ja 0x4125ee
movsx eax, byte [ecx + 0x430d43]
test eax, eax
je 0x4125ee
mov eax, dword [ebp + 8]
or dword [eax + 0xc], 0x10000
and ebx, 0xfffffdff
jmp 0x412637
dec eax
cmp eax, esi
jle 0x412627
lea eax, [esi + esi]
sub ecx, eax
mov eax, dword [ebp - 8]
lea edx, [ecx + 2]
sub eax, edx
mov dword [ebp - 0x24], eax
nop dword [eax + eax]
sub esi, 1
je 0x412651
mov ax, word [eax + edx]
movzx ecx, word [edx]
add edx, 2
cmp cx, ax
mov eax, dword [ebp - 0x24]
je 0x412610
mov eax, dword [ebp - 8]
mov edx, dword [ebp - 4]
and ebx, 0xfffffdff
test eax, eax
jne 0x412640
test bl, 0x20
je 0x412c54
mov ecx, dword [ebp - 0xc]
mov eax, dword [ebp - 0x10]
add eax, 2
mov dword [ebp - 0x10], eax
jmp 0x412494
xor eax, eax
mov dword [ebp - 8], eax
jmp 0x41262a
cmp esi, 0x3c
jne 0x41266f
cmp edx, 2
je 0x412c49
cmp edx, 0xffffffff
je 0x412c49
test dl, 1
je 0x4127d0
test ebx, 0x2c0
je 0x412712
cmp esi, 0x22
jne 0x4126aa
test bl, bl
jns 0x4126ce
mov eax, dword [ebp - 0x18]
xor ebx, 0x80
mov dword [ebp - 0x20], eax
mov eax, dword [ebp - 0x10]
add eax, 2
mov dword [ebp - 0x18], esi
mov dword [ebp - 0x10], eax
jmp 0x412494
cmp esi, 0x27
jne 0x4126ce
test bl, 0x40
je 0x4126ce
mov eax, dword [ebp - 0x18]
xor ebx, 0x40
mov dword [ebp - 0x20], eax
mov eax, dword [ebp - 0x10]
add eax, 2
mov dword [ebp - 0x18], esi
mov dword [ebp - 0x10], eax
jmp 0x412494
test ebx, 0x200
je 0x4127b9
lea eax, [esi - 9]
cmp eax, 0x17
ja 0x4127b9
movsx eax, byte [esi + 0x4309df]
test eax, eax
je 0x4127b9
mov eax, dword [ebp - 0x18]
xor ebx, 0x200
mov dword [ebp - 0x20], eax
mov eax, dword [ebp - 0x10]
add eax, 2
mov dword [ebp - 0x18], esi
mov dword [ebp - 0x10], eax
jmp 0x412494
cmp esi, 0x22
jne 0x412740
test ebx, 0x100
je 0x4127b9
mov eax, dword [ebp - 0x18]
xor ebx, 0x180
mov dword [ebp - 0x20], eax
mov eax, dword [ebp - 0x10]
add eax, 2
mov dword [ebp - 0x18], esi
mov dword [ebp - 0x10], eax
jmp 0x412494
cmp esi, 0x27
jne 0x41276a
test ebx, 0x100
je 0x4127b9
mov eax, dword [ebp - 0x18]
xor ebx, 0x140
mov dword [ebp - 0x20], eax
mov eax, dword [ebp - 0x10]
add eax, 2
mov dword [ebp - 0x18], esi
mov dword [ebp - 0x10], eax
jmp 0x412494
cmp esi, 0x3d
jne 0x412798
cmp eax, esi
je 0x412798
test ebx, 0x100
jne 0x4127a0
mov eax, dword [ebp - 0x18]
xor ebx, 0x100
mov dword [ebp - 0x20], eax
mov eax, dword [ebp - 0x10]
add eax, 2
mov dword [ebp - 0x18], esi
mov dword [ebp - 0x10], eax
jmp 0x412494
test ebx, 0x100
je 0x4127b9
lea eax, [esi - 9]
cmp eax, 0x17
ja 0x4127b3
movsx eax, byte [esi + 0x4309df]
test eax, eax
jne 0x4127b9
xor ebx, 0x300
mov eax, dword [ebp - 0x18]
mov dword [ebp - 0x20], eax
mov eax, dword [ebp - 0x10]
add eax, 2
mov dword [ebp - 0x18], esi
mov dword [ebp - 0x10], eax
jmp 0x412494
test dl, 0x40
je 0x412643
cmp esi, 0x22
jne 0x4127fb
test bl, 0x40
jne 0x412643
mov eax, dword [ebp - 0x10]
xor ebx, 0x80
add eax, 2
mov dword [ebp - 0x10], eax
jmp 0x412494
cmp esi, 0x27
jne 0x412643
test bl, bl
js 0x412643
mov eax, dword [ebp - 0x10]
xor ebx, 0x40
add eax, 2
mov dword [ebp - 0x10], eax
jmp 0x412494
test ebx, ebx
je 0x412b52
test bl, 0x10
je 0x412870
cmp esi, 0x3c
je 0x412c70
lea eax, [esi - 9]
cmp eax, 0x17
ja 0x41284a
movsx eax, byte [esi + 0x4309df]
test eax, eax
jne 0x412643
xor ebx, 0x10
mov eax, dword [ebp - 0x10]
mov edx, 2
add eax, edx
mov dword [ebp - 8], 0x430d6c
mov dword [ebp - 0x14], 1
mov dword [ebp - 4], edx
mov dword [ebp - 0x10], eax
jmp 0x412494
test bl, 1
je 0x41299e
xor ebx, 1
cmp esi, 0x60
ja 0x41296f
cmp esi, 0x40
jbe 0x412893
cmp esi, 0x5b
jb 0x41296f
cmp esi, 0x5f
je 0x41296f
cmp esi, 0x3a
je 0x41296f
cmp esi, 0x2f
jne 0x4128d7
mov ecx, dword [ebp - 0x10]
xor edx, edx
sub ecx, dword [edi + 0xc]
mov eax, dword [ebp - 0x10]
sar ecx, 1
inc ecx
mov dword [ebp - 8], 0x430d70
add eax, 2
mov dword [ebp - 0x14], 1
mov dword [ebp - 4], edx
mov dword [ebp - 0xc], ecx
mov dword [ebp - 0x10], eax
jmp 0x412494
cmp esi, 0x21
jne 0x4128ed
mov eax, dword [ebp - 0x10]
or ebx, 2
add eax, 2
mov dword [ebp - 0x10], eax
jmp 0x412494
cmp esi, 0x3f
jne 0x412922
mov ecx, dword [ebp - 0x10]
mov edx, 0x10
sub ecx, dword [edi + 0xc]
mov eax, dword [ebp - 0x10]
sar ecx, 1
inc ecx
mov dword [ebp - 8], 0x430d74
add eax, 2
mov dword [ebp - 0x14], 2
mov dword [ebp - 4], edx
mov dword [ebp - 0xc], ecx
mov dword [ebp - 0x10], eax
jmp 0x412494
push 0xffffffffffffffff
push dword [edi + 8]
push 0
push ecx
mov eax, esp
push ecx
mov dword [eax], 0
mov eax, esp
mov dword [eax], str.first_tag_syntax
mov eax, dword [ebp + 8]
add eax, 0x10
mov dword [ebp - 0x14], 1
push eax
mov dword [ebp - 8], 0x430d70
call fcn.00414dc0
mov eax, dword [ebp - 0x10]
or edx, 0xffffffff
mov ecx, dword [ebp - 0xc]
add esp, 0x18
add eax, 2
mov dword [ebp - 4], edx
mov dword [ebp - 0x10], eax
jmp 0x412494
mov ecx, dword [ebp - 0x10]
mov edx, 1
sub ecx, dword [edi + 0xc]
mov eax, dword [ebp - 0x10]
sar ecx, 1
add eax, 2
mov dword [ebp - 8], 0x430d70
mov dword [ebp - 0x14], 1
mov dword [ebp - 4], edx
mov dword [ebp - 0xc], ecx
mov dword [ebp - 0x10], eax
jmp 0x412494
test bl, 2
je 0x412a76
xor ebx, 2
cmp esi, 0x2d
jne 0x4129c0
mov eax, dword [ebp - 0x10]
or ebx, 4
add eax, 2
mov dword [ebp - 0x10], eax
jmp 0x412494
test bl, 0x20
je 0x412a2c
lea eax, [esi - 0x41]
cmp eax, 0xd
ja 0x4129df
movsx eax, byte [esi + 0x430d5f]
test eax, eax
je 0x4129df
mov edx, 0x40
jmp 0x412a0a
push 0xffffffffffffffff
push dword [edi + 8]
push 0
push ecx
mov eax, esp
push ecx
mov dword [eax], 0
mov eax, esp
mov dword [eax], str.doctype_tag_syntax
mov eax, dword [ebp + 8]
add eax, 0x10
push eax
call fcn.00414dc0
add esp, 0x18
or edx, 0xffffffff
mov eax, dword [ebp - 0x10]
mov ecx, dword [ebp - 0xc]
add eax, 2
mov dword [ebp - 4], edx
mov dword [ebp - 8], 0x430d70
mov dword [ebp - 0x14], 1
mov dword [ebp - 0x10], eax
jmp 0x412494
cmp esi, 0x5b
jne 0x412a42
mov eax, dword [ebp - 0x10]
or ebx, 8
add eax, 2
mov dword [ebp - 0x10], eax
jmp 0x412494
cmp esi, 0x44
jne 0x412a58
mov eax, dword [ebp - 0x10]
or ebx, 0x20
add eax, 2
mov dword [ebp - 0x10], eax
jmp 0x412494
push 0xffffffffffffffff
push dword [edi + 8]
push 0
push ecx
mov eax, esp
push ecx
mov dword [eax], 0
mov eax, esp
mov dword [eax], str.exclamation_tag_syntax
jmp 0x41293b
test bl, 4
je 0x412ac5
xor ebx, 4
cmp esi, 0x2d
jne 0x412aa7
mov eax, dword [ebp - 0x10]
mov edx, 0x20
add eax, 2
mov dword [ebp - 8], 0x430e08
mov dword [ebp - 0x14], 3
mov dword [ebp - 4], edx
mov dword [ebp - 0x10], eax
jmp 0x412494
push 0xffffffffffffffff
push dword [edi + 8]
push 0
push ecx
mov eax, esp
push ecx
mov dword [eax], 0
mov eax, esp
mov dword [eax], str.comment_tag_syntax
jmp 0x41293b
test bl, 8
je 0x412b14
xor ebx, 8
cmp esi, 0x43
jne 0x412af6
mov eax, dword [ebp - 0x10]
mov edx, 8
add eax, 2
mov dword [ebp - 8], 0x430e38
mov dword [ebp - 0x14], 3
mov dword [ebp - 4], edx
mov dword [ebp - 0x10], eax
jmp 0x412494
push 0xffffffffffffffff
push dword [edi + 8]
push 0
push ecx
mov eax, esp
push ecx
mov dword [eax], 0
mov eax, esp
mov dword [eax], str.cdata_section_syntax
jmp 0x41293b
test bl, 0x20
je 0x412643
cmp esi, 0x3c
jne 0x412b33
mov eax, dword [ebp - 0x10]
or ebx, 1
add eax, 2
mov dword [ebp - 0x10], eax
jmp 0x412494
cmp esi, 0x3e
jne 0x412643
mov eax, dword [ebp - 0x10]
mov esi, 0x40
sub eax, dword [edi + 0xc]
sar eax, 1
inc eax
mov dword [edi + 8], eax
jmp 0x412c57
cmp esi, 0x3c
jne 0x412b68
mov eax, dword [ebp - 0x10]
lea ebx, [esi - 0x3b]
add eax, 2
mov dword [ebp - 0x10], eax
jmp 0x412494
lea eax, [esi - 9]
mov edx, 4
mov dword [ebp - 4], edx
cmp eax, 0x17
ja 0x41284d
movsx eax, byte [esi + 0x4309df]
test eax, eax
je 0x41284d
mov eax, dword [ebp - 0x10]
lea ebx, [edx + 0xc]
add eax, 2
mov dword [ebp - 0x10], eax
jmp 0x412494
mov ecx, dword [ebp + 8]
mov eax, dword [ecx + 4]
cmp dword [edi + 8], eax
jne 0x412bc2
mov dword [ecx + 8], 0
mov eax, 0xfffffffe
mov dword [ecx], 0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
cmp edx, 4
je 0x412c54
cmp edx, 2
je 0x412c54
mov ecx, 0x430c40
test bl, 0x20
jne 0x412c1e
cmp edx, 0x40
je 0x412c1e
cmp edx, 1
jne 0x412bef
mov ecx, str.start_tag
jmp 0x412c23
test edx, edx
jne 0x412bfa
mov ecx, str.end_tag
jmp 0x412c23
cmp edx, 8
jne 0x412c06
mov ecx, 0x430c88
jmp 0x412c23
cmp edx, 0x10
jne 0x412c12
mov ecx, str.processing_instruction
jmp 0x412c23
cmp edx, 0x20
jne 0x412c23
mov ecx, str.comment
jmp 0x412c23
mov ecx, str.document_type
or esi, 0xffffffff
push esi
push eax
push 2
push ecx
mov eax, esp
push ecx
mov dword [eax], ecx
mov eax, esp
mov dword [eax], str.unterminated_tag_syntax
mov eax, dword [ebp + 8]
add eax, 0x10
push eax
call fcn.00414dc0
add esp, 0x18
jmp 0x412c57
mov eax, dword [ebp - 0x10]
sub eax, dword [edi + 0xc]
sar eax, 1
mov dword [edi + 8], eax
mov esi, dword [ebp - 4]
mov eax, dword [ebp + 8]
mov ecx, dword [edi + 8]
pop edi
sub ecx, dword [eax + 4]
mov dword [eax], esi
mov dword [eax + 8], ecx
mov eax, esi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
mov eax, dword [ebp - 0x10]
mov esi, 4
sub eax, dword [edi + 0xc]
sar eax, 1
mov dword [edi + 8], eax
jmp 0x412c57