Function at 0x402500
Capabilities:
Parse credit card information

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x23c
push ebx
push esi
push edi
mov esi, 0x103
push esi
xor edi, edi
lea eax, [ebp - 0x237]
push edi
push eax
mov byte [ebp - 0x238], 0
call fcn.0040216e
add esp, 0xc
push esi
lea eax, [ebp - 0x12f]
push edi
push eax
mov byte [ebp - 0x130], 0
call fcn.0040216e
add esp, 0xc
mov byte [ebp - 5], 0
mov dword [ebp - 0x10], edi
jmp 0x4028de
mov edx, dword [ebp + 8]
mov al, byte [edx]
mov edi, edx
test al, al
je 0x4028b8
cmp al, 0x7f
jge 0x4028b8
cmp al, 0x20
jle 0x4028b8
cmp al, 0x5e
jne 0x402721
cmp dword [ebp - 0x10], 0x19
jbe 0x402721
lea edi, [edx - 1]
cmp byte [edi], 0
mov ecx, edi
jne 0x402599
dec edi
mov al, byte [edi]
sub al, 0x30
cmp al, 9
ja 0x402599
mov byte [ebp - 4], 1
jmp 0x4025a9
mov al, byte [ecx]
sub al, 0x30
cmp al, 9
ja 0x4028c7
mov byte [ebp - 4], 0
push dword [ebp - 4]
mov edx, edi
call fcn.0040239c
mov ebx, eax
pop ecx
cmp ebx, 0xffffffff
je 0x402721
cmp byte [ebp - 4], 0
jne 0x4025ce
xor eax, eax
inc eax
sub eax, ebx
add edi, eax
jmp 0x4025d8
push 2
lea eax, [ebx + ebx]
pop ecx
sub ecx, eax
add edi, ecx
push 0x14
xor esi, esi
lea eax, [ebp - 0x28]
push esi
push eax
mov dword [ebp - 0xc], edi
call dword [0x40c12c]
add esp, 0xc
cmp byte [ebp - 4], 1
jne 0x402611
xor eax, eax
push 0xe682dd7e
inc eax
call fcn.00406efb
pop ecx
push esi
push esi
push 0x14
lea ecx, [ebp - 0x28]
push ecx
push ebx
push edi
push esi
push esi
call eax
jmp 0x40261f
push ebx
lea eax, [ebp - 0x28]
push edi
push eax
call fcn.00404b15
add esp, 0xc
lea esi, [ebp - 0x28]
mov dword [ebp - 0x14], ebx
call fcn.004023cf
test eax, eax
je 0x402721
cmp byte [ebp - 4], 0
jne 0x40263c
add edi, ebx
jmp 0x40263f
lea edi, [edi + ebx*2]
cmp byte [edi], 0x5e
jne 0x402721
push dword [ebp - 4]
mov ecx, edi
call fcn.00402362
pop ecx
cmp eax, 0xffffffff
je 0x402721
cmp byte [ebp - 4], 0
jne 0x402666
add edi, eax
jmp 0x402669
lea edi, [edi + eax*2]
push 0x4c
add ebx, eax
pop eax
sub eax, ebx
push eax
push dword [ebp - 4]
mov edx, edi
call fcn.00402339
pop ecx
pop ecx
cmp eax, 0xffffffff
je 0x402721
cmp byte [ebp - 4], 0
jne 0x402690
add edi, eax
jmp 0x402693
lea edi, [edi + eax*2]
mov esi, 0x104
push esi
add ebx, eax
lea eax, [ebp - 0x238]
push 0
push eax
call dword [0x40c12c]
add esp, 0xc
cmp byte [ebp - 4], 0
lea eax, [ebp - 0x238]
jne 0x4026c8
push ebx
push dword [ebp - 0xc]
push eax
call fcn.00404b15
add esp, 0xc
jmp 0x4026d6
push esi
push eax
push ebx
push dword [ebp - 0xc]
call fcn.00401102
add esp, 0x10
lea ecx, [ebp - 0x238]
call fcn.00402c68
push dword [ebp + 0x10]
mov esi, dword [ebp + 0x14]
mov byte [ebp + eax - 0x238], 0x3f
lea eax, [ebp - 0x238]
push 0x40d118
push eax
call fcn.00402445
sub ebx, dword [ebp - 0x14]
add esp, 0xc
cmp byte [ebp - 4], 0
jne 0x402714
add dword [ebp + 8], ebx
sub dword [ebp + 0xc], ebx
jmp 0x40271d
lea eax, [ebx + ebx]
add dword [ebp + 8], eax
sub dword [ebp + 0xc], eax
mov byte [ebp - 5], 1
mov al, byte [edi]
cmp al, 0x3d
je 0x40272f
cmp al, 0x44
jne 0x4028b8
cmp dword [ebp - 0x10], 0x19
jbe 0x4028b8
dec edi
cmp byte [edi], 0
mov ecx, edi
jne 0x402750
dec edi
mov al, byte [edi]
sub al, 0x30
cmp al, 9
ja 0x402750
mov byte [ebp - 4], 1
jmp 0x402760
mov al, byte [ecx]
sub al, 0x30
cmp al, 9
ja 0x4028d0
mov byte [ebp - 4], 0
push dword [ebp - 4]
mov edx, edi
call fcn.0040239c
mov ebx, eax
pop ecx
cmp ebx, 0xffffffff
je 0x4028b8
cmp byte [ebp - 4], 0
jne 0x402785
xor eax, eax
inc eax
sub eax, ebx
add edi, eax
jmp 0x40278f
push 2
lea eax, [ebx + ebx]
pop ecx
sub ecx, eax
add edi, ecx
push 0x14
xor esi, esi
lea eax, [ebp - 0x28]
push esi
push eax
mov dword [ebp - 0xc], edi
call dword [0x40c12c]
add esp, 0xc
cmp byte [ebp - 4], 0
je 0x4027c8
xor eax, eax
push 0xe682dd7e
inc eax
call fcn.00406efb
pop ecx
push esi
push esi
push 0x14
lea ecx, [ebp - 0x28]
push ecx
push ebx
push edi
push esi
push esi
call eax
jmp 0x4027d6
push ebx
lea eax, [ebp - 0x28]
push edi
push eax
call fcn.00404b15
add esp, 0xc
lea esi, [ebp - 0x28]
mov dword [ebp - 0x14], ebx
call fcn.004023cf
test eax, eax
je 0x4028b8
cmp byte [ebp - 4], 0
jne 0x4027f3
add edi, ebx
jmp 0x4027f6
lea edi, [edi + ebx*2]
mov al, byte [edi]
cmp al, 0x3d
je 0x402804
cmp al, 0x44
jne 0x4028b8
cmp byte [ebp - 4], 0
jne 0x40280d
inc edi
jmp 0x402810
add edi, 2
push 0x26
pop eax
inc ebx
sub eax, ebx
push eax
push dword [ebp - 4]
mov edx, edi
call fcn.00402339
pop ecx
pop ecx
cmp eax, 0xffffffff
je 0x4028b8
mov esi, 0x104
push esi
add ebx, eax
lea eax, [ebp - 0x130]
push 0
push eax
call dword [0x40c12c]
add esp, 0xc
cmp byte [ebp - 4], 0
mov byte [ebp - 0x130], 0x3b
lea eax, [ebp - 0x12f]
jne 0x402868
push ebx
push dword [ebp - 0xc]
push eax
call fcn.00404b15
add esp, 0xc
jmp 0x402876
push esi
push eax
push ebx
push dword [ebp - 0xc]
call fcn.00401102
add esp, 0x10
lea ecx, [ebp - 0x12f]
call fcn.00402c68
push dword [ebp + 0x10]
mov esi, dword [ebp + 0x14]
mov byte [ebp + eax - 0x12f], 0x3f
lea eax, [ebp - 0x130]
push str.Track2
push eax
call fcn.00402445
sub ebx, dword [ebp - 0x14]
add esp, 0xc
cmp byte [ebp - 4], 0
je 0x4028ae
add ebx, ebx
add dword [ebp + 8], ebx
sub dword [ebp + 0xc], ebx
mov byte [ebp - 5], 1
cmp byte [ebp - 5], 1
jne 0x4028d5
mov byte [ebp - 5], 0
jmp 0x40254f
inc edx
mov dword [ebp + 8], edx
dec dword [ebp + 0xc]
jmp 0x4028de
inc dword [ebp + 8]
jmp 0x4028cb
inc dword [ebp + 8]
dec dword [ebp + 0xc]
inc dword [ebp - 0x10]
cmp dword [ebp + 0xc], 0x50
ja 0x40254f
pop edi
pop esi
pop ebx
leave
ret