Function at 0x409130
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 0x40919c
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 0x409802
mov eax, dword [esp + 0x20]
test eax, eax
je 0x409252
movsx eax, byte [esp + 0x14]
push eax
push str.__t_n_r__
call fcn.00475c39
add esp, 8
test eax, eax
je 0x4094cb
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 0x4091f8
mov dword [edx], ecx
lea ecx, [ecx + ebp - 1]
mov dword [edx + 4], ecx
jmp 0x409239
mov edx, dword [esp + 0x1cc]
push ebp
lea ecx, [edx + 0x10]
mov edx, dword [esp + 0x24]
lea esi, [eax + edx]
call fcn.0048c833
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.0048c882
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 0x409479
mov eax, dword [esp + 0x14]
cmp eax, 0x3e
jne 0x409322
mov edx, dword [esp + 0x10]
test dl, 0xc0
jne 0x40933d
mov eax, dword [ecx + 0xc]
sub ebp, eax
cmp esi, 1
mov dword [esp + 0x28], ebp
jne 0x4092c8
xor edi, edi
cmp ebx, esi
mov dword [esp + 0x18], edi
jne 0x409314
cmp dword [esp + 0x2c], 0x2f
jne 0x409314
mov eax, dword [esp + 0x30]
test eax, eax
je 0x4092b8
movsx edx, al
push edx
push 0x4c2d7c
call fcn.00475c39
mov edx, dword [esp + 0x18]
add esp, 8
test eax, eax
je 0x409314
mov eax, dword [esp + 0x1cc]
or dword [eax + 0xc], 0x10000
jmp 0x409314
cmp ebp, esi
jle 0x4094c7
mov eax, dword [esp + 0x24]
sub eax, esi
lea ebp, [eax + 1]
lea eax, [esi - 1]
test eax, eax
je 0x40930a
mov ecx, edi
sub ecx, ebp
mov dword [esp + 0x14], ecx
jmp 0x4092ee
mov ecx, dword [esp + 0x14]
mov dl, byte [ebp]
mov cl, byte [ecx + ebp]
inc ebp
cmp dl, cl
jne 0x4092fe
dec eax
jne 0x4092ea
jmp 0x409306
test eax, eax
jne 0x4094c7
mov edx, dword [esp + 0x10]
mov ebp, dword [esp + 0x28]
xor edi, edi
mov dword [esp + 0x18], edi
test dl, 0x20
je 0x4098b8
jmp 0x4094c7
cmp eax, 0x3c
jne 0x409339
cmp ebx, 2
je 0x40989b
cmp ebx, 0xffffffff
je 0x40989b
mov edx, dword [esp + 0x10]
test bl, 1
je 0x40944b
test dl, 0xc0
je 0x40939e
cmp eax, 0x22
jne 0x409374
test dl, 0x80
je 0x40943d
mov ecx, dword [esp + 0x2c]
xor edx, 0x80
mov dword [esp + 0x10], edx
mov dword [esp + 0x30], ecx
mov dword [esp + 0x2c], eax
jmp 0x4094c7
cmp eax, 0x27
jne 0x40943d
test dl, 0x40
je 0x40943d
mov ecx, dword [esp + 0x2c]
xor edx, 0x40
mov dword [esp + 0x10], edx
mov dword [esp + 0x30], ecx
mov dword [esp + 0x2c], eax
jmp 0x4094c7
cmp eax, 0x22
jne 0x4093c7
test dh, 1
je 0x40943d
mov ecx, dword [esp + 0x2c]
xor edx, 0x180
mov dword [esp + 0x10], edx
mov dword [esp + 0x30], ecx
mov dword [esp + 0x2c], eax
jmp 0x4094c7
cmp eax, 0x27
jne 0x4093ec
test dh, 1
je 0x40943d
mov ecx, dword [esp + 0x2c]
xor edx, 0x140
mov dword [esp + 0x10], edx
mov dword [esp + 0x30], ecx
mov dword [esp + 0x2c], eax
jmp 0x4094c7
cmp eax, 0x3d
jne 0x409415
mov ecx, dword [esp + 0x2c]
cmp ecx, eax
je 0x409415
test dh, 1
jne 0x40941a
xor edx, 0x100
mov dword [esp + 0x30], ecx
mov dword [esp + 0x10], edx
mov dword [esp + 0x2c], eax
jmp 0x4094c7
test dh, 1
je 0x40943d
movsx edx, byte [esp + 0x14]
push edx
push str.__t_n_r
call fcn.00475c39
add esp, 8
test eax, eax
jne 0x409439
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 0x4094c7
test bl, 0x40
je 0x4094c7
cmp eax, 0x22
jne 0x409466
test dl, 0x40
jne 0x4094c7
xor edx, 0x80
mov dword [esp + 0x10], edx
jmp 0x4094c7
cmp eax, 0x27
jne 0x4094c7
test dl, 0x80
jne 0x4094c7
xor edx, 0x40
mov dword [esp + 0x10], edx
jmp 0x4094c7
mov eax, dword [esp + 0x10]
test eax, eax
je 0x4097c1
test al, 0x10
je 0x4094e6
mov eax, dword [esp + 0x14]
cmp eax, 0x3c
je 0x4098a1
movsx edx, al
push edx
push str.__t_n_r
call fcn.00475c39
add esp, 8
test eax, eax
jne 0x4094c7
xor dword [esp + 0x10], 0x10
mov edi, 0x4c2d78
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.00475c23
mov ecx, dword [esp + 0x1cc]
add esp, 4
add ebp, eax
mov dword [esp + 0x24], ebp
jmp 0x40919c
test al, 1
je 0x4095e1
mov edx, dword [esp + 0x14]
xor eax, 1
cmp edx, 0x60
mov dword [esp + 0x10], eax
ja 0x4095bf
cmp edx, 0x40
jbe 0x409510
cmp edx, 0x5b
jb 0x4095bf
cmp edx, 0x5f
je 0x4095bf
cmp edx, 0x3a
je 0x4095bf
cmp edx, 0x2f
jne 0x409547
mov edx, dword [ecx + 0xc]
xor ebx, ebx
sub ebp, edx
mov edi, 0x4c2d74
mov esi, 1
inc ebp
mov dword [esp + 0x18], edi
mov dword [esp + 0x1c], esi
mov dword [esp + 0x20], ebp
jmp 0x4094c7
cmp edx, 0x21
jne 0x409557
or al, 2
mov dword [esp + 0x10], eax
jmp 0x4094c7
cmp edx, 0x3f
jne 0x409582
mov edx, dword [ecx + 0xc]
mov edi, 0x4c2bb4
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 0x4094c7
mov eax, dword [esp + 0x28]
lea ecx, [esp + 0x98]
push eax
push str.tag_name_character
mov edi, 0x4c2d74
mov esi, 1
push str.Incorrect__s_at_offset__d
push ecx
mov dword [esp + 0x28], edi
mov dword [esp + 0x2c], esi
call fcn.004750c2
add esp, 0x10
lea edx, [esp + 0x98]
jmp 0x409705
mov eax, dword [ecx + 0xc]
mov edi, 0x4c2d74
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 0x4094c7
test al, 2
je 0x40969d
mov ecx, dword [esp + 0x14]
xor eax, 2
cmp ecx, 0x2d
mov dword [esp + 0x10], eax
jne 0x409604
or al, 4
mov dword [esp + 0x10], eax
jmp 0x4094c7
cmp ecx, 0x5b
jne 0x409618
test al, 0x20
jne 0x40962c
or al, 8
mov dword [esp + 0x10], eax
jmp 0x4094c7
cmp ecx, 0x44
jne 0x40962c
test al, 0x20
jne 0x40962c
or al, 0x20
mov dword [esp + 0x10], eax
jmp 0x4094c7
movsx ecx, byte [esp + 0x14]
push ecx
push 0x4c2d40
call fcn.00475c39
add esp, 8
mov edi, 0x4c2d74
mov esi, 1
mov dword [esp + 0x18], edi
test eax, eax
mov dword [esp + 0x1c], esi
je 0x40965f
mov ebx, 0x40
jmp 0x4094c7
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.004750c2
mov edx, dword [esp + 0x1dc]
add esp, 0x10
lea ecx, [esp + 0x160]
push ecx
lea ecx, [edx + 0x10]
call fcn.0048c58c
or ebx, 0xffffffff
jmp 0x4094c7
test al, 4
je 0x40971d
xor eax, 4
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x14]
cmp eax, 0x2d
jne 0x4096cd
mov edi, 0x4c2d34
mov esi, 3
mov dword [esp + 0x18], edi
mov dword [esp + 0x1c], esi
mov ebx, 0x20
jmp 0x4094c7
mov eax, dword [esp + 0x28]
lea ecx, [esp + 0xfc]
push eax
push str.comment_tag
mov edi, 0x4c2d74
mov esi, 1
push str.Incorrect__s_at_offset__d
push ecx
mov dword [esp + 0x28], edi
mov dword [esp + 0x2c], esi
call fcn.004750c2
add esp, 0x10
lea edx, [esp + 0xfc]
mov eax, dword [esp + 0x1cc]
push edx
lea ecx, [eax + 0x10]
call fcn.0048c58c
or ebx, 0xffffffff
jmp 0x4094c7
test al, 8
je 0x409797
xor eax, 8
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x14]
cmp eax, 0x43
jne 0x40974d
mov edi, 0x4c2d24
mov esi, 3
mov dword [esp + 0x18], edi
mov dword [esp + 0x1c], esi
mov ebx, 8
jmp 0x4094c7
mov ecx, dword [esp + 0x28]
lea edx, [esp + 0x34]
push ecx
push 0x4c2d20
mov edi, 0x4c2d74
mov esi, 1
push str.Incorrect__s_at_offset__d
push edx
mov dword [esp + 0x28], edi
mov dword [esp + 0x2c], esi
call fcn.004750c2
mov ecx, dword [esp + 0x1dc]
add esp, 0x10
lea eax, [esp + 0x34]
add ecx, 0x10
push eax
call fcn.0048c58c
or ebx, 0xffffffff
jmp 0x4094c7
test al, 0x20
je 0x4094c7
mov edx, dword [esp + 0x14]
cmp edx, 0x3c
jne 0x4097b3
or al, 1
mov dword [esp + 0x10], eax
jmp 0x4094c7
cmp edx, 0x3e
je 0x4098ae
jmp 0x4094c7
cmp dword [esp + 0x14], 0x3c
jne 0x4097d5
mov dword [esp + 0x10], 1
jmp 0x4094c7
movsx edx, byte [esp + 0x14]
push edx
push str.__t_n_r
mov ebx, 4
call fcn.00475c39
add esp, 8
test eax, eax
je 0x4094b0
mov dword [esp + 0x10], 0x10
jmp 0x4094c7
sub ebp, dword [ecx + 0xc]
dec ebp
cmp ebx, 4
je 0x4098b8
cmp ebx, 2
je 0x4098b8
mov cl, byte [esp + 0x10]
mov eax, 0x4c2d20
test cl, 0x20
jne 0x409866
cmp ebx, 0x40
je 0x409866
cmp ebx, 1
jne 0x409837
mov eax, str.Element_tag
jmp 0x40986b
test ebx, ebx
jne 0x409842
mov eax, str.Element_end_tag
jmp 0x40986b
cmp ebx, 8
jne 0x40984e
mov eax, str.CDATA_Section
jmp 0x40986b
cmp ebx, 0x10
jne 0x40985a
mov eax, str.Processing_instruction
jmp 0x40986b
cmp ebx, 0x20
jne 0x40986b
mov eax, str.Comment
jmp 0x40986b
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.004750c2
add esp, 0x10
lea eax, [esp + 0x34]
lea ecx, [esi + 0x10]
push eax
call fcn.0048c58c
jmp 0x4098b8
sub ebp, dword [ecx + 0xc]
dec ebp
jmp 0x4098b8
mov edx, dword [ecx + 0xc]
mov ebx, 4
sub ebp, edx
dec ebp
jmp 0x4098b8
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