Function at 0x404940
Capabilities:
Parse credit card information

Disassembly:
sub esp, 0x1b4
mov ecx, dword [esp + 0x1b8]
mov eax, dword [esp + 0x1bc]
push ebx
push ebp
mov edx, dword [ecx + 8]
push esi
xor esi, esi
mov dword [eax + 4], edx
mov dword [eax + 0xc], esi
mov edx, dword [ecx + 8]
mov ebp, dword [ecx + 0xc]
mov dword [esp + 0x24], edx
add ebp, edx
push edi
xor edi, edi
or ebx, 0xffffffff
mov dl, byte [ebp]
mov dword [esp + 0x10], esi
test dl, dl
mov dword [esp + 0x18], edi
mov dword [esp + 0x1c], esi
mov dword [esp + 0x20], esi
mov dword [esp + 0x2c], esi
mov dword [esp + 0x30], esi
mov dword [esp + 0x24], ebp
jne 0x4049ac
mov dword [eax + 8], edi
mov dword [eax], edi
pop edi
pop esi
pop ebp
mov eax, 0xfffffffe
pop ebx
add esp, 0x1b4
ret
movsx eax, byte [ebp]
test eax, eax
mov dword [esp + 0x14], eax
je 0x405012
mov eax, dword [esp + 0x20]
test eax, eax
je 0x404a62
movsx eax, byte [esp + 0x14]
push eax
push str.__t_n_r__
call fcn.00413693
add esp, 8
test eax, eax
je 0x404cdb
mov edx, dword [esp + 0x1c8]
mov ebp, dword [esp + 0x24]
mov ecx, dword [esp + 0x20]
mov eax, dword [edx + 0xc]
sub ebp, eax
sub ebp, ecx
test ebx, ebx
jne 0x404a08
mov dword [edx], ecx
lea ecx, [ecx + ebp - 1]
mov dword [edx + 4], ecx
jmp 0x404a49
mov edx, dword [esp + 0x1cc]
push ebp
lea ecx, [edx + 0x10]
mov edx, dword [esp + 0x24]
lea esi, [eax + edx]
call fcn.0042620e
mov ecx, ebp
mov edi, eax
mov eax, ecx
push ebp
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [esp + 0x1d0]
add ecx, 0x10
call fcn.0042625d
mov esi, dword [esp + 0x1c]
mov edi, dword [esp + 0x18]
mov ebp, dword [esp + 0x24]
mov ecx, dword [esp + 0x1c8]
xor eax, eax
mov dword [esp + 0x20], eax
mov dword [esp + 0x30], eax
mov dword [esp + 0x2c], eax
test edi, edi
je 0x404c89
mov eax, dword [esp + 0x14]
cmp eax, 0x3e
jne 0x404b32
mov edx, dword [esp + 0x10]
test dl, 0xc0
jne 0x404b4d
mov eax, dword [ecx + 0xc]
sub ebp, eax
cmp esi, 1
mov dword [esp + 0x28], ebp
jne 0x404ad8
xor edi, edi
cmp ebx, esi
mov dword [esp + 0x18], edi
jne 0x404b24
cmp dword [esp + 0x2c], 0x2f
jne 0x404b24
mov eax, dword [esp + 0x30]
test eax, eax
je 0x404ac8
movsx edx, al
push edx
push 0x43d390
call fcn.00413693
mov edx, dword [esp + 0x18]
add esp, 8
test eax, eax
je 0x404b24
mov eax, dword [esp + 0x1cc]
or dword [eax + 0xc], 0x10000
jmp 0x404b24
cmp ebp, esi
jle 0x404cd7
mov eax, dword [esp + 0x24]
sub eax, esi
lea ebp, [eax + 1]
lea eax, [esi - 1]
test eax, eax
je 0x404b1a
mov ecx, edi
sub ecx, ebp
mov dword [esp + 0x14], ecx
jmp 0x404afe
mov ecx, dword [esp + 0x14]
mov dl, byte [ebp]
mov cl, byte [ecx + ebp]
inc ebp
cmp dl, cl
jne 0x404b0e
dec eax
jne 0x404afa
jmp 0x404b16
test eax, eax
jne 0x404cd7
mov edx, dword [esp + 0x10]
mov ebp, dword [esp + 0x28]
xor edi, edi
mov dword [esp + 0x18], edi
test dl, 0x20
je 0x4050c8
jmp 0x404cd7
cmp eax, 0x3c
jne 0x404b49
cmp ebx, 2
je 0x4050ab
cmp ebx, 0xffffffff
je 0x4050ab
mov edx, dword [esp + 0x10]
test bl, 1
je 0x404c5b
test dl, 0xc0
je 0x404bae
cmp eax, 0x22
jne 0x404b84
test dl, 0x80
je 0x404c4d
mov ecx, dword [esp + 0x2c]
xor edx, 0x80
mov dword [esp + 0x10], edx
mov dword [esp + 0x30], ecx
mov dword [esp + 0x2c], eax
jmp 0x404cd7
cmp eax, 0x27
jne 0x404c4d
test dl, 0x40
je 0x404c4d
mov ecx, dword [esp + 0x2c]
xor edx, 0x40
mov dword [esp + 0x10], edx
mov dword [esp + 0x30], ecx
mov dword [esp + 0x2c], eax
jmp 0x404cd7
cmp eax, 0x22
jne 0x404bd7
test dh, 1
je 0x404c4d
mov ecx, dword [esp + 0x2c]
xor edx, 0x180
mov dword [esp + 0x10], edx
mov dword [esp + 0x30], ecx
mov dword [esp + 0x2c], eax
jmp 0x404cd7
cmp eax, 0x27
jne 0x404bfc
test dh, 1
je 0x404c4d
mov ecx, dword [esp + 0x2c]
xor edx, 0x140
mov dword [esp + 0x10], edx
mov dword [esp + 0x30], ecx
mov dword [esp + 0x2c], eax
jmp 0x404cd7
cmp eax, 0x3d
jne 0x404c25
mov ecx, dword [esp + 0x2c]
cmp ecx, eax
je 0x404c25
test dh, 1
jne 0x404c2a
xor edx, 0x100
mov dword [esp + 0x30], ecx
mov dword [esp + 0x10], edx
mov dword [esp + 0x2c], eax
jmp 0x404cd7
test dh, 1
je 0x404c4d
movsx edx, byte [esp + 0x14]
push edx
push str.__t_n_r
call fcn.00413693
add esp, 8
test eax, eax
jne 0x404c49
xor dword [esp + 0x10], 0x100
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x2c]
mov dword [esp + 0x2c], eax
mov dword [esp + 0x30], ecx
jmp 0x404cd7
test bl, 0x40
je 0x404cd7
cmp eax, 0x22
jne 0x404c76
test dl, 0x40
jne 0x404cd7
xor edx, 0x80
mov dword [esp + 0x10], edx
jmp 0x404cd7
cmp eax, 0x27
jne 0x404cd7
test dl, 0x80
jne 0x404cd7
xor edx, 0x40
mov dword [esp + 0x10], edx
jmp 0x404cd7
mov eax, dword [esp + 0x10]
test eax, eax
je 0x404fd1
test al, 0x10
je 0x404cf6
mov eax, dword [esp + 0x14]
cmp eax, 0x3c
je 0x4050b1
movsx edx, al
push edx
push str.__t_n_r
call fcn.00413693
add esp, 8
test eax, eax
jne 0x404cd7
xor dword [esp + 0x10], 0x10
mov edi, 0x43d38c
mov esi, 1
mov dword [esp + 0x18], edi
mov dword [esp + 0x1c], esi
mov ebx, 2
mov ebp, dword [esp + 0x24]
push ebp
call fcn.0041367d
mov ecx, dword [esp + 0x1cc]
add esp, 4
add ebp, eax
mov dword [esp + 0x24], ebp
jmp 0x4049ac
test al, 1
je 0x404df1
mov edx, dword [esp + 0x14]
xor eax, 1
cmp edx, 0x60
mov dword [esp + 0x10], eax
ja 0x404dcf
cmp edx, 0x40
jbe 0x404d20
cmp edx, 0x5b
jb 0x404dcf
cmp edx, 0x5f
je 0x404dcf
cmp edx, 0x3a
je 0x404dcf
cmp edx, 0x2f
jne 0x404d57
mov edx, dword [ecx + 0xc]
xor ebx, ebx
sub ebp, edx
mov edi, 0x43d388
mov esi, 1
inc ebp
mov dword [esp + 0x18], edi
mov dword [esp + 0x1c], esi
mov dword [esp + 0x20], ebp
jmp 0x404cd7
cmp edx, 0x21
jne 0x404d67
or al, 2
mov dword [esp + 0x10], eax
jmp 0x404cd7
cmp edx, 0x3f
jne 0x404d92
mov edx, dword [ecx + 0xc]
mov edi, 0x43d1a4
sub ebp, edx
mov esi, 2
inc ebp
mov dword [esp + 0x18], edi
mov dword [esp + 0x1c], esi
mov ebx, 0x10
mov dword [esp + 0x20], ebp
jmp 0x404cd7
mov eax, dword [esp + 0x28]
lea ecx, [esp + 0x98]
push eax
push str.tag_name_character
mov edi, 0x43d388
mov esi, 1
push str.Incorrect__s_at_offset__d
push ecx
mov dword [esp + 0x28], edi
mov dword [esp + 0x2c], esi
call fcn.00412f35
add esp, 0x10
lea edx, [esp + 0x98]
jmp 0x404f15
mov eax, dword [ecx + 0xc]
mov edi, 0x43d388
mov esi, 1
sub ebp, eax
mov dword [esp + 0x18], edi
mov dword [esp + 0x1c], esi
mov ebx, esi
mov dword [esp + 0x20], ebp
jmp 0x404cd7
test al, 2
je 0x404ead
mov ecx, dword [esp + 0x14]
xor eax, 2
cmp ecx, 0x2d
mov dword [esp + 0x10], eax
jne 0x404e14
or al, 4
mov dword [esp + 0x10], eax
jmp 0x404cd7
cmp ecx, 0x5b
jne 0x404e28
test al, 0x20
jne 0x404e3c
or al, 8
mov dword [esp + 0x10], eax
jmp 0x404cd7
cmp ecx, 0x44
jne 0x404e3c
test al, 0x20
jne 0x404e3c
or al, 0x20
mov dword [esp + 0x10], eax
jmp 0x404cd7
movsx ecx, byte [esp + 0x14]
push ecx
push 0x43d354
call fcn.00413693
add esp, 8
mov edi, 0x43d388
mov esi, 1
mov dword [esp + 0x18], edi
test eax, eax
mov dword [esp + 0x1c], esi
je 0x404e6f
mov ebx, 0x40
jmp 0x404cd7
mov edx, dword [esp + 0x28]
lea eax, [esp + 0x160]
push edx
push str.__tag
push str.Incorrect__s_at_offset__d
push eax
call fcn.00412f35
mov edx, dword [esp + 0x1dc]
add esp, 0x10
lea ecx, [esp + 0x160]
push ecx
lea ecx, [edx + 0x10]
call fcn.00425f67
or ebx, 0xffffffff
jmp 0x404cd7
test al, 4
je 0x404f2d
xor eax, 4
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x14]
cmp eax, 0x2d
jne 0x404edd
mov edi, 0x43d348
mov esi, 3
mov dword [esp + 0x18], edi
mov dword [esp + 0x1c], esi
mov ebx, 0x20
jmp 0x404cd7
mov eax, dword [esp + 0x28]
lea ecx, [esp + 0xfc]
push eax
push str.comment_tag
mov edi, 0x43d388
mov esi, 1
push str.Incorrect__s_at_offset__d
push ecx
mov dword [esp + 0x28], edi
mov dword [esp + 0x2c], esi
call fcn.00412f35
add esp, 0x10
lea edx, [esp + 0xfc]
mov eax, dword [esp + 0x1cc]
push edx
lea ecx, [eax + 0x10]
call fcn.00425f67
or ebx, 0xffffffff
jmp 0x404cd7
test al, 8
je 0x404fa7
xor eax, 8
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x14]
cmp eax, 0x43
jne 0x404f5d
mov edi, 0x43d338
mov esi, 3
mov dword [esp + 0x18], edi
mov dword [esp + 0x1c], esi
mov ebx, 8
jmp 0x404cd7
mov ecx, dword [esp + 0x28]
lea edx, [esp + 0x34]
push ecx
push 0x43d334
mov edi, 0x43d388
mov esi, 1
push str.Incorrect__s_at_offset__d
push edx
mov dword [esp + 0x28], edi
mov dword [esp + 0x2c], esi
call fcn.00412f35
mov ecx, dword [esp + 0x1dc]
add esp, 0x10
lea eax, [esp + 0x34]
add ecx, 0x10
push eax
call fcn.00425f67
or ebx, 0xffffffff
jmp 0x404cd7
test al, 0x20
je 0x404cd7
mov edx, dword [esp + 0x14]
cmp edx, 0x3c
jne 0x404fc3
or al, 1
mov dword [esp + 0x10], eax
jmp 0x404cd7
cmp edx, 0x3e
je 0x4050be
jmp 0x404cd7
cmp dword [esp + 0x14], 0x3c
jne 0x404fe5
mov dword [esp + 0x10], 1
jmp 0x404cd7
movsx edx, byte [esp + 0x14]
push edx
push str.__t_n_r
mov ebx, 4
call fcn.00413693
add esp, 8
test eax, eax
je 0x404cc0
mov dword [esp + 0x10], 0x10
jmp 0x404cd7
sub ebp, dword [ecx + 0xc]
dec ebp
cmp ebx, 4
je 0x4050c8
cmp ebx, 2
je 0x4050c8
mov cl, byte [esp + 0x10]
mov eax, 0x43d334
test cl, 0x20
jne 0x405076
cmp ebx, 0x40
je 0x405076
cmp ebx, 1
jne 0x405047
mov eax, str.Element_tag
jmp 0x40507b
test ebx, ebx
jne 0x405052
mov eax, str.Element_end_tag
jmp 0x40507b
cmp ebx, 8
jne 0x40505e
mov eax, str.CDATA_Section
jmp 0x40507b
cmp ebx, 0x10
jne 0x40506a
mov eax, str.Processing_instruction
jmp 0x40507b
cmp ebx, 0x20
jne 0x40507b
mov eax, str.Comment
jmp 0x40507b
mov eax, str.Doctype
mov esi, dword [esp + 0x1cc]
lea edx, [esp + 0x34]
or ebx, 0xffffffff
mov ecx, dword [esi + 4]
push ecx
push eax
push str._s_at_offset__d_unterminated
push edx
call fcn.00412f35
add esp, 0x10
lea eax, [esp + 0x34]
lea ecx, [esi + 0x10]
push eax
call fcn.00425f67
jmp 0x4050c8
sub ebp, dword [ecx + 0xc]
dec ebp
jmp 0x4050c8
mov edx, dword [ecx + 0xc]
mov ebx, 4
sub ebp, edx
dec ebp
jmp 0x4050c8
mov eax, dword [ecx + 0xc]
mov ebx, 0x40
sub ebp, eax
mov ecx, dword [esp + 0x1c8]
lea eax, [ebp + 1]
pop edi
pop esi
mov dword [ecx + 8], eax
mov ecx, dword [esp + 0x1c4]
pop ebp
mov edx, dword [ecx + 4]
mov dword [ecx], ebx
sub eax, edx
mov dword [ecx + 8], eax
mov eax, ebx
pop ebx
add esp, 0x1b4
ret