Function at 0x40f960
Capabilities:
Parse credit card information

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x2c
push ebx
xor eax, eax
xor ebx, ebx
push esi
mov esi, ecx
mov dword [esp + 0x14], eax
mov ecx, dword [ebp + 8]
or edx, 0xffffffff
mov dword [esp + 0x28], eax
mov dword [esp + 0x24], eax
mov dword [esp + 0x2c], 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
xor edi, edi
mov dword [esp + 0x20], esi
mov dword [esp + 0x14], ebx
mov dword [esp + 0x10], edx
lea ecx, [eax + ecx*2]
mov dword [esp + 0x24], edi
movzx esi, word [ecx]
mov dword [esp + 0x1c], ecx
test esi, esi
jne 0x40fa7c
mov eax, ecx
mov ecx, dword [esp + 0x20]
sub eax, dword [ecx + 0xc]
sar eax, 1
mov dword [ecx + 8], eax
mov ecx, dword [ecx + 0x1c]
test ecx, ecx
je 0x4100f2
mov eax, dword [ecx + 0xcc]
mov dword [esp + 0x34], eax
call fcn.0040f0c0
test al, al
je 0x40fa57
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 4]
mov eax, dword [esp + 0x20]
mov edx, dword [eax + 0x1c]
mov esi, dword [eax + 8]
sub esi, ecx
mov eax, dword [edx + 0xcc]
test eax, eax
je 0x40fa1f
mov edx, dword [ebp + 8]
sub ecx, eax
mov dword [edx + 4], ecx
test edi, edi
je 0x40fa45
sub edi, eax
mov dword [esp + 0x24], edi
mov ecx, dword [esp + 0x20]
sub dword [ecx + 8], eax
mov edx, dword [ecx + 0x1c]
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 4]
mov eax, dword [edx + 0x50]
add ecx, esi
cmp dword [eax + 0x14], 8
jb 0x40fa32
mov eax, dword [eax]
mov edx, dword [esp + 0x20]
mov dword [edx + 0xc], eax
lea eax, [eax + ecx*2]
movzx esi, word [eax]
mov dword [esp + 0x1c], eax
jmp 0x40fa5b
cmp dword [esp + 0x2c], 0
je 0x40fa15
mov ecx, dword [esp + 0x20]
sub dword [ecx], eax
sub dword [ecx + 4], eax
jmp 0x40fa19
mov edx, dword [esp + 0x20]
mov ecx, dword [esp + 0x34]
test ecx, ecx
je 0x40fa6c
mov eax, dword [edx + 0x1c]
mov dword [eax + 0xcc], ecx
mov edx, dword [esp + 0x10]
test esi, esi
je 0x4100f2
mov ecx, dword [esp + 0x1c]
test edi, edi
je 0x40fac4
lea eax, [esi - 9]
cmp eax, 0x35
ja 0x4100ea
cmp byte [esi + 0x5d1943], 0
je 0x4100ea
mov eax, ecx
mov ecx, dword [esp + 0x20]
sub eax, dword [ecx + 0xc]
sar eax, 1
mov dword [esp + 0x2c], eax
dec eax
sub dword [esp + 0x2c], edi
mov dword [ecx], edi
xor edi, edi
mov dword [ecx + 4], eax
xor eax, eax
mov dword [esp + 0x24], edi
mov dword [esp + 0x30], eax
mov dword [esp + 0x28], eax
jmp 0x40fac8
mov ecx, dword [esp + 0x20]
cmp dword [esp + 0x14], 0
je 0x40fd90
cmp esi, 0x3e
jne 0x40fbd5
test bl, 0xc0
jne 0x40fbec
mov esi, dword [esp + 0x20]
mov ecx, dword [esp + 0x1c]
sub ecx, dword [esi + 0xc]
sar ecx, 1
lea eax, [ecx + 1]
mov dword [esi + 8], eax
mov eax, dword [esp + 0x18]
cmp eax, 1
jne 0x40fb49
mov dword [esp + 0x14], 0
cmp edx, eax
jne 0x40fb9c
cmp dword [esp + 0x28], 0x2f
jne 0x40fb9c
mov ecx, dword [esp + 0x30]
test ecx, ecx
je 0x40fb3d
test ebx, 0x200
je 0x40fb3d
lea eax, [ecx - 9]
cmp eax, 0x1e
ja 0x40fb9c
cmp byte [ecx + 0x5d197b], 0
je 0x40fb9c
mov eax, dword [ebp + 8]
or dword [eax + 0xc], 0x10000
jmp 0x40fb9c
cmp ecx, eax
jle 0x40fbbb
mov edx, dword [esp + 0x1c]
add eax, eax
mov edi, dword [esp + 0x14]
sub edx, eax
mov esi, dword [esp + 0x18]
add edx, 2
sub edi, edx
sub esi, 1
je 0x40fb90
movzx ecx, word [edx]
mov ax, word [edi + edx]
add edx, 2
cmp cx, ax
je 0x40fb62
mov ecx, dword [esp + 0x1c]
and ebx, 0xfffffdff
mov edx, dword [esp + 0x10]
add ecx, 2
mov edi, dword [esp + 0x24]
jmp 0x40f9ac
mov edx, dword [esp + 0x10]
mov dword [esp + 0x14], 0
and ebx, 0xfffffdff
test bl, 0x20
je 0x4101c5
mov ecx, dword [esp + 0x1c]
mov edi, dword [esp + 0x24]
add ecx, 2
jmp 0x40f9ac
mov ecx, dword [esp + 0x1c]
and ebx, 0xfffffdff
mov esi, dword [esp + 0x14]
add ecx, 2
mov dword [esp + 0x14], esi
jmp 0x40f9ac
cmp esi, 0x3c
jne 0x40fbec
cmp edx, 2
je 0x4101a0
cmp edx, 0xffffffff
je 0x4101a0
test dl, 1
je 0x40fd47
test ebx, 0x2c0
je 0x40fc90
cmp esi, 0x22
jne 0x40fc28
test bl, bl
jns 0x40fc4d
mov eax, dword [esp + 0x28]
xor ebx, 0x80
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0x30], eax
add ecx, 2
mov dword [esp + 0x28], esi
jmp 0x40f9ac
cmp esi, 0x27
jne 0x40fc4d
test bl, 0x40
je 0x40fc4d
mov eax, dword [esp + 0x28]
xor ebx, 0x40
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0x30], eax
add ecx, 2
mov dword [esp + 0x28], esi
jmp 0x40f9ac
test ebx, 0x200
je 0x40fd2f
lea eax, [esi - 9]
cmp eax, 0x17
ja 0x40fd2f
cmp byte [esi + 0x5d15d7], 0
je 0x40fd2f
mov eax, dword [esp + 0x28]
xor ebx, 0x200
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0x30], eax
add ecx, 2
mov dword [esp + 0x28], esi
jmp 0x40f9ac
mov eax, ebx
and eax, 0x100
cmp esi, 0x22
jne 0x40fcbe
test eax, eax
je 0x40fcbe
mov eax, dword [esp + 0x28]
xor ebx, 0x180
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0x30], eax
add ecx, 2
mov dword [esp + 0x28], esi
jmp 0x40f9ac
cmp esi, 0x27
jne 0x40fce5
test eax, eax
je 0x40fd2f
mov eax, dword [esp + 0x28]
xor ebx, 0x140
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0x30], eax
add ecx, 2
mov dword [esp + 0x28], esi
jmp 0x40f9ac
cmp esi, 0x3d
jne 0x40fd12
cmp dword [esp + 0x28], esi
je 0x40fd12
test eax, eax
jne 0x40fd29
mov eax, dword [esp + 0x28]
xor ebx, 0x100
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0x30], eax
add ecx, 2
mov dword [esp + 0x28], esi
jmp 0x40f9ac
test eax, eax
je 0x40fd2f
cmp esi, 9
jb 0x40fd29
cmp esi, 0x20
ja 0x40fd29
cmp byte [esi + 0x5d15d7], 0
jne 0x40fd2f
xor ebx, 0x300
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0x30], eax
add ecx, 2
mov dword [esp + 0x28], esi
jmp 0x40f9ac
test dl, 0x40
je 0x4100e6
cmp esi, 0x22
jne 0x40fd70
test bl, 0x40
jne 0x4100e6
mov ecx, dword [esp + 0x1c]
xor ebx, 0x80
add ecx, 2
jmp 0x40f9ac
cmp esi, 0x27
jne 0x4100e6
test bl, bl
js 0x4100e6
mov ecx, dword [esp + 0x1c]
xor ebx, 0x40
add ecx, 2
jmp 0x40f9ac
test ebx, ebx
je 0x410090
test bl, 0x10
je 0x40fdee
cmp esi, 0x3c
je 0x4101b2
lea eax, [esi - 9]
cmp eax, 0x17
ja 0x40fdbb
movsx ecx, byte [esi + 0x5d15d7]
test ecx, ecx
jne 0x40fdd6
jmp 0x40fdbd
xor ecx, ecx
mov edx, 2
mov dword [esp + 0x14], 0x5d19a4
mov dword [esp + 0x18], 1
mov dword [esp + 0x10], edx
mov eax, ebx
xor eax, 0x10
test ecx, ecx
mov ecx, dword [esp + 0x1c]
cmovne eax, ebx
add ecx, 2
mov ebx, eax
jmp 0x40f9ac
test bl, 1
je 0x40fef8
xor ebx, 1
cmp esi, 0x60
ja 0x40fed9
cmp esi, 0x40
jbe 0x40fe11
cmp esi, 0x5b
jb 0x40fed9
cmp esi, 0x5f
je 0x40fed9
cmp esi, 0x3a
je 0x40fed9
cmp esi, 0x2f
jne 0x40fe45
mov edi, dword [esp + 0x1c]
xor edx, edx
sub edi, dword [ecx + 0xc]
sar edi, 1
inc edi
mov dword [esp + 0x14], 0x5d19a8
mov dword [esp + 0x24], edi
jmp 0x4100da
cmp esi, 0x21
jne 0x40fe59
mov ecx, dword [esp + 0x1c]
or ebx, 2
add ecx, 2
jmp 0x40f9ac
cmp esi, 0x3f
jne 0x40fe8f
mov edi, dword [esp + 0x1c]
lea edx, [esi - 0x2f]
sub edi, dword [ecx + 0xc]
mov ecx, dword [esp + 0x1c]
sar edi, 1
inc edi
mov dword [esp + 0x14], 0x5d19ac
mov dword [esp + 0x18], 2
add ecx, 2
mov dword [esp + 0x24], edi
mov dword [esp + 0x10], edx
jmp 0x40f9ac
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 + 0x28], 1
mov dword [esp + 0x24], 0x5d19a8
lea ecx, [ecx + 0x10]
call fcn.0040c670
mov ecx, dword [esp + 0x2c]
or edx, 0xffffffff
add esp, 0x10
mov dword [esp + 0x10], edx
add ecx, 2
jmp 0x40f9ac
mov edi, dword [esp + 0x1c]
mov edx, 1
sub edi, dword [ecx + 0xc]
sar edi, 1
mov dword [esp + 0x14], 0x5d19a8
mov dword [esp + 0x24], edi
jmp 0x4100da
test bl, 2
je 0x40ffbb
xor ebx, 2
cmp esi, 0x2d
jne 0x40ff18
mov ecx, dword [esp + 0x1c]
or ebx, 4
add ecx, 2
jmp 0x40f9ac
test bl, 0x20
je 0x40ff77
lea eax, [esi - 0x41]
cmp eax, 0xd
ja 0x40ff40
cmp byte [esi + 0x5d1997], 0
je 0x40ff40
mov edx, 0x40
mov dword [esp + 0x14], 0x5d19a8
jmp 0x4100da
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.0040c670
add esp, 0x10
mov dword [esp + 0x14], 0x5d19a8
or edx, 0xffffffff
jmp 0x4100da
cmp esi, 0x5b
jne 0x40ff8b
mov ecx, dword [esp + 0x1c]
or ebx, 8
add ecx, 2
jmp 0x40f9ac
cmp esi, 0x44
jne 0x40ff9f
mov ecx, dword [esp + 0x1c]
or ebx, 0x20
add ecx, 2
jmp 0x40f9ac
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 0x40fea6
test bl, 4
je 0x410009
xor ebx, 4
cmp esi, 0x2d
jne 0x40ffed
mov ecx, dword [esp + 0x1c]
mov edx, 0x20
mov dword [esp + 0x14], 0x5d1a40
add ecx, 2
mov dword [esp + 0x18], 3
mov dword [esp + 0x10], edx
jmp 0x40f9ac
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 0x40fea6
test bl, 8
je 0x410057
xor ebx, 8
cmp esi, 0x43
jne 0x41003b
mov ecx, dword [esp + 0x1c]
mov edx, 8
mov dword [esp + 0x14], 0x5d1a70
add ecx, 2
mov dword [esp + 0x18], 3
mov dword [esp + 0x10], edx
jmp 0x40f9ac
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 0x40fea6
test bl, 0x20
je 0x4100e6
cmp esi, 0x3c
jne 0x410074
mov ecx, dword [esp + 0x1c]
or ebx, 1
add ecx, 2
jmp 0x40f9ac
cmp esi, 0x3e
jne 0x4100e6
mov eax, dword [esp + 0x1c]
mov esi, 0x40
sub eax, dword [ecx + 0xc]
sar eax, 1
inc eax
mov dword [ecx + 8], eax
jmp 0x4101cd
cmp esi, 0x3c
jne 0x4100a4
mov ecx, dword [esp + 0x1c]
lea ebx, [esi - 0x3b]
add ecx, 2
jmp 0x40f9ac
lea eax, [esi - 9]
mov edx, 4
mov dword [esp + 0x10], edx
cmp eax, 0x17
ja 0x4100cd
cmp byte [esi + 0x5d15d7], 0
je 0x4100cd
mov ecx, dword [esp + 0x1c]
lea ebx, [edx + 0xc]
add ecx, 2
jmp 0x40f9ac
mov dword [esp + 0x14], 0x5d19a4
mov edx, 2
mov dword [esp + 0x18], 1
mov dword [esp + 0x10], edx
mov ecx, dword [esp + 0x1c]
add ecx, 2
jmp 0x40f9ac
mov edi, dword [ebp + 8]
mov ecx, dword [esp + 0x20]
mov eax, dword [edi + 4]
cmp dword [ecx + 8], eax
jne 0x41011c
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 0x4101ac
cmp edx, 2
je 0x4101ac
mov ecx, 0x5d1878
test bl, 0x20
jne 0x410178
cmp edx, 0x40
je 0x410178
cmp edx, 1
jne 0x410149
mov ecx, str.start_tag
jmp 0x41017d
test edx, edx
jne 0x410154
mov ecx, str.end_tag
jmp 0x41017d
cmp edx, 8
jne 0x410160
mov ecx, str.cdata_section
jmp 0x41017d
cmp edx, 0x10
jne 0x41016c
mov ecx, str.processing_instruction
jmp 0x41017d
cmp edx, 0x20
jne 0x41017d
mov ecx, str.comment
jmp 0x41017d
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.0040c670
add esp, 0x10
jmp 0x4101c9
mov eax, dword [esp + 0x1c]
sub eax, dword [ecx + 0xc]
sar eax, 1
mov dword [ecx + 8], eax
mov esi, dword [esp + 0x10]
jmp 0x4101cd
mov eax, dword [esp + 0x1c]
mov esi, 4
sub eax, dword [ecx + 0xc]
sar eax, 1
mov dword [ecx + 8], eax
jmp 0x4101cd
mov esi, dword [esp + 0x10]
mov ecx, dword [esp + 0x20]
mov eax, dword [ebp + 8]
mov ecx, dword [ecx + 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