Function at 0x41f250
Capabilities:
Parse credit card information

Disassembly:
sub esp, 0x20
mov eax, dword [esp + 0x24]
push ebx
push ebp
push esi
mov esi, ecx
mov edx, dword [esi + 8]
xor ecx, ecx
mov dword [eax + 4], edx
mov dword [eax + 0xc], ecx
mov eax, dword [esi + 8]
mov edx, dword [esi + 0xc]
push edi
xor ebp, ebp
mov dword [esp + 0x10], ecx
or ebx, 0xffffffff
mov dword [esp + 0x14], ecx
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x28], ecx
mov dword [esp + 0x20], ecx
mov dword [esp + 0x24], ecx
lea edi, [edx + eax*2]
mov dword [esp + 0x18], edi
movzx eax, word [edi]
cmp eax, ecx
jne 0x41f337
sub edi, dword [esi + 0xc]
mov ecx, dword [esi + 0x1c]
sar edi, 1
mov dword [esi + 8], edi
test ecx, ecx
je 0x41fa60
mov edi, dword [ecx + 0xd4]
call fcn.0041f090
test al, al
je 0x41fa60
mov eax, dword [esp + 0x34]
mov ecx, dword [eax + 4]
mov eax, dword [esi + 0x1c]
mov edx, dword [esi + 8]
mov eax, dword [eax + 0xd4]
sub edx, ecx
sub eax, edi
je 0x41f301
mov edi, dword [esp + 0x34]
sub ecx, eax
cmp dword [esp + 0x1c], 0
mov dword [edi + 4], ecx
je 0x41f2f2
sub dword [esp + 0x1c], eax
jmp 0x41f2fe
cmp dword [esp + 0x28], 0
je 0x41f2fe
sub dword [esi], eax
sub dword [esi + 4], eax
sub dword [esi + 8], eax
mov ecx, dword [esp + 0x34]
mov eax, dword [ecx + 4]
add eax, edx
mov edx, dword [esi + 0x1c]
mov ecx, dword [edx + 0x58]
cmp dword [ecx + 0x18], 8
jb 0x41f31b
mov ecx, dword [ecx + 4]
jmp 0x41f31e
add ecx, 4
lea eax, [ecx + eax*2]
mov dword [esi + 0xc], ecx
mov dword [esp + 0x18], eax
movzx eax, word [eax]
test eax, eax
je 0x41fa60
mov edi, dword [esp + 0x18]
mov edx, dword [esp + 0x1c]
test edx, edx
je 0x41f382
lea ecx, [eax - 9]
cmp ecx, 0x35
ja 0x41f378
movsx ecx, byte [eax + 0x474fa7]
test ecx, ecx
je 0x41f378
mov ecx, edi
sub ecx, dword [esi + 0xc]
mov dword [esi], edx
sar ecx, 1
sub ecx, edx
xor edi, edi
lea edx, [ecx + edx - 1]
mov dword [esp + 0x28], ecx
mov dword [esi + 4], edx
mov dword [esp + 0x1c], edi
mov dword [esp + 0x24], edi
mov dword [esp + 0x20], edi
jmp 0x41f386
add edi, 2
xor ecx, ecx
jmp 0x41f28e
mov edi, dword [esp + 0x24]
test ebp, ebp
je 0x41f66b
cmp eax, 0x3e
jne 0x41f459
mov edx, dword [esp + 0x10]
test dl, 0xc0
jne 0x41f474
mov eax, dword [esp + 0x18]
sub eax, dword [esi + 0xc]
mov ecx, dword [esp + 0x14]
sar eax, 1
inc eax
mov dword [esi + 8], eax
cmp ecx, 1
jne 0x41f3f3
xor ebp, ebp
cmp ebx, ecx
jne 0x41f42e
cmp dword [esp + 0x20], 0x2f
jne 0x41f42e
test edi, edi
je 0x41f3e6
test edx, 0x200
je 0x41f3e6
lea eax, [edi - 9]
cmp eax, 0x1e
ja 0x41f42e
movsx eax, byte [edi + 0x474f87]
test eax, eax
je 0x41f42e
mov eax, dword [esp + 0x34]
or dword [eax + 0xc], 0x10000
jmp 0x41f42e
dec eax
cmp eax, ecx
jle 0x41f42e
mov edi, dword [esp + 0x18]
lea eax, [ecx + ecx]
sub edi, eax
mov dword [esp + 0x2c], ecx
lea eax, [edi + 2]
mov ecx, ebp
sub ecx, eax
lea esp, [esp]
sub dword [esp + 0x2c], 1
je 0x41f42c
mov dx, word [eax]
mov di, word [ecx + eax]
add eax, 2
cmp dx, di
mov edx, dword [esp + 0x10]
je 0x41f410
jmp 0x41f42e
xor ebp, ebp
and edx, 0xfffffdff
mov dword [esp + 0x10], edx
test ebp, ebp
jne 0x41f6b1
test dl, 0x20
je 0x41f9f0
add dword [esp + 0x18], 2
mov edi, dword [esp + 0x18]
xor ecx, ecx
jmp 0x41f292
cmp eax, 0x3c
jne 0x41f470
cmp ebx, 2
je 0x41fb15
cmp ebx, 0xffffffff
je 0x41fb15
mov edx, dword [esp + 0x10]
test bl, 1
je 0x41f61a
test edx, 0x2c0
je 0x41f532
cmp eax, 0x22
jne 0x41f4b8
test dl, dl
jns 0x41f4e5
add dword [esp + 0x18], 2
mov edi, dword [esp + 0x18]
xor edx, 0x80
mov dword [esp + 0x10], edx
mov edx, dword [esp + 0x20]
mov dword [esp + 0x24], edx
mov dword [esp + 0x20], eax
xor ecx, ecx
jmp 0x41f292
cmp eax, 0x27
jne 0x41f4e5
test dl, 0x40
je 0x41f4e5
add dword [esp + 0x18], 2
mov edi, dword [esp + 0x18]
xor edx, 0x40
mov dword [esp + 0x10], edx
mov edx, dword [esp + 0x20]
mov dword [esp + 0x24], edx
mov dword [esp + 0x20], eax
xor ecx, ecx
jmp 0x41f292
test edx, 0x200
je 0x41f5fe
lea ecx, [eax - 9]
cmp ecx, 0x17
ja 0x41f5fe
movsx ecx, byte [eax + 0x474837]
test ecx, ecx
je 0x41f5fe
add dword [esp + 0x18], 2
mov edi, dword [esp + 0x18]
xor edx, 0x200
mov dword [esp + 0x10], edx
mov edx, dword [esp + 0x20]
mov dword [esp + 0x24], edx
mov dword [esp + 0x20], eax
xor ecx, ecx
jmp 0x41f292
cmp eax, 0x22
jne 0x41f569
test edx, 0x100
je 0x41f5fe
add dword [esp + 0x18], 2
mov edi, dword [esp + 0x18]
xor edx, 0x180
mov dword [esp + 0x10], edx
mov edx, dword [esp + 0x20]
mov dword [esp + 0x24], edx
mov dword [esp + 0x20], eax
xor ecx, ecx
jmp 0x41f292
cmp eax, 0x27
jne 0x41f5a0
test edx, 0x100
je 0x41f5fe
add dword [esp + 0x18], 2
mov edi, dword [esp + 0x18]
xor edx, 0x140
mov dword [esp + 0x10], edx
mov edx, dword [esp + 0x20]
mov dword [esp + 0x24], edx
mov dword [esp + 0x20], eax
xor ecx, ecx
jmp 0x41f292
cmp eax, 0x3d
jne 0x41f5d9
cmp dword [esp + 0x20], eax
je 0x41f5d9
test edx, 0x100
jne 0x41f5e1
add dword [esp + 0x18], 2
mov edi, dword [esp + 0x18]
xor edx, 0x100
mov dword [esp + 0x10], edx
mov edx, dword [esp + 0x20]
mov dword [esp + 0x24], edx
mov dword [esp + 0x20], eax
xor ecx, ecx
jmp 0x41f292
test edx, 0x100
je 0x41f5fe
lea ecx, [eax - 9]
cmp ecx, 0x17
ja 0x41f5f4
movsx ecx, byte [eax + 0x474837]
test ecx, ecx
jne 0x41f5fe
xor edx, 0x300
mov dword [esp + 0x10], edx
mov edx, dword [esp + 0x20]
add dword [esp + 0x18], 2
mov edi, dword [esp + 0x18]
mov dword [esp + 0x24], edx
mov dword [esp + 0x20], eax
xor ecx, ecx
jmp 0x41f292
test bl, 0x40
je 0x41f6b1
cmp eax, 0x22
jne 0x41f64b
test dl, 0x40
jne 0x41f6b1
add dword [esp + 0x18], 2
mov edi, dword [esp + 0x18]
xor edx, 0x80
mov dword [esp + 0x10], edx
xor ecx, ecx
jmp 0x41f292
cmp eax, 0x27
jne 0x41f6b1
test dl, dl
js 0x41f6b1
add dword [esp + 0x18], 2
mov edi, dword [esp + 0x18]
xor edx, 0x40
mov dword [esp + 0x10], edx
xor ecx, ecx
jmp 0x41f292
mov ecx, dword [esp + 0x10]
test ecx, ecx
je 0x41fa0b
test cl, 0x10
je 0x41f6c1
cmp eax, 0x3c
je 0x41fb23
lea edx, [eax - 9]
cmp edx, 0x17
ja 0x41f698
movsx eax, byte [eax + 0x474837]
test eax, eax
jne 0x41f6b1
xor ecx, 0x10
mov dword [esp + 0x10], ecx
mov ebx, 2
mov ebp, 0x474bf0
mov dword [esp + 0x14], 1
add dword [esp + 0x18], 2
mov edi, dword [esp + 0x18]
xor ecx, ecx
jmp 0x41f292
test cl, 1
je 0x41f7c8
mov edx, 1
xor ecx, edx
mov dword [esp + 0x10], ecx
cmp eax, 0x60
ja 0x41f7a0
cmp eax, 0x40
jbe 0x41f6ec
cmp eax, 0x5b
jb 0x41f7a0
cmp eax, 0x5f
je 0x41f7a0
cmp eax, 0x3a
je 0x41f7a0
cmp eax, 0x2f
jne 0x41f72d
mov eax, dword [esp + 0x18]
sub eax, dword [esi + 0xc]
add dword [esp + 0x18], 2
mov edi, dword [esp + 0x18]
sar eax, 1
add eax, edx
xor ebx, ebx
mov ebp, 0x474bdc
mov dword [esp + 0x14], edx
mov dword [esp + 0x1c], eax
xor ecx, ecx
jmp 0x41f292
cmp eax, 0x21
jne 0x41f749
add dword [esp + 0x18], 2
mov edi, dword [esp + 0x18]
or ecx, 2
mov dword [esp + 0x10], ecx
xor ecx, ecx
jmp 0x41f292
cmp eax, 0x3f
jne 0x41f77d
lea ebx, [eax - 0x2f]
mov eax, dword [esp + 0x18]
sub eax, dword [esi + 0xc]
add dword [esp + 0x18], 2
mov edi, dword [esp + 0x18]
sar eax, 1
add eax, edx
mov ebp, 0x474c08
mov dword [esp + 0x14], 2
mov dword [esp + 0x1c], eax
xor ecx, ecx
jmp 0x41f292
mov eax, dword [esi + 8]
push 0xffffffffffffffff
push eax
push 0
push ecx
mov eax, esp
mov dword [eax], 0
push ecx
mov eax, esp
mov dword [esp + 0x28], edx
mov dword [eax], str.first_tag_syntax
jmp 0x41f98a
mov eax, dword [esp + 0x18]
sub eax, dword [esi + 0xc]
add dword [esp + 0x18], 2
mov edi, dword [esp + 0x18]
sar eax, 1
mov ebp, 0x474bdc
mov dword [esp + 0x14], edx
mov ebx, edx
mov dword [esp + 0x1c], eax
xor ecx, ecx
jmp 0x41f292
test cl, 2
je 0x41f8bc
xor ecx, 2
mov dword [esp + 0x10], ecx
cmp eax, 0x2d
jne 0x41f7f4
add dword [esp + 0x18], 2
mov edi, dword [esp + 0x18]
or ecx, 4
mov dword [esp + 0x10], ecx
xor ecx, ecx
jmp 0x41f292
test cl, 0x20
je 0x41f83a
lea edx, [eax - 0x41]
cmp edx, 0xd
ja 0x41f81b
movsx eax, byte [eax + 0x474f1b]
test eax, eax
je 0x41f81b
mov ebp, 0x474bdc
mov ebx, 0x40
jmp 0x41f6a9
mov eax, dword [esi + 8]
push 0xffffffffffffffff
push eax
push 0
push ecx
mov eax, esp
mov dword [eax], 0
push ecx
mov eax, esp
mov dword [eax], str.doctype_tag_syntax
jmp 0x41f982
cmp eax, 0x5b
jne 0x41f856
add dword [esp + 0x18], 2
mov edi, dword [esp + 0x18]
or ecx, 8
mov dword [esp + 0x10], ecx
xor ecx, ecx
jmp 0x41f292
cmp eax, 0x44
jne 0x41f872
add dword [esp + 0x18], 2
mov edi, dword [esp + 0x18]
or ecx, 0x20
mov dword [esp + 0x10], ecx
xor ecx, ecx
jmp 0x41f292
mov edx, dword [esi + 8]
push 0xffffffffffffffff
push edx
push 0
push ecx
mov eax, esp
mov dword [eax], 0
push ecx
mov eax, esp
mov dword [eax], str.exclamation_tag_syntax
mov eax, dword [esp + 0x48]
add eax, 0x10
push eax
mov ebp, 0x474bdc
mov dword [esp + 0x2c], 1
call fcn.0041e3d0
add dword [esp + 0x30], 2
mov edi, dword [esp + 0x30]
add esp, 0x18
or ebx, 0xffffffff
xor ecx, ecx
jmp 0x41f292
test cl, 4
je 0x41f937
xor ecx, 4
mov dword [esp + 0x10], ecx
cmp eax, 0x2d
jne 0x41f8ed
add dword [esp + 0x18], 2
mov edi, dword [esp + 0x18]
mov ebp, 0x474bf4
mov dword [esp + 0x14], 3
lea ebx, [eax - 0xd]
xor ecx, ecx
jmp 0x41f292
mov ecx, dword [esi + 8]
mov edx, dword [esp + 0x34]
push 0xffffffffffffffff
push ecx
push 0
push ecx
mov eax, esp
push ecx
mov dword [eax], 0
mov eax, esp
add edx, 0x10
push edx
mov ebp, 0x474bdc
mov dword [esp + 0x2c], 1
mov dword [eax], str.comment_tag_syntax
call fcn.0041e3d0
add dword [esp + 0x30], 2
mov edi, dword [esp + 0x30]
add esp, 0x18
or ebx, 0xffffffff
xor ecx, ecx
jmp 0x41f292
test cl, 8
je 0x41f9b2
xor ecx, 8
mov dword [esp + 0x10], ecx
cmp eax, 0x43
jne 0x41f968
add dword [esp + 0x18], 2
mov edi, dword [esp + 0x18]
mov ebp, 0x474bd4
mov dword [esp + 0x14], 3
lea ebx, [eax - 0x3b]
xor ecx, ecx
jmp 0x41f292
mov eax, dword [esi + 8]
push 0xffffffffffffffff
push eax
push 0
push ecx
mov eax, esp
mov dword [eax], 0
push ecx
mov eax, esp
mov dword [eax], str.cdata_section_syntax
mov dword [esp + 0x28], 1
mov ecx, dword [esp + 0x48]
add ecx, 0x10
push ecx
mov ebp, 0x474bdc
call fcn.0041e3d0
add dword [esp + 0x30], 2
mov edi, dword [esp + 0x30]
add esp, 0x18
or ebx, 0xffffffff
xor ecx, ecx
jmp 0x41f292
test cl, 0x20
je 0x41f6b1
cmp eax, 0x3c
jne 0x41f9d5
add dword [esp + 0x18], 2
or dword [esp + 0x10], 1
mov edi, dword [esp + 0x18]
xor ecx, ecx
jmp 0x41f292
cmp eax, 0x3e
jne 0x41f6b1
mov eax, dword [esp + 0x18]
sub eax, dword [esi + 0xc]
mov ebx, 0x40
sar eax, 1
inc eax
mov dword [esi + 8], eax
mov eax, dword [esp + 0x34]
mov edx, dword [esi + 8]
sub edx, dword [eax + 4]
mov dword [eax], ebx
mov dword [eax + 8], edx
mov eax, ebx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret 4
cmp eax, 0x3c
jne 0x41fa28
add dword [esp + 0x18], 2
mov edi, dword [esp + 0x18]
mov dword [esp + 0x10], 1
xor ecx, ecx
jmp 0x41f292
lea edx, [eax - 9]
mov ebx, 4
cmp edx, 0x17
ja 0x41f69f
movsx eax, byte [eax + 0x474837]
test eax, eax
je 0x41f69f
add dword [esp + 0x18], 2
mov edi, dword [esp + 0x18]
mov dword [esp + 0x10], 0x10
xor ecx, ecx
jmp 0x41f292
mov eax, dword [esp + 0x34]
mov edi, dword [eax + 4]
cmp dword [esi + 8], edi
jne 0x41fa88
pop edi
pop esi
pop ebp
mov dword [eax + 8], 0
mov dword [eax], 0
mov eax, 0xfffffffe
pop ebx
add esp, 0x20
ret 4
cmp ebx, 4
je 0x41f9f0
cmp ebx, 2
je 0x41f9f0
test byte [esp + 0x10], 0x20
mov ecx, 0x474ea8
jne 0x41fae6
cmp ebx, 0x40
je 0x41fae6
cmp ebx, 1
jne 0x41fab7
mov ecx, str.start_tag
jmp 0x41faeb
test ebx, ebx
jne 0x41fac2
mov ecx, str.end_tag
jmp 0x41faeb
cmp ebx, 8
jne 0x41face
mov ecx, str.cdata_section
jmp 0x41faeb
cmp ebx, 0x10
jne 0x41fada
mov ecx, str.processing_instruction
jmp 0x41faeb
cmp ebx, 0x20
jne 0x41faeb
mov ecx, str.comment
jmp 0x41faeb
mov ecx, str.document_type
or ebx, 0xffffffff
push ebx
push edi
push 2
push ecx
mov eax, esp
mov dword [eax], ecx
push ecx
mov ecx, dword [esp + 0x48]
mov eax, esp
add ecx, 0x10
push ecx
mov dword [eax], str.unterminated_tag_syntax
call fcn.0041e3d0
add esp, 0x18
jmp 0x41f9f0
mov eax, dword [esp + 0x18]
sub eax, dword [esi + 0xc]
sar eax, 1
jmp 0x41f9ed
mov eax, dword [esp + 0x18]
sub eax, dword [esi + 0xc]
mov ebx, 4
sar eax, 1
jmp 0x41f9ed