Function at 0x1005d210
Capabilities:
Parse credit card information

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x38
mov eax, dword [ebp + 8]
push ebx
push esi
push edi
test byte [eax + 0xc], 4
mov edx, dword [eax + 8]
mov ebx, edx
mov ecx, dword [eax + 0x10]
mov edi, ebx
mov dword [ebp - 4], ecx
mov esi, ecx
jne 0x1005d235
mov eax, dword [eax]
jmp 0x1005d239
movzx eax, byte [eax + 5]
add eax, 0xfffffff4
cmp eax, 0x12
ja case.0x1005d24c.13
movzx eax, byte [eax + 0x1005d774]
jmp dword [eax*4 + 0x1005d74c]
push 0
push ebx
push esi
call fcn.1000c7d0
add esp, 0xc
test eax, eax
jns 0x1005d2aa
mov edx, dword [ebp + 8]
push dword [edx + 0x10]
push dword [edx + 8]
push eax
push dword [ebp + 0x10]
push str._s:_Bad_UTF_8_encoding___Rrc___.Rhxs_
push 0xffffa6ee
push dword [ebp + 0xc]
call fcn.10014710
add esp, 0x1c
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
test ebx, ebx
je 0x1005d2aa
mov cl, byte [esi]
lea esi, [esi + 1]
movsx eax, cl
dec ebx
sub eax, 0x30
cmp eax, 0xa
jb 0x1005d2a6
cmp cl, 0x20
jne 0x1005d2bc
test ebx, ebx
jne 0x1005d290
mov eax, dword [ebp + 0x14]
test eax, eax
je 0x1005d2b3
mov dword [eax], edi
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret
push dword [ebp - 4]
movsx eax, cl
push edx
sub edx, ebx
inc edx
push edx
push eax
push dword [ebp + 0x10]
push str._s:_Bad_numeric_string:_ch_x__pos__u_in__.Rhxs_
push 0xffffa6ed
push dword [ebp + 0xc]
call fcn.10014710
add esp, 0x20
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
test ebx, ebx
je 0x1005d2aa
jmp 0x1005d2f0
mov cl, byte [esi]
lea esi, [esi + 1]
movsx edx, cl
dec ebx
lea eax, [edx - 0x30]
cmp eax, 0xa
jb 0x1005d34d
lea eax, [edx - 0x61]
cmp eax, 0x1a
jb 0x1005d34d
lea eax, [edx - 0x41]
cmp eax, 0x1a
jb 0x1005d34d
cmp cl, 0x20
je 0x1005d34d
cmp cl, 0x27
je 0x1005d34d
cmp cl, 0x28
je 0x1005d34d
cmp cl, 0x29
je 0x1005d34d
cmp cl, 0x2b
je 0x1005d34d
cmp cl, 0x2c
je 0x1005d34d
cmp cl, 0x2d
je 0x1005d34d
cmp cl, 0x2e
je 0x1005d34d
cmp cl, 0x2f
je 0x1005d34d
cmp cl, 0x3a
je 0x1005d34d
cmp cl, 0x3d
je 0x1005d34d
cmp cl, 0x3f
jne 0x1005d356
test ebx, ebx
jne 0x1005d2f0
jmp 0x1005d2aa
push dword [ebp - 4]
mov edx, dword [ebp + 8]
mov eax, dword [edx + 8]
push eax
sub eax, ebx
inc eax
push eax
movsx eax, cl
push eax
push dword [ebp + 0x10]
push str._s:_Bad_printable_string:_ch_x__pos__u_in__.Rhxs_
push 0xffffa6ec
push dword [ebp + 0xc]
call fcn.10014710
add esp, 0x20
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
test ebx, ebx
je 0x1005d2aa
nop
mov al, byte [esi]
lea esi, [esi + 1]
dec ebx
test al, al
je 0x1005d3a7
cmp al, 0x80
jae 0x1005d3af
test ebx, ebx
jne 0x1005d390
jmp 0x1005d2aa
test ebx, ebx
je 0x1005d2aa
push ecx
push edx
sub edx, ebx
movzx eax, al
inc edx
push edx
push eax
push dword [ebp + 0x10]
push str._s:_Bad_IA5_string:_ch_x__pos__u_in__.Rhxs_
push 0xffffa6e9
push dword [ebp + 0xc]
call fcn.10014710
add esp, 0x20
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
push ebx
push esi
call fcn.1005d790
add esp, 8
sub eax, 1
je 0x1005d4ff
sub eax, 2
je 0x1005d4ff
sub eax, 1
je 0x1005d4ff
push dword [ebp + 0xc]
lea eax, [ebp - 0x38]
push 0x66
push 0x6b
push 0x6a
push 0x66
push ebx
push esi
push eax
call fcn.1005dea0
add esp, 0x20
test eax, eax
js 0x1005d743
mov esi, dword [ebp - 0x2c]
xor edi, edi
mov edx, dword [ebp - 0x30]
mov ebx, 0xffff
jmp 0x1005d430
cmp edx, dword [ebp - 0x34]
jae 0x1005d2aa
cmp byte [esi], 1
jne 0x1005d468
mov eax, dword [ebp - 0x38]
mov cl, byte [eax + edx]
sub cl, 0x20
movzx eax, cl
cmp ax, word [esi + 4]
jae 0x1005d468
mov eax, dword [esi + 8]
movzx ecx, cl
movzx eax, word [eax + ecx*2]
cmp ax, bx
je 0x1005d468
inc edx
mov dword [ebp - 4], eax
mov dword [ebp - 0x30], edx
jmp 0x1005d485
lea eax, [ebp - 4]
push eax
lea eax, [ebp - 0x38]
push eax
call fcn.1005daa0
add esp, 8
test eax, eax
js 0x1005d4ef
mov esi, dword [ebp - 0x2c]
mov edx, dword [ebp - 0x30]
mov eax, dword [ebp - 4]
cmp eax, 0x80
jae 0x1005d495
mov eax, 1
add edi, eax
jmp 0x1005d430
cmp eax, 0x800
jae 0x1005d4a5
mov eax, 2
add edi, eax
jmp 0x1005d430
cmp eax, 0x10000
jae 0x1005d4b8
mov eax, 3
add edi, eax
jmp 0x1005d430
cmp eax, 0x200000
jae 0x1005d4cb
mov eax, 4
add edi, eax
jmp 0x1005d430
cmp eax, 0x4000000
jae 0x1005d4de
mov eax, 5
add edi, eax
jmp 0x1005d430
cmp eax, 0x7fffffff
sbb eax, eax
and eax, 6
add edi, eax
jmp 0x1005d430
cmp eax, 0xffffffad
je 0x1005d2aa
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
xor edi, edi
test ebx, ebx
je 0x1005d2aa
mov ecx, 0x80
mov edx, 0x800
mov al, byte [esi]
lea esi, [esi + 1]
dec ebx
cmp al, 0x80
jae 0x1005d524
mov eax, 1
jmp 0x1005d54e
cmp al, 0xa0
jb 0x1005d52f
mov eax, 2
jmp 0x1005d54e
movzx eax, al
movzx eax, word [eax*2 + 0x100ad9e0]
cmp ax, cx
jae 0x1005d546
mov eax, 1
jmp 0x1005d54e
cmp ax, dx
sbb eax, eax
add eax, 3
add edi, eax
test ebx, ebx
jne 0x1005d513
jmp 0x1005d2aa
test ebx, ebx
je 0x1005d2aa
mov cl, byte [esi]
lea esi, [esi + 1]
dec ebx
lea eax, [ecx - 0x20]
cmp al, 0x5e
ja 0x1005d577
test ebx, ebx
jne 0x1005d561
jmp 0x1005d2aa
push dword [ebp - 4]
movzx eax, cl
push edx
sub edx, ebx
inc edx
push edx
push eax
push dword [ebp + 0x10]
push str._s:_Bad_visible_string:_ch_x__pos__u_in__.Rhxs_
push 0xffffa6e7
push dword [ebp + 0xc]
call fcn.10014710
add esp, 0x20
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
pop edi
pop esi
mov eax, 0xffffa6ef
pop ebx
mov esp, ebp
pop ebp
ret
test bl, 3
jne 0x1005d681
xor edi, edi
test ebx, ebx
je 0x1005d2aa
add esi, 2
movzx ecx, byte [esi - 2]
movzx eax, byte [esi - 1]
shl ecx, 8
or ecx, eax
movzx eax, byte [esi]
shl ecx, 8
or ecx, eax
movzx eax, byte [esi + 1]
shl ecx, 8
or ecx, eax
cmp ecx, 0xd7ff
jbe 0x1005d5fa
cmp ecx, 0x10ffff
ja 0x1005d653
cmp ecx, 0xe000
jb 0x1005d653
cmp ecx, 0x80
jae 0x1005d609
mov edx, 1
jmp 0x1005d640
cmp ecx, 0x800
sbb edx, edx
inc edx
cmp ecx, 0x4000000
sbb eax, eax
inc eax
add edx, eax
cmp ecx, 0x200000
sbb eax, eax
inc eax
add edx, eax
cmp ecx, 0x80000000
sbb eax, eax
add eax, 3
add edx, eax
cmp ecx, 0x10000
sbb eax, eax
inc eax
add edx, eax
add edi, edx
add esi, 4
sub ebx, 4
jne 0x1005d5c4
jmp 0x1005d2aa
push dword [ebp - 4]
mov edx, dword [ebp + 8]
mov eax, dword [edx + 8]
push eax
sub eax, ebx
inc eax
push eax
push ecx
push dword [ebp + 0x10]
push str._s:_Bad_universal_string:_uc_x__pos__u_in__.Rhxs_
push 0xffffa6e5
push dword [ebp + 0xc]
call fcn.10014710
add esp, 0x20
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
push ecx
push edx
push ebx
push dword [ebp + 0x10]
push str._s:_Bad_universal_string:_size_not_a_multiple_of_4:_cch_x___.Rhxs_
push 0xffffa6e5
push dword [ebp + 0xc]
call fcn.10014710
add esp, 0x1c
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
test bl, 1
jne 0x1005d71c
xor edi, edi
test ebx, ebx
je 0x1005d2aa
movzx eax, byte [esi]
movzx ecx, byte [esi + 1]
shl eax, 8
or ecx, eax
lea eax, [ecx - 0xd800]
cmp eax, 0x7ff
jbe 0x1005d6f4
cmp ecx, 0x80
jae 0x1005d6da
mov eax, 1
jmp 0x1005d6e5
cmp ecx, 0x800
sbb eax, eax
add eax, 3
add edi, eax
add esi, 2
sub ebx, 2
jne 0x1005d6b2
jmp 0x1005d2aa
push dword [ebp - 4]
push edx
sub edx, ebx
inc edx
push edx
push ecx
push dword [ebp + 0x10]
push str._s:_Bad_BMP_string:_uc_x__pos__u_in__.Rhxs_
push 0xffffa6e4
push dword [ebp + 0xc]
call fcn.10014710
add esp, 0x20
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
push ecx
push edx
push ebx
push dword [ebp + 0x10]
push str._s:_Bad_BMP_string:_odd_number_of_bytes_cch_x___.Rhxs_
push 0xffffa6e4
push dword [ebp + 0xc]
call fcn.10014710
add esp, 0x1c
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, 0xffffff1d
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret