Function at 0x4073d0
Capabilities:
Parse credit card information

Disassembly:
push ebp
mov ecx, eax
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0x7c
mov dword [ebp - 0x74], eax
mov dword [ebp - 0x64], 0
mov dword [ebp - 0x60], 0
mov byte [ebp - 0x56], 0
mov byte [ebp - 0x55], 0
mov byte [ebp - 0x54], 0
mov byte [ebp - 0x53], 1
mov byte [ebp - 0x52], 0
mov byte [ebp - 0x51], 0
mov byte [ebp - 0xd], 0
mov al, byte [ecx]
cmp al, 0x20
je 0x407486
cmp al, 9
je 0x407486
mov byte [ebp - 0x58], 0
cmp al, 0x21
je 0x407621
cmp al, 0x20
je 0x4074da
cmp al, 9
je 0x4074da
cmp al, 0x25
je 0x40762d
cmp al, 0x2e
je 0x407689
cmp al, 0x2c
je 0x40767c
xor esi, esi
xor edi, edi
mov ebx, ecx
lea esi, [esi]
xor eax, eax
mov dl, byte [ebx]
mov al, dl
mov ax, word [eax + eax + 0x49f840]
test eax, 0x204
jne 0x407483
cmp dl, 0x2d
je 0x407483
cmp dl, 0x2b
je 0x407483
cmp dl, 0x3d
je 0x407483
cmp dl, 0x2c
je 0x407483
cmp dl, 0x2e
je 0x407483
cmp dl, 0x40
jne 0x40749a
inc ebx
jmp 0x407450
inc ecx
mov al, byte [ecx]
cmp al, 0x20
jne 0x40740e
inc ecx
mov al, byte [ecx]
cmp al, 0x20
jne 0x40740e
jmp 0x407486
cmp dl, 0x2a
je 0x407661
mov dword [ebp - 0x6c], ecx
mov dword [ebp - 0x68], ebx
mov byte [ebp - 0x59], 0
cmp dl, 0x20
je 0x4074e2
cmp dl, 9
je 0x4074e2
cmp dl, 0x3a
je 0x4075bc
jg 0x4074e7
cmp dl, 0x26
je 0x4074f5
push eax
movsx eax, byte [ebx]
push eax
mov eax, dword [ebp - 0x74]
push eax
push str.braced_spec__qs_is_invalid_at__qc
call fcn.00418550
inc ecx
mov al, byte [ecx]
jmp 0x40741e
inc ebx
mov dl, byte [ebx]
jmp 0x4074ad
cmp dl, 0x7c
je 0x4075bc
cmp dl, 0x7d
jne 0x4074c7
cmp byte [ebp - 0x55], 0
jne 0x4074c7
cmp byte [ebp - 0x52], 0
jne 0x4074c7
cmp byte [ebp - 0x58], 0
jne 0x4074c7
mov eax, esi
test al, al
jne 0x4074c7
mov edx, edi
test dl, dl
jne 0x4074c7
mov ecx, dword [ebp - 0x68]
cmp dword [ebp - 0x6c], ecx
je 0x4074c7
mov eax, dword [ebp - 0x6c]
mov dword [ebp - 0x50], 0xffffffff
sub ecx, eax
mov dword [ebp - 0x20], ecx
cmp byte [ebp - 0x59], 0
jne 0x407674
mov eax, dword [0x4a4198]
mov dword [ebp - 0x48], eax
test eax, eax
jle 0x407599
mov esi, dword [0x4a41d8]
mov dword [ebp - 0x4c], 0
mov edi, dword [esi]
push eax
mov eax, dword [ebp - 0x20]
push eax
mov eax, dword [ebp - 0x6c]
push eax
push edi
call sub.msvcrt.dll_strncmp
add esp, 0x10
test eax, eax
jne 0x407587
cmp byte [ebp - 0x59], 0
jne 0x407574
mov edx, dword [ebp - 0x20]
cmp byte [edi + edx], 0
jne 0x407587
mov edx, dword [ebp - 0x50]
mov eax, dword [ebp - 0x4c]
call fcn.00402550
test eax, eax
je 0x407587
mov byte [esi + 0xe], 1
mov edi, dword [ebp - 0x4c]
mov ecx, dword [ebp - 0x48]
inc edi
add esi, 0x10
mov dword [ebp - 0x4c], edi
cmp dword [ebp - 0x4c], ecx
jne 0x40754d
cmp byte [ebx], 0x7d
je 0x4077ea
mov byte [ebp - 0x57], 0
mov byte [ebp - 0x56], 1
inc ebx
cmp byte [ebp - 0x57], 0
jne 0x4074c7
mov ecx, ebx
jmp 0x407404
cmp byte [ebp - 0x56], 0
jne 0x4074c7
mov eax, dword [ebp - 0x6c]
test eax, eax
setne al
je 0x4075dc
mov ecx, dword [ebp - 0x68]
cmp dword [ebp - 0x6c], ecx
je 0x407696
mov edx, esi
test dl, dl
je 0x4077d1
cmp byte [ebp - 0x59], 0
jne 0x4074c7
mov byte [ebp - 0x53], 0
cmp byte [ebp - 0x54], 0
je 0x40775d
mov byte [ebp - 0x57], 0
mov al, byte [ebx]
cmp al, 0x3a
je 0x4076f6
mov byte [ebp - 0x55], 1
inc ebx
cmp al, 0x7d
mov dword [ebp - 0x24], ebx
je 0x4079c8
mov ebx, dword [ebp - 0x24]
jmp 0x4075ab
inc ecx
mov byte [ebp - 0x58], 1
mov al, byte [ecx]
jmp 0x40741e
cmp byte [ecx + 1], 0x3a
jne 0x407446
lea edx, [ebp - 0xd]
lea eax, [ecx + 2]
call fcn.00409c90
xor esi, esi
mov ebx, eax
xor edi, edi
mov dl, byte [eax]
mov dword [ebp - 0x6c], 0
mov dword [ebp - 0x68], 0
mov byte [ebp - 0x59], 0
jmp 0x4074ad
mov dl, byte [ebx + 1]
mov dword [ebp - 0x68], ebx
inc ebx
mov dword [ebp - 0x6c], ecx
mov byte [ebp - 0x59], 1
jmp 0x4074ad
mov dword [ebp - 0x50], ecx
jmp 0x407534
inc ecx
xor esi, esi
mov edi, 1
jmp 0x40744a
inc ecx
mov esi, 1
xor edi, edi
jmp 0x40744a
cmp byte [ebp - 0x52], 0
je 0x4074c7
cmp byte [ebp - 0x54], 0
jne 0x4074c7
cmp dl, 0x7c
je 0x4074c7
cmp byte [ebp - 0x58], 0
jne 0x4074c7
mov eax, esi
test al, al
jne 0x4074c7
mov edx, edi
test dl, dl
jne 0x4074c7
cmp byte [ebp - 0x59], 0
jne 0x4074c7
mov cl, byte [ebp - 0x51]
mov byte [ebp - 0x57], 1
xor ecx, 1
mov byte [ebp - 0x53], 0
mov byte [ebp - 0x54], cl
mov al, byte [ebx]
cmp al, 0x3a
jne 0x40760c
mov byte [ebp - 0x6d], 0
cmp byte [ebp - 0x54], 0
je 0x407709
mov cl, byte [ebp - 0x51]
xor ecx, 1
mov byte [ebp - 0x6d], cl
lea ecx, [ebx + 2]
mov dl, byte [ebx + 1]
lea edi, [ebx + 1]
mov esi, 1
mov byte [ebp - 0x2d], 0
lea ebx, [ecx - 1]
cmp dl, 0x7b
je 0x407757
cmp dl, 0x7d
je 0x407847
cmp esi, 1
sete al
cmp dl, 0x3b
je 0x407920
cmp dl, 0x25
je 0x40792f
test dl, dl
je 0x40783a
mov dl, byte [ecx]
inc ecx
lea ebx, [ecx - 1]
cmp dl, 0x7b
jne 0x407723
mov dl, byte [ecx]
inc esi
inc ecx
jmp 0x40774f
cmp byte [ebp - 0x51], 0
jne 0x4075fe
test al, al
je 0x4077ac
mov eax, esi
test al, al
je 0x4079a3
mov esi, dword [0x4a4528]
test esi, esi
je 0x4079bd
mov eax, dword [ebp - 0x6c]
mov edi, dword [ebp - 0x68]
sub edi, eax
push eax
mov eax, dword [ebp - 0x6c]
push edi
push eax
push esi
call sub.msvcrt.dll_strncmp
add esp, 0x10
test eax, eax
jne 0x4079bd
cmp byte [esi + edi], 0
sete al
mov byte [ebp - 0xd], al
mov cl, byte [ebp - 0x58]
cmp cl, byte [ebp - 0xd]
je 0x4075fe
mov eax, dword [ebp - 0x6c]
mov edx, dword [ebp - 0x68]
mov dword [ebp - 0x64], eax
mov dword [ebp - 0x60], edx
mov byte [ebp - 0x57], 0
mov byte [ebp - 0x54], 1
jmp 0x407602
mov ecx, edi
test cl, cl
jne 0x4075e6
cmp byte [ebp - 0x59], 0
jne 0x4075f4
jmp 0x4075f0
mov ecx, dword [ebp - 0x48]
test ecx, ecx
jle 0x4079c4
xor esi, esi
jmp 0x407802
inc esi
cmp dword [0x4a4198], esi
jle 0x40782b
mov eax, esi
mov edx, dword [0x4a41d8]
shl eax, 4
add eax, edx
cmp byte [eax + 0xe], 0
je 0x4077f9
mov byte [eax + 0xe], 0
xor edx, edx
mov eax, esi
inc esi
call fcn.004096a0
cmp dword [0x4a4198], esi
jg 0x407802
mov al, byte [ebx]
mov byte [ebp - 0x57], 0
mov byte [ebp - 0x56], 1
jmp 0x407610
push eax
push eax
push edi
push str.braced_spec_body__qs_is_invalid
call fcn.00418550
dec esi
jne 0x40774c
mov dword [ebp - 0x24], ebx
mov cl, byte [ebx - 1]
cmp cl, 0x20
je 0x40798d
mov edx, ebx
cmp cl, 9
je 0x40798d
cmp byte [ebp - 0x2d], 0
je 0x407874
cmp byte [ebp - 0x53], 0
je 0x40783a
cmp byte [ebp - 0x6d], 0
je 0x40794c
sub edx, edi
mov eax, edi
call fcn.00401630
cmp byte [ebp - 0x2d], 0
mov dword [ebp - 0x34], eax
je 0x407b0c
mov eax, dword [ebp - 0x60]
mov edx, dword [ebp - 0x64]
sub eax, edx
mov dword [ebp - 0x2c], eax
mov eax, dword [0x4a4198]
test eax, eax
jle 0x40794c
xor edi, edi
jmp 0x4078bd
inc edi
cmp dword [0x4a4198], edi
jle 0x40794c
mov esi, edi
mov eax, dword [0x4a41d8]
shl esi, 4
mov ecx, dword [ebp - 0x2c]
add esi, eax
mov edx, dword [ebp - 0x64]
push eax
push ecx
push edx
mov eax, dword [esi]
push eax
call sub.msvcrt.dll_strncmp
add esp, 0x10
test eax, eax
jne 0x4078b0
mov edx, dword [ebp - 0x2c]
mov eax, edi
call fcn.00402550
test eax, eax
je 0x4078b0
mov eax, dword [esi]
mov ecx, dword [ebp - 0x2c]
add ecx, eax
xor edx, edx
mov eax, dword [ebp - 0x34]
call fcn.00407b30
test eax, eax
js 0x407b1d
mov edx, 1
mov eax, edi
call fcn.004096a0
mov dword [0x4a4498], 0
jmp 0x4078b0
test al, al
jne 0x40784e
mov dl, byte [ecx]
jmp 0x40774e
mov dl, byte [ecx]
test al, al
je 0x40774e
cmp dl, 0x2a
jne 0x40774e
inc ecx
mov byte [ebp - 0x2d], 1
jmp 0x40774f
test ebx, ebx
je 0x4079c8
mov al, byte [ebx]
cmp al, 0x3b
jne 0x40760c
xor edx, edx
xor eax, eax
mov dl, byte [ebp - 0x54]
mov al, byte [ebp - 0x51]
or edx, eax
mov dword [ebp - 0x64], 0
setne byte [ebp - 0x51]
mov dword [ebp - 0x60], 0
mov byte [ebp - 0x55], 1
mov byte [ebp - 0x54], 0
mov byte [ebp - 0x53], 1
mov byte [ebp - 0x52], 1
jmp 0x4075aa
mov edx, ebx
dec edx
mov cl, byte [edx - 1]
cmp cl, 0x20
je 0x40798f
cmp cl, 9
jne 0x407868
jmp 0x40798f
mov edx, edi
test dl, dl
je 0x4079fe
mov eax, dword [0x4a42f8]
test eax, eax
je 0x4079bd
mov esi, dword [eax]
test esi, esi
je 0x4079bd
cmp byte [esi], 0
jne 0x4079d3
xor eax, eax
jmp 0x4077a9
inc ebx
mov dword [ebp - 0x24], ebx
mov eax, dword [ebp - 0x24]
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax, dword [ebp - 0x6c]
mov edi, dword [ebp - 0x68]
sub edi, eax
mov edx, dword [ebp - 0x6c]
lea eax, [esi + 1]
push ecx
push edi
push edx
push eax
call sub.msvcrt.dll_strncmp
add esp, 0x10
test eax, eax
jne 0x4079bd
cmp byte [esi + edi + 1], 0
sete al
jmp 0x4077a9
mov edi, dword [ebp - 0x68]
mov eax, dword [ebp - 0x6c]
sub edi, eax
mov dword [ebp - 0x44], 0xffffffff
cmp byte [ebp - 0x59], 0
je 0x407a16
mov dword [ebp - 0x44], edi
mov ecx, dword [0x4a4198]
mov dword [ebp - 0x38], ecx
test ecx, ecx
jle 0x4079bd
mov ecx, dword [ebp - 0x6c]
mov eax, dword [0x4a41d8]
lea edx, [edi - 1]
inc ecx
mov dword [ebp - 0x28], eax
mov dword [ebp - 0x40], 0
mov dword [ebp - 0x78], edx
mov dword [ebp - 0x7c], ecx
jmp 0x407a61
cmp al, 0x55
je 0x407aa9
mov esi, dword [ebp - 0x40]
mov ecx, dword [ebp - 0x28]
inc esi
add ecx, 0x10
mov dword [ebp - 0x40], esi
mov edx, dword [ebp - 0x38]
mov dword [ebp - 0x28], ecx
cmp dword [ebp - 0x40], edx
je 0x4079bd
mov eax, dword [ebp - 0x28]
mov esi, dword [eax]
push eax
mov eax, dword [ebp - 0x6c]
push edi
push eax
push esi
call sub.msvcrt.dll_strncmp
add esp, 0x10
test eax, eax
jne 0x407a94
cmp byte [ebp - 0x59], 0
jne 0x407a85
cmp byte [esi + edi], 0
jne 0x407a94
mov edx, dword [ebp - 0x44]
mov eax, dword [ebp - 0x40]
call fcn.00402550
test eax, eax
jne 0x407b05
mov ecx, dword [ebp - 0x28]
mov edx, dword [ecx + 4]
test edx, edx
je 0x407a45
mov ecx, dword [ebp - 0x28]
mov esi, dword [ecx]
mov al, byte [esi]
cmp al, 0x44
jne 0x407a41
mov ecx, dword [ebp - 0x6c]
cmp al, byte [ecx]
jne 0x407a45
mov edx, dword [edx]
push eax
mov eax, dword [ebp - 0x78]
mov dword [ebp - 0x3c], edx
push eax
mov eax, dword [ebp - 0x7c]
push eax
push edx
call sub.msvcrt.dll_strncmp
add esp, 0x10
test eax, eax
jne 0x407a45
mov edx, 1
cmp byte [ebp - 0x59], 0
jne 0x407af5
cmp byte [esi + 1], 0
jne 0x407a45
mov eax, dword [ebp - 0x3c]
cmp byte [edi + eax - 1], 0
jne 0x407a45
or edx, 0xffffffff
mov eax, dword [ebp - 0x40]
call fcn.00402550
test eax, eax
je 0x407a45
mov al, 1
jmp 0x4077a9
xor ecx, ecx
xor edx, edx
call fcn.00407b30
test eax, eax
jns 0x40794c
mov dword [ebp - 0x24], 0
jmp 0x4079c8