Function at 0x407630
Capabilities:
Parse credit card information

Disassembly:
sub esp, 0x20
push ebx
push ebp
mov ebp, dword [esp + 0x2c]
push esi
mov esi, ecx
push edi
xor ecx, ecx
xor edx, edx
mov eax, dword [esi + 8]
mov dword [ebp + 0xc], ecx
mov dword [ebp + 4], eax
mov edi, dword [esi + 0xc]
mov eax, dword [esi + 8]
or ebx, 0xffffffff
add edi, eax
mov dword [esp + 0x10], edx
mov dword [esp + 0x14], ecx
mov dword [esp + 0x18], ecx
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x28], ecx
mov dword [esp + 0x20], ecx
mov dword [esp + 0x24], edi
movsx eax, byte [edi]
cmp eax, ecx
jne 0x40770f
mov ecx, dword [esi + 0xc]
sub edi, ecx
mov ecx, dword [esi + 0x1c]
test ecx, ecx
mov dword [esi + 8], edi
je 0x407d79
mov edi, dword [ecx + 0xa4]
call fcn.00407070
test al, al
je 0x407d75
mov eax, dword [esi + 0x1c]
mov ecx, dword [ebp + 4]
mov edx, dword [esi + 8]
mov eax, dword [eax + 0xa4]
sub edx, ecx
sub eax, edi
je 0x4076e9
sub ecx, eax
mov dword [ebp + 4], ecx
mov ecx, dword [esp + 0x1c]
test ecx, ecx
je 0x4076d0
sub ecx, eax
mov dword [esp + 0x1c], ecx
jmp 0x4076e6
mov ecx, dword [esp + 0x2c]
test ecx, ecx
je 0x4076e6
mov edi, dword [esi]
mov ecx, dword [esi + 4]
sub edi, eax
sub ecx, eax
mov dword [esi], edi
mov dword [esi + 4], ecx
sub dword [esi + 8], eax
mov eax, dword [ebp + 4]
mov ecx, dword [esi + 0x1c]
add eax, edx
mov edx, dword [ecx + 0x28]
mov ecx, dword [edx]
mov dword [esi + 0xc], ecx
lea edi, [ecx + eax]
mov dword [esp + 0x24], edi
movsx eax, byte [edi]
test eax, eax
je 0x407d75
mov edx, dword [esp + 0x10]
mov ecx, dword [esp + 0x1c]
test ecx, ecx
je 0x407775
cmp eax, 9
jb 0x40775a
cmp eax, 0x3e
ja 0x40775a
movsx ecx, byte [eax + 0x415c47]
test ecx, ecx
je 0x40775a
mov edx, dword [esi + 0xc]
mov ecx, edi
sub ecx, edx
mov edx, dword [esp + 0x1c]
sub ecx, edx
mov dword [esi], edx
mov dword [esp + 0x2c], ecx
lea ecx, [ecx + edx - 1]
mov edx, dword [esp + 0x10]
mov dword [esi + 4], ecx
xor ecx, ecx
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x20], ecx
mov dword [esp + 0x28], ecx
jmp 0x407779
push edi
call dword [sym.imp.MSVCRT.dll__mbclen]
mov edx, dword [esp + 0x14]
add edi, eax
add esp, 4
mov dword [esp + 0x24], edi
xor ecx, ecx
jmp 0x407675
mov ecx, dword [esp + 0x28]
cmp dword [esp + 0x14], 0
je 0x4079d0
cmp eax, 0x3e
jne 0x40785d
test dl, 0xc0
jne 0x407874
sub edi, dword [esi + 0xc]
lea eax, [edi + 1]
mov edi, dword [esp + 0x18]
cmp edi, 1
mov dword [esi + 8], eax
jne 0x4077ee
cmp ebx, edi
mov dword [esp + 0x14], 0
jne 0x40783c
cmp dword [esp + 0x28], 0x2f
jne 0x40783c
mov eax, dword [esp + 0x20]
test eax, eax
je 0x4077e1
test dh, 2
je 0x4077e1
cmp eax, 9
jb 0x40783c
cmp eax, 0x27
ja 0x40783c
movsx eax, byte [eax + 0x415c27]
test eax, eax
je 0x40783c
mov eax, dword [esp + 0x34]
or dword [eax + 0xc], 0x10000
jmp 0x40783c
dec eax
cmp eax, edi
jle 0x40783c
mov ecx, dword [esp + 0x24]
mov edi, dword [esp + 0x18]
sub ecx, edi
dec edi
test edi, edi
lea eax, [ecx + 1]
je 0x40782e
mov ebp, dword [esp + 0x14]
sub ebp, eax
mov dl, byte [eax]
mov cl, byte [eax + ebp]
inc eax
cmp dl, cl
jne 0x407826
dec edi
jne 0x40780b
mov edx, dword [esp + 0x10]
mov dword [esp + 0x14], 0
jmp 0x40783c
test edi, edi
jne 0x407838
mov edx, dword [esp + 0x10]
mov dword [esp + 0x14], 0
jmp 0x40783c
mov edx, dword [esp + 0x10]
mov eax, dword [esp + 0x14]
and dh, 0xfd
test eax, eax
mov dword [esp + 0x10], edx
jne 0x407a17
test dl, 0x20
je 0x407e52
jmp 0x407a17
cmp eax, 0x3c
jne 0x407874
cmp ebx, 2
je 0x407e2d
cmp ebx, 0xffffffff
je 0x407e2d
test bl, 1
je 0x4079a2
test edx, 0x2c0
je 0x407909
cmp eax, 0x22
jne 0x4078aa
test dl, 0x80
je 0x4078c8
xor edx, 0x80
mov dword [esp + 0x20], ecx
mov dword [esp + 0x10], edx
mov dword [esp + 0x28], eax
jmp 0x407a17
cmp eax, 0x27
jne 0x4078c8
test dl, 0x40
je 0x4078c8
xor edx, 0x40
mov dword [esp + 0x20], ecx
mov dword [esp + 0x10], edx
mov dword [esp + 0x28], eax
jmp 0x407a17
test dh, 2
je 0x407998
cmp eax, 9
jb 0x407998
cmp eax, 0x20
ja 0x407998
movsx edi, byte [eax + 0x415a2b]
test edi, edi
je 0x407998
xor edx, 0x200
mov dword [esp + 0x20], ecx
mov dword [esp + 0x10], edx
mov dword [esp + 0x28], eax
jmp 0x407a17
cmp eax, 0x22
jne 0x40792e
test dh, 1
je 0x407998
xor edx, 0x180
mov dword [esp + 0x20], ecx
mov dword [esp + 0x10], edx
mov dword [esp + 0x28], eax
jmp 0x407a17
cmp eax, 0x27
jne 0x40794f
test dh, 1
je 0x407998
xor edx, 0x140
mov dword [esp + 0x20], ecx
mov dword [esp + 0x10], edx
mov dword [esp + 0x28], eax
jmp 0x407a17
cmp eax, 0x3d
jne 0x407974
cmp ecx, eax
je 0x407974
test dh, 1
jne 0x407979
xor edx, 0x100
mov dword [esp + 0x20], ecx
mov dword [esp + 0x10], edx
mov dword [esp + 0x28], eax
jmp 0x407a17
test dh, 1
je 0x407998
cmp eax, 9
jb 0x40798e
cmp eax, 0x20
ja 0x40798e
movsx edi, byte [eax + 0x415a2b]
test edi, edi
jne 0x407998
xor edx, 0x300
mov dword [esp + 0x10], edx
mov dword [esp + 0x20], ecx
mov dword [esp + 0x28], eax
jmp 0x407a17
test bl, 0x40
je 0x407a17
cmp eax, 0x22
jne 0x4079bd
test dl, 0x40
jne 0x407a17
xor edx, 0x80
mov dword [esp + 0x10], edx
jmp 0x407a17
cmp eax, 0x27
jne 0x407a17
test dl, 0x80
jne 0x407a17
xor edx, 0x40
mov dword [esp + 0x10], edx
jmp 0x407a17
test edx, edx
je 0x407d30
test dl, 0x10
je 0x407a3a
cmp eax, 0x3c
je 0x407e35
cmp eax, 9
jb 0x4079fb
cmp eax, 0x20
ja 0x4079fb
movsx eax, byte [eax + 0x415a2b]
test eax, eax
jne 0x407a17
xor edx, 0x10
mov dword [esp + 0x10], edx
mov dword [esp + 0x14], 0x415c2c
mov dword [esp + 0x18], 1
mov ebx, 2
mov edi, dword [esp + 0x24]
push edi
call dword [sym.imp.MSVCRT.dll__mbclen]
mov edx, dword [esp + 0x14]
mov ebp, dword [esp + 0x38]
add edi, eax
add esp, 4
mov dword [esp + 0x24], edi
xor ecx, ecx
jmp 0x407675
test dl, 1
je 0x407b2f
mov ecx, 1
xor edx, ecx
cmp eax, 0x60
mov dword [esp + 0x10], edx
ja 0x407b13
cmp eax, 0x40
jbe 0x407a65
cmp eax, 0x5b
jb 0x407b13
cmp eax, 0x5f
je 0x407b13
cmp eax, 0x3a
je 0x407b13
cmp eax, 0x2f
jne 0x407a96
mov dword [esp + 0x18], ecx
mov ecx, dword [esi + 0xc]
sub edi, ecx
xor ebx, ebx
inc edi
mov dword [esp + 0x14], 0x415c28
mov dword [esp + 0x1c], edi
jmp 0x407a17
cmp eax, 0x21
jne 0x407aa7
or edx, 2
mov dword [esp + 0x10], edx
jmp 0x407a17
cmp eax, 0x3f
jne 0x407ad0
mov ecx, dword [esi + 0xc]
mov dword [esp + 0x14], 0x415c24
sub edi, ecx
mov dword [esp + 0x18], 2
inc edi
mov ebx, 0x10
mov dword [esp + 0x1c], edi
jmp 0x407a17
mov edx, dword [esi + 8]
push 0xffffffffffffffff
push edx
push 0
push ecx
mov dword [esp + 0x24], 0x415c28
mov ecx, esp
push 0
mov dword [esp + 0x2c], 1
call fcn.004016c0
push ecx
mov ecx, esp
push str.first_tag_syntax
call fcn.004016c0
add ebp, 0x10
push ebp
call fcn.00404950
add esp, 0x18
or ebx, 0xffffffff
jmp 0x407a17
mov eax, dword [esi + 0xc]
mov dword [esp + 0x14], 0x415c28
sub edi, eax
mov dword [esp + 0x18], ecx
mov ebx, ecx
mov dword [esp + 0x1c], edi
jmp 0x407a17
test dl, 2
je 0x407c2c
xor edx, 2
cmp eax, 0x2d
mov dword [esp + 0x10], edx
jne 0x407b50
or edx, 4
mov dword [esp + 0x10], edx
jmp 0x407a17
test dl, 0x20
je 0x407bc7
cmp eax, 0x41
jb 0x407b84
cmp eax, 0x4e
ja 0x407b84
movsx eax, byte [eax + 0x415bbf]
test eax, eax
je 0x407b84
mov dword [esp + 0x14], 0x415c28
mov dword [esp + 0x18], 1
mov ebx, 0x40
jmp 0x407a17
mov eax, dword [esi + 8]
push 0xffffffffffffffff
push eax
push 0
push ecx
mov dword [esp + 0x24], 0x415c28
mov ecx, esp
push 0
mov dword [esp + 0x2c], 1
call fcn.004016c0
push ecx
mov ecx, esp
push str.doctype_tag_syntax
call fcn.004016c0
add ebp, 0x10
push ebp
call fcn.00404950
add esp, 0x18
or ebx, 0xffffffff
jmp 0x407a17
cmp eax, 0x5b
jne 0x407bd8
or edx, 8
mov dword [esp + 0x10], edx
jmp 0x407a17
cmp eax, 0x44
jne 0x407be9
or edx, 0x20
mov dword [esp + 0x10], edx
jmp 0x407a17
mov ecx, dword [esi + 8]
push 0xffffffffffffffff
push ecx
push 0
push ecx
mov dword [esp + 0x24], 0x415c28
mov ecx, esp
push 0
mov dword [esp + 0x2c], 1
call fcn.004016c0
push ecx
mov ecx, esp
push str.exclamation_tag_syntax
call fcn.004016c0
add ebp, 0x10
push ebp
call fcn.00404950
add esp, 0x18
or ebx, 0xffffffff
jmp 0x407a17
test dl, 4
je 0x407c9a
xor edx, 4
cmp eax, 0x2d
mov dword [esp + 0x10], edx
jne 0x407c57
mov dword [esp + 0x14], 0x415bd0
mov dword [esp + 0x18], 3
mov ebx, 0x20
jmp 0x407a17
mov edx, dword [esi + 8]
push 0xffffffffffffffff
push edx
push 0
push ecx
mov dword [esp + 0x24], 0x415c28
mov ecx, esp
push 0
mov dword [esp + 0x2c], 1
call fcn.004016c0
push ecx
mov ecx, esp
push str.comment_tag_syntax
call fcn.004016c0
add ebp, 0x10
push ebp
call fcn.00404950
add esp, 0x18
or ebx, 0xffffffff
jmp 0x407a17
test dl, 8
je 0x407d08
xor edx, 8
cmp eax, 0x43
mov dword [esp + 0x10], edx
jne 0x407cc5
mov dword [esp + 0x14], 0x415bb8
mov dword [esp + 0x18], 3
mov ebx, 8
jmp 0x407a17
mov eax, dword [esi + 8]
push 0xffffffffffffffff
push eax
push 0
push ecx
mov dword [esp + 0x24], 0x415c28
mov ecx, esp
push 0
mov dword [esp + 0x2c], 1
call fcn.004016c0
push ecx
mov ecx, esp
push str.cdata_section_syntax
call fcn.004016c0
add ebp, 0x10
push ebp
call fcn.00404950
add esp, 0x18
or ebx, 0xffffffff
jmp 0x407a17
test dl, 0x20
je 0x407a17
cmp eax, 0x3c
jne 0x407d22
or edx, 1
mov dword [esp + 0x10], edx
jmp 0x407a17
cmp eax, 0x3e
je 0x407e44
jmp 0x407a17
cmp eax, 0x3c
jne 0x407d42
mov dword [esp + 0x10], 1
jmp 0x407a17
cmp eax, 9
mov ebx, 4
jb 0x407a02
cmp eax, 0x20
ja 0x407a02
movsx eax, byte [eax + 0x415a2b]
test eax, eax
je 0x407a02
mov dword [esp + 0x10], 0x10
jmp 0x407a17
mov edx, dword [esp + 0x10]
mov ecx, dword [ebp + 4]
mov eax, dword [esi + 8]
cmp eax, ecx
jne 0x407da0
mov dword [ebp + 8], 0
mov dword [ebp], 0
mov eax, 0xfffffffe
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret 4
cmp ebx, 4
je 0x407e52
cmp ebx, 2
je 0x407e52
test dl, 0x20
mov eax, 0x415b9c
jne 0x407dfc
cmp ebx, 0x40
je 0x407dfc
cmp ebx, 1
jne 0x407dcd
mov eax, str.start_tag
jmp 0x407e01
test ebx, ebx
jne 0x407dd8
mov eax, str.end_tag
jmp 0x407e01
cmp ebx, 8
jne 0x407de4
mov eax, 0x415b78
jmp 0x407e01
cmp ebx, 0x10
jne 0x407df0
mov eax, str.processing_instruction
jmp 0x407e01
cmp ebx, 0x20
jne 0x407e01
mov eax, 0x415b58
jmp 0x407e01
mov eax, str.document_type
push 0xffffffffffffffff
push ecx
push 2
push ecx
mov ecx, esp
push eax
or ebx, 0xffffffff
call fcn.004016c0
push ecx
mov ecx, esp
push str.unterminated_tag_syntax
call fcn.004016c0
add ebp, 0x10
push ebp
call fcn.00404950
add esp, 0x18
jmp 0x407e52
sub edi, dword [esi + 0xc]
mov dword [esi + 8], edi
jmp 0x407e52
mov eax, dword [esi + 0xc]
mov ebx, 4
sub edi, eax
mov dword [esi + 8], edi
jmp 0x407e52
mov ecx, dword [esi + 0xc]
mov ebx, 0x40
sub edi, ecx
inc edi
mov dword [esi + 8], edi
mov eax, dword [esp + 0x34]
mov ecx, dword [esi + 8]
pop edi
pop esi
mov edx, dword [eax + 4]
mov dword [eax], ebx
sub ecx, edx
pop ebp
mov dword [eax + 8], ecx
mov eax, ebx
pop ebx
add esp, 0x20
ret 4