Function at 0x5585c0
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 0x55861e
mov eax, dword [edi]
mov ecx, esi
mov edx, dword [eax + 0x20]
mov eax, dword [esp + 0x1c]
cmp edx, 0x4d20f0
jne 0x558810
cmp cl, 0x20
je 0x55861e
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 0x558868
mov eax, esi
cmp al, 0x5c
je 0x558708
mov eax, esi
cmp al, 0x28
je 0x5586e0
cmp al, 0x29
je 0x5587f8
cmp al, 0x5b
je 0x558830
cmp al, 0x7b
je 0x5587b8
movsx ecx, al
and eax, 0xffffffdf
cmp al, 0x5d
je 0x5588b0
mov eax, esi
mov ebp, dword [ebx + 0x9c]
mov edi, ebx
movzx edx, al
movzx eax, byte [ebp + edx + 0x11d]
test al, al
jne 0x558910
mov eax, dword [ebp]
mov eax, dword [eax + 0x20]
cmp eax, 0x4d20f0
jne 0x558938
mov eax, esi
test al, al
je 0x5586ad
mov byte [ebp + edx + 0x11d], al
movzx eax, byte [ebx]
test al, al
je 0x5586fb
mov edx, esi
jmp 0x5586cb
movzx eax, byte [edi + 8]
add edi, 8
test al, al
je 0x5586fb
cmp dl, al
jne 0x5586c0
mov eax, dword [edi + 4]
mov dword [ebx + 0x84], eax
jmp 0x5586fb
mov eax, dword [ebx + 0x80]
test al, 0x10
jne 0x558750
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 0x5589a7
test dword [ebx + 0x80], 0x120
je 0x5587d0
movzx edx, byte [eax]
lea ecx, [edx - 0x28]
cmp cl, 1
jbe 0x55873e
cmp dl, 0x7b
jne 0x5587d0
lea edx, [eax + 1]
mov dword [ebx + 0x94], edx
movzx esi, byte [eax]
jmp 0x558642
mov edx, dword [ebx + 0x94]
cmp byte [edx], 0x3f
jne 0x5586ea
lea eax, [edx + 1]
mov dword [ebx + 0x94], eax
cmp eax, dword [ebx + 0x98]
je 0x558993
movzx eax, byte [edx + 1]
cmp al, 0x3a
je 0x558920
cmp al, 0x3d
je 0x558959
cmp al, 0x21
jne 0x55897f
add edx, 2
mov dword [esp + 0xc], 0x6e
lea ecx, [ebx + 0xa0]
mov dword [ebx + 0x94], edx
mov dword [ebx + 0x84], 7
jmp 0x558880
mov dword [ebx + 0x7c], 1
mov dword [ebx + 0x84], 0xc
jmp 0x5586fb
mov ecx, dword [ebx + 0xbc]
mov eax, dword [ebx + 0xb8]
add ecx, ebx
test al, 1
je 0x5587e8
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 0x558612
mov dword [ebx + 0x7c], 2
mov eax, dword [ebx + 0x94]
mov byte [ebx + 0x90], 1
cmp eax, dword [ebx + 0x98]
je 0x558855
cmp byte [eax], 0x5e
je 0x5588f0
mov dword [ebx + 0x84], 9
jmp 0x5586fb
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.00541b10
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.00541b10
sub esp, 0x10
jmp 0x5586fb
mov dword [ebx + 0x84], 0xa
add eax, 1
mov dword [ebx + 0x94], eax
jmp 0x5586fb
mov esi, eax
jmp 0x5586ad
mov dword [ebx + 0x84], 6
add edx, 2
mov dword [ebx + 0x94], edx
jmp 0x5586fb
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 0x5586a0
add edx, 2
mov dword [esp + 0xc], 0x70
lea ecx, [ebx + 0xa0]
mov dword [ebx + 0x94], edx
mov dword [ebx + 0x84], 7
jmp 0x558880
mov dword [esp + 4], str.Invalid_special_open_parenthesis.
mov dword [esp], 5
call fcn.00567970
mov dword [esp + 4], str.Unexpected_end_of_regex_when_in_an_open_parenthesis.
mov dword [esp], 5
call fcn.00567970
mov dword [esp + 4], str.Unexpected_end_of_regex_when_escaping.
mov dword [esp], 2
call fcn.00567970
nop
nop
nop
nop
nop
mov eax, dword [esi]
mov eax, dword [eax + 0x20]
cmp eax, 0x4d20f0
jne 0x558dc0
test cl, cl
je 0x558c17
mov byte [esi + edi + 0x11d], cl
jmp 0x558c88
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.00541b10
sub esp, 0x10
add esp, 0x2c
pop ebx
pop esi
pop edi
pop ebp
ret
lea eax, [ebp - 0x38]
cmp al, 1
jbe 0x558de7
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.00541b10
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 0x558d62
mov ecx, dword [ebx + 0x9c]
movzx esi, byte [eax]
mov ecx, dword [ecx + 0x18]
mov edx, esi
test byte [ecx + esi*2], 8
je 0x558d62
sub edx, 0x38
cmp dl, 1
jbe 0x558d62
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 0x558ddd
mov ecx, dword [ebx + 0xa8]
cmp edi, ecx
ja 0x558d88
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 0x558d78
mov dword [ebx + 0x84], 2
add esp, 0x2c
pop ebx
pop esi
pop edi
pop ebp
ret
mov dword [esp + 0x14], 1
jmp 0x558cee
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.00543900
mov eax, dword [ebx + 0xa0]
sub esp, 0x10
movzx edx, byte [esp + 0x1f]
jmp 0x558d47
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 0x558c0c
mov ecx, 0xf
jmp 0x558d43
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 0x558e5c
mov eax, dword [ebp]
mov ecx, edi
mov eax, dword [eax + 0x20]
cmp eax, 0x4d20f0
jne 0x559058
test cl, cl
je 0x558e5c
mov byte [ebp + esi + 0x11d], cl
mov ebp, dword [ebx + 0x88]
movzx eax, byte [ebp]
test al, al
jne 0x558e7b
jmp 0x558ef0
movzx eax, byte [ebp + 2]
add ebp, 2
test al, al
je 0x558ef0
cmp cl, al
jne 0x558e70
cmp dl, 0x62
jne 0x558ea8
cmp dword [ebx + 0x7c], 2
je 0x558ea8
mov dword [ebx + 0x84], 0x18
lea ecx, [ebx + 0xa0]
mov dword [esp + 0xc], 0x70
jmp 0x558ec0
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.00541b10
sub esp, 0x10
add esp, 0x2c
pop ebx
pop esi
pop edi
pop ebp
ret
cmp dl, 0x62
je 0x558e8a
cmp dl, 0x42
je 0x55907a
mov eax, edx
and eax, 0xffffffdf
cmp al, 0x44
je 0x558f10
mov eax, edx
and eax, 0xffffffdb
cmp al, 0x53
jne 0x558f30
mov dword [ebx + 0x84], 0xe
lea ecx, [ebx + 0xa0]
mov dword [esp + 0xc], edi
jmp 0x558ec0
cmp dl, 0x63
je 0x559097
lea eax, [ebx + 0xa0]
mov dword [esp + 0x10], eax
cmp dl, 0x78
je 0x559119
cmp dl, 0x75
je 0x559119
mov edx, dword [ebx + 0x9c]
mov eax, dword [ebx + 0xa4]
mov edx, dword [edx + 0x18]
test byte [edx + esi*2], 8
je 0x5590d8
mov dword [esp + 0xc], edi
lea ecx, [ebx + 0xa0]
lea ebp, [ebx + 0xa8]
mov dword [esp + 8], 1
mov dword [esp + 4], eax
mov dword [esp], 0
call fcn.00541b10
mov eax, dword [ebx + 0x94]
sub esp, 0x10
cmp dword [ebx + 0x98], eax
jne 0x558fd6
jmp 0x55910a
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 0x55910a
mov edx, dword [ebx + 0x9c]
movzx ecx, byte [eax]
mov edx, dword [edx + 0x18]
test byte [edx + ecx*2], 8
je 0x55910a
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 0x5590ce
mov ecx, dword [ebx + 0xa8]
cmp edi, ecx
jbe 0x558fb0
mov dword [esp + 0xc], 1
mov ecx, dword [esp + 0x10]
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], esi
mov byte [esp + 0x14], dl
call fcn.00543900
mov eax, dword [ebx + 0xa0]
sub esp, 0x10
movzx edx, byte [esp + 0x14]
jmp 0x558fb0
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 0x558e51
mov dword [ebx + 0x84], 0x18
lea ecx, [ebx + 0xa0]
mov dword [esp + 0xc], 0x6e
jmp 0x558ec0
mov eax, dword [ebx + 0x94]
cmp eax, dword [ebx + 0x98]
je 0x55921a
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 0x558ec0
mov ecx, 0xf
jmp 0x559015
mov dword [ebx + 0x84], 1
mov ecx, dword [esp + 0x10]
mov dword [esp + 0xc], edi
mov dword [esp + 8], 1
mov dword [esp + 4], eax
mov dword [esp], 0
call fcn.00541b10
sub esp, 0x10
jmp 0x558ee1
mov dword [ebx + 0x84], 4
jmp 0x558ee1
mov dword [ebx + 0xa4], 0
mov eax, dword [ebx + 0xa0]
mov byte [eax], 0
xor eax, eax
cmp dl, 0x78
setne al
xor ebp, ebp
lea eax, [eax + eax + 2]
mov dword [esp + 0x14], eax
lea eax, [ebx + 0xa8]
mov dword [esp + 0x18], eax
mov eax, dword [ebx + 0x94]
cmp eax, dword [ebx + 0x98]
je 0x559206
mov edx, dword [ebx + 0x9c]
movzx ecx, byte [eax]
mov edx, dword [edx + 0x18]
test byte [edx + ecx*2], 0x10
je 0x559206
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 0x5591ff
mov ecx, dword [ebx + 0xa8]
cmp edi, ecx
ja 0x5591c7
mov byte [eax + esi], dl
mov eax, dword [ebx + 0xa0]
add ebp, 1
mov dword [ebx + 0xa4], edi
mov byte [eax + esi + 1], 0
cmp dword [esp + 0x14], ebp
jne 0x559148
mov dword [ebx + 0x84], 3
jmp 0x558ee1
mov dword [esp + 0xc], 1
mov ecx, dword [esp + 0x10]
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], esi
mov byte [esp + 0x1f], dl
call fcn.00543900
mov eax, dword [ebx + 0xa0]
sub esp, 0x10
movzx edx, byte [esp + 0x1f]
jmp 0x55919b
mov ecx, 0xf
jmp 0x559197
mov dword [esp + 4], str.Unexpected_end_of_regex_when_ascii_character.
mov dword [esp], 2
call fcn.00567970
mov dword [esp + 4], str.Unexpected_end_of_regex_when_reading_control_code.
mov dword [esp], 2
call fcn.00567970
mov ebx, ecx
lea ecx, [eax + 1]
mov dword [ebx + 0x94], ecx
movsx edx, byte [eax]
cmp dl, 0x2d
je 0x559378
cmp dl, 0x5b
je 0x5592d0
cmp dl, 0x5d
je 0x559318
cmp dl, 0x5c
jne 0x559330
test byte [ebx + 0x80], 0x90
je 0x559330
mov ecx, dword [ebx + 0xbc]
mov eax, dword [ebx + 0xb8]
add ecx, ebx
test al, 1
je 0x5592bc
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 0x559418
movzx edx, byte [eax + 1]
cmp dl, 0x2e
je 0x5593b0
cmp dl, 0x3a
je 0x5593f8
cmp dl, 0x3d
je 0x5593e8
mov dword [ebx + 0x84], 1
lea ecx, [ebx + 0xa0]
mov dword [esp + 0xc], 0x5b
jmp 0x559344
test byte [ebx + 0x80], 0x10
jne 0x559390
cmp byte [ebx + 0x90], 0
je 0x559390
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.00541b10
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.00558470
mov byte [ebx + 0x90], 0
sub esp, 4
add esp, 0x14
pop ebx
pop esi
ret
mov dword [ebx + 0x84], 0x11
jmp 0x5593ba
mov dword [ebx + 0x84], 0xf
jmp 0x5593ba
mov eax, dword [edi]
mov ecx, dword [esp + 0x1c]
mov edx, esi
mov eax, dword [eax + 0x20]
cmp eax, 0x4d20f0
jne 0x559550
test dl, dl
je 0x55948f
mov byte [edi + ebp + 0x11d], dl
cmp byte [eax], 0
jne 0x559530
test eax, 0x120
je 0x55956c
mov eax, dword [ebx + 0x9c]
mov eax, dword [eax + 0x18]
test byte [eax + ebp*2], 8
je 0x55956c
mov eax, esi
cmp al, 0x30
je 0x55956c
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.00541b10
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 0x5594ee
mov dword [esp], ecx
mov ecx, edi
mov dword [esp + 4], 0
call eax
movsx ecx, al
sub esp, 8
mov edx, ecx
jmp 0x559484
mov dword [esp + 4], str.Unexpected_escape_character.
mov dword [esp], 2
call fcn.00567970