Function at 0x4420a928
Capabilities:
Parse credit card information

Disassembly:
sub esp, 0x348
mov eax, dword [0x442bd0c0]
xor eax, esp
mov dword [esp + 0x344], eax
mov eax, dword [esp + 0x350]
push ebx
xor edx, edx
push ebp
mov ebp, dword [esp + 0x354]
mov ecx, dword [ebp + 8]
push esi
mov dword [eax + 4], ecx
mov dword [eax + 0xc], edx
mov ecx, dword [ebp + 8]
push edi
mov edi, dword [ebp + 0xc]
lea edi, [edi + ecx*2]
mov dword [esp + 0x20], ecx
movzx ecx, word [edi]
or ebx, 0xffffffff
xor esi, esi
mov dword [esp + 0x24], eax
mov dword [esp + 0x10], edx
mov dword [esp + 0x18], edx
mov dword [esp + 0x1c], edx
mov dword [esp + 0x28], edx
mov dword [esp + 0x2c], edx
cmp cx, dx
jne 0x4420a998
push 0xfffffffffffffffe
mov dword [eax + 8], edx
mov dword [eax], edx
pop eax
jmp 0x4420af23
movzx eax, cx
mov dword [esp + 0x14], eax
cmp eax, edx
je 0x4420ac3c
jmp 0x4420a9ab
xor edx, edx
cmp esi, edx
je 0x4420a9ff
push dword [esp + 0x14]
push str.__t_n_r__
call dword [sym.imp.MSVCR90.dll_wcschr]
pop ecx
pop ecx
test eax, eax
je 0x4420ac2b
mov ecx, dword [ebp + 0xc]
mov eax, edi
sub eax, ecx
sar eax, 1
sub eax, esi
test ebx, ebx
jne 0x4420a9e3
lea eax, [eax + esi - 1]
mov dword [ebp], esi
mov dword [ebp + 4], eax
jmp 0x4420a9f5
push eax
lea eax, [ecx + esi*2]
mov ecx, dword [esp + 0x28]
push eax
add ecx, 0x10
call dword [sym.imp.MSVCP90.dll_public:_class_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int______thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::assign_unsigned_short_int_const___unsigned_int_]
xor esi, esi
mov dword [esp + 0x2c], esi
mov dword [esp + 0x28], esi
xor edx, edx
cmp dword [esp + 0x18], edx
je 0x4420abde
mov eax, dword [esp + 0x14]
cmp eax, 0x3e
jne 0x4420aac6
test byte [esp + 0x10], 0xc0
jne 0x4420aadd
mov ecx, dword [esp + 0x1c]
mov eax, edi
sub eax, dword [ebp + 0xc]
sar eax, 1
mov dword [esp + 0x20], eax
cmp ecx, 1
jne 0x4420aa6e
mov dword [esp + 0x18], edx
cmp ebx, ecx
jne 0x4420aab6
cmp dword [esp + 0x28], 0x2f
jne 0x4420aab6
cmp dword [esp + 0x2c], edx
je 0x4420aa61
push dword [esp + 0x2c]
push 0x44282cd0
call dword [sym.imp.MSVCR90.dll_wcschr]
pop ecx
pop ecx
test eax, eax
je 0x4420aab6
mov eax, dword [esp + 0x24]
or dword [eax + 0xc], 0x10000
jmp 0x4420aab6
cmp eax, ecx
jle 0x4420aaab
lea eax, [ecx + ecx]
mov edx, edi
sub edx, eax
mov dword [esp + 0x14], ecx
mov ecx, dword [esp + 0x18]
lea eax, [edx + 2]
sub ecx, eax
mov dword [esp + 0x30], ecx
jmp 0x4420aa90
mov ecx, dword [esp + 0x30]
dec dword [esp + 0x14]
je 0x4420aaa6
mov dx, word [eax]
mov cx, word [ecx + eax]
inc eax
inc eax
cmp dx, cx
je 0x4420aa8c
jmp 0x4420aaab
and dword [esp + 0x18], 0
cmp dword [esp + 0x18], 0
jne 0x4420ac2b
test byte [esp + 0x10], 0x20
je 0x4420af0d
jmp 0x4420ac2b
cmp eax, 0x3c
jne 0x4420aadd
cmp ebx, 2
je 0x4420afde
cmp ebx, 0xffffffff
je 0x4420afde
test bl, 1
je 0x4420abac
test byte [esp + 0x10], 0xc0
je 0x4420ab25
cmp eax, 0x22
jne 0x4420ab0a
test byte [esp + 0x10], 0x80
je 0x4420ab9e
xor dword [esp + 0x10], 0x80
jmp 0x4420ab9e
cmp eax, 0x27
jne 0x4420ab9e
test byte [esp + 0x10], 0x40
je 0x4420ab9e
xor dword [esp + 0x10], 0x40
jmp 0x4420ab9e
cmp eax, 0x22
jne 0x4420ab3e
test dword [esp + 0x10], 0x100
je 0x4420ab9e
xor dword [esp + 0x10], 0x180
jmp 0x4420ab9e
cmp eax, 0x27
jne 0x4420ab57
test dword [esp + 0x10], 0x100
je 0x4420ab9e
xor dword [esp + 0x10], 0x140
jmp 0x4420ab9e
cmp eax, 0x3d
jne 0x4420ab73
cmp dword [esp + 0x28], eax
je 0x4420ab73
mov ecx, 0x100
test dword [esp + 0x10], ecx
jne 0x4420ab73
xor dword [esp + 0x10], ecx
jmp 0x4420ab9e
test dword [esp + 0x10], 0x100
je 0x4420ab9e
push dword [esp + 0x14]
push str.__t_n_r
call dword [sym.imp.MSVCR90.dll_wcschr]
pop ecx
test eax, eax
mov eax, dword [esp + 0x18]
pop ecx
jne 0x4420ab9e
xor dword [esp + 0x10], 0x100
mov ecx, dword [esp + 0x28]
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x28], eax
jmp 0x4420ac2b
test bl, 0x40
je 0x4420ac2b
cmp dword [esp + 0x14], 0x22
jne 0x4420abc9
test byte [esp + 0x10], 0x40
jne 0x4420ac2b
xor dword [esp + 0x10], 0x80
jmp 0x4420ac2b
cmp dword [esp + 0x14], 0x27
jne 0x4420ac2b
test byte [esp + 0x10], 0x80
jne 0x4420ac2b
xor dword [esp + 0x10], 0x40
jmp 0x4420ac2b
cmp dword [esp + 0x10], edx
je 0x4420af3c
test byte [esp + 0x10], 0x10
je 0x4420ac84
cmp dword [esp + 0x14], 0x3c
je 0x4420afe9
push dword [esp + 0x14]
push str.__t_n_r
call dword [sym.imp.MSVCR90.dll_wcschr]
pop ecx
pop ecx
test eax, eax
jne 0x4420ac2b
xor dword [esp + 0x10], 0x10
push 2
mov dword [esp + 0x20], 1
mov dword [esp + 0x1c], 0x44282ccc
pop ebx
inc edi
inc edi
movzx eax, word [edi]
mov dword [esp + 0x14], eax
test eax, eax
jne 0x4420a9a9
sub edi, dword [ebp + 0xc]
sar edi, 1
dec edi
mov dword [esp + 0x20], edi
cmp ebx, 4
je 0x4420af0d
cmp ebx, 2
je 0x4420af0d
test byte [esp + 0x10], 0x20
mov eax, 0x44282cc4
jne 0x4420afa8
cmp ebx, 0x40
je 0x4420afa8
cmp ebx, 1
jne 0x4420af79
mov eax, 0x44282cac
jmp 0x4420afad
test byte [esp + 0x10], 1
je 0x4420ad68
mov ecx, dword [esp + 0x14]
xor eax, eax
inc eax
xor dword [esp + 0x10], eax
cmp ecx, 0x60
ja 0x4420ad4e
cmp ecx, 0x40
jbe 0x4420acb1
cmp ecx, 0x5b
jb 0x4420ad4e
cmp ecx, 0x5f
je 0x4420ad4e
cmp ecx, 0x3a
je 0x4420ad4e
cmp ecx, 0x2f
jne 0x4420ace3
mov esi, edi
sub esi, dword [ebp + 0xc]
xor ebx, ebx
sar esi, 1
mov dword [esp + 0x18], 0x44282ca8
mov dword [esp + 0x1c], eax
inc esi
jmp 0x4420ac2b
cmp ecx, 0x21
jne 0x4420acf2
or dword [esp + 0x10], 2
jmp 0x4420ac2b
cmp ecx, 0x3f
jne 0x4420ad16
mov esi, edi
sub esi, dword [ebp + 0xc]
mov dword [esp + 0x18], 0x44282ca0
sar esi, 1
mov dword [esp + 0x1c], 2
push 0x10
inc esi
jmp 0x4420ac2a
push dword [esp + 0x20]
lea eax, [esp + 0x100]
push str.tag_name_character
push str.Incorrect__s_at_offset__d
push eax
mov dword [esp + 0x28], 0x44282ca8
mov dword [esp + 0x2c], 1
call dword [sym.imp.MSVCR90.dll__swprintf]
lea eax, [esp + 0x10c]
jmp 0x4420aec1
mov esi, edi
sub esi, dword [ebp + 0xc]
mov dword [esp + 0x18], 0x44282ca8
mov dword [esp + 0x1c], eax
mov ebx, eax
sar esi, 1
jmp 0x4420ac2b
test byte [esp + 0x10], 2
je 0x4420ae0b
mov eax, dword [esp + 0x14]
xor dword [esp + 0x10], 2
cmp eax, 0x2d
jne 0x4420ad8b
or dword [esp + 0x10], 4
jmp 0x4420ac2b
cmp eax, 0x5b
jne 0x4420ada1
test byte [esp + 0x10], 0x20
jne 0x4420adb7
or dword [esp + 0x10], 8
jmp 0x4420ac2b
cmp eax, 0x44
jne 0x4420adb7
test byte [esp + 0x10], 0x20
jne 0x4420adb7
or dword [esp + 0x10], 0x20
jmp 0x4420ac2b
push dword [esp + 0x14]
push 0x44282c3c
call dword [sym.imp.MSVCR90.dll_wcschr]
pop ecx
pop ecx
mov dword [esp + 0x18], 0x44282ca8
mov dword [esp + 0x1c], 1
test eax, eax
je 0x4420ade3
push 0x40
jmp 0x4420ac2a
push dword [esp + 0x20]
lea eax, [esp + 0x290]
push str.__tag
push str.Incorrect__s_at_offset__d
push eax
call dword [sym.imp.MSVCR90.dll__swprintf]
lea eax, [esp + 0x29c]
jmp 0x4420aec1
test byte [esp + 0x10], 4
je 0x4420ae6a
xor dword [esp + 0x10], 4
cmp dword [esp + 0x14], 0x2d
jne 0x4420ae35
mov dword [esp + 0x18], 0x44282c28
mov dword [esp + 0x1c], 3
push 0x20
jmp 0x4420ac2a
push dword [esp + 0x20]
lea eax, [esp + 0x1c8]
push str.comment_tag
push str.Incorrect__s_at_offset__d
push eax
mov dword [esp + 0x28], 0x44282ca8
mov dword [esp + 0x2c], 1
call dword [sym.imp.MSVCR90.dll__swprintf]
lea eax, [esp + 0x1d4]
jmp 0x4420aec1
test byte [esp + 0x10], 8
je 0x4420aeda
push 8
pop ebx
xor dword [esp + 0x10], ebx
cmp dword [esp + 0x14], 0x43
jne 0x4420ae94
mov dword [esp + 0x18], 0x44282c08
mov dword [esp + 0x1c], 3
jmp 0x4420ac2b
push dword [esp + 0x20]
lea eax, [esp + 0x38]
push 0x44282cc4
push str.Incorrect__s_at_offset__d
push eax
mov dword [esp + 0x28], 0x44282ca8
mov dword [esp + 0x2c], 1
call dword [sym.imp.MSVCR90.dll__swprintf]
lea eax, [esp + 0x44]
mov ecx, dword [esp + 0x34]
add esp, 0x10
push eax
add ecx, 0x10
call dword [sym.imp.MSVCP90.dll_public:_class_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int______thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::operator_unsigned_short_int_const__]
or ebx, 0xffffffff
jmp 0x4420ac2b
test byte [esp + 0x10], 0x20
je 0x4420ac2b
cmp dword [esp + 0x14], 0x3c
jne 0x4420aef6
or dword [esp + 0x10], 1
jmp 0x4420ac2b
cmp dword [esp + 0x14], 0x3e
jne 0x4420ac2b
sub edi, dword [ebp + 0xc]
push 0x40
sar edi, 1
pop ebx
mov dword [esp + 0x20], edi
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x24]
inc eax
mov dword [ebp + 8], eax
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.4427cc16
add esp, 0x348
ret
cmp dword [esp + 0x14], 0x3c
jne 0x4420af50
mov dword [esp + 0x10], 1
jmp 0x4420ac2b
push 4
pop ebx
push dword [esp + 0x14]
push str.__t_n_r
call dword [sym.imp.MSVCR90.dll_wcschr]
pop ecx
pop ecx
test eax, eax
je 0x4420ac18
mov dword [esp + 0x10], 0x10
jmp 0x4420ac2b
test ebx, ebx
jne 0x4420af84
mov eax, str.Element_end_tag
jmp 0x4420afad
cmp ebx, 8
jne 0x4420af90
mov eax, str.CDATA_Section
jmp 0x4420afad
cmp ebx, 0x10
jne 0x4420af9c
mov eax, str.Processing_instruction
jmp 0x4420afad
cmp ebx, 0x20
jne 0x4420afad
mov eax, str.Comment
jmp 0x4420afad
mov eax, str.Doctype
mov esi, dword [esp + 0x24]
push dword [esi + 4]
or ebx, 0xffffffff
push eax
lea eax, [esp + 0x3c]
push str._s_at_offset__d_unterminated
push eax
call dword [sym.imp.MSVCR90.dll__swprintf]
add esp, 0x10
lea eax, [esp + 0x34]
push eax
lea ecx, [esi + 0x10]
call dword [sym.imp.MSVCP90.dll_public:_class_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int______thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::operator_unsigned_short_int_const__]
jmp 0x4420af0d
sub edi, dword [ebp + 0xc]
sar edi, 1
dec edi
jmp 0x4420af09
sub edi, dword [ebp + 0xc]
push 4
sar edi, 1
dec edi
jmp 0x4420af08