Function at 0x55a5f0
Capabilities:
Parse credit card information

Disassembly:
push ebp
push edi
push esi
push ebx
mov ebx, ecx
sub esp, 0x2c
mov eax, dword [ecx + 0x94]
mov edi, dword [ecx + 0x9c]
lea edx, [eax + 1]
mov dword [ecx + 0x94], edx
movzx esi, byte [eax]
mov eax, esi
movsx eax, al
mov dword [esp + 0x1c], eax
mov eax, esi
movzx ebp, al
movsx eax, byte [edi + ebp + 0x11d]
test al, al
jne 0x55a64e
mov eax, dword [edi]
mov ecx, esi
mov edx, dword [eax + 0x20]
mov eax, dword [esp + 0x1c]
cmp edx, 0x4d48e0
jne 0x55a840
cmp cl, 0x20
je 0x55a64e
mov byte [edi + ebp + 0x11d], cl
mov dword [esp + 4], eax
mov eax, dword [ebx + 0x8c]
mov dword [esp], eax
call sub.msvcrt.dll_strchr
test eax, eax
je 0x55a898
mov eax, esi
cmp al, 0x5c
je 0x55a738
mov eax, esi
cmp al, 0x28
je 0x55a710
cmp al, 0x29
je 0x55a828
cmp al, 0x5b
je 0x55a860
cmp al, 0x7b
je 0x55a7e8
movsx ecx, al
and eax, 0xffffffdf
cmp al, 0x5d
je 0x55a8e0
mov eax, esi
mov ebp, dword [ebx + 0x9c]
mov edi, ebx
movzx edx, al
movzx eax, byte [ebp + edx + 0x11d]
test al, al
jne 0x55a940
mov eax, dword [ebp]
mov eax, dword [eax + 0x20]
cmp eax, 0x4d48e0
jne 0x55a968
mov eax, esi
test al, al
je 0x55a6dd
mov byte [ebp + edx + 0x11d], al
movzx eax, byte [ebx]
test al, al
je 0x55a72b
mov edx, esi
jmp 0x55a6fb
movzx eax, byte [edi + 8]
add edi, 8
test al, al
je 0x55a72b
cmp dl, al
jne 0x55a6f0
mov eax, dword [edi + 4]
mov dword [ebx + 0x84], eax
jmp 0x55a72b
mov eax, dword [ebx + 0x80]
test al, 0x10
jne 0x55a780
test al, 2
setne al
movzx eax, al
add eax, 5
mov dword [ebx + 0x84], eax
add esp, 0x2c
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax, dword [ebx + 0x94]
cmp eax, dword [ebx + 0x98]
je 0x55a9d7
test dword [ebx + 0x80], 0x120
je 0x55a800
movzx edx, byte [eax]
lea ecx, [edx - 0x28]
cmp cl, 1
jbe 0x55a76e
cmp dl, 0x7b
jne 0x55a800
lea edx, [eax + 1]
mov dword [ebx + 0x94], edx
movzx esi, byte [eax]
jmp 0x55a672
mov edx, dword [ebx + 0x94]
cmp byte [edx], 0x3f
jne 0x55a71a
lea eax, [edx + 1]
mov dword [ebx + 0x94], eax
cmp eax, dword [ebx + 0x98]
je 0x55a9c3
movzx eax, byte [edx + 1]
cmp al, 0x3a
je 0x55a950
cmp al, 0x3d
je 0x55a989
cmp al, 0x21
jne 0x55a9af
add edx, 2
mov dword [esp + 0xc], 0x6e
lea ecx, [ebx + 0xa0]
mov dword [ebx + 0x94], edx
mov dword [ebx + 0x84], 7
jmp 0x55a8b0
mov dword [ebx + 0x7c], 1
mov dword [ebx + 0x84], 0xc
jmp 0x55a72b
mov ecx, dword [ebx + 0xbc]
mov eax, dword [ebx + 0xb8]
add ecx, ebx
test al, 1
je 0x55a818
mov edx, dword [ecx]
mov eax, dword [edx + eax - 1]
add esp, 0x2c
pop ebx
pop esi
pop edi
pop ebp
jmp eax
mov dword [ebx + 0x84], 8
add esp, 0x2c
pop ebx
pop esi
pop edi
pop ebp
ret
mov ecx, edi
mov dword [esp + 4], 0x20
mov dword [esp], eax
call edx
movsx eax, al
sub esp, 8
mov ecx, eax
jmp 0x55a642
mov dword [ebx + 0x7c], 2
mov eax, dword [ebx + 0x94]
mov byte [ebx + 0x90], 1
cmp eax, dword [ebx + 0x98]
je 0x55a885
cmp byte [eax], 0x5e
je 0x55a920
mov dword [ebx + 0x84], 9
jmp 0x55a72b
mov eax, dword [esp + 0x1c]
lea ecx, [ebx + 0xa0]
mov dword [ebx + 0x84], 1
mov dword [esp + 0xc], eax
mov eax, dword [ebx + 0xa4]
mov dword [esp + 8], 1
mov dword [esp], 0
mov dword [esp + 4], eax
call fcn.00543c00
sub esp, 0x10
add esp, 0x2c
pop ebx
pop esi
pop edi
pop ebp
ret
mov edx, dword [ebx + 0xa4]
mov dword [esp + 0xc], ecx
lea eax, [ebx + 0xa0]
mov dword [ebx + 0x84], 1
mov ecx, eax
mov dword [esp + 8], 1
mov dword [esp + 4], edx
mov dword [esp], 0
call fcn.00543c00
sub esp, 0x10
jmp 0x55a72b
mov dword [ebx + 0x84], 0xa
add eax, 1
mov dword [ebx + 0x94], eax
jmp 0x55a72b
mov esi, eax
jmp 0x55a6dd
mov dword [ebx + 0x84], 6
add edx, 2
mov dword [ebx + 0x94], edx
jmp 0x55a72b
mov dword [esp + 0x1c], edx
mov dword [esp], ecx
mov ecx, ebp
mov dword [esp + 4], 0
call eax
sub esp, 8
mov esi, eax
mov edx, dword [esp + 0x1c]
jmp 0x55a6d0
add edx, 2
mov dword [esp + 0xc], 0x70
lea ecx, [ebx + 0xa0]
mov dword [ebx + 0x94], edx
mov dword [ebx + 0x84], 7
jmp 0x55a8b0
mov dword [esp + 4], str.Invalid_special_open_parenthesis.
mov dword [esp], 5
call fcn.0056a840
mov dword [esp + 4], str.Unexpected_end_of_regex_when_in_an_open_parenthesis.
mov dword [esp], 5
call fcn.0056a840
mov dword [esp + 4], str.Unexpected_end_of_regex_when_escaping.
mov dword [esp], 2
call fcn.0056a840
nop
nop
nop
nop
nop
mov eax, dword [esi]
mov eax, dword [eax + 0x20]
cmp eax, 0x4d48e0
jne 0x55adf0
test cl, cl
je 0x55ac47
mov byte [esi + edi + 0x11d], cl
jmp 0x55acb8
mov dword [ebx + 0x84], 1
movsx eax, byte [eax + 1]
lea ecx, [ebx + 0xa0]
mov dword [esp + 8], 1
mov dword [esp + 0xc], eax
mov eax, dword [ebx + 0xa4]
mov dword [esp], 0
mov dword [esp + 4], eax
call fcn.00543c00
sub esp, 0x10
add esp, 0x2c
pop ebx
pop esi
pop edi
pop ebp
ret
lea eax, [ebp - 0x38]
cmp al, 1
jbe 0x55ae17
mov eax, dword [esp + 0x14]
mov dword [esp + 8], 1
lea ebp, [ebx + 0xa0]
mov dword [esp], 0
mov ecx, ebp
mov dword [esp + 0xc], eax
mov eax, dword [ebx + 0xa4]
mov dword [esp + 4], eax
call fcn.00543c00
lea eax, [ebx + 0xa8]
sub esp, 0x10
mov dword [esp + 0x14], 2
mov dword [esp + 0x18], eax
mov eax, dword [ebx + 0x94]
cmp eax, dword [ebx + 0x98]
je 0x55ad92
mov ecx, dword [ebx + 0x9c]
movzx esi, byte [eax]
mov ecx, dword [ecx + 0x18]
mov edx, esi
test byte [ecx + esi*2], 8
je 0x55ad92
sub edx, 0x38
cmp dl, 1
jbe 0x55ad92
mov esi, dword [ebx + 0xa4]
lea edx, [eax + 1]
mov dword [ebx + 0x94], edx
movzx edx, byte [eax]
lea edi, [esi + 1]
mov eax, dword [ebx + 0xa0]
cmp eax, dword [esp + 0x18]
je 0x55ae0d
mov ecx, dword [ebx + 0xa8]
cmp edi, ecx
ja 0x55adb8
mov byte [eax + esi], dl
mov eax, dword [ebx + 0xa0]
cmp dword [esp + 0x14], 1
mov dword [ebx + 0xa4], edi
mov byte [eax + esi + 1], 0
jne 0x55ada8
mov dword [ebx + 0x84], 2
add esp, 0x2c
pop ebx
pop esi
pop edi
pop ebp
ret
mov dword [esp + 0x14], 1
jmp 0x55ad1e
mov dword [esp + 0xc], 1
mov ecx, ebp
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], esi
mov byte [esp + 0x1f], dl
call fcn.00545ae0
mov eax, dword [ebx + 0xa0]
sub esp, 0x10
movzx edx, byte [esp + 0x1f]
jmp 0x55ad77
mov ecx, dword [esp + 0x14]
mov dword [esp + 4], 0
mov dword [esp], ecx
mov ecx, esi
call eax
sub esp, 8
mov ecx, eax
jmp 0x55ac3c
mov ecx, 0xf
jmp 0x55ad73
lea edx, [eax + 1]
mov ebp, dword [ecx + 0x9c]
mov ebx, ecx
mov dword [ecx + 0x94], edx
movsx edi, byte [eax]
mov edx, edi
movzx esi, dl
movzx ecx, byte [ebp + esi + 0x11d]
test cl, cl
jne 0x55ae8c
mov eax, dword [ebp]
mov ecx, edi
mov eax, dword [eax + 0x20]
cmp eax, 0x4d48e0
jne 0x55b0d0
test cl, cl
je 0x55ae8c
mov byte [ebp + esi + 0x11d], cl
mov ebp, dword [ebx + 0x88]
movzx eax, byte [ebp]
test al, al
jne 0x55aeab
jmp 0x55af20
movzx eax, byte [ebp + 2]
add ebp, 2
test al, al
je 0x55af20
cmp cl, al
jne 0x55aea0
cmp dl, 0x62
jne 0x55aed8
cmp dword [ebx + 0x7c], 2
je 0x55aed8
mov dword [ebx + 0x84], 0x18
lea ecx, [ebx + 0xa0]
mov dword [esp + 0xc], 0x70
jmp 0x55aef0
mov dword [ebx + 0x84], 1
movsx eax, byte [ebp + 1]
lea ecx, [ebx + 0xa0]
mov dword [esp + 0xc], eax
mov dword [esp + 8], 1
mov eax, dword [ebx + 0xa4]
mov dword [esp], 0
mov dword [esp + 4], eax
call fcn.00543c00
sub esp, 0x10
add esp, 0x2c
pop ebx
pop esi
pop edi
pop ebp
ret
cmp dl, 0x62
jle 0x55b068
lea ecx, [edx - 0x63]
cmp cl, 0x15
ja case.0x55b080.1
mov eax, 1
shl eax, cl
test eax, 0x110002
jne case.0x55b080.2
test eax, 0x240000
jne 0x55b0f2
test al, 1
jne 0x55b1e8
mov eax, dword [ebx + 0x9c]
mov edx, dword [ebx + 0xa4]
lea ebp, [ebx + 0xa0]
mov eax, dword [eax + 0x18]
test byte [eax + esi*2], 8
je 0x55b229
mov dword [esp + 0xc], edi
mov ecx, ebp
lea edi, [ebx + 0xa8]
mov dword [esp + 8], 1
mov dword [esp + 4], edx
mov dword [esp], 0
call fcn.00543c00
mov eax, dword [ebx + 0x94]
sub esp, 0x10
cmp eax, dword [ebx + 0x98]
je 0x55b263
mov dword [esp + 0x14], ebp
mov ebp, edi
jmp 0x55afe6
mov byte [eax + esi], dl
mov eax, dword [ebx + 0xa0]
mov dword [ebx + 0xa4], edi
mov byte [eax + esi + 1], 0
mov eax, dword [ebx + 0x94]
cmp eax, dword [ebx + 0x98]
je 0x55b263
mov edx, dword [ebx + 0x9c]
movzx ecx, byte [eax]
mov edx, dword [edx + 0x18]
test byte [edx + ecx*2], 8
je 0x55b263
lea edx, [eax + 1]
mov esi, dword [ebx + 0xa4]
mov dword [ebx + 0x94], edx
movzx edx, byte [eax]
mov eax, dword [ebx + 0xa0]
lea edi, [esi + 1]
cmp eax, ebp
je 0x55b259
mov ecx, dword [ebx + 0xa8]
cmp edi, ecx
jbe 0x55afc0
mov dword [esp + 0xc], 1
mov ecx, dword [esp + 0x14]
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], esi
mov byte [esp + 0x10], dl
call fcn.00545ae0
mov eax, dword [ebx + 0xa0]
sub esp, 0x10
movzx edx, byte [esp + 0x10]
jmp 0x55afc0
cmp dl, 0x41
jle case.0x55b080.1
sub edx, 0x42
cmp dl, 0x20
ja case.0x55b080.1
movzx edx, dl
jmp dword [edx*4 + 0x5a60d0]
mov dword [ebx + 0x84], 0xe
lea ecx, [ebx + 0xa0]
mov dword [esp + 0xc], edi
jmp 0x55aef0
mov dword [ebx + 0x84], 0x18
lea ecx, [ebx + 0xa0]
mov dword [esp + 0xc], 0x6e
jmp 0x55aef0
mov byte [esp + 0x10], dl
mov ecx, ebp
mov dword [esp + 4], 0
mov dword [esp], edi
call eax
sub esp, 8
mov ecx, eax
movzx edx, byte [esp + 0x10]
jmp 0x55ae81
mov dword [ebx + 0xa4], 0
lea eax, [ebx + 0xa0]
mov dword [esp + 0x1c], eax
mov eax, dword [ebx + 0xa0]
mov byte [eax], 0
xor eax, eax
cmp dl, 0x78
setne al
xor edi, edi
lea eax, [eax + eax + 2]
mov dword [esp + 0x10], eax
lea eax, [ebx + 0xa8]
mov dword [esp + 0x14], eax
mov eax, dword [ebx + 0x94]
cmp eax, dword [ebx + 0x98]
je 0x55b272
mov edx, dword [ebx + 0x9c]
movzx ecx, byte [eax]
mov edx, dword [edx + 0x18]
test byte [edx + ecx*2], 0x10
je 0x55b272
mov esi, dword [ebx + 0xa4]
lea edx, [eax + 1]
mov dword [ebx + 0x94], edx
movzx edx, byte [eax]
lea ebp, [esi + 1]
mov eax, dword [ebx + 0xa0]
cmp eax, dword [esp + 0x14]
je 0x55b21f
mov ecx, dword [ebx + 0xa8]
cmp ebp, ecx
ja 0x55b1b0
mov byte [eax + esi], dl
mov eax, dword [ebx + 0xa0]
add edi, 1
mov dword [ebx + 0xa4], ebp
mov byte [eax + esi + 1], 0
cmp dword [esp + 0x10], edi
jne 0x55b12b
mov dword [ebx + 0x84], 3
jmp 0x55af11
mov dword [esp + 0xc], 1
mov ecx, dword [esp + 0x1c]
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], esi
mov byte [esp + 0x1b], dl
call fcn.00545ae0
mov eax, dword [ebx + 0xa0]
sub esp, 0x10
movzx edx, byte [esp + 0x1b]
jmp 0x55b182
mov eax, dword [ebx + 0x94]
cmp eax, dword [ebx + 0x98]
je 0x55b29a
lea edx, [eax + 1]
lea ecx, [ebx + 0xa0]
mov dword [ebx + 0x84], 1
mov dword [ebx + 0x94], edx
movsx eax, byte [eax]
mov dword [esp + 0xc], eax
jmp 0x55aef0
mov ecx, 0xf
jmp 0x55b17e
mov dword [ebx + 0x84], 1
mov ecx, ebp
mov dword [esp + 0xc], edi
mov dword [esp + 8], 1
mov dword [esp + 4], edx
mov dword [esp], 0
call fcn.00543c00
sub esp, 0x10
jmp 0x55af11
mov ecx, 0xf
jmp 0x55b025
mov dword [ebx + 0x84], 4
jmp 0x55af11
mov dword [esp + 4], str.Unexpected_end_of_regex_when_ascii_character.
mov dword [esp], 2
call fcn.0056a840
mov ebx, ecx
lea ecx, [eax + 1]
mov dword [ebx + 0x94], ecx
movsx edx, byte [eax]
cmp dl, 0x2d
je 0x55b3d8
cmp dl, 0x5b
je 0x55b330
cmp dl, 0x5d
je 0x55b378
cmp dl, 0x5c
jne 0x55b390
test byte [ebx + 0x80], 0x90
je 0x55b390
mov ecx, dword [ebx + 0xbc]
mov eax, dword [ebx + 0xb8]
add ecx, ebx
test al, 1
je 0x55b31c
mov edx, dword [ecx]
mov eax, dword [edx + eax - 1]
call eax
mov byte [ebx + 0x90], 0
add esp, 0x14
pop ebx
pop esi
ret
cmp esi, ecx
je 0x55b478
movzx edx, byte [eax + 1]
cmp dl, 0x2e
je 0x55b410
cmp dl, 0x3a
je 0x55b458
cmp dl, 0x3d
je 0x55b448
mov dword [ebx + 0x84], 1
lea ecx, [ebx + 0xa0]
mov dword [esp + 0xc], 0x5b
jmp 0x55b3a4
test byte [ebx + 0x80], 0x10
jne 0x55b3f0
cmp byte [ebx + 0x90], 0
je 0x55b3f0
lea esi, [esi]
mov dword [ebx + 0x84], 1
lea ecx, [ebx + 0xa0]
mov dword [esp + 0xc], edx
mov dword [esp + 8], 1
mov eax, dword [ebx + 0xa4]
mov dword [esp], 0
mov dword [esp + 4], eax
call fcn.00543c00
mov byte [ebx + 0x90], 0
sub esp, 0x10
add esp, 0x14
pop ebx
pop esi
ret
mov dword [ebx + 0x84], 0x1c
mov byte [ebx + 0x90], 0
add esp, 0x14
pop ebx
pop esi
ret
mov dword [ebx + 0x84], 0xb
mov dword [ebx + 0x7c], 0
mov byte [ebx + 0x90], 0
add esp, 0x14
pop ebx
pop esi
ret
mov dword [ebx + 0x84], 0x10
lea edx, [eax + 2]
mov ecx, ebx
mov dword [ebx + 0x94], edx
movsx eax, byte [eax + 1]
mov dword [esp], eax
call fcn.0055a4a0
mov byte [ebx + 0x90], 0
sub esp, 4
add esp, 0x14
pop ebx
pop esi
ret
mov dword [ebx + 0x84], 0x11
jmp 0x55b41a
mov dword [ebx + 0x84], 0xf
jmp 0x55b41a
mov eax, dword [edi]
mov ecx, dword [esp + 0x1c]
mov edx, esi
mov eax, dword [eax + 0x20]
cmp eax, 0x4d48e0
jne 0x55b5b0
test dl, dl
je 0x55b4ef
mov byte [edi + ebp + 0x11d], dl
cmp byte [eax], 0
jne 0x55b590
test eax, 0x120
je 0x55b5cc
mov eax, dword [ebx + 0x9c]
mov eax, dword [eax + 0x18]
test byte [eax + ebp*2], 8
je 0x55b5cc
mov eax, esi
cmp al, 0x30
je 0x55b5cc
mov dword [ebx + 0x84], 4
mov eax, dword [esp + 0x1c]
mov dword [esp + 8], 1
lea ecx, [ebx + 0xa0]
mov dword [esp + 0xc], eax
mov eax, dword [ebx + 0xa4]
mov dword [esp], 0
mov dword [esp + 4], eax
call fcn.00543c00
add dword [ebx + 0x94], 1
sub esp, 0x10
add esp, 0x2c
pop ebx
pop esi
pop edi
pop ebp
ret
mov dword [ebx + 0x84], 1
jmp 0x55b54e
mov dword [esp], ecx
mov ecx, edi
mov dword [esp + 4], 0
call eax
movsx ecx, al
sub esp, 8
mov edx, ecx
jmp 0x55b4e4
mov dword [esp + 4], str.Unexpected_escape_character.
mov dword [esp], 2
call fcn.0056a840