Function at 0x403290
Capabilities:
Parse credit card information

Disassembly:
sub esp, 0x1c0
mov eax, dword [0x442c34]
xor eax, esp
mov dword [esp + 0x1bc], eax
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 0x4032fa
mov dword [ecx + 8], ebp
mov dword [ecx], ebp
lea eax, [ebp - 2]
jmp 0x4039a2
movsx eax, al
mov dword [esp + 0x14], eax
test eax, eax
je 0x40368a
lea esp, [esp]
test ebp, ebp
je 0x4033d9
movsx ecx, byte [esp + 0x14]
push ecx
push str.__t_n_r__
call fcn.0041f226
add esp, 8
test eax, eax
je 0x403668
mov eax, dword [esp + 0x24]
mov esi, edi
sub esi, dword [eax + 0xc]
sub esi, ebp
test ebx, ebx
jne 0x40334d
lea edx, [esi + ebp - 1]
mov dword [eax], ebp
mov dword [eax + 4], edx
jmp 0x4033c3
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 0x403373
push esi
mov ecx, edi
call fcn.00404e40
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.004241c0
add esp, 0xc
mov eax, esi
cmp esi, 0xffffffff
jne 0x4033a3
mov eax, dword [edi]
mov ecx, dword [eax - 8]
test eax, eax
je 0x4033ab
push ecx
push eax
call fcn.0041ec31
add esp, 8
test eax, eax
jl 0x403a60
mov ecx, dword [edi]
cmp eax, dword [ecx - 8]
jg 0x403a60
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 0x403618
mov eax, dword [esp + 0x14]
cmp eax, 0x3e
jne 0x4034b5
mov ecx, dword [esp + 0x10]
test cl, 0xc0
jne 0x4034d0
mov eax, dword [esp + 0x1c]
mov esi, edi
sub esi, dword [edx + 0xc]
mov dword [esp + 0x38], esi
cmp eax, 1
jne 0x40345a
mov dword [esp + 0x18], 0
cmp ebx, eax
jne 0x4034a7
cmp dword [esp + 0x30], 0x2f
jne 0x4034a7
cmp dword [esp + 0x34], 0
je 0x40344d
movsx edx, byte [esp + 0x34]
push edx
push 0x43ac18
call fcn.0041f226
mov ecx, dword [esp + 0x18]
add esp, 8
test eax, eax
je 0x4034a7
mov eax, dword [esp + 0x20]
or dword [eax + 0xc], 0x10000
jmp 0x4034a7
cmp esi, eax
jle 0x403668
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 0x403493
mov al, byte [esi]
mov dl, byte [edi + esi]
inc esi
cmp al, dl
je 0x403473
mov ebp, dword [esp + 0x28]
mov edi, dword [esp + 0x2c]
mov esi, dword [esp + 0x38]
jmp 0x403668
mov ebp, dword [esp + 0x28]
mov edi, dword [esp + 0x2c]
mov esi, dword [esp + 0x38]
mov dword [esp + 0x18], 0
test cl, 0x20
je 0x40398a
jmp 0x403668
cmp eax, 0x3c
jne 0x4034cc
cmp ebx, 2
je 0x403a6a
cmp ebx, 0xffffffff
je 0x403a6a
mov ecx, dword [esp + 0x10]
test bl, 1
je 0x4035eb
test cl, 0xc0
je 0x403530
cmp eax, 0x22
jne 0x403506
test cl, cl
jns 0x4035dd
xor ecx, 0x80
mov dword [esp + 0x10], ecx
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x34], ecx
mov dword [esp + 0x30], eax
jmp 0x403668
cmp eax, 0x27
jne 0x4035dd
test cl, 0x40
je 0x4035dd
xor ecx, 0x40
mov dword [esp + 0x10], ecx
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x34], ecx
mov dword [esp + 0x30], eax
jmp 0x403668
cmp eax, 0x22
jne 0x40355c
test ecx, 0x100
je 0x4035dd
xor ecx, 0x180
mov dword [esp + 0x10], ecx
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x34], ecx
mov dword [esp + 0x30], eax
jmp 0x403668
cmp eax, 0x27
jne 0x403584
test ecx, 0x100
je 0x4035dd
xor ecx, 0x140
mov dword [esp + 0x10], ecx
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x34], ecx
mov dword [esp + 0x30], eax
jmp 0x403668
cmp eax, 0x3d
jne 0x4035b2
cmp dword [esp + 0x30], eax
je 0x4035b2
test ecx, 0x100
jne 0x4035ba
xor ecx, 0x100
mov dword [esp + 0x10], ecx
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x34], ecx
mov dword [esp + 0x30], eax
jmp 0x403668
test ecx, 0x100
je 0x4035dd
movsx eax, byte [esp + 0x14]
push eax
push str.__t_n_r
call fcn.0041f226
add esp, 8
test eax, eax
mov eax, dword [esp + 0x14]
jne 0x4035dd
xor dword [esp + 0x10], 0x100
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x34], ecx
mov dword [esp + 0x30], eax
jmp 0x403668
test bl, 0x40
je 0x403668
cmp eax, 0x22
jne 0x403606
test cl, 0x40
jne 0x403668
xor ecx, 0x80
mov dword [esp + 0x10], ecx
jmp 0x403668
cmp eax, 0x27
jne 0x403668
test cl, cl
js 0x403668
xor ecx, 0x40
mov dword [esp + 0x10], ecx
jmp 0x403668
mov eax, dword [esp + 0x10]
test eax, eax
je 0x4039bb
test al, 0x10
je 0x4036ce
cmp dword [esp + 0x14], 0x3c
je 0x403a73
movsx edx, byte [esp + 0x14]
push edx
push str.__t_n_r
call fcn.0041f226
add esp, 8
test eax, eax
jne 0x403668
xor dword [esp + 0x10], 0x10
mov ebx, 2
mov dword [esp + 0x18], 0x43ac20
mov dword [esp + 0x1c], 1
push edi
call fcn.0041f23d
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 0x403310
sub edi, dword [edx + 0xc]
dec edi
mov esi, edi
cmp ebx, 4
je 0x40398a
cmp ebx, 2
je 0x40398a
test byte [esp + 0x10], 0x20
mov eax, 0x43ab98
jne 0x403a2b
cmp ebx, 0x40
je 0x403a2b
cmp ebx, 1
jne 0x4039fc
mov eax, str.Element_tag
jmp 0x403a30
test al, 1
je 0x4037c6
mov ecx, dword [esp + 0x14]
xor eax, 1
mov dword [esp + 0x10], eax
cmp ecx, 0x60
ja 0x4037a7
cmp ecx, 0x40
jbe 0x4036f8
cmp ecx, 0x5b
jb 0x4037a7
cmp ecx, 0x5f
je 0x4037a7
cmp ecx, 0x3a
je 0x4037a7
cmp ecx, 0x2f
jne 0x403728
mov ebp, edi
sub ebp, dword [edx + 0xc]
xor ebx, ebx
inc ebp
mov dword [esp + 0x18], 0x43ac24
mov dword [esp + 0x28], ebp
jmp 0x403660
cmp ecx, 0x21
jne 0x403739
or eax, 2
mov dword [esp + 0x10], eax
jmp 0x403668
cmp ecx, 0x3f
jne 0x403760
mov ebp, edi
sub ebp, dword [edx + 0xc]
mov dword [esp + 0x18], 0x43aa84
inc ebp
mov dword [esp + 0x1c], 2
lea ebx, [ecx - 0x2f]
mov dword [esp + 0x28], ebp
jmp 0x403668
push esi
push str.tag_name_character
lea eax, [esp + 0x170]
push str.Incorrect__s_at_offset__d
push eax
mov dword [esp + 0x28], 0x43ac24
mov dword [esp + 0x2c], 1
call fcn.0041e104
add esp, 0x10
lea ecx, [esp + 0x168]
push ecx
mov ecx, dword [esp + 0x24]
add ecx, 0x10
call fcn.00404c30
or ebx, 0xffffffff
jmp 0x403668
mov ebp, edi
sub ebp, dword [edx + 0xc]
mov ebx, 1
mov dword [esp + 0x18], 0x43ac24
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x28], ebp
jmp 0x403668
test al, 2
je 0x40387c
mov ecx, dword [esp + 0x14]
xor eax, 2
mov dword [esp + 0x10], eax
cmp ecx, 0x2d
jne 0x4037ea
or eax, 4
mov dword [esp + 0x10], eax
jmp 0x403668
cmp ecx, 0x5b
jne 0x4037ff
test al, 0x20
jne 0x403814
or eax, 8
mov dword [esp + 0x10], eax
jmp 0x403668
cmp ecx, 0x44
jne 0x403814
test al, 0x20
jne 0x403814
or eax, 0x20
mov dword [esp + 0x10], eax
jmp 0x403668
movsx edx, byte [esp + 0x14]
push edx
push 0x43ac58
call fcn.0041f226
add esp, 8
mov dword [esp + 0x18], 0x43ac24
mov dword [esp + 0x1c], 1
test eax, eax
je 0x403845
mov ebx, 0x40
jmp 0x403668
push esi
push str.__tag
lea eax, [esp + 0xa8]
push str.Incorrect__s_at_offset__d
push eax
call fcn.0041e104
add esp, 0x10
lea ecx, [esp + 0xa0]
push ecx
mov ecx, dword [esp + 0x24]
add ecx, 0x10
call fcn.00404c30
or ebx, 0xffffffff
jmp 0x403668
test al, 4
je 0x4038ef
xor eax, 4
cmp dword [esp + 0x14], 0x2d
mov dword [esp + 0x10], eax
jne 0x4038a8
mov dword [esp + 0x18], 0x43ac64
mov dword [esp + 0x1c], 3
mov ebx, 0x20
jmp 0x403668
push esi
push str.comment_tag
lea edx, [esp + 0x10c]
push str.Incorrect__s_at_offset__d
push edx
mov dword [esp + 0x28], 0x43ac24
mov dword [esp + 0x2c], 1
call fcn.0041e104
mov ecx, dword [esp + 0x30]
add esp, 0x10
lea eax, [esp + 0x104]
push eax
add ecx, 0x10
call fcn.00404c30
or ebx, 0xffffffff
jmp 0x403668
test al, 8
je 0x40395c
xor eax, 8
cmp dword [esp + 0x14], 0x43
mov dword [esp + 0x10], eax
jne 0x40391b
mov dword [esp + 0x18], 0x43ac74
mov dword [esp + 0x1c], 3
mov ebx, 8
jmp 0x403668
push esi
push 0x43ab98
lea ecx, [esp + 0x44]
push str.Incorrect__s_at_offset__d
push ecx
mov dword [esp + 0x28], 0x43ac24
mov dword [esp + 0x2c], 1
call fcn.0041e104
mov ecx, dword [esp + 0x30]
add esp, 0x10
lea edx, [esp + 0x3c]
push edx
add ecx, 0x10
call fcn.00404c30
or ebx, 0xffffffff
jmp 0x403668
test al, 0x20
je 0x403668
mov ecx, dword [esp + 0x14]
cmp ecx, 0x3c
jne 0x403979
or eax, 1
mov dword [esp + 0x10], eax
jmp 0x403668
cmp ecx, 0x3e
jne 0x403668
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.0041dec5
add esp, 0x1c0
ret
cmp dword [esp + 0x14], 0x3c
jne 0x4039cf
mov dword [esp + 0x10], 1
jmp 0x403668
movsx eax, byte [esp + 0x14]
push eax
push str.__t_n_r
mov ebx, 4
call fcn.0041f226
add esp, 8
test eax, eax
je 0x403653
mov dword [esp + 0x10], 0x10
jmp 0x403668
test ebx, ebx
jne 0x403a07
mov eax, str.Element_end_tag
jmp 0x403a30
cmp ebx, 8
jne 0x403a13
mov eax, str.CDATA_Section
jmp 0x403a30
cmp ebx, 0x10
jne 0x403a1f
mov eax, str.Processing_instruction
jmp 0x403a30
cmp ebx, 0x20
jne 0x403a30
mov eax, str.Comment
jmp 0x403a30
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.0041e104
add esp, 0x10
lea eax, [esp + 0x3c]
push eax
lea ecx, [edi + 0x10]
call fcn.00404c30
jmp 0x40398a
push 0x80070057
call fcn.00404f80
sub edi, dword [edx + 0xc]
dec edi
jmp 0x403988
sub edi, dword [edx + 0xc]
mov ebx, 4
dec edi
jmp 0x403988