Function at 0x51ab90
Capabilities:
Parse credit card information

Disassembly:
mov ecx, dword fs:[0x14]
mov ecx, dword [ecx]
cmp esp, dword [ecx + 8]
jbe 0x51b2a8
sub esp, 0x44
mov eax, dword [esp + 0x4c]
test eax, eax
je 0x51b278
lea ecx, [0x640f20]
mov dword [esp], ecx
mov dword [esp + 4], 0
shr eax, 1
mov dword [esp + 0x28], eax
mov dword [esp + 8], eax
call fcn.00438de0
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x48]
cmp byte [ecx], 0x22
jne 0x51af87
mov edx, dword [esp + 0x4c]
dec edx
mov ebx, edx
neg edx
sar edx, 0x1f
and edx, 1
add ecx, edx
mov edx, dword [esp + 0x28]
xor ebp, ebp
jmp 0x51ac05
mov ecx, eax
mov eax, edi
mov ebp, esi
test ebx, ebx
je 0x51af5e
mov dword [esp + 0x38], eax
movzx esi, byte [ecx]
lea edi, [ebx - 1]
mov dword [esp + 0x4c], edi
xchg edi, ebx
neg ebx
xchg edi, ebx
sar edi, 0x1f
and edi, 1
lea eax, [edi + ecx]
xchg esi, eax
cmp al, 0x22
xchg esi, eax
je 0x51ae78
mov dword [esp + 0x40], eax
mov dword [esp + 0x24], ebp
xchg esi, eax
cmp al, 0x5c
xchg esi, eax
jne 0x51ad56
cmp ebx, 1
je 0x51ad2d
movzx ecx, byte [ecx + edi]
cmp cl, 0xb
jne 0x51acc5
lea esi, [ebp + 1]
cmp esi, edx
ja 0x51ac79
mov edi, dword [esp + 0x38]
mov byte [edi + ebp], cl
lea ecx, [ebx - 2]
mov ebx, ecx
neg ecx
sar ecx, 0x1f
and ecx, 1
add eax, ecx
jmp 0x51abff
mov byte [esp + 0x21], cl
mov dword [esp + 0x4c], ebx
lea eax, [0x640f20]
mov dword [esp], eax
mov ecx, dword [esp + 0x38]
mov dword [esp + 4], ecx
mov dword [esp + 8], ebp
mov dword [esp + 0xc], edx
mov dword [esp + 0x10], esi
call fcn.00438ea0
mov edi, dword [esp + 0x14]
mov eax, dword [esp + 0x18]
mov edx, dword [esp + 0x1c]
lea esi, [eax + 1]
mov eax, dword [esp + 0x40]
movzx ecx, byte [esp + 0x21]
mov ebx, dword [esp + 0x4c]
mov ebp, dword [esp + 0x24]
jmp 0x51ac65
cmp cl, 0xc
je 0x51ac5a
cmp cl, 1
jb 0x51ad29
cmp cl, 9
xchg esi, ebx
setbe bl
xchg esi, ebx
xchg esi, eax
test al, al
xchg esi, eax
jne 0x51ac5a
cmp cl, 0xe
jb 0x51ad25
cmp cl, 0x7f
xchg esi, ebx
setbe bl
xchg esi, ebx
xchg esi, eax
test al, al
xchg esi, eax
jne 0x51ac5a
mov dword [esp + 0x50], 0
mov dword [esp + 0x54], 0
mov dword [esp + 0x58], 0
mov dword [esp + 0x5c], 0
mov byte [esp + 0x60], 0
add esp, 0x44
ret
xor esi, esi
jmp 0x51acf2
xor esi, esi
jmp 0x51acd9
mov dword [esp + 0x50], 0
mov dword [esp + 0x54], 0
mov dword [esp + 0x58], 0
mov dword [esp + 0x5c], 0
mov byte [esp + 0x60], 0
add esp, 0x44
ret
xchg esi, eax
cmp al, 0xb
xchg esi, eax
jne 0x51adc0
lea ecx, [ebp + 1]
cmp ecx, edx
ja 0x51ad7a
mov ebx, dword [esp + 0x38]
xchg esi, eax
mov byte [ebx + ebp], al
xchg esi, eax
mov esi, ecx
mov edi, ebx
mov ebx, dword [esp + 0x4c]
jmp 0x51abff
xchg esi, eax
mov byte [esp + 0x20], al
xchg esi, eax
lea eax, [0x640f20]
mov dword [esp], eax
mov ebx, dword [esp + 0x38]
mov dword [esp + 4], ebx
mov dword [esp + 8], ebp
mov dword [esp + 0xc], edx
mov dword [esp + 0x10], ecx
call fcn.00438ea0
mov ebx, dword [esp + 0x14]
mov eax, dword [esp + 0x18]
mov edx, dword [esp + 0x1c]
lea ecx, [eax + 1]
mov eax, dword [esp + 0x40]
mov ebp, dword [esp + 0x24]
movzx esi, byte [esp + 0x20]
jmp 0x51ad68
xchg esi, eax
cmp al, 0xc
xchg esi, eax
je 0x51ad5d
xchg esi, eax
cmp al, 0x20
xchg esi, eax
je 0x51ad5d
xchg esi, eax
cmp al, 0x21
xchg esi, eax
je 0x51ad5d
xchg esi, eax
cmp al, 0x7f
xchg esi, eax
je 0x51ad5d
xchg esi, eax
cmp al, 1
xchg esi, eax
jb 0x51ae71
xchg esi, eax
cmp al, 8
xchg esi, eax
setbe cl
test cl, cl
jne 0x51ad5d
xchg esi, eax
cmp al, 0xe
xchg esi, eax
jb 0x51ae6d
xchg esi, eax
cmp al, 0x1f
xchg esi, eax
setbe cl
test cl, cl
jne 0x51ad5d
xchg esi, eax
cmp al, 0x23
xchg esi, eax
jb 0x51ae69
xchg esi, eax
cmp al, 0x5b
xchg esi, eax
setbe cl
test cl, cl
jne 0x51ad5d
xchg esi, eax
cmp al, 0x5d
xchg esi, eax
jb 0x51ae65
xchg esi, eax
cmp al, 0x7e
xchg esi, eax
setbe cl
test cl, cl
jne 0x51ad5d
mov dword [esp + 0x50], 0
mov dword [esp + 0x54], 0
mov dword [esp + 0x58], 0
mov dword [esp + 0x5c], 0
mov byte [esp + 0x60], 0
add esp, 0x44
ret
xor ecx, ecx
jmp 0x51ae34
xor ecx, ecx
jmp 0x51ae1d
xor ecx, ecx
jmp 0x51ae06
xor ecx, ecx
jmp 0x51adef
mov ecx, dword [esp + 0x4c]
mov ebx, dword [esp + 0x38]
test ecx, ecx
jne 0x51aead
mov dword [esp + 0x50], 0
mov dword [esp + 0x54], 0
mov dword [esp + 0x58], 0
mov dword [esp + 0x5c], 0
mov byte [esp + 0x60], 0
add esp, 0x44
ret
cmp byte [eax], 0x40
jne 0x51ae84
mov dword [esp + 0x38], ebx
mov dword [esp + 0x28], edx
mov dword [esp + 0x24], ebp
dec ecx
mov dword [esp + 0x4c], ecx
mov edx, ecx
neg ecx
sar ecx, 0x1f
and ecx, 1
add eax, ecx
mov dword [esp + 0x48], eax
mov dword [esp], eax
mov dword [esp + 4], edx
call fcn.0051b2c0
movzx eax, byte [esp + 0x14]
test al, al
je 0x51af35
mov dword [esp], 0
mov eax, dword [esp + 0x38]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x24]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x28]
mov dword [esp + 0xc], eax
call fcn.0043c2a0
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x50], ecx
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0x48]
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0x4c]
mov dword [esp + 0x5c], eax
mov byte [esp + 0x60], 1
add esp, 0x44
ret
mov dword [esp + 0x50], 0
mov dword [esp + 0x54], 0
mov dword [esp + 0x58], 0
mov dword [esp + 0x5c], 0
mov byte [esp + 0x60], 0
add esp, 0x44
ret
mov dword [esp + 0x50], 0
mov dword [esp + 0x54], 0
mov dword [esp + 0x58], 0
mov dword [esp + 0x5c], 0
mov byte [esp + 0x60], 0
add esp, 0x44
ret
mov edx, dword [esp + 0x28]
mov ebx, dword [esp + 0x4c]
xor ebp, ebp
jmp 0x51afb1
xchg esi, ebx
mov byte [eax + ebp], bl
xchg esi, ebx
lea esi, [edi - 1]
mov edi, esi
xchg esi, ebx
neg ebx
xchg esi, ebx
sar esi, 0x1f
and esi, 1
add ecx, esi
mov ebp, ebx
mov ebx, edi
mov dword [esp + 0x2c], ebp
test ebx, ebx
jle 0x51b176
movzx esi, byte [ecx]
xchg esi, eax
cmp al, 0x5c
xchg esi, eax
jne 0x51b06f
lea esi, [ebx - 1]
mov edi, esi
xchg esi, ebx
neg ebx
xchg esi, ebx
sar esi, 0x1f
and esi, 1
add ecx, esi
cmp ebx, 1
je 0x51b046
test edi, edi
jbe 0x51b2a1
lea ebx, [ebp + 1]
movzx esi, byte [ecx]
cmp ebx, edx
jbe 0x51af93
mov dword [esp + 0x4c], edi
mov dword [esp + 0x48], ecx
xchg esi, eax
mov byte [esp + 0x21], al
xchg esi, eax
lea ecx, [0x640f20]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov dword [esp + 8], ebp
mov dword [esp + 0xc], edx
mov dword [esp + 0x10], ebx
call fcn.00438ea0
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x1c]
lea ebx, [ecx + 1]
mov ecx, dword [esp + 0x48]
mov ebp, dword [esp + 0x2c]
movzx esi, byte [esp + 0x21]
mov edi, dword [esp + 0x4c]
jmp 0x51af93
mov dword [esp + 0x50], 0
mov dword [esp + 0x54], 0
mov dword [esp + 0x58], 0
mov dword [esp + 0x5c], 0
mov byte [esp + 0x60], 0
add esp, 0x44
ret
xchg esi, eax
cmp al, 0x30
xchg esi, eax
jb 0x51b084
xchg esi, eax
cmp al, 0x39
xchg esi, eax
ja 0x51b084
mov edi, ebx
jmp 0x51afe3
xchg esi, eax
cmp al, 0x61
xchg esi, eax
jb 0x51b271
xchg esi, eax
cmp al, 0x7a
xchg esi, eax
xchg edi, ebx
setbe bl
xchg edi, ebx
xchg edi, eax
test al, al
xchg edi, eax
jne 0x51b07d
xchg esi, eax
cmp al, 0x41
xchg esi, eax
jb 0x51b26a
xchg esi, eax
cmp al, 0x5a
xchg esi, eax
xchg edi, ebx
setbe bl
xchg edi, ebx
xchg edi, eax
test al, al
xchg edi, eax
jne 0x51b07d
xchg esi, eax
cmp al, 0x21
xchg esi, eax
je 0x51b07d
xchg esi, eax
cmp al, 0x23
xchg esi, eax
je 0x51b07d
xchg esi, eax
cmp al, 0x24
xchg esi, eax
je 0x51b07d
xchg esi, eax
cmp al, 0x25
xchg esi, eax
je 0x51b07d
xchg esi, eax
cmp al, 0x26
xchg esi, eax
je 0x51b07d
xchg esi, eax
cmp al, 0x27
xchg esi, eax
je 0x51b07d
xchg esi, eax
cmp al, 0x2a
xchg esi, eax
je 0x51b07d
xchg esi, eax
cmp al, 0x2b
xchg esi, eax
je 0x51b07d
xchg esi, eax
cmp al, 0x2d
xchg esi, eax
je 0x51b07d
xchg esi, eax
cmp al, 0x2f
xchg esi, eax
je 0x51b07d
xchg esi, eax
cmp al, 0x3d
xchg esi, eax
je 0x51b07d
xchg esi, eax
cmp al, 0x3f
xchg esi, eax
je 0x51b07d
xchg esi, eax
cmp al, 0x5e
xchg esi, eax
je 0x51b07d
xchg esi, eax
cmp al, 0x5f
xchg esi, eax
je 0x51b07d
xchg esi, eax
cmp al, 0x60
xchg esi, eax
je 0x51b07d
xchg esi, eax
cmp al, 0x7b
xchg esi, eax
je 0x51b07d
xchg esi, eax
cmp al, 0x7c
xchg esi, eax
je 0x51b07d
xchg esi, eax
cmp al, 0x7d
xchg esi, eax
je 0x51b07d
xchg esi, eax
cmp al, 0x7e
xchg esi, eax
je 0x51b07d
xchg esi, eax
cmp al, 0x2e
xchg esi, eax
je 0x51b07d
test ebp, ebp
je 0x51b241
movzx esi, word [0x6e0abe]
mov word [esp + 0x22], si
cmp byte [eax], 0x2e
jne 0x51b1d0
mov esi, 1
xchg esi, eax
test al, al
xchg esi, eax
jne 0x51b1a7
mov esi, eax
mov eax, ecx
mov ecx, ebx
mov ebx, esi
jmp 0x51ae80
mov dword [esp + 0x50], 0
mov dword [esp + 0x54], 0
mov dword [esp + 0x58], 0
mov dword [esp + 0x5c], 0
mov byte [esp + 0x60], 0
add esp, 0x44
ret
movzx esi, byte [ebp + eax - 1]
xchg esi, eax
cmp al, 0x2e
xchg esi, eax
jne 0x51b1e3
mov esi, 1
jmp 0x51b194
mov dword [esp + 0x30], edx
mov dword [esp + 0x40], ecx
mov dword [esp + 0x3c], eax
mov dword [esp + 0x34], ebx
nop
mov dword [esp], eax
mov dword [esp + 4], ebp
mov dword [esp + 8], edx
lea ecx, [esp + 0x22]
mov dword [esp + 0xc], ecx
mov dword [esp + 0x10], 2
mov dword [esp + 0x14], 2
call fcn.004cebc0
cmp dword [esp + 0x18], 0xffffffff
xchg esi, ebx
setne bl
xchg esi, ebx
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x40]
mov edx, dword [esp + 0x30]
mov ebx, dword [esp + 0x34]
mov ebp, dword [esp + 0x2c]
jmp 0x51b194
mov dword [esp + 0x50], 0
mov dword [esp + 0x54], 0
mov dword [esp + 0x58], 0
mov dword [esp + 0x5c], 0
mov byte [esp + 0x60], 0
add esp, 0x44
ret
xor edi, edi
jmp 0x51b0b8
xor edi, edi
jmp 0x51b09b
mov dword [esp + 0x50], 0
mov dword [esp + 0x54], 0
mov dword [esp + 0x58], 0
mov dword [esp + 0x5c], 0
mov byte [esp + 0x60], 0
add esp, 0x44
ret
call fcn.00427150
ud2
call fcn.0044b940
jmp fcn.0051ab90