Function at 0x40bee0
Capabilities:
Parse credit card information

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x24
push ebx
xor eax, eax
push esi
push edi
mov edi, ecx
mov ecx, dword [ebp + 8]
mov edx, dword [edi + 8]
mov dword [ecx + 4], edx
mov dword [ecx + 0xc], eax
mov ecx, dword [edi + 0xc]
add ecx, dword [edi + 8]
mov dword [esp + 0xc], eax
mov dword [esp + 0x14], eax
mov dword [esp + 0x10], 0xffffffff
mov dword [esp + 0x18], eax
mov dword [esp + 0x20], eax
mov dword [esp + 0x2c], eax
mov dword [esp + 0x24], eax
mov dword [esp + 0x28], eax
mov dword [esp + 0x1c], ecx
lea ebx, [ebx]
movsx ebx, byte [ecx]
cmp ebx, eax
jne 0x40bfbd
sub ecx, dword [edi + 0xc]
mov esi, dword [edi + 0x1c]
cmp esi, eax
mov dword [edi + 8], ecx
je 0x40c5ca
mov ebx, dword [esi + 0xa4]
call fcn.0040b910
test al, al
je 0x40c5ca
mov esi, dword [ebp + 8]
mov eax, dword [edi + 0x1c]
mov ecx, dword [esi + 4]
mov edx, dword [edi + 8]
mov eax, dword [eax + 0xa4]
sub edx, ecx
sub eax, ebx
je 0x40bf98
sub ecx, eax
cmp dword [esp + 0x20], 0
mov dword [esi + 4], ecx
je 0x40bf89
sub dword [esp + 0x20], eax
jmp 0x40bf95
cmp dword [esp + 0x2c], 0
je 0x40bf95
sub dword [edi], eax
sub dword [edi + 4], eax
sub dword [edi + 8], eax
mov ecx, esi
mov eax, dword [ecx + 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 ebx, byte [eax]
test ebx, ebx
mov dword [esp + 0x1c], eax
je 0x40c5ca
mov ecx, eax
mov esi, dword [esp + 0x20]
test esi, esi
je 0x40c007
movsx eax, bl
push eax
push str.__t_n_r__
call dword [sym.imp.MSVCR80.dll_strchr]
add esp, 8
test eax, eax
je 0x40c27b
mov eax, dword [esp + 0x1c]
sub eax, dword [edi + 0xc]
mov dword [edi], esi
sub eax, esi
lea ecx, [eax + esi - 1]
mov dword [esp + 0x2c], eax
xor eax, eax
mov dword [edi + 4], ecx
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0x20], eax
mov dword [esp + 0x28], eax
mov dword [esp + 0x24], eax
mov esi, dword [esp + 0x14]
test esi, esi
je 0x40c22f
cmp ebx, 0x3e
jne 0x40c0c5
mov edx, dword [esp + 0xc]
test dl, 0xc0
jne 0x40c0e3
sub ecx, dword [edi + 0xc]
lea eax, [ecx + 1]
mov ecx, dword [esp + 0x18]
cmp ecx, 1
mov dword [edi + 8], eax
jne 0x40c07f
cmp dword [esp + 0x10], ecx
mov dword [esp + 0x14], 0
jne 0x40c0b7
cmp dword [esp + 0x24], 0x2f
jne 0x40c0b7
cmp dword [esp + 0x28], 0
je 0x40c073
movsx edx, byte [esp + 0x28]
push edx
push str.__t_n_r_
call dword [sym.imp.MSVCR80.dll_strchr]
mov edx, dword [esp + 0x14]
add esp, 8
test eax, eax
je 0x40c0b7
mov eax, dword [ebp + 8]
or dword [eax + 0xc], 0x10000
jmp 0x40c0b7
add eax, 0xffffffff
cmp eax, ecx
jle 0x40c27b
mov eax, dword [esp + 0x1c]
sub eax, ecx
add eax, 1
sub esi, eax
sub ecx, 1
je 0x40c0ab
mov dl, byte [eax]
mov bl, byte [esi + eax]
add eax, 1
cmp dl, bl
je 0x40c095
jmp 0x40c27b
mov edx, dword [esp + 0xc]
mov dword [esp + 0x14], 0
test dl, 0x20
je 0x40c56e
jmp 0x40c27b
cmp ebx, 0x3c
mov eax, dword [esp + 0x10]
jne 0x40c0e9
cmp eax, 2
je 0x40c0d8
cmp eax, 0xffffffff
jne 0x40c0e9
sub ecx, dword [edi + 0xc]
mov dword [edi + 8], ecx
jmp 0x40c56e
mov eax, dword [esp + 0x10]
jmp 0x40c0ed
mov edx, dword [esp + 0xc]
test al, 1
je 0x40c202
test dl, 0xc0
je 0x40c14c
cmp ebx, 0x22
jne 0x40c122
test dl, dl
jns 0x40c1f4
mov ecx, dword [esp + 0x24]
xor edx, 0x80
mov dword [esp + 0xc], edx
mov dword [esp + 0x28], ecx
mov dword [esp + 0x24], ebx
jmp 0x40c27b
cmp ebx, 0x27
jne 0x40c1f4
test dl, 0x40
je 0x40c1f4
mov ecx, dword [esp + 0x24]
xor edx, 0x40
mov dword [esp + 0xc], edx
mov dword [esp + 0x28], ecx
mov dword [esp + 0x24], ebx
jmp 0x40c27b
cmp ebx, 0x22
jne 0x40c178
test edx, 0x100
je 0x40c1f4
mov ecx, dword [esp + 0x24]
xor edx, 0x180
mov dword [esp + 0xc], edx
mov dword [esp + 0x28], ecx
mov dword [esp + 0x24], ebx
jmp 0x40c27b
cmp ebx, 0x27
jne 0x40c1a0
test edx, 0x100
je 0x40c1f4
mov ecx, dword [esp + 0x24]
xor edx, 0x140
mov dword [esp + 0xc], edx
mov dword [esp + 0x28], ecx
mov dword [esp + 0x24], ebx
jmp 0x40c27b
cmp ebx, 0x3d
jne 0x40c1ce
cmp dword [esp + 0x24], ebx
je 0x40c1ce
test edx, 0x100
jne 0x40c1d6
mov ecx, dword [esp + 0x24]
xor edx, 0x100
mov dword [esp + 0xc], edx
mov dword [esp + 0x28], ecx
mov dword [esp + 0x24], ebx
jmp 0x40c27b
test edx, 0x100
je 0x40c1f4
movsx eax, bl
push eax
push str.__t_n_r
call dword [sym.imp.MSVCR80.dll_strchr]
add esp, 8
test eax, eax
jne 0x40c1f4
xor dword [esp + 0xc], 0x100
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x28], ecx
mov dword [esp + 0x24], ebx
jmp 0x40c27b
test al, 0x40
je 0x40c27b
cmp ebx, 0x22
jne 0x40c21c
test byte [esp + 0xc], 0x40
jne 0x40c27b
xor dword [esp + 0xc], 0x80
jmp 0x40c27b
cmp ebx, 0x27
jne 0x40c27b
test byte [esp + 0xc], 0x80
jne 0x40c27b
xor dword [esp + 0xc], 0x40
jmp 0x40c27b
mov eax, dword [esp + 0xc]
test eax, eax
je 0x40c589
test al, 0x10
je 0x40c298
cmp ebx, 0x3c
je 0x40c687
movsx edx, bl
push edx
push str.__t_n_r
call dword [sym.imp.MSVCR80.dll_strchr]
add esp, 8
test eax, eax
jne 0x40c27b
xor dword [esp + 0xc], 0x10
mov dword [esp + 0x10], 2
mov dword [esp + 0x18], 1
mov dword [esp + 0x14], 0x539168
mov esi, dword [esp + 0x1c]
push esi
call dword [sym.imp.MSVCR80.dll__mbclen]
add esi, eax
add esp, 4
mov dword [esp + 0x1c], esi
mov ecx, esi
xor eax, eax
jmp 0x40bf30
test al, 1
je 0x40c375
mov edx, 1
xor eax, edx
cmp ebx, 0x60
mov dword [esp + 0xc], eax
ja 0x40c359
cmp ebx, 0x40
jbe 0x40c2c2
cmp ebx, 0x5b
jb 0x40c359
cmp ebx, 0x5f
je 0x40c359
cmp ebx, 0x3a
je 0x40c359
cmp ebx, 0x2f
jne 0x40c2fa
mov eax, ecx
sub eax, dword [edi + 0xc]
mov dword [esp + 0x14], 0x53916c
add eax, edx
mov dword [esp + 0x18], edx
mov dword [esp + 0x10], 0
mov dword [esp + 0x20], eax
jmp 0x40c27b
cmp ebx, 0x21
jne 0x40c30b
or eax, 2
mov dword [esp + 0xc], eax
jmp 0x40c27b
cmp ebx, 0x3f
jne 0x40c336
sub ecx, dword [edi + 0xc]
mov dword [esp + 0x14], 0x539170
add ecx, edx
mov dword [esp + 0x18], 2
mov dword [esp + 0x10], 0x10
mov dword [esp + 0x20], ecx
jmp 0x40c27b
mov eax, dword [edi + 8]
push 0xffffffffffffffff
push eax
push 0
push ecx
mov eax, esp
mov dword [eax], 0
push ecx
mov eax, esp
mov dword [esp + 0x2c], edx
mov dword [eax], str.first_tag_syntax
jmp 0x40c515
sub ecx, dword [edi + 0xc]
mov dword [esp + 0x14], 0x53916c
mov dword [esp + 0x18], edx
mov dword [esp + 0x10], edx
mov dword [esp + 0x20], ecx
jmp 0x40c27b
test al, 2
je 0x40c453
xor eax, 2
cmp ebx, 0x2d
mov dword [esp + 0xc], eax
jne 0x40c395
or eax, 4
mov dword [esp + 0xc], eax
jmp 0x40c27b
test al, 0x20
je 0x40c3eb
movsx edx, bl
push edx
push 0x539188
call dword [sym.imp.MSVCR80.dll_strchr]
add esp, 8
test eax, eax
mov dword [esp + 0x14], 0x53916c
mov dword [esp + 0x18], 1
je 0x40c3cc
mov dword [esp + 0x10], 0x40
jmp 0x40c27b
mov eax, dword [edi + 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 0x40c51d
cmp ebx, 0x5b
jne 0x40c3fc
or eax, 8
mov dword [esp + 0xc], eax
jmp 0x40c27b
cmp ebx, 0x44
jne 0x40c40d
or eax, 0x20
mov dword [esp + 0xc], eax
jmp 0x40c27b
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.exclamation_tag_syntax
mov eax, dword [ebp + 8]
add eax, 0x10
push eax
mov dword [esp + 0x2c], 0x53916c
mov dword [esp + 0x30], 1
call fcn.00408f90
add esp, 0x18
mov dword [esp + 0x10], 0xffffffff
jmp 0x40c27b
test al, 4
je 0x40c4c6
xor eax, 4
cmp ebx, 0x2d
mov dword [esp + 0xc], eax
jne 0x40c480
mov dword [esp + 0x14], 0x5391b8
mov dword [esp + 0x18], 3
mov dword [esp + 0x10], 0x20
jmp 0x40c27b
mov ecx, dword [edi + 8]
mov edx, dword [ebp + 8]
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 dword [esp + 0x2c], 0x53916c
mov dword [esp + 0x30], 1
mov dword [eax], str.comment_tag_syntax
call fcn.00408f90
add esp, 0x18
mov dword [esp + 0x10], 0xffffffff
jmp 0x40c27b
test al, 8
je 0x40c539
xor eax, 8
cmp ebx, 0x43
mov dword [esp + 0xc], eax
jne 0x40c4f3
mov dword [esp + 0x14], 0x5391d0
mov dword [esp + 0x18], 3
mov dword [esp + 0x10], 8
jmp 0x40c27b
mov eax, dword [edi + 8]
push 0xffffffffffffffff
push eax
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.cdata_section_syntax
mov dword [esp + 0x28], 0x53916c
mov ecx, dword [ebp + 8]
add ecx, 0x10
push ecx
call fcn.00408f90
add esp, 0x18
mov dword [esp + 0x10], 0xffffffff
jmp 0x40c27b
test al, 0x20
je 0x40c27b
cmp ebx, 0x3c
jne 0x40c550
or dword [esp + 0xc], 1
jmp 0x40c27b
cmp ebx, 0x3e
jne 0x40c27b
mov eax, dword [esp + 0x1c]
sub eax, dword [edi + 0xc]
mov dword [esp + 0x10], 0x40
add eax, 1
mov dword [edi + 8], eax
mov eax, dword [edi + 8]
mov ecx, dword [ebp + 8]
sub eax, dword [ecx + 4]
mov dword [ecx + 8], eax
mov eax, dword [esp + 0x10]
mov dword [ecx], eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
cmp ebx, 0x3c
jne 0x40c59b
mov dword [esp + 0xc], 1
jmp 0x40c27b
movsx edx, bl
push edx
push str.__t_n_r
mov dword [esp + 0x18], 4
call dword [sym.imp.MSVCR80.dll_strchr]
add esp, 8
test eax, eax
je 0x40c263
mov dword [esp + 0xc], 0x10
jmp 0x40c27b
mov edx, dword [ebp + 8]
mov esi, dword [edx + 4]
cmp dword [edi + 8], esi
jne 0x40c5f0
pop edi
pop esi
mov dword [edx + 8], 0
mov dword [edx], 0
mov eax, 0xfffffffe
pop ebx
mov esp, ebp
pop ebp
ret 4
cmp dword [esp + 0x10], 4
je 0x40c56e
cmp dword [esp + 0x10], 2
je 0x40c56e
test byte [esp + 0xc], 0x20
mov ecx, 0x5390e8
jne 0x40c656
mov eax, dword [esp + 0x10]
cmp eax, 0x40
je 0x40c656
cmp eax, 1
jne 0x40c627
mov ecx, str.start_tag
jmp 0x40c65b
test eax, eax
jne 0x40c632
mov ecx, str.end_tag
jmp 0x40c65b
cmp eax, 8
jne 0x40c63e
mov ecx, str.cdata_section
jmp 0x40c65b
cmp eax, 0x10
jne 0x40c64a
mov ecx, str.processing_instruction
jmp 0x40c65b
cmp eax, 0x20
jne 0x40c65b
mov ecx, str.comment
jmp 0x40c65b
mov ecx, str.document_type
push 0xffffffffffffffff
push esi
push 2
push ecx
mov eax, esp
push ecx
mov dword [eax], ecx
mov eax, esp
add edx, 0x10
push edx
mov dword [esp + 0x28], 0xffffffff
mov dword [eax], str.unterminated_tag_syntax
call fcn.00408f90
add esp, 0x18
jmp 0x40c56e
sub ecx, dword [edi + 0xc]
mov dword [esp + 0x10], 4
mov dword [edi + 8], ecx
jmp 0x40c56e