Function at 0x4188e0
Capabilities:
Parse credit card information

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x24
mov eax, dword [ebp + 8]
push ebx
push esi
push edi
mov edi, ecx
mov esi, dword [edi + 8]
xor ecx, ecx
mov dword [eax + 4], esi
mov dword [eax + 0xc], ecx
mov eax, dword [edi + 0xc]
xor edx, edx
or ebx, 0xffffffff
add eax, dword [edi + 8]
mov dword [ebp - 4], edx
mov dword [ebp - 8], ecx
mov dword [ebp - 0xc], ecx
mov dword [ebp - 0x14], ecx
mov dword [ebp - 0x20], ecx
mov dword [ebp - 0x1c], ecx
mov dword [ebp - 0x18], ecx
mov dword [ebp - 0x10], eax
lea esp, [esp]
movsx esi, byte [eax]
cmp esi, ecx
jne 0x4189b9
sub eax, dword [edi + 0xc]
mov dword [edi + 8], eax
mov eax, dword [edi + 0x1c]
cmp eax, ecx
je 0x418f4f
mov ecx, dword [eax + 0xa4]
mov dword [ebp - 0x24], ecx
mov ecx, eax
call fcn.004186f0
test al, al
je 0x41899e
mov esi, dword [ebp + 8]
mov ecx, dword [edi + 0x1c]
mov eax, dword [esi + 4]
mov edx, dword [edi + 8]
mov ecx, dword [ecx + 0xa4]
sub edx, eax
test ecx, ecx
je 0x418986
sub eax, ecx
cmp dword [ebp - 0x14], 0
mov dword [esi + 4], eax
je 0x418978
sub dword [ebp - 0x14], ecx
jmp 0x418983
cmp dword [ebp - 0x20], 0
je 0x418983
sub dword [edi], ecx
sub dword [edi + 4], ecx
sub dword [edi + 8], ecx
mov eax, dword [esi + 4]
add eax, edx
mov edx, dword [edi + 0x1c]
mov ecx, dword [edx + 0x28]
mov ecx, dword [ecx]
add eax, ecx
mov dword [edi + 0xc], ecx
movsx esi, byte [eax]
mov dword [ebp - 0x10], eax
mov eax, dword [ebp - 0x24]
test eax, eax
je 0x4189ae
mov ecx, dword [edi + 0x1c]
mov dword [ecx + 0xa4], eax
mov edx, dword [ebp - 4]
test esi, esi
je 0x418f4f
cmp dword [ebp - 0x14], 0
je 0x418a03
lea edx, [esi - 9]
cmp edx, 0x35
ja 0x418c67
movsx ecx, byte [esi + 0x435c7f]
test ecx, ecx
je 0x418c67
mov ecx, dword [ebp - 0x10]
mov edx, dword [ebp - 0x14]
mov eax, ecx
sub eax, dword [edi + 0xc]
mov dword [edi], edx
sub eax, edx
mov dword [ebp - 0x20], eax
lea eax, [eax + edx - 1]
mov edx, dword [ebp - 4]
mov dword [edi + 4], eax
xor eax, eax
mov dword [ebp - 0x14], eax
mov dword [ebp - 0x18], eax
mov dword [ebp - 0x1c], eax
jmp 0x418a09
mov ecx, dword [ebp - 0x10]
mov eax, dword [ebp - 0x1c]
cmp dword [ebp - 8], 0
je 0x418c25
cmp esi, 0x3e
jne 0x418acc
test dl, 0xc0
jne 0x418ae3
sub ecx, dword [edi + 0xc]
mov esi, dword [ebp - 0xc]
inc ecx
mov dword [edi + 8], ecx
cmp esi, 1
jne 0x418a76
mov dword [ebp - 8], 0
cmp ebx, esi
jne 0x418aab
cmp dword [ebp - 0x1c], 0x2f
jne 0x418aab
mov eax, dword [ebp - 0x18]
test eax, eax
je 0x418a6a
test edx, 0x200
je 0x418a6a
add eax, 0xfffffff7
cmp eax, 0x1e
ja 0x418aab
mov ecx, dword [ebp - 0x18]
movsx eax, byte [ecx + 0x435c5f]
test eax, eax
je 0x418aab
mov eax, dword [ebp + 8]
or dword [eax + 0xc], 0x10000
jmp 0x418aab
dec ecx
cmp ecx, esi
jle 0x418aab
mov ecx, dword [ebp - 0xc]
mov eax, dword [ebp - 0x10]
mov esi, dword [ebp - 8]
sub eax, ecx
inc eax
mov dword [ebp - 0x24], ecx
sub esi, eax
lea esp, [esp]
dec dword [ebp - 0x24]
je 0x418aa4
mov dl, byte [eax]
mov cl, byte [esi + eax]
inc eax
cmp dl, cl
mov edx, dword [ebp - 4]
je 0x418a90
jmp 0x418aab
mov dword [ebp - 8], 0
and edx, 0xfffffdff
cmp dword [ebp - 8], 0
mov dword [ebp - 4], edx
jne 0x418c67
test dl, 0x20
je 0x418ef9
jmp 0x418c67
cmp esi, 0x3c
jne 0x418ae3
cmp ebx, 2
je 0x418fff
cmp ebx, 0xffffffff
je 0x418fff
test bl, 1
je 0x418bfa
test edx, 0x2c0
je 0x418b67
cmp esi, 0x22
jne 0x418b11
test dl, dl
jns 0x418b2c
xor edx, 0x80
mov dword [ebp - 4], edx
mov dword [ebp - 0x18], eax
mov dword [ebp - 0x1c], esi
jmp 0x418c67
cmp esi, 0x27
jne 0x418b2c
test dl, 0x40
je 0x418b2c
xor edx, 0x40
mov dword [ebp - 4], edx
mov dword [ebp - 0x18], eax
mov dword [ebp - 0x1c], esi
jmp 0x418c67
test edx, 0x200
je 0x418bf2
lea ecx, [esi - 9]
cmp ecx, 0x17
ja 0x418bf2
movsx ecx, byte [esi + 0x435777]
test ecx, ecx
je 0x418bf2
xor edx, 0x200
mov dword [ebp - 4], edx
mov dword [ebp - 0x18], eax
mov dword [ebp - 0x1c], esi
jmp 0x418c67
cmp esi, 0x22
jne 0x418b88
test edx, 0x100
je 0x418bf2
xor edx, 0x180
mov dword [ebp - 4], edx
mov dword [ebp - 0x18], eax
mov dword [ebp - 0x1c], esi
jmp 0x418c67
cmp esi, 0x27
jne 0x418ba9
test edx, 0x100
je 0x418bf2
xor edx, 0x140
mov dword [ebp - 4], edx
mov dword [ebp - 0x18], eax
mov dword [ebp - 0x1c], esi
jmp 0x418c67
cmp esi, 0x3d
jne 0x418bce
cmp eax, esi
je 0x418bce
test edx, 0x100
jne 0x418bd6
xor edx, 0x100
mov dword [ebp - 4], edx
mov dword [ebp - 0x18], eax
mov dword [ebp - 0x1c], esi
jmp 0x418c67
test edx, 0x100
je 0x418bf2
lea ecx, [esi - 9]
cmp ecx, 0x17
ja 0x418be9
movsx ecx, byte [esi + 0x435777]
test ecx, ecx
jne 0x418bf2
xor edx, 0x300
mov dword [ebp - 4], edx
mov dword [ebp - 0x18], eax
mov dword [ebp - 0x1c], esi
jmp 0x418c67
test bl, 0x40
je 0x418c67
cmp esi, 0x22
jne 0x418c14
test dl, 0x40
jne 0x418c67
xor edx, 0x80
mov dword [ebp - 4], edx
jmp 0x418c67
cmp esi, 0x27
jne 0x418c67
test dl, dl
js 0x418c67
xor edx, 0x40
mov dword [ebp - 4], edx
jmp 0x418c67
test edx, edx
je 0x418f12
test dl, 0x10
je 0x418c84
cmp esi, 0x3c
je 0x41900a
lea eax, [esi - 9]
cmp eax, 0x17
ja 0x418c4e
movsx ecx, byte [esi + 0x435777]
test ecx, ecx
jne 0x418c67
xor edx, 0x10
mov dword [ebp - 4], edx
mov ebx, 2
mov dword [ebp - 8], 0x435a34
mov dword [ebp - 0xc], 1
mov esi, dword [ebp - 0x10]
push esi
call fcn.00421e51
mov edx, dword [ebp - 4]
add esi, eax
add esp, 4
mov dword [ebp - 0x10], esi
mov eax, esi
xor ecx, ecx
jmp 0x418920
test dl, 1
je 0x418d3a
mov eax, 1
xor edx, eax
mov dword [ebp - 4], edx
cmp esi, 0x60
ja 0x418d23
cmp esi, 0x40
jbe 0x418caa
cmp esi, 0x5b
jb 0x418d23
cmp esi, 0x5f
je 0x418d23
cmp esi, 0x3a
je 0x418d23
cmp esi, 0x2f
jne 0x418cd0
mov dword [ebp - 0xc], eax
mov eax, ecx
sub eax, dword [edi + 0xc]
xor ebx, ebx
inc eax
mov dword [ebp - 8], 0x435a28
mov dword [ebp - 0x14], eax
jmp 0x418c67
cmp esi, 0x21
jne 0x418cdd
or edx, 2
mov dword [ebp - 4], edx
jmp 0x418c67
cmp esi, 0x3f
jne 0x418d01
mov eax, ecx
sub eax, dword [edi + 0xc]
mov dword [ebp - 8], 0x435a3c
inc eax
mov dword [ebp - 0xc], 2
lea ebx, [esi - 0x2f]
mov dword [ebp - 0x14], eax
jmp 0x418c67
mov ecx, dword [edi + 8]
push 0xffffffffffffffff
push ecx
push 0
push ecx
mov dword [ebp - 0xc], eax
mov eax, esp
mov dword [eax], 0
push ecx
mov eax, esp
mov dword [eax], str.first_tag_syntax
jmp 0x418eac
sub ecx, dword [edi + 0xc]
mov dword [ebp - 8], 0x435a28
mov dword [ebp - 0xc], eax
mov ebx, eax
mov dword [ebp - 0x14], ecx
jmp 0x418c67
test dl, 2
je 0x418e00
xor edx, 2
mov dword [ebp - 4], edx
cmp esi, 0x2d
jne 0x418d59
or edx, 4
mov dword [ebp - 4], edx
jmp 0x418c67
test dl, 0x20
je 0x418da1
lea eax, [esi - 0x41]
cmp eax, 0xd
ja 0x418d82
movsx ecx, byte [esi + 0x435c03]
test ecx, ecx
je 0x418d82
mov dword [ebp - 8], 0x435a28
mov ebx, 0x40
jmp 0x418c60
mov ecx, dword [edi + 8]
push 0xffffffffffffffff
push ecx
push 0
push ecx
mov eax, esp
mov dword [eax], 0
push ecx
mov eax, esp
mov dword [eax], str.doctype_tag_syntax
jmp 0x418ea5
cmp esi, 0x5b
jne 0x418db1
or edx, 8
mov dword [ebp - 4], edx
jmp 0x418c67
cmp esi, 0x44
jne 0x418dc1
or edx, 0x20
mov dword [ebp - 4], edx
jmp 0x418c67
mov eax, dword [edi + 8]
push 0xffffffffffffffff
push eax
push 0
push ecx
mov eax, esp
push ecx
mov ecx, dword [ebp + 8]
mov dword [eax], 0
mov eax, esp
add ecx, 0x10
push ecx
mov dword [ebp - 8], 0x435a28
mov dword [ebp - 0xc], 1
mov dword [eax], str.exclamation_tag_syntax
call fcn.00417970
add esp, 0x18
or ebx, 0xffffffff
jmp 0x418c67
test dl, 4
je 0x418e65
xor edx, 4
mov dword [ebp - 4], edx
cmp esi, 0x2d
jne 0x418e26
mov dword [ebp - 8], 0x435a38
mov dword [ebp - 0xc], 3
lea ebx, [esi - 0xd]
jmp 0x418c67
mov edx, dword [edi + 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.comment_tag_syntax
mov eax, dword [ebp + 8]
add eax, 0x10
push eax
mov dword [ebp - 8], 0x435a28
mov dword [ebp - 0xc], 1
call fcn.00417970
add esp, 0x18
or ebx, 0xffffffff
jmp 0x418c67
test dl, 8
je 0x418eca
xor edx, 8
mov dword [ebp - 4], edx
cmp esi, 0x43
jne 0x418e8b
mov dword [ebp - 8], 0x435a24
mov dword [ebp - 0xc], 3
lea ebx, [esi - 0x3b]
jmp 0x418c67
mov ecx, dword [edi + 8]
push 0xffffffffffffffff
push ecx
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 [ebp - 0xc], 1
mov edx, dword [ebp + 8]
add edx, 0x10
push edx
mov dword [ebp - 8], 0x435a28
call fcn.00417970
add esp, 0x18
or ebx, 0xffffffff
jmp 0x418c67
test dl, 0x20
je 0x418c67
cmp esi, 0x3c
jne 0x418ee3
or edx, 1
mov dword [ebp - 4], edx
jmp 0x418c67
cmp esi, 0x3e
jne 0x418c67
mov eax, dword [ebp - 0x10]
sub eax, dword [edi + 0xc]
lea ebx, [esi + 2]
inc eax
mov dword [edi + 8], eax
mov eax, dword [ebp + 8]
mov edx, dword [edi + 8]
sub edx, dword [eax + 4]
mov dword [eax], ebx
mov dword [eax + 8], edx
mov eax, ebx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
cmp esi, 0x3c
jne 0x418f23
mov dword [ebp - 4], 1
jmp 0x418c67
lea eax, [esi - 9]
mov ebx, 4
cmp eax, 0x17
ja 0x418c54
movsx ecx, byte [esi + 0x435777]
test ecx, ecx
je 0x418c54
mov dword [ebp - 4], 0x10
jmp 0x418c67
mov eax, dword [ebp + 8]
mov esi, dword [eax + 4]
cmp dword [edi + 8], esi
jne 0x418f75
pop edi
pop esi
mov dword [eax + 8], 0
mov dword [eax], 0
mov eax, 0xfffffffe
pop ebx
mov esp, ebp
pop ebp
ret 4
cmp ebx, 4
je 0x418ef9
cmp ebx, 2
je 0x418ef9
mov ecx, 0x435be8
test dl, 0x20
jne 0x418fd1
cmp ebx, 0x40
je 0x418fd1
cmp ebx, 1
jne 0x418fa2
mov ecx, str.start_tag
jmp 0x418fd6
test ebx, ebx
jne 0x418fad
mov ecx, str.end_tag
jmp 0x418fd6
cmp ebx, 8
jne 0x418fb9
mov ecx, str.cdata_section
jmp 0x418fd6
cmp ebx, 0x10
jne 0x418fc5
mov ecx, str.processing_instruction
jmp 0x418fd6
cmp ebx, 0x20
jne 0x418fd6
mov ecx, str.comment
jmp 0x418fd6
mov ecx, str.document_type
or ebx, 0xffffffff
push ebx
push esi
push 2
push ecx
mov eax, esp
mov dword [eax], ecx
push ecx
mov ecx, dword [ebp + 8]
mov eax, esp
add ecx, 0x10
push ecx
mov dword [eax], str.unterminated_tag_syntax
call fcn.00417970
add esp, 0x18
jmp 0x418ef9
sub ecx, dword [edi + 0xc]
mov dword [edi + 8], ecx
jmp 0x418ef9
sub ecx, dword [edi + 0xc]
mov ebx, 4
mov dword [edi + 8], ecx
jmp 0x418ef9