Function at 0x4081c0
Capabilities:
Parse credit card information

Disassembly:
sub esp, 0x1c0
mov eax, dword [0x450610]
xor eax, esp
mov dword [esp + 0x1bc], eax
mov edx, dword [esp + 0x1c4]
mov ecx, dword [esp + 0x1c8]
mov eax, dword [edx + 8]
push ebx
push ebp
xor ebp, ebp
push esi
mov dword [ecx + 4], eax
mov dword [ecx + 0xc], ebp
mov esi, dword [edx + 8]
push edi
mov edi, dword [edx + 0xc]
mov al, byte [edi + esi]
add edi, esi
or ebx, 0xffffffff
mov dword [esp + 0x24], edx
mov dword [esp + 0x20], ecx
mov dword [esp + 0x10], ebp
mov dword [esp + 0x18], ebp
mov dword [esp + 0x1c], ebp
mov dword [esp + 0x28], ebp
mov dword [esp + 0x30], ebp
mov dword [esp + 0x34], ebp
mov dword [esp + 0x38], esi
mov dword [esp + 0x2c], edi
test al, al
jne 0x408238
mov dword [ecx + 8], ebp
mov dword [ecx], ebp
lea eax, [ebp - 2]
jmp 0x4088d5
movsx eax, al
mov dword [esp + 0x14], eax
test eax, eax
je 0x4085bd
test ebp, ebp
je 0x408310
movsx ecx, byte [esp + 0x14]
push ecx
push str.__t_n_r__
call fcn.00428f6e
add esp, 8
test eax, eax
je 0x40859b
mov eax, dword [esp + 0x24]
mov esi, edi
sub esi, dword [eax + 0xc]
sub esi, ebp
test ebx, ebx
jne 0x408284
lea edx, [esi + ebp - 1]
mov dword [eax], ebp
mov dword [eax + 4], edx
jmp 0x4082fa
mov edi, dword [esp + 0x20]
mov eax, dword [edi + 0x10]
mov edx, dword [eax - 8]
add edi, 0x10
sub eax, 0x10
mov ecx, 1
sub ecx, dword [eax + 0xc]
sub edx, esi
or ecx, edx
jge 0x4082aa
push esi
mov ecx, edi
call fcn.00401630
mov eax, dword [esp + 0x24]
mov ecx, dword [eax + 0xc]
mov edx, dword [edi]
push esi
add ecx, ebp
push ecx
push edx
call fcn.0042aa20
add esp, 0xc
mov eax, esi
cmp esi, 0xffffffff
jne 0x4082da
mov eax, dword [edi]
mov ecx, dword [eax - 8]
test eax, eax
je 0x4082e2
push ecx
push eax
call fcn.00428e95
add esp, 8
test eax, eax
jl 0x408993
mov ecx, dword [edi]
cmp eax, dword [ecx - 8]
jg 0x408993
mov dword [ecx - 0xc], eax
mov ecx, dword [edi]
mov edi, dword [esp + 0x2c]
mov byte [eax + ecx], 0
mov esi, dword [esp + 0x38]
mov edx, dword [esp + 0x24]
xor ebp, ebp
mov dword [esp + 0x28], ebp
mov dword [esp + 0x34], ebp
mov dword [esp + 0x30], ebp
cmp dword [esp + 0x18], 0
je 0x40854b
mov eax, dword [esp + 0x14]
cmp eax, 0x3e
jne 0x4083e8
mov ecx, dword [esp + 0x10]
test cl, 0xc0
jne 0x408403
mov eax, dword [esp + 0x1c]
mov esi, edi
sub esi, dword [edx + 0xc]
mov dword [esp + 0x38], esi
cmp eax, 1
jne 0x40838d
mov dword [esp + 0x18], 0
cmp ebx, eax
jne 0x4083da
cmp dword [esp + 0x30], 0x2f
jne 0x4083da
cmp dword [esp + 0x34], 0
je 0x408380
movsx edx, byte [esp + 0x34]
push edx
push str.__t_n_r_
call fcn.00428f6e
mov ecx, dword [esp + 0x18]
add esp, 8
test eax, eax
je 0x4083da
mov eax, dword [esp + 0x20]
or dword [eax + 0xc], 0x10000
jmp 0x4083da
cmp esi, eax
jle 0x40859b
mov esi, dword [esp + 0x2c]
mov ebp, dword [esp + 0x1c]
mov edi, dword [esp + 0x18]
sub esi, ebp
inc esi
sub edi, esi
sub ebp, 1
je 0x4083c6
mov al, byte [esi]
mov dl, byte [edi + esi]
inc esi
cmp al, dl
je 0x4083a6
mov ebp, dword [esp + 0x28]
mov edi, dword [esp + 0x2c]
mov esi, dword [esp + 0x38]
jmp 0x40859b
mov ebp, dword [esp + 0x28]
mov edi, dword [esp + 0x2c]
mov esi, dword [esp + 0x38]
mov dword [esp + 0x18], 0
test cl, 0x20
je 0x4088bd
jmp 0x40859b
cmp eax, 0x3c
jne 0x4083ff
cmp ebx, 2
je 0x40899d
cmp ebx, 0xffffffff
je 0x40899d
mov ecx, dword [esp + 0x10]
test bl, 1
je 0x40851e
test cl, 0xc0
je 0x408463
cmp eax, 0x22
jne 0x408439
test cl, cl
jns 0x408510
xor ecx, 0x80
mov dword [esp + 0x10], ecx
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x34], ecx
mov dword [esp + 0x30], eax
jmp 0x40859b
cmp eax, 0x27
jne 0x408510
test cl, 0x40
je 0x408510
xor ecx, 0x40
mov dword [esp + 0x10], ecx
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x34], ecx
mov dword [esp + 0x30], eax
jmp 0x40859b
cmp eax, 0x22
jne 0x40848f
test ecx, 0x100
je 0x408510
xor ecx, 0x180
mov dword [esp + 0x10], ecx
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x34], ecx
mov dword [esp + 0x30], eax
jmp 0x40859b
cmp eax, 0x27
jne 0x4084b7
test ecx, 0x100
je 0x408510
xor ecx, 0x140
mov dword [esp + 0x10], ecx
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x34], ecx
mov dword [esp + 0x30], eax
jmp 0x40859b
cmp eax, 0x3d
jne 0x4084e5
cmp dword [esp + 0x30], eax
je 0x4084e5
test ecx, 0x100
jne 0x4084ed
xor ecx, 0x100
mov dword [esp + 0x10], ecx
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x34], ecx
mov dword [esp + 0x30], eax
jmp 0x40859b
test ecx, 0x100
je 0x408510
movsx eax, byte [esp + 0x14]
push eax
push str.__t_n_r
call fcn.00428f6e
add esp, 8
test eax, eax
mov eax, dword [esp + 0x14]
jne 0x408510
xor dword [esp + 0x10], 0x100
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x34], ecx
mov dword [esp + 0x30], eax
jmp 0x40859b
test bl, 0x40
je 0x40859b
cmp eax, 0x22
jne 0x408539
test cl, 0x40
jne 0x40859b
xor ecx, 0x80
mov dword [esp + 0x10], ecx
jmp 0x40859b
cmp eax, 0x27
jne 0x40859b
test cl, cl
js 0x40859b
xor ecx, 0x40
mov dword [esp + 0x10], ecx
jmp 0x40859b
mov eax, dword [esp + 0x10]
test eax, eax
je 0x4088ee
test al, 0x10
je 0x408601
cmp dword [esp + 0x14], 0x3c
je 0x4089a6
movsx edx, byte [esp + 0x14]
push edx
push str.__t_n_r
call fcn.00428f6e
add esp, 8
test eax, eax
jne 0x40859b
xor dword [esp + 0x10], 0x10
mov ebx, 2
mov dword [esp + 0x18], 0x44207c
mov dword [esp + 0x1c], 1
push edi
call fcn.0042a8bd
mov edx, dword [esp + 0x28]
add edi, eax
movsx eax, byte [edi]
add esp, 4
mov dword [esp + 0x2c], edi
mov dword [esp + 0x14], eax
test eax, eax
jne 0x408247
sub edi, dword [edx + 0xc]
dec edi
mov esi, edi
cmp ebx, 4
je 0x4088bd
cmp ebx, 2
je 0x4088bd
test byte [esp + 0x10], 0x20
mov eax, 0x442078
jne 0x40895e
cmp ebx, 0x40
je 0x40895e
cmp ebx, 1
jne 0x40892f
mov eax, str.Element_tag
jmp 0x408963
test al, 1
je 0x4086f9
mov ecx, dword [esp + 0x14]
xor eax, 1
mov dword [esp + 0x10], eax
cmp ecx, 0x60
ja 0x4086da
cmp ecx, 0x40
jbe 0x40862b
cmp ecx, 0x5b
jb 0x4086da
cmp ecx, 0x5f
je 0x4086da
cmp ecx, 0x3a
je 0x4086da
cmp ecx, 0x2f
jne 0x40865b
mov ebp, edi
sub ebp, dword [edx + 0xc]
xor ebx, ebx
inc ebp
mov dword [esp + 0x18], 0x442068
mov dword [esp + 0x28], ebp
jmp 0x408593
cmp ecx, 0x21
jne 0x40866c
or eax, 2
mov dword [esp + 0x10], eax
jmp 0x40859b
cmp ecx, 0x3f
jne 0x408693
mov ebp, edi
sub ebp, dword [edx + 0xc]
mov dword [esp + 0x18], 0x442064
inc ebp
mov dword [esp + 0x1c], 2
lea ebx, [ecx - 0x2f]
mov dword [esp + 0x28], ebp
jmp 0x40859b
push esi
push str.tag_name_character
lea eax, [esp + 0x170]
push str.Incorrect__s_at_offset__d
push eax
mov dword [esp + 0x28], 0x442068
mov dword [esp + 0x2c], 1
call fcn.0042b725
add esp, 0x10
lea ecx, [esp + 0x168]
push ecx
mov ecx, dword [esp + 0x24]
add ecx, 0x10
call fcn.00402e30
or ebx, 0xffffffff
jmp 0x40859b
mov ebp, edi
sub ebp, dword [edx + 0xc]
mov ebx, 1
mov dword [esp + 0x18], 0x442068
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x28], ebp
jmp 0x40859b
test al, 2
je 0x4087af
mov ecx, dword [esp + 0x14]
xor eax, 2
mov dword [esp + 0x10], eax
cmp ecx, 0x2d
jne 0x40871d
or eax, 4
mov dword [esp + 0x10], eax
jmp 0x40859b
cmp ecx, 0x5b
jne 0x408732
test al, 0x20
jne 0x408747
or eax, 8
mov dword [esp + 0x10], eax
jmp 0x40859b
cmp ecx, 0x44
jne 0x408747
test al, 0x20
jne 0x408747
or eax, 0x20
mov dword [esp + 0x10], eax
jmp 0x40859b
movsx edx, byte [esp + 0x14]
push edx
push 0x442030
call fcn.00428f6e
add esp, 8
mov dword [esp + 0x18], 0x442068
mov dword [esp + 0x1c], 1
test eax, eax
je 0x408778
mov ebx, 0x40
jmp 0x40859b
push esi
push str.__tag
lea eax, [esp + 0xa8]
push str.Incorrect__s_at_offset__d
push eax
call fcn.0042b725
add esp, 0x10
lea ecx, [esp + 0xa0]
push ecx
mov ecx, dword [esp + 0x24]
add ecx, 0x10
call fcn.00402e30
or ebx, 0xffffffff
jmp 0x40859b
test al, 4
je 0x408822
xor eax, 4
cmp dword [esp + 0x14], 0x2d
mov dword [esp + 0x10], eax
jne 0x4087db
mov dword [esp + 0x18], 0x442024
mov dword [esp + 0x1c], 3
mov ebx, 0x20
jmp 0x40859b
push esi
push str.comment_tag
lea edx, [esp + 0x10c]
push str.Incorrect__s_at_offset__d
push edx
mov dword [esp + 0x28], 0x442068
mov dword [esp + 0x2c], 1
call fcn.0042b725
mov ecx, dword [esp + 0x30]
add esp, 0x10
lea eax, [esp + 0x104]
push eax
add ecx, 0x10
call fcn.00402e30
or ebx, 0xffffffff
jmp 0x40859b
test al, 8
je 0x40888f
xor eax, 8
cmp dword [esp + 0x14], 0x43
mov dword [esp + 0x10], eax
jne 0x40884e
mov dword [esp + 0x18], 0x442014
mov dword [esp + 0x1c], 3
mov ebx, 8
jmp 0x40859b
push esi
push 0x442078
lea ecx, [esp + 0x44]
push str.Incorrect__s_at_offset__d
push ecx
mov dword [esp + 0x28], 0x442068
mov dword [esp + 0x2c], 1
call fcn.0042b725
mov ecx, dword [esp + 0x30]
add esp, 0x10
lea edx, [esp + 0x3c]
push edx
add ecx, 0x10
call fcn.00402e30
or ebx, 0xffffffff
jmp 0x40859b
test al, 0x20
je 0x40859b
mov ecx, dword [esp + 0x14]
cmp ecx, 0x3c
jne 0x4088ac
or eax, 1
mov dword [esp + 0x10], eax
jmp 0x40859b
cmp ecx, 0x3e
jne 0x40859b
sub edi, dword [edx + 0xc]
lea ebx, [ecx + 2]
mov esi, edi
mov ecx, dword [esp + 0x24]
lea eax, [esi + 1]
mov dword [ecx + 8], eax
mov ecx, dword [esp + 0x20]
sub eax, dword [ecx + 4]
mov dword [ecx], ebx
mov dword [ecx + 8], eax
mov eax, ebx
mov ecx, dword [esp + 0x1cc]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.004294c0
add esp, 0x1c0
ret
cmp dword [esp + 0x14], 0x3c
jne 0x408902
mov dword [esp + 0x10], 1
jmp 0x40859b
movsx eax, byte [esp + 0x14]
push eax
push str.__t_n_r
mov ebx, 4
call fcn.00428f6e
add esp, 8
test eax, eax
je 0x408586
mov dword [esp + 0x10], 0x10
jmp 0x40859b
test ebx, ebx
jne 0x40893a
mov eax, str.Element_end_tag
jmp 0x408963
cmp ebx, 8
jne 0x408946
mov eax, str.CDATA_Section
jmp 0x408963
cmp ebx, 0x10
jne 0x408952
mov eax, str.Processing_instruction
jmp 0x408963
cmp ebx, 0x20
jne 0x408963
mov eax, str.Comment
jmp 0x408963
mov eax, str.Doctype
mov edi, dword [esp + 0x20]
mov ecx, dword [edi + 4]
push ecx
push eax
lea edx, [esp + 0x44]
push str._s_at_offset__d_unterminated
push edx
or ebx, 0xffffffff
call fcn.0042b725
add esp, 0x10
lea eax, [esp + 0x3c]
push eax
lea ecx, [edi + 0x10]
call fcn.00402e30
jmp 0x4088bd
push 0x80070057
call fcn.00401090
sub edi, dword [edx + 0xc]
dec edi
jmp 0x4088bb
sub edi, dword [edx + 0xc]
mov ebx, 4
dec edi
jmp 0x4088bb