Function at 0x404120
Capabilities:
Parse credit card information

Disassembly:
sub esp, 0x348
mov eax, dword [0x41d2b0]
xor eax, esp
mov dword [esp + 0x344], eax
mov eax, dword [edx + 8]
push ebx
push ebp
push esi
mov esi, ecx
push edi
xor edi, edi
mov dword [esi + 4], eax
mov dword [esi + 0xc], edi
mov eax, dword [edx + 8]
mov ecx, dword [edx + 0xc]
lea ecx, [ecx + eax*2]
mov dword [esp + 0x1c], eax
movzx eax, word [ecx]
or ebx, 0xffffffff
xor ebp, ebp
mov dword [esp + 0x24], edx
mov dword [esp + 0x20], esi
mov dword [esp + 0x10], edi
mov dword [esp + 0x14], edi
mov dword [esp + 0x28], edi
mov dword [esp + 0x2c], edi
mov dword [esp + 0x18], ecx
test ax, ax
jne 0x404188
mov dword [esi + 8], edi
mov dword [esi], edi
lea eax, [edi - 2]
jmp 0x404772
movzx esi, ax
test esi, esi
je 0x404478
test edi, edi
je 0x404202
push esi
push str.__t_n_r__
call fcn.00408180
add esp, 8
test eax, eax
je 0x404460
mov edx, dword [esp + 0x24]
mov ecx, dword [edx + 0xc]
mov edx, dword [esp + 0x18]
mov eax, edx
sub eax, ecx
sar eax, 1
sub eax, edi
test ebx, ebx
jne 0x4041dd
mov ecx, dword [esp + 0x24]
lea eax, [eax + edi - 1]
mov dword [ecx], edi
xor edi, edi
mov dword [ecx + 4], eax
mov dword [esp + 0x2c], edi
mov dword [esp + 0x28], edi
jmp 0x40420a
lea ecx, [ecx + edi*2]
push eax
push ecx
mov ecx, dword [esp + 0x28]
add ecx, 0x10
call fcn.004015c0
mov edx, dword [esp + 0x18]
mov ecx, dword [esp + 0x24]
xor edi, edi
mov dword [esp + 0x2c], edi
mov dword [esp + 0x28], edi
jmp 0x40420a
mov edx, dword [esp + 0x18]
mov ecx, dword [esp + 0x24]
cmp dword [esp + 0x14], 0
je 0x40441a
cmp esi, 0x3e
jne 0x4042cc
mov eax, dword [esp + 0x10]
test al, 0xc0
jne 0x4042e7
sub edx, dword [ecx + 0xc]
sar edx, 1
mov dword [esp + 0x1c], edx
cmp ebp, 1
jne 0x404279
mov dword [esp + 0x14], 0
cmp ebx, ebp
jne 0x4042bf
cmp dword [esp + 0x28], 0x2f
jne 0x4042bf
cmp dword [esp + 0x2c], 0
je 0x40426c
mov edx, dword [esp + 0x2c]
push edx
push 0x41a784
call fcn.00408180
add esp, 8
test eax, eax
mov eax, dword [esp + 0x10]
je 0x4042bf
mov ecx, dword [esp + 0x20]
or dword [ecx + 0xc], 0x10000
jmp 0x4042bf
cmp edx, ebp
jle 0x404460
mov ecx, dword [esp + 0x18]
lea eax, [ebp + ebp]
sub ecx, eax
lea eax, [ecx + 2]
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x30], ebp
sub ecx, eax
sub dword [esp + 0x30], 1
je 0x4042b3
mov dx, word [eax]
mov si, word [ecx + eax]
add eax, 2
cmp dx, si
je 0x404298
jmp 0x404460
mov eax, dword [esp + 0x10]
mov dword [esp + 0x14], 0
test al, 0x20
je 0x404758
jmp 0x404460
cmp esi, 0x3c
jne 0x4042e3
cmp ebx, 2
je 0x404829
cmp ebx, 0xffffffff
je 0x404829
mov eax, dword [esp + 0x10]
test bl, 1
je 0x4043ef
test al, 0xc0
je 0x404344
cmp esi, 0x22
jne 0x40431b
test al, al
jns 0x4043e1
xor eax, 0x80
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x28]
mov dword [esp + 0x2c], eax
mov dword [esp + 0x28], esi
jmp 0x404460
cmp esi, 0x27
jne 0x4043e1
test al, 0x40
je 0x4043e1
xor eax, 0x40
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x28]
mov dword [esp + 0x2c], eax
mov dword [esp + 0x28], esi
jmp 0x404460
cmp esi, 0x22
jne 0x40436e
test eax, 0x100
je 0x4043e1
xor eax, 0x180
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x28]
mov dword [esp + 0x2c], eax
mov dword [esp + 0x28], esi
jmp 0x404460
cmp esi, 0x27
jne 0x404394
test eax, 0x100
je 0x4043e1
xor eax, 0x140
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x28]
mov dword [esp + 0x2c], eax
mov dword [esp + 0x28], esi
jmp 0x404460
cmp esi, 0x3d
jne 0x4043c0
cmp dword [esp + 0x28], esi
je 0x4043c0
test eax, 0x100
jne 0x4043c7
xor eax, 0x100
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x28]
mov dword [esp + 0x2c], eax
mov dword [esp + 0x28], esi
jmp 0x404460
test eax, 0x100
je 0x4043e1
push esi
push str.__t_n_r
call fcn.00408180
add esp, 8
test eax, eax
jne 0x4043e1
xor dword [esp + 0x10], 0x100
mov eax, dword [esp + 0x28]
mov dword [esp + 0x2c], eax
mov dword [esp + 0x28], esi
jmp 0x404460
test bl, 0x40
je 0x404460
cmp esi, 0x22
jne 0x404408
test al, 0x40
jne 0x404460
xor eax, 0x80
mov dword [esp + 0x10], eax
jmp 0x404460
cmp esi, 0x27
jne 0x404460
test al, al
js 0x404460
xor eax, 0x40
mov dword [esp + 0x10], eax
jmp 0x404460
mov eax, dword [esp + 0x10]
test eax, eax
je 0x40478b
test al, 0x10
je 0x4044c0
cmp esi, 0x3c
je 0x404838
push esi
push str.__t_n_r
call fcn.00408180
add esp, 8
test eax, eax
jne 0x404460
xor dword [esp + 0x10], 0x10
mov ebx, 2
mov dword [esp + 0x14], 0x41a794
mov ebp, 1
add dword [esp + 0x18], 2
mov ecx, dword [esp + 0x18]
movzx esi, word [ecx]
test esi, esi
jne 0x404193
mov edx, dword [esp + 0x24]
sub ecx, dword [edx + 0xc]
sar ecx, 1
dec ecx
mov dword [esp + 0x1c], ecx
cmp ebx, 4
je 0x404758
cmp ebx, 2
je 0x404758
test byte [esp + 0x10], 0x20
mov eax, 0x41a68c
jne 0x4047f4
cmp ebx, 0x40
je 0x4047f4
cmp ebx, 1
jne 0x4047c5
mov eax, str.Element_tag
jmp 0x4047f9
test al, 1
je 0x4045a8
xor eax, 1
mov dword [esp + 0x10], eax
cmp esi, 0x60
ja 0x40458d
cmp esi, 0x40
jbe 0x4044e6
cmp esi, 0x5b
jb 0x40458d
cmp esi, 0x5f
je 0x40458d
cmp esi, 0x3a
je 0x40458d
cmp esi, 0x2f
jne 0x404514
mov edi, edx
sub edi, dword [ecx + 0xc]
xor ebx, ebx
sar edi, 1
mov dword [esp + 0x14], 0x41a798
inc edi
jmp 0x40445b
cmp esi, 0x21
jne 0x404525
or eax, 2
mov dword [esp + 0x10], eax
jmp 0x404460
cmp esi, 0x3f
jne 0x404545
mov edi, edx
sub edi, dword [ecx + 0xc]
mov dword [esp + 0x14], 0x41a4ac
sar edi, 1
lea ebp, [esi - 0x3d]
lea ebx, [esi - 0x2f]
inc edi
jmp 0x404460
mov ecx, dword [esp + 0x1c]
push ecx
push 0x41a79c
lea edx, [esp + 0x104]
push str.Incorrect__s_at_offset__d
push edx
mov dword [esp + 0x24], 0x41a798
mov ebp, 1
call fcn.00407232
mov ecx, dword [esp + 0x30]
add esp, 0x10
lea eax, [esp + 0xfc]
push eax
add ecx, 0x10
call fcn.00401590
or ebx, 0xffffffff
jmp 0x404460
mov edi, edx
sub edi, dword [ecx + 0xc]
mov ebp, 1
mov dword [esp + 0x14], 0x41a798
mov ebx, ebp
sar edi, 1
jmp 0x404460
test al, 2
je 0x404654
xor eax, 2
mov dword [esp + 0x10], eax
cmp esi, 0x2d
jne 0x4045c8
or eax, 4
mov dword [esp + 0x10], eax
jmp 0x404460
cmp esi, 0x5b
jne 0x4045dd
test al, 0x20
jne 0x4045f2
or eax, 8
mov dword [esp + 0x10], eax
jmp 0x404460
cmp esi, 0x44
jne 0x4045f2
test al, 0x20
jne 0x4045f2
or eax, 0x20
mov dword [esp + 0x10], eax
jmp 0x404460
push esi
push 0x41a7f8
call fcn.00408180
add esp, 8
mov dword [esp + 0x14], 0x41a798
mov ebp, 1
test eax, eax
je 0x404619
lea ebx, [ebp + 0x3f]
jmp 0x404460
mov ecx, dword [esp + 0x1c]
push ecx
push str.__tag
lea edx, [esp + 0x294]
push str.Incorrect__s_at_offset__d
push edx
call fcn.00407232
mov ecx, dword [esp + 0x30]
add esp, 0x10
lea eax, [esp + 0x28c]
push eax
add ecx, 0x10
call fcn.00401590
or ebx, 0xffffffff
jmp 0x404460
test al, 4
je 0x4046bf
xor eax, 4
mov dword [esp + 0x10], eax
cmp esi, 0x2d
jne 0x404677
mov dword [esp + 0x14], 0x41a80c
lea ebp, [esi - 0x2a]
lea ebx, [esi - 0xd]
jmp 0x404460
mov ecx, dword [esp + 0x1c]
push ecx
push str.comment_tag
lea edx, [esp + 0x1cc]
push str.Incorrect__s_at_offset__d
push edx
mov dword [esp + 0x24], 0x41a798
mov ebp, 1
call fcn.00407232
mov ecx, dword [esp + 0x30]
add esp, 0x10
lea eax, [esp + 0x1c4]
push eax
add ecx, 0x10
call fcn.00401590
or ebx, 0xffffffff
jmp 0x404460
test al, 8
je 0x404724
xor eax, 8
mov dword [esp + 0x10], eax
cmp esi, 0x43
jne 0x4046e2
mov dword [esp + 0x14], 0x41a82c
lea ebp, [esi - 0x40]
lea ebx, [esi - 0x3b]
jmp 0x404460
mov ecx, dword [esp + 0x1c]
push ecx
push 0x41a68c
lea edx, [esp + 0x3c]
push str.Incorrect__s_at_offset__d
push edx
mov dword [esp + 0x24], 0x41a798
mov ebp, 1
call fcn.00407232
mov ecx, dword [esp + 0x30]
add esp, 0x10
lea eax, [esp + 0x34]
push eax
add ecx, 0x10
call fcn.00401590
or ebx, 0xffffffff
jmp 0x404460
test al, 0x20
je 0x404460
cmp esi, 0x3c
jne 0x40473b
or dword [esp + 0x10], 1
jmp 0x404460
cmp esi, 0x3e
jne 0x404460
mov eax, dword [esp + 0x18]
mov edx, dword [esp + 0x24]
sub eax, dword [edx + 0xc]
lea ebx, [esi + 2]
sar eax, 1
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x24]
inc eax
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 + 0x354]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.00406e5e
add esp, 0x348
ret
cmp esi, 0x3c
jne 0x40479d
mov dword [esp + 0x10], 1
jmp 0x404460
push esi
push str.__t_n_r
mov ebx, 4
call fcn.00408180
add esp, 8
test eax, eax
je 0x40444e
mov dword [esp + 0x10], 0x10
jmp 0x404460
test ebx, ebx
jne 0x4047d0
mov eax, str.Element_end_tag
jmp 0x4047f9
cmp ebx, 8
jne 0x4047dc
mov eax, str.CDATA_Section
jmp 0x4047f9
cmp ebx, 0x10
jne 0x4047e8
mov eax, str.Processing_instruction
jmp 0x4047f9
cmp ebx, 0x20
jne 0x4047f9
mov eax, str.Comment
jmp 0x4047f9
mov eax, str.Doctype
mov esi, dword [esp + 0x20]
mov edx, dword [esi + 4]
push edx
push eax
lea eax, [esp + 0x3c]
push str._s_at_offset__d_unterminated
push eax
or ebx, 0xffffffff
call fcn.00407232
add esp, 0x10
lea ecx, [esp + 0x34]
push ecx
lea ecx, [esi + 0x10]
call fcn.00401590
jmp 0x404758
sub edx, dword [ecx + 0xc]
sar edx, 1
dec edx
mov dword [esp + 0x1c], edx
jmp 0x404758
sub edx, dword [ecx + 0xc]
mov ebx, 4
sar edx, 1
dec edx
mov dword [esp + 0x1c], edx
jmp 0x404758