Function at 0x4398a0
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 0x43990c
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 0x439f72
mov eax, dword [esp + 0x20]
test eax, eax
je 0x4399c2
movsx eax, byte [esp + 0x14]
push eax
push str.__t_n_r__
call fcn.0045a053
add esp, 8
test eax, eax
je 0x439c3b
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 0x439968
mov dword [edx], ecx
lea ecx, [ecx + ebp - 1]
mov dword [edx + 4], ecx
jmp 0x4399a9
mov edx, dword [esp + 0x1cc]
push ebp
lea ecx, [edx + 0x10]
mov edx, dword [esp + 0x24]
lea esi, [eax + edx]
call fcn.00496385
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.004963d4
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 0x439be9
mov eax, dword [esp + 0x14]
cmp eax, 0x3e
jne 0x439a92
mov edx, dword [esp + 0x10]
test dl, 0xc0
jne 0x439aad
mov eax, dword [ecx + 0xc]
sub ebp, eax
cmp esi, 1
mov dword [esp + 0x28], ebp
jne 0x439a38
xor edi, edi
cmp ebx, esi
mov dword [esp + 0x18], edi
jne 0x439a84
cmp dword [esp + 0x2c], 0x2f
jne 0x439a84
mov eax, dword [esp + 0x30]
test eax, eax
je 0x439a28
movsx edx, al
push edx
push 0x4d03b0
call fcn.0045a053
mov edx, dword [esp + 0x18]
add esp, 8
test eax, eax
je 0x439a84
mov eax, dword [esp + 0x1cc]
or dword [eax + 0xc], 0x10000
jmp 0x439a84
cmp ebp, esi
jle 0x439c37
mov eax, dword [esp + 0x24]
sub eax, esi
lea ebp, [eax + 1]
lea eax, [esi - 1]
test eax, eax
je 0x439a7a
mov ecx, edi
sub ecx, ebp
mov dword [esp + 0x14], ecx
jmp 0x439a5e
mov ecx, dword [esp + 0x14]
mov dl, byte [ebp]
mov cl, byte [ecx + ebp]
inc ebp
cmp dl, cl
jne 0x439a6e
dec eax
jne 0x439a5a
jmp 0x439a76
test eax, eax
jne 0x439c37
mov edx, dword [esp + 0x10]
mov ebp, dword [esp + 0x28]
xor edi, edi
mov dword [esp + 0x18], edi
test dl, 0x20
je 0x43a028
jmp 0x439c37
cmp eax, 0x3c
jne 0x439aa9
cmp ebx, 2
je 0x43a00b
cmp ebx, 0xffffffff
je 0x43a00b
mov edx, dword [esp + 0x10]
test bl, 1
je 0x439bbb
test dl, 0xc0
je 0x439b0e
cmp eax, 0x22
jne 0x439ae4
test dl, 0x80
je 0x439bad
mov ecx, dword [esp + 0x2c]
xor edx, 0x80
mov dword [esp + 0x10], edx
mov dword [esp + 0x30], ecx
mov dword [esp + 0x2c], eax
jmp 0x439c37
cmp eax, 0x27
jne 0x439bad
test dl, 0x40
je 0x439bad
mov ecx, dword [esp + 0x2c]
xor edx, 0x40
mov dword [esp + 0x10], edx
mov dword [esp + 0x30], ecx
mov dword [esp + 0x2c], eax
jmp 0x439c37
cmp eax, 0x22
jne 0x439b37
test dh, 1
je 0x439bad
mov ecx, dword [esp + 0x2c]
xor edx, 0x180
mov dword [esp + 0x10], edx
mov dword [esp + 0x30], ecx
mov dword [esp + 0x2c], eax
jmp 0x439c37
cmp eax, 0x27
jne 0x439b5c
test dh, 1
je 0x439bad
mov ecx, dword [esp + 0x2c]
xor edx, 0x140
mov dword [esp + 0x10], edx
mov dword [esp + 0x30], ecx
mov dword [esp + 0x2c], eax
jmp 0x439c37
cmp eax, 0x3d
jne 0x439b85
mov ecx, dword [esp + 0x2c]
cmp ecx, eax
je 0x439b85
test dh, 1
jne 0x439b8a
xor edx, 0x100
mov dword [esp + 0x30], ecx
mov dword [esp + 0x10], edx
mov dword [esp + 0x2c], eax
jmp 0x439c37
test dh, 1
je 0x439bad
movsx edx, byte [esp + 0x14]
push edx
push str.__t_n_r
call fcn.0045a053
add esp, 8
test eax, eax
jne 0x439ba9
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 0x439c37
test bl, 0x40
je 0x439c37
cmp eax, 0x22
jne 0x439bd6
test dl, 0x40
jne 0x439c37
xor edx, 0x80
mov dword [esp + 0x10], edx
jmp 0x439c37
cmp eax, 0x27
jne 0x439c37
test dl, 0x80
jne 0x439c37
xor edx, 0x40
mov dword [esp + 0x10], edx
jmp 0x439c37
mov eax, dword [esp + 0x10]
test eax, eax
je 0x439f31
test al, 0x10
je 0x439c56
mov eax, dword [esp + 0x14]
cmp eax, 0x3c
je 0x43a011
movsx edx, al
push edx
push str.__t_n_r
call fcn.0045a053
add esp, 8
test eax, eax
jne 0x439c37
xor dword [esp + 0x10], 0x10
mov edi, 0x4d03ac
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.0045a03d
mov ecx, dword [esp + 0x1cc]
add esp, 4
add ebp, eax
mov dword [esp + 0x24], ebp
jmp 0x43990c
test al, 1
je 0x439d51
mov edx, dword [esp + 0x14]
xor eax, 1
cmp edx, 0x60
mov dword [esp + 0x10], eax
ja 0x439d2f
cmp edx, 0x40
jbe 0x439c80
cmp edx, 0x5b
jb 0x439d2f
cmp edx, 0x5f
je 0x439d2f
cmp edx, 0x3a
je 0x439d2f
cmp edx, 0x2f
jne 0x439cb7
mov edx, dword [ecx + 0xc]
xor ebx, ebx
sub ebp, edx
mov edi, 0x4d03a8
mov esi, 1
inc ebp
mov dword [esp + 0x18], edi
mov dword [esp + 0x1c], esi
mov dword [esp + 0x20], ebp
jmp 0x439c37
cmp edx, 0x21
jne 0x439cc7
or al, 2
mov dword [esp + 0x10], eax
jmp 0x439c37
cmp edx, 0x3f
jne 0x439cf2
mov edx, dword [ecx + 0xc]
mov edi, 0x4d01e8
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 0x439c37
mov eax, dword [esp + 0x28]
lea ecx, [esp + 0x98]
push eax
push str.tag_name_character
mov edi, 0x4d03a8
mov esi, 1
push str.Incorrect__s_at_offset__d
push ecx
mov dword [esp + 0x28], edi
mov dword [esp + 0x2c], esi
call fcn.00459a50
add esp, 0x10
lea edx, [esp + 0x98]
jmp 0x439e75
mov eax, dword [ecx + 0xc]
mov edi, 0x4d03a8
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 0x439c37
test al, 2
je 0x439e0d
mov ecx, dword [esp + 0x14]
xor eax, 2
cmp ecx, 0x2d
mov dword [esp + 0x10], eax
jne 0x439d74
or al, 4
mov dword [esp + 0x10], eax
jmp 0x439c37
cmp ecx, 0x5b
jne 0x439d88
test al, 0x20
jne 0x439d9c
or al, 8
mov dword [esp + 0x10], eax
jmp 0x439c37
cmp ecx, 0x44
jne 0x439d9c
test al, 0x20
jne 0x439d9c
or al, 0x20
mov dword [esp + 0x10], eax
jmp 0x439c37
movsx ecx, byte [esp + 0x14]
push ecx
push 0x4d0374
call fcn.0045a053
add esp, 8
mov edi, 0x4d03a8
mov esi, 1
mov dword [esp + 0x18], edi
test eax, eax
mov dword [esp + 0x1c], esi
je 0x439dcf
mov ebx, 0x40
jmp 0x439c37
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.00459a50
mov edx, dword [esp + 0x1dc]
add esp, 0x10
lea ecx, [esp + 0x160]
push ecx
lea ecx, [edx + 0x10]
call fcn.004960de
or ebx, 0xffffffff
jmp 0x439c37
test al, 4
je 0x439e8d
xor eax, 4
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x14]
cmp eax, 0x2d
jne 0x439e3d
mov edi, 0x4d0368
mov esi, 3
mov dword [esp + 0x18], edi
mov dword [esp + 0x1c], esi
mov ebx, 0x20
jmp 0x439c37
mov eax, dword [esp + 0x28]
lea ecx, [esp + 0xfc]
push eax
push str.comment_tag
mov edi, 0x4d03a8
mov esi, 1
push str.Incorrect__s_at_offset__d
push ecx
mov dword [esp + 0x28], edi
mov dword [esp + 0x2c], esi
call fcn.00459a50
add esp, 0x10
lea edx, [esp + 0xfc]
mov eax, dword [esp + 0x1cc]
push edx
lea ecx, [eax + 0x10]
call fcn.004960de
or ebx, 0xffffffff
jmp 0x439c37
test al, 8
je 0x439f07
xor eax, 8
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x14]
cmp eax, 0x43
jne 0x439ebd
mov edi, 0x4d0358
mov esi, 3
mov dword [esp + 0x18], edi
mov dword [esp + 0x1c], esi
mov ebx, 8
jmp 0x439c37
mov ecx, dword [esp + 0x28]
lea edx, [esp + 0x34]
push ecx
push 0x4d0354
mov edi, 0x4d03a8
mov esi, 1
push str.Incorrect__s_at_offset__d
push edx
mov dword [esp + 0x28], edi
mov dword [esp + 0x2c], esi
call fcn.00459a50
mov ecx, dword [esp + 0x1dc]
add esp, 0x10
lea eax, [esp + 0x34]
add ecx, 0x10
push eax
call fcn.004960de
or ebx, 0xffffffff
jmp 0x439c37
test al, 0x20
je 0x439c37
mov edx, dword [esp + 0x14]
cmp edx, 0x3c
jne 0x439f23
or al, 1
mov dword [esp + 0x10], eax
jmp 0x439c37
cmp edx, 0x3e
je 0x43a01e
jmp 0x439c37
cmp dword [esp + 0x14], 0x3c
jne 0x439f45
mov dword [esp + 0x10], 1
jmp 0x439c37
movsx edx, byte [esp + 0x14]
push edx
push str.__t_n_r
mov ebx, 4
call fcn.0045a053
add esp, 8
test eax, eax
je 0x439c20
mov dword [esp + 0x10], 0x10
jmp 0x439c37
sub ebp, dword [ecx + 0xc]
dec ebp
cmp ebx, 4
je 0x43a028
cmp ebx, 2
je 0x43a028
mov cl, byte [esp + 0x10]
mov eax, 0x4d0354
test cl, 0x20
jne 0x439fd6
cmp ebx, 0x40
je 0x439fd6
cmp ebx, 1
jne 0x439fa7
mov eax, str.Element_tag
jmp 0x439fdb
test ebx, ebx
jne 0x439fb2
mov eax, str.Element_end_tag
jmp 0x439fdb
cmp ebx, 8
jne 0x439fbe
mov eax, str.CDATA_Section
jmp 0x439fdb
cmp ebx, 0x10
jne 0x439fca
mov eax, str.Processing_instruction
jmp 0x439fdb
cmp ebx, 0x20
jne 0x439fdb
mov eax, str.Comment
jmp 0x439fdb
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.00459a50
add esp, 0x10
lea eax, [esp + 0x34]
lea ecx, [esi + 0x10]
push eax
call fcn.004960de
jmp 0x43a028
sub ebp, dword [ecx + 0xc]
dec ebp
jmp 0x43a028
mov edx, dword [ecx + 0xc]
mov ebx, 4
sub ebp, edx
dec ebp
jmp 0x43a028
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