Function at 0x420120
Capabilities:
Parse credit card information

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x24
mov eax, dword [ebp + 8]
xor edx, edx
push ebx
push esi
mov esi, ecx
mov ecx, dword [esi + 8]
mov dword [eax + 4], ecx
mov dword [eax + 0xc], edx
mov eax, dword [esi + 8]
mov ecx, dword [esi + 0xc]
lea eax, [ecx + eax*2]
push edi
mov dword [esp + 0xc], edx
mov dword [esp + 0x10], edx
or ebx, 0xffffffff
mov dword [esp + 0x18], edx
mov dword [esp + 0x1c], edx
mov dword [esp + 0x28], edx
mov dword [esp + 0x20], edx
mov dword [esp + 0x24], edx
mov dword [esp + 0x14], eax
jmp 0x420170
mov ecx, dword [esp + 0x14]
movzx eax, word [ecx]
cmp eax, edx
jne 0x420214
mov edi, dword [esi + 0x1c]
mov eax, ecx
sub eax, dword [esi + 0xc]
sar eax, 1
mov dword [esi + 8], eax
cmp edi, edx
je 0x420906
mov edx, dword [edi + 0xd4]
mov dword [esp + 0x2c], edx
call fcn.0041fb00
test al, al
je 0x420906
mov edi, dword [ebp + 8]
mov eax, dword [esi + 0x1c]
mov ecx, dword [edi + 4]
mov edx, dword [esi + 8]
mov eax, dword [eax + 0xd4]
sub edx, ecx
sub eax, dword [esp + 0x2c]
je 0x4201e6
sub ecx, eax
cmp dword [esp + 0x1c], 0
mov dword [edi + 4], ecx
je 0x4201d7
sub dword [esp + 0x1c], eax
jmp 0x4201e3
cmp dword [esp + 0x28], 0
je 0x4201e3
sub dword [esi], eax
sub dword [esi + 4], eax
sub dword [esi + 8], eax
mov ecx, dword [esi + 0x1c]
mov eax, dword [edi + 4]
mov ecx, dword [ecx + 0x58]
add eax, edx
cmp dword [ecx + 0x18], 8
jb 0x4201fc
mov ecx, dword [ecx + 4]
jmp 0x4201ff
add ecx, 4
lea eax, [ecx + eax*2]
mov dword [esi + 0xc], ecx
mov dword [esp + 0x14], eax
movzx eax, word [eax]
test eax, eax
je 0x420906
mov edx, dword [esp + 0x1c]
test edx, edx
je 0x42025f
lea ecx, [eax - 9]
cmp ecx, 0x35
ja 0x420570
movsx edi, byte [eax + 0x45c71b]
test edi, edi
je 0x420570
mov ecx, dword [esp + 0x14]
sub ecx, dword [esi + 0xc]
mov dword [esi], edx
sar ecx, 1
sub ecx, edx
lea edx, [ecx + edx - 1]
mov dword [esp + 0x28], ecx
xor ecx, ecx
mov dword [esi + 4], edx
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x24], ecx
mov dword [esp + 0x20], ecx
jmp 0x420263
mov ecx, dword [esp + 0x24]
mov edi, dword [esp + 0x10]
test edi, edi
je 0x420527
cmp eax, 0x3e
jne 0x42033b
mov edx, dword [esp + 0xc]
test dl, 0xc0
jne 0x420356
mov eax, dword [esp + 0x14]
sub eax, dword [esi + 0xc]
mov edx, dword [esp + 0x18]
sar eax, 1
inc eax
mov dword [esi + 8], eax
cmp edx, 1
jne 0x4202d9
xor edi, edi
mov dword [esp + 0x10], edi
cmp ebx, edx
jne 0x420314
cmp dword [esp + 0x20], 0x2f
jne 0x420314
test ecx, ecx
je 0x4202cd
test dword [esp + 0xc], 0x200
je 0x4202cd
lea eax, [ecx - 9]
cmp eax, 0x1e
ja 0x420314
movsx eax, byte [ecx + 0x45c753]
test eax, eax
je 0x420314
mov eax, dword [ebp + 8]
or dword [eax + 0xc], 0x10000
jmp 0x420314
dec eax
cmp eax, edx
jle 0x420314
mov eax, dword [esp + 0x14]
lea ecx, [edx + edx]
sub eax, ecx
mov dword [esp + 0x2c], edx
add eax, 2
mov edx, edi
sub edx, eax
sub dword [esp + 0x2c], 1
je 0x42030e
mov cx, word [eax]
mov di, word [edx + eax]
add eax, 2
cmp cx, di
je 0x4202f2
mov edi, dword [esp + 0x10]
jmp 0x420314
xor edi, edi
mov dword [esp + 0x10], edi
and dword [esp + 0xc], 0xfffffdff
test edi, edi
jne 0x420570
test byte [esp + 0xc], 0x20
je 0x4208a0
add dword [esp + 0x14], 2
xor edx, edx
jmp 0x420170
cmp eax, 0x3c
jne 0x420352
cmp ebx, 2
je 0x4209b5
cmp ebx, 0xffffffff
je 0x4209b5
mov edx, dword [esp + 0xc]
test bl, 1
je 0x4204e2
test edx, 0x2c0
je 0x420406
cmp eax, 0x22
jne 0x420396
test dl, dl
jns 0x4203bf
add dword [esp + 0x14], 2
xor edx, 0x80
mov dword [esp + 0xc], edx
mov edx, dword [esp + 0x20]
mov dword [esp + 0x24], edx
mov dword [esp + 0x20], eax
xor edx, edx
jmp 0x420170
cmp eax, 0x27
jne 0x4203bf
test dl, 0x40
je 0x4203bf
add dword [esp + 0x14], 2
xor edx, 0x40
mov dword [esp + 0xc], edx
mov edx, dword [esp + 0x20]
mov dword [esp + 0x24], edx
mov dword [esp + 0x20], eax
xor edx, edx
jmp 0x420170
test edx, 0x200
je 0x4204ca
lea edx, [eax - 9]
cmp edx, 0x17
ja 0x4204ca
movsx edx, byte [eax + 0x45c3f3]
test edx, edx
je 0x4204ca
mov edx, dword [esp + 0x20]
xor dword [esp + 0xc], 0x200
add dword [esp + 0x14], 2
mov dword [esp + 0x24], edx
mov dword [esp + 0x20], eax
xor edx, edx
jmp 0x420170
cmp eax, 0x22
jne 0x420439
test edx, 0x100
je 0x4204ca
add dword [esp + 0x14], 2
xor edx, 0x180
mov dword [esp + 0xc], edx
mov edx, dword [esp + 0x20]
mov dword [esp + 0x24], edx
mov dword [esp + 0x20], eax
xor edx, edx
jmp 0x420170
cmp eax, 0x27
jne 0x42046c
test edx, 0x100
je 0x4204ca
add dword [esp + 0x14], 2
xor edx, 0x140
mov dword [esp + 0xc], edx
mov edx, dword [esp + 0x20]
mov dword [esp + 0x24], edx
mov dword [esp + 0x20], eax
xor edx, edx
jmp 0x420170
cmp eax, 0x3d
jne 0x4204a1
cmp dword [esp + 0x20], eax
je 0x4204a1
test edx, 0x100
jne 0x4204a9
add dword [esp + 0x14], 2
xor edx, 0x100
mov dword [esp + 0xc], edx
mov edx, dword [esp + 0x20]
mov dword [esp + 0x24], edx
mov dword [esp + 0x20], eax
xor edx, edx
jmp 0x420170
test edx, 0x100
je 0x4204ca
lea ecx, [eax - 9]
cmp ecx, 0x17
ja 0x4204c0
movsx edx, byte [eax + 0x45c3f3]
test edx, edx
jne 0x4204ca
mov edx, dword [esp + 0xc]
xor edx, 0x300
mov dword [esp + 0xc], edx
mov edx, dword [esp + 0x20]
add dword [esp + 0x14], 2
mov dword [esp + 0x24], edx
mov dword [esp + 0x20], eax
xor edx, edx
jmp 0x420170
test bl, 0x40
je 0x420570
cmp eax, 0x22
jne 0x42050b
test dl, 0x40
jne 0x420570
add dword [esp + 0x14], 2
xor edx, 0x80
mov dword [esp + 0xc], edx
xor edx, edx
jmp 0x420170
cmp eax, 0x27
jne 0x420570
test dl, dl
js 0x420570
add dword [esp + 0x14], 2
xor edx, 0x40
mov dword [esp + 0xc], edx
xor edx, edx
jmp 0x420170
mov ecx, dword [esp + 0xc]
test ecx, ecx
je 0x4208b9
test cl, 0x10
je 0x42057c
cmp eax, 0x3c
je 0x4209c3
lea edx, [eax - 9]
cmp edx, 0x17
ja 0x420554
movsx eax, byte [eax + 0x45c3f3]
test eax, eax
jne 0x420570
xor ecx, 0x10
mov dword [esp + 0xc], ecx
mov ebx, 2
mov dword [esp + 0x10], 0x45c77c
mov dword [esp + 0x18], 1
add dword [esp + 0x14], 2
xor edx, edx
jmp 0x420170
test cl, 1
je 0x42067c
mov edi, 1
xor ecx, edi
mov dword [esp + 0xc], ecx
cmp eax, 0x60
ja 0x420655
cmp eax, 0x40
jbe 0x4205a7
cmp eax, 0x5b
jb 0x420655
cmp eax, 0x5f
je 0x420655
cmp eax, 0x3a
je 0x420655
cmp eax, 0x2f
jne 0x4205e7
mov eax, dword [esp + 0x14]
sub eax, dword [esi + 0xc]
add dword [esp + 0x14], 2
sar eax, 1
add eax, edi
xor ebx, ebx
mov dword [esp + 0x10], 0x45c780
mov dword [esp + 0x18], edi
mov dword [esp + 0x1c], eax
xor edx, edx
jmp 0x420170
cmp eax, 0x21
jne 0x4205ff
add dword [esp + 0x14], 2
or ecx, 2
mov dword [esp + 0xc], ecx
xor edx, edx
jmp 0x420170
cmp eax, 0x3f
jne 0x420632
lea ebx, [eax - 0x2f]
mov eax, dword [esp + 0x14]
sub eax, dword [esi + 0xc]
add dword [esp + 0x14], 2
sar eax, 1
add eax, edi
mov dword [esp + 0x10], 0x45c784
mov dword [esp + 0x18], 2
mov dword [esp + 0x1c], eax
xor edx, edx
jmp 0x420170
mov eax, dword [esi + 8]
push 0xffffffffffffffff
push eax
push 0
push ecx
mov eax, esp
mov dword [eax], 0
push ecx
mov eax, esp
mov dword [esp + 0x2c], edi
mov dword [eax], str.first_tag_syntax
jmp 0x42083e
mov eax, dword [esp + 0x14]
sub eax, dword [esi + 0xc]
add dword [esp + 0x14], 2
sar eax, 1
mov dword [esp + 0x10], 0x45c780
mov dword [esp + 0x18], edi
mov ebx, edi
mov dword [esp + 0x1c], eax
xor edx, edx
jmp 0x420170
test cl, 2
je 0x420774
xor ecx, 2
mov dword [esp + 0xc], ecx
cmp eax, 0x2d
jne 0x4206a4
add dword [esp + 0x14], 2
or ecx, 4
mov dword [esp + 0xc], ecx
xor edx, edx
jmp 0x420170
test cl, 0x20
je 0x4206fc
lea edx, [eax - 0x41]
cmp edx, 0xd
ja 0x4206dd
movsx eax, byte [eax + 0x45c76f]
test eax, eax
je 0x4206dd
add dword [esp + 0x14], 2
mov dword [esp + 0x10], 0x45c780
mov ebx, 0x40
mov dword [esp + 0x18], 1
xor edx, edx
jmp 0x420170
mov eax, dword [esi + 8]
push 0xffffffffffffffff
push eax
push 0
push ecx
mov eax, esp
mov dword [eax], 0
push ecx
mov eax, esp
mov dword [eax], str.doctype_tag_syntax
jmp 0x420836
cmp eax, 0x5b
jne 0x420714
add dword [esp + 0x14], 2
or ecx, 8
mov dword [esp + 0xc], ecx
xor edx, edx
jmp 0x420170
cmp eax, 0x44
jne 0x42072c
add dword [esp + 0x14], 2
or ecx, 0x20
mov dword [esp + 0xc], ecx
xor edx, edx
jmp 0x420170
mov edx, dword [esi + 8]
push 0xffffffffffffffff
push edx
push 0
push ecx
mov eax, esp
mov dword [eax], 0
push ecx
mov eax, esp
mov dword [eax], str.exclamation_tag_syntax
mov eax, dword [ebp + 8]
add eax, 0x10
push eax
mov dword [esp + 0x28], 0x45c780
mov dword [esp + 0x30], 1
call fcn.0041d2d0
add dword [esp + 0x2c], 2
add esp, 0x18
or ebx, 0xffffffff
xor edx, edx
jmp 0x420170
test cl, 4
je 0x4207ec
xor ecx, 4
mov dword [esp + 0xc], ecx
cmp eax, 0x2d
jne 0x4207a4
add dword [esp + 0x14], 2
mov dword [esp + 0x10], 0x45c818
mov dword [esp + 0x18], 3
lea ebx, [eax - 0xd]
xor edx, edx
jmp 0x420170
mov ecx, dword [esi + 8]
mov edx, dword [ebp + 8]
push 0xffffffffffffffff
push ecx
push 0
push ecx
mov eax, esp
push ecx
mov dword [eax], 0
mov eax, esp
add edx, 0x10
push edx
mov dword [esp + 0x28], 0x45c780
mov dword [esp + 0x30], 1
mov dword [eax], str.comment_tag_syntax
call fcn.0041d2d0
add dword [esp + 0x2c], 2
add esp, 0x18
or ebx, 0xffffffff
xor edx, edx
jmp 0x420170
test cl, 8
je 0x420864
xor ecx, 8
mov dword [esp + 0xc], ecx
cmp eax, 0x43
jne 0x42081c
add dword [esp + 0x14], 2
mov dword [esp + 0x10], 0x45c848
mov dword [esp + 0x18], 3
lea ebx, [eax - 0x3b]
xor edx, edx
jmp 0x420170
mov eax, dword [esi + 8]
push 0xffffffffffffffff
push eax
push 0
push ecx
mov eax, esp
mov dword [eax], 0
push ecx
mov eax, esp
mov dword [eax], str.cdata_section_syntax
mov dword [esp + 0x2c], 1
mov ecx, dword [ebp + 8]
add ecx, 0x10
push ecx
mov dword [esp + 0x28], 0x45c780
call fcn.0041d2d0
add dword [esp + 0x2c], 2
add esp, 0x18
or ebx, 0xffffffff
xor edx, edx
jmp 0x420170
test cl, 0x20
je 0x420570
cmp eax, 0x3c
jne 0x420885
add dword [esp + 0x14], 2
or ecx, 1
mov dword [esp + 0xc], ecx
xor edx, edx
jmp 0x420170
cmp eax, 0x3e
jne 0x420570
mov eax, dword [esp + 0x14]
sub eax, dword [esi + 0xc]
mov ebx, 0x40
sar eax, 1
inc eax
mov dword [esi + 8], eax
mov eax, dword [ebp + 8]
mov ecx, dword [esi + 8]
sub ecx, dword [eax + 4]
mov dword [eax], ebx
mov dword [eax + 8], ecx
mov eax, ebx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
cmp eax, 0x3c
jne 0x4208d2
add dword [esp + 0x14], 2
mov dword [esp + 0xc], 1
xor edx, edx
jmp 0x420170
lea edx, [eax - 9]
mov ebx, 4
cmp edx, 0x17
ja 0x42055b
movsx eax, byte [eax + 0x45c3f3]
test eax, eax
je 0x42055b
add dword [esp + 0x14], 2
mov dword [esp + 0xc], 0x10
xor edx, edx
jmp 0x420170
mov edi, dword [ebp + 8]
mov eax, dword [edi + 4]
cmp dword [esi + 8], eax
jne 0x42092c
mov dword [edi + 8], 0
mov dword [edi], 0
pop edi
pop esi
mov eax, 0xfffffffe
pop ebx
mov esp, ebp
pop ebp
ret 4
cmp ebx, 4
je 0x4208a0
cmp ebx, 2
je 0x4208a0
test byte [esp + 0xc], 0x20
mov edx, 0x45c650
jne 0x42098a
cmp ebx, 0x40
je 0x42098a
cmp ebx, 1
jne 0x42095b
mov edx, str.start_tag
jmp 0x42098f
test ebx, ebx
jne 0x420966
mov edx, str.end_tag
jmp 0x42098f
cmp ebx, 8
jne 0x420972
mov edx, str.cdata_section
jmp 0x42098f
cmp ebx, 0x10
jne 0x42097e
mov edx, str.processing_instruction
jmp 0x42098f
cmp ebx, 0x20
jne 0x42098f
mov edx, str.comment
jmp 0x42098f
mov edx, str.document_type
or ebx, 0xffffffff
push ebx
push eax
push 2
push ecx
mov eax, esp
push ecx
mov dword [eax], edx
mov eax, esp
add edi, 0x10
push edi
mov dword [eax], str.unterminated_tag_syntax
call fcn.0041d2d0
add esp, 0x18
jmp 0x4208a0
mov eax, dword [esp + 0x14]
sub eax, dword [esi + 0xc]
sar eax, 1
jmp 0x42089d
mov eax, dword [esp + 0x14]
sub eax, dword [esi + 0xc]
mov ebx, 4
sar eax, 1
jmp 0x42089d