Function at 0x4012a0
Capabilities:
Parse credit card information

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x34
mov eax, dword [0x435004]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
push edi
mov edi, ecx
mov esi, edx
xor ebx, ebx
xor ah, ah
mov dword [ebp - 0x2c], ebx
mov byte [ebp - 0x25], ah
mov ecx, dword [edi]
mov edx, ecx
mov dword [edi + 4], ecx
mov al, byte [esi]
test al, al
je 0x401369
mov edx, 0xc9
inc esi
test ah, ah
je 0x4012e6
cmp al, 0x3e
setne ah
mov byte [ebp - 0x25], ah
jmp 0x40135a
cmp al, 0x3c
jne 0x4012f1
mov ah, 1
mov byte [ebp - 0x25], ah
jmp 0x40135a
cmp al, 0x25
jne 0x401511
mov al, byte [esi]
test al, al
je 0x4015e5
mov bl, byte [esi + 1]
test bl, bl
je 0x4015e5
add esi, 2
mov dword [ebp - 0x30], esi
cmp al, 0x5e
jne 0x4013a3
mov eax, dword [edi + 4]
mov byte [ebp - 0x26], 0xc2
cmp eax, dword [edi + 8]
je 0x401330
mov byte [eax], 0xc2
inc dword [edi + 4]
jmp 0x40133c
lea ecx, [ebp - 0x26]
push ecx
push eax
mov ecx, edi
call fcn.00402450
mov eax, dword [edi + 4]
add bl, 0x40
mov byte [ebp - 0x26], bl
cmp eax, dword [edi + 8]
je 0x401395
mov byte [eax], bl
inc dword [edi + 4]
mov ebx, dword [ebp - 0x2c]
mov edx, 0xc9
mov ah, byte [ebp - 0x25]
mov al, byte [esi]
test al, al
jne 0x4012d7
mov ecx, dword [edi + 4]
mov edx, dword [edi]
sub ecx, edx
sub ecx, 3
cmp ecx, 0xffed
ja 0x4015e5
test ebx, ebx
jne 0x4015e5
pop edi
pop esi
mov al, 1
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0040cda1
mov esp, ebp
pop ebp
ret
lea ecx, [ebp - 0x26]
push ecx
push eax
mov ecx, edi
call fcn.00402450
jmp 0x40134f
cmp al, 0x3d
jne 0x401472
cmp bl, 0x7b
jne 0x40142b
cmp dword [ebp - 0x2c], 8
jae 0x4015e5
mov ecx, dword [edi + 4]
mov eax, ecx
mov ebx, dword [edi]
sub eax, ebx
lea edx, [eax + 3]
cmp edx, eax
jae 0x4013e2
lea ecx, [ebx + edx]
mov ebx, dword [ebp - 0x2c]
mov dword [edi + 4], ecx
sub ecx, dword [edi]
mov dword [ebp + ebx*4 - 0x24], ecx
inc ebx
mov dword [ebp - 0x2c], ebx
jmp 0x401352
jbe 0x401419
mov eax, dword [edi + 8]
sub eax, ebx
cmp edx, eax
jbe 0x40140b
push ecx
push edx
mov ecx, edi
call fcn.00402610
mov ebx, dword [ebp - 0x2c]
mov ecx, dword [edi + 4]
sub ecx, dword [edi]
mov dword [ebp + ebx*4 - 0x24], ecx
inc ebx
mov dword [ebp - 0x2c], ebx
jmp 0x401352
xor eax, eax
mov word [ecx], ax
mov byte [ecx + 2], al
add ecx, 3
mov dword [edi + 4], ecx
mov ebx, dword [ebp - 0x2c]
sub ecx, dword [edi]
mov dword [ebp + ebx*4 - 0x24], ecx
inc ebx
mov dword [ebp - 0x2c], ebx
jmp 0x401352
cmp bl, 0x7d
jne 0x4015e5
mov ebx, dword [ebp - 0x2c]
test ebx, ebx
je 0x4015e5
mov ecx, dword [edi]
dec ebx
mov edx, dword [edi + 4]
sub edx, ecx
mov dword [ebp - 0x2c], ebx
mov esi, dword [ebp + ebx*4 - 0x24]
sub edx, esi
mov eax, edx
shr eax, 0x10
mov byte [ecx + esi - 3], al
mov ecx, edx
mov eax, dword [edi]
shr ecx, 8
mov byte [eax + esi - 2], cl
mov eax, dword [edi]
mov byte [eax + esi - 1], dl
mov esi, dword [ebp - 0x30]
jmp 0x401352
cmp al, 0x2b
jne 0x4014c7
cmp bl, 0x7b
jne 0x4015e5
push 0x25
push esi
call fcn.0040e350
mov ebx, eax
add esp, 8
test ebx, ebx
je 0x4015e5
cmp byte [ebx + 1], 0x2b
jne 0x4015e5
cmp byte [ebx + 2], 0x7d
jne 0x4015e5
sub eax, esi
mov edx, esi
push eax
mov ecx, edi
call fcn.00401150
add esp, 4
test al, al
je 0x4015e5
lea esi, [ebx + 3]
jmp 0x40134f
movsx ecx, al
cmp al, 0x61
jl 0x4014d3
add ecx, 0xffffffa9
jmp 0x4014da
cmp al, 0x41
jl 0x4014da
add ecx, 0xffffffc9
cmp bl, 0x61
jl 0x4014e3
mov al, 0xa9
jmp 0x4014ee
cmp bl, 0x41
mov eax, 0xd0
cmovge eax, edx
add bl, al
shl cl, 4
mov eax, dword [edi + 4]
or bl, cl
mov byte [ebp - 0x26], bl
cmp eax, dword [edi + 8]
je 0x401395
mov byte [eax], bl
inc dword [edi + 4]
mov ebx, dword [ebp - 0x2c]
jmp 0x401357
cmp al, 0x26
jne 0x4015bf
xor ebx, ebx
mov dword [ebp - 0x30], 0
mov dword [ebp - 0x34], ebx
mov ebx, str.amp_
nop word [eax + eax]
mov eax, ebx
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x401535
sub eax, edx
push eax
push ebx
push esi
call fcn.004105e0
add esp, 0xc
test eax, eax
je 0x401563
mov ecx, dword [ebp - 0x30]
add ebx, 6
inc dword [ebp - 0x34]
add ecx, 6
mov dword [ebp - 0x30], ecx
cmp ecx, 0x1e
jb 0x401530
jmp 0x4015a7
mov ebx, dword [ebp - 0x34]
mov ecx, dword [edi + 4]
lea eax, [ebx + str.___]
cmp ecx, dword [edi + 8]
je 0x40157d
mov al, byte [eax]
mov byte [ecx], al
inc dword [edi + 4]
jmp 0x401586
push eax
push ecx
mov ecx, edi
call fcn.00402450
lea eax, [ebx + ebx*2]
lea ecx, [eax*2 + str.amp_]
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x401593
sub ecx, edx
add esi, ecx
cmp ebx, 5
jb 0x40134f
mov eax, dword [edi + 4]
mov byte [ebp - 0x26], 0x26
cmp eax, dword [edi + 8]
je 0x401395
mov byte [eax], 0x26
jmp 0x40134c
mov ecx, dword [edi + 4]
mov byte [ebp - 0x26], al
cmp ecx, dword [edi + 8]
je 0x4015d4
mov byte [ecx], al
inc dword [edi + 4]
jmp 0x40135a
lea eax, [ebp - 0x26]
push eax
push ecx
mov ecx, edi
call fcn.00402450
jmp 0x401352
mov ecx, dword [ebp - 4]
xor al, al
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.0040cda1
mov esp, ebp
pop ebp
ret