Function at 0x4ab220
Capabilities:
Parse credit card information

Disassembly:
sub esp, 0x20
push ebx
push ebp
xor eax, eax
push esi
mov esi, ecx
mov ecx, dword [esp + 0x30]
mov edx, dword [esi + 8]
mov dword [ecx + 4], edx
mov dword [ecx + 0xc], eax
mov ecx, dword [esi + 8]
mov edx, dword [esi + 0xc]
lea ecx, [edx + ecx*2]
or ebx, 0xffffffff
push edi
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], eax
mov dword [esp + 0x18], eax
xor ebp, ebp
mov dword [esp + 0x28], eax
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], eax
mov dword [esp + 0x1c], ecx
mov edx, dword [esp + 0x1c]
movzx edi, word [edx]
cmp edi, eax
jne 0x4ab302
mov ecx, dword [esi + 0x1c]
mov eax, edx
sub eax, dword [esi + 0xc]
sar eax, 1
mov dword [esi + 8], eax
test ecx, ecx
je 0x4ab975
mov eax, dword [ecx + 0xd4]
mov dword [esp + 0x2c], eax
call fcn.004ab090
test al, al
je 0x4ab975
mov edi, dword [esp + 0x34]
mov eax, dword [esi + 0x1c]
mov ecx, dword [edi + 4]
mov edx, dword [esi + 8]
mov eax, dword [eax + 0xd4]
sub edx, ecx
sub eax, dword [esp + 0x2c]
je 0x4ab2d4
sub ecx, eax
mov dword [edi + 4], ecx
test ebp, ebp
je 0x4ab2c5
sub ebp, eax
jmp 0x4ab2d1
cmp dword [esp + 0x28], 0
je 0x4ab2d1
sub dword [esi], eax
sub dword [esi + 4], eax
sub dword [esi + 8], eax
mov ecx, dword [esi + 0x1c]
mov eax, dword [edi + 4]
mov ecx, dword [ecx + 0x58]
add eax, edx
cmp dword [ecx + 0x18], 8
jb 0x4ab2ea
mov ecx, dword [ecx + 4]
jmp 0x4ab2ed
add ecx, 4
lea eax, [ecx + eax*2]
mov dword [esi + 0xc], ecx
movzx edi, word [eax]
mov dword [esp + 0x1c], eax
test edi, edi
je 0x4ab975
test ebp, ebp
je 0x4ab342
push edi
push str.__t_n_r__
call fcn.004d9a27
add esp, 8
test eax, eax
je 0x4ab5f4
mov ecx, dword [esp + 0x1c]
mov eax, ecx
sub eax, dword [esi + 0xc]
mov dword [esi], ebp
sar eax, 1
sub eax, ebp
lea edx, [eax + ebp - 1]
xor ebp, ebp
mov dword [esp + 0x28], eax
mov dword [esi + 4], edx
mov dword [esp + 0x24], ebp
mov dword [esp + 0x20], ebp
jmp 0x4ab346
mov ecx, dword [esp + 0x1c]
cmp dword [esp + 0x14], 0
je 0x4ab5ae
cmp edi, 0x3e
jne 0x4ab41b
mov eax, dword [esp + 0x10]
test al, 0xc0
jne 0x4ab436
sub ecx, dword [esi + 0xc]
sar ecx, 1
lea eax, [ecx + 1]
mov ecx, dword [esp + 0x18]
mov dword [esi + 8], eax
cmp ecx, 1
jne 0x4ab3b7
mov dword [esp + 0x14], 0
cmp ebx, ecx
jne 0x4ab404
cmp dword [esp + 0x20], 0x2f
jne 0x4ab404
cmp dword [esp + 0x24], 0
je 0x4ab3aa
mov eax, dword [esp + 0x24]
push eax
push str.__t_n_r_
call fcn.004d9a27
add esp, 8
test eax, eax
je 0x4ab404
mov eax, dword [esp + 0x34]
or dword [eax + 0xc], 0x10000
jmp 0x4ab404
dec eax
cmp eax, ecx
jle 0x4ab5f4
mov ecx, dword [esp + 0x18]
mov eax, dword [esp + 0x1c]
lea edx, [ecx + ecx]
sub eax, edx
mov dword [esp + 0x2c], ecx
mov ecx, dword [esp + 0x14]
add eax, 2
sub ecx, eax
sub dword [esp + 0x2c], 1
je 0x4ab3fc
mov dx, word [eax]
mov di, word [eax + ecx]
add eax, 2
cmp dx, di
je 0x4ab3da
add dword [esp + 0x1c], 2
xor eax, eax
jmp 0x4ab262
mov dword [esp + 0x14], 0
test byte [esp + 0x10], 0x20
je 0x4ab912
add dword [esp + 0x1c], 2
xor eax, eax
jmp 0x4ab262
cmp edi, 0x3c
jne 0x4ab432
cmp ebx, 2
je 0x4aba26
cmp ebx, 0xffffffff
je 0x4aba26
mov eax, dword [esp + 0x10]
test bl, 1
je 0x4ab56b
test al, 0xc0
je 0x4ab4a1
cmp edi, 0x22
jne 0x4ab471
test al, al
jns 0x4ab553
add dword [esp + 0x1c], 2
xor eax, 0x80
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x20]
mov dword [esp + 0x24], eax
mov dword [esp + 0x20], edi
xor eax, eax
jmp 0x4ab262
cmp edi, 0x27
jne 0x4ab553
test al, 0x40
je 0x4ab553
add dword [esp + 0x1c], 2
xor eax, 0x40
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x20]
mov dword [esp + 0x24], eax
mov dword [esp + 0x20], edi
xor eax, eax
jmp 0x4ab262
cmp edi, 0x22
jne 0x4ab4d2
test eax, 0x100
je 0x4ab553
add dword [esp + 0x1c], 2
xor eax, 0x180
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x20]
mov dword [esp + 0x24], eax
mov dword [esp + 0x20], edi
xor eax, eax
jmp 0x4ab262
cmp edi, 0x27
jne 0x4ab4ff
test eax, 0x100
je 0x4ab553
add dword [esp + 0x1c], 2
xor eax, 0x140
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x20]
mov dword [esp + 0x24], eax
mov dword [esp + 0x20], edi
xor eax, eax
jmp 0x4ab262
cmp edi, 0x3d
jne 0x4ab532
cmp dword [esp + 0x20], edi
je 0x4ab532
test eax, 0x100
jne 0x4ab539
add dword [esp + 0x1c], 2
xor eax, 0x100
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x20]
mov dword [esp + 0x24], eax
mov dword [esp + 0x20], edi
xor eax, eax
jmp 0x4ab262
test eax, 0x100
je 0x4ab553
push edi
push str.__t_n_r
call fcn.004d9a27
add esp, 8
test eax, eax
jne 0x4ab553
xor dword [esp + 0x10], 0x100
mov eax, dword [esp + 0x20]
add dword [esp + 0x1c], 2
mov dword [esp + 0x24], eax
mov dword [esp + 0x20], edi
xor eax, eax
jmp 0x4ab262
test bl, 0x40
je 0x4ab5f4
cmp edi, 0x22
jne 0x4ab592
test al, 0x40
jne 0x4ab5f4
add dword [esp + 0x1c], 2
xor eax, 0x80
mov dword [esp + 0x10], eax
xor eax, eax
jmp 0x4ab262
cmp edi, 0x27
jne 0x4ab5f4
test al, al
js 0x4ab5f4
add dword [esp + 0x1c], 2
xor eax, 0x40
mov dword [esp + 0x10], eax
xor eax, eax
jmp 0x4ab262
mov edx, dword [esp + 0x10]
test edx, edx
je 0x4ab92d
test dl, 0x10
je 0x4ab600
cmp edi, 0x3c
je 0x4aba33
push edi
push str.__t_n_r
call fcn.004d9a27
add esp, 8
test eax, eax
jne 0x4ab5f4
xor dword [esp + 0x10], 0x10
mov ebx, 2
mov dword [esp + 0x18], 1
mov dword [esp + 0x14], 0x518610
add dword [esp + 0x1c], 2
xor eax, eax
jmp 0x4ab262
test dl, 1
je 0x4ab6ee
mov eax, 1
xor edx, eax
mov dword [esp + 0x10], edx
cmp edi, 0x60
ja 0x4ab6cd
cmp edi, 0x40
jbe 0x4ab62b
cmp edi, 0x5b
jb 0x4ab6cd
cmp edi, 0x5f
je 0x4ab6cd
cmp edi, 0x3a
je 0x4ab6cd
cmp edi, 0x2f
jne 0x4ab665
add dword [esp + 0x1c], 2
mov ebp, ecx
sub ebp, dword [esi + 0xc]
mov dword [esp + 0x18], eax
sar ebp, 1
xor ebx, ebx
add ebp, eax
mov dword [esp + 0x14], 0x51a568
xor eax, eax
jmp 0x4ab262
cmp edi, 0x21
jne 0x4ab67d
add dword [esp + 0x1c], 2
or edx, 2
mov dword [esp + 0x10], edx
xor eax, eax
jmp 0x4ab262
cmp edi, 0x3f
jne 0x4ab6aa
add dword [esp + 0x1c], 2
mov ebp, ecx
sub ebp, dword [esi + 0xc]
mov dword [esp + 0x14], 0x5204a0
sar ebp, 1
add ebp, eax
mov dword [esp + 0x18], 2
lea ebx, [edi - 0x2f]
xor eax, eax
jmp 0x4ab262
mov ecx, dword [esi + 8]
push 0xffffffffffffffff
push ecx
push 0
push ecx
mov dword [esp + 0x28], eax
mov eax, esp
mov dword [eax], 0
push ecx
mov eax, esp
mov dword [eax], str.first_tag_syntax
jmp 0x4ab838
add dword [esp + 0x1c], 2
mov ebp, ecx
sub ebp, dword [esi + 0xc]
mov dword [esp + 0x18], eax
mov ebx, eax
sar ebp, 1
mov dword [esp + 0x14], 0x51a568
xor eax, eax
jmp 0x4ab262
test dl, 2
je 0x4ab7e6
xor edx, 2
mov dword [esp + 0x10], edx
cmp edi, 0x2d
jne 0x4ab716
add dword [esp + 0x1c], 2
or edx, 4
mov dword [esp + 0x10], edx
xor eax, eax
jmp 0x4ab262
test dl, 0x20
je 0x4ab76d
push edi
push 0x520840
call fcn.004d9a27
add esp, 8
mov dword [esp + 0x14], 0x51a568
mov dword [esp + 0x18], 1
test eax, eax
je 0x4ab74e
add dword [esp + 0x1c], 2
mov ebx, 0x40
xor eax, eax
jmp 0x4ab262
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 0x4ab8b9
cmp edi, 0x5b
jne 0x4ab785
add dword [esp + 0x1c], 2
or edx, 8
mov dword [esp + 0x10], edx
xor eax, eax
jmp 0x4ab262
cmp edi, 0x44
jne 0x4ab79d
add dword [esp + 0x1c], 2
or edx, 0x20
mov dword [esp + 0x10], edx
xor eax, eax
jmp 0x4ab262
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 dword [esp + 0x2c], 0x51a568
mov dword [esp + 0x30], 1
call fcn.004aa580
add dword [esp + 0x34], 2
add esp, 0x18
or ebx, 0xffffffff
xor eax, eax
jmp 0x4ab262
test dl, 4
je 0x4ab85f
xor edx, 4
mov dword [esp + 0x10], edx
cmp edi, 0x2d
jne 0x4ab816
add dword [esp + 0x1c], 2
mov dword [esp + 0x14], 0x52048c
mov dword [esp + 0x18], 3
lea ebx, [edi - 0xd]
xor eax, eax
jmp 0x4ab262
mov ecx, dword [esi + 8]
push 0xffffffffffffffff
push ecx
push 0
push ecx
mov eax, esp
mov dword [eax], 0
push ecx
mov eax, esp
mov dword [esp + 0x2c], 1
mov dword [eax], str.comment_tag_syntax
mov edx, dword [esp + 0x48]
add edx, 0x10
push edx
mov dword [esp + 0x2c], 0x51a568
call fcn.004aa580
add dword [esp + 0x34], 2
add esp, 0x18
or ebx, 0xffffffff
xor eax, eax
jmp 0x4ab262
test dl, 8
je 0x4ab8d8
xor edx, 8
mov dword [esp + 0x10], edx
cmp edi, 0x43
jne 0x4ab88f
add dword [esp + 0x1c], 2
mov dword [esp + 0x14], 0x520474
mov dword [esp + 0x18], 3
lea ebx, [edi - 0x3b]
xor eax, eax
jmp 0x4ab262
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], 0x51a568
mov dword [esp + 0x2c], 1
mov dword [eax], str.cdata_section_syntax
mov ecx, dword [esp + 0x48]
add ecx, 0x10
push ecx
call fcn.004aa580
add dword [esp + 0x34], 2
add esp, 0x18
or ebx, 0xffffffff
xor eax, eax
jmp 0x4ab262
test dl, 0x20
je 0x4ab5f4
cmp edi, 0x3c
jne 0x4ab8f9
add dword [esp + 0x1c], 2
or edx, 1
mov dword [esp + 0x10], edx
xor eax, eax
jmp 0x4ab262
cmp edi, 0x3e
jne 0x4ab5f4
mov eax, dword [esp + 0x1c]
sub eax, dword [esi + 0xc]
lea ebx, [edi + 2]
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 edi, 0x3c
jne 0x4ab946
add dword [esp + 0x1c], 2
mov dword [esp + 0x10], 1
xor eax, eax
jmp 0x4ab262
push edi
push str.__t_n_r
mov ebx, 4
call fcn.004d9a27
add esp, 8
test eax, eax
je 0x4ab5df
add dword [esp + 0x1c], 2
mov dword [esp + 0x10], 0x10
xor eax, eax
jmp 0x4ab262
mov edi, dword [esp + 0x34]
mov ebp, dword [edi + 4]
cmp dword [esi + 8], ebp
jne 0x4ab99d
mov dword [edi + 8], 0
mov dword [edi], 0
pop edi
pop esi
pop ebp
mov eax, 0xfffffffe
pop ebx
add esp, 0x20
ret 4
cmp ebx, 4
je 0x4ab912
cmp ebx, 2
je 0x4ab912
test byte [esp + 0x10], 0x20
mov ecx, 0x52078c
jne 0x4ab9fb
cmp ebx, 0x40
je 0x4ab9fb
cmp ebx, 1
jne 0x4ab9cc
mov ecx, str.start_tag
jmp 0x4aba00
test ebx, ebx
jne 0x4ab9d7
mov ecx, str.end_tag
jmp 0x4aba00
cmp ebx, 8
jne 0x4ab9e3
mov ecx, str.cdata_section
jmp 0x4aba00
cmp ebx, 0x10
jne 0x4ab9ef
mov ecx, str.processing_instruction
jmp 0x4aba00
cmp ebx, 0x20
jne 0x4aba00
mov ecx, str.comment
jmp 0x4aba00
mov ecx, str.document_type
or ebx, 0xffffffff
push ebx
push ebp
push 2
push ecx
mov eax, esp
push ecx
mov dword [eax], ecx
mov eax, esp
add edi, 0x10
push edi
mov dword [eax], str.unterminated_tag_syntax
call fcn.004aa580
add esp, 0x18
jmp 0x4ab912
sub ecx, dword [esi + 0xc]
sar ecx, 1
mov dword [esi + 8], ecx
jmp 0x4ab912
sub ecx, dword [esi + 0xc]
mov ebx, 4
sar ecx, 1
mov dword [esi + 8], ecx
jmp 0x4ab912