Function at 0x4387d0
Capabilities:
Parse credit card information

Disassembly:
mov eax, dword [0xe94e0c]
push esi
add eax, 0xfffffffc
push edi
cmp eax, 0x2f
ja case.0x4387e3.5
jmp dword [eax*4 + 0x438d20]
mov eax, dword [esp + 0xc]
lea ecx, [eax + eax*2]
shl ecx, 5
add ecx, eax
mov al, byte [ecx*4 + 0xbcd602]
cmp al, 0x29
je case.0x438ccf.11
xor edx, edx
cmp al, 0x40
sete dl
pop edi
mov eax, edx
pop esi
ret
mov eax, dword [esp + 0xc]
pop edi
pop esi
lea ecx, [eax + eax*2]
shl ecx, 5
add ecx, eax
xor eax, eax
cmp byte [ecx*4 + 0xbcd602], 0xa
sete al
ret
mov eax, dword [esp + 0xc]
pop edi
pop esi
lea edx, [eax + eax*2]
shl edx, 5
add edx, eax
xor eax, eax
cmp byte [edx*4 + 0xbcd602], 8
sete al
ret
mov eax, dword [esp + 0xc]
pop edi
pop esi
lea ecx, [eax + eax*2]
shl ecx, 5
add ecx, eax
xor eax, eax
cmp byte [ecx*4 + 0xbcd602], 7
sete al
ret
mov ecx, dword [esp + 0xc]
lea eax, [ecx + ecx*2]
shl eax, 5
add eax, ecx
shl eax, 2
mov cl, byte [eax + 0xbcd602]
cmp cl, 0x58
je case.0x438ccf.11
cmp cl, 0x59
je case.0x438ccf.11
cmp cl, 0x16
je case.0x438ccf.11
cmp cl, 0x17
je case.0x438ccf.11
cmp cl, 0x18
je case.0x438ccf.11
cmp cl, 0xb
je case.0x438ccf.11
cmp cl, 0xc
je case.0x438ccf.11
cmp cl, 0xd
je case.0x438ccf.11
cmp cl, 0xe
je case.0x438ccf.11
cmp cl, 0x1b
jne case.0x4387e3.5
movsx edi, word [eax + 0xbcd652]
mov eax, dword [0xeaac28]
imul eax, eax, 0x49d8
cmp word [eax + 0xea5ce8], 0
mov esi, dword [eax + 0xea5f9c]
je case.0x4387e3.5
push ebx
push esi
call fcn.004c5120
push edi
mov ebx, eax
call fcn.004c5120
add esp, 8
cmp eax, ebx
pop ebx
jne case.0x4387e3.5
push esi
call fcn.004c5120
add esp, 4
dec eax
je 0x438941
sub eax, 2
jne case.0x4387e3.5
mov edx, dword [0xeaac28]
push 2
imul edx, edx, 0x49d8
mov eax, dword [edx + 0xea5f9c]
push eax
jmp 0x438956
mov ecx, dword [0xeaac28]
push 1
imul ecx, ecx, 0x49d8
mov edx, dword [ecx + 0xea5f9c]
push edx
call fcn.004c52d0
add esp, 8
test al, al
je case.0x4387e3.5
pop edi
mov eax, 1
pop esi
ret
mov eax, dword [esp + 0xc]
lea ecx, [eax + eax*2]
shl ecx, 5
add ecx, eax
mov al, byte [ecx*4 + 0xbcd602]
cmp al, 0x20
je case.0x438ccf.11
xor edx, edx
cmp al, 0x62
sete dl
pop edi
mov eax, edx
pop esi
ret
mov eax, dword [esp + 0xc]
lea edx, [eax + eax*2]
shl edx, 5
add edx, eax
mov al, byte [edx*4 + 0xbcd602]
cmp al, 0xf
je case.0x438ccf.11
cmp al, 0x10
je case.0x438ccf.11
cmp al, 0x11
je case.0x438ccf.11
cmp al, 0x12
je case.0x438ccf.11
xor ecx, ecx
cmp al, 0x69
sete cl
pop edi
mov eax, ecx
pop esi
ret
mov eax, dword [esp + 0xc]
lea edx, [eax + eax*2]
shl edx, 5
add edx, eax
mov al, byte [edx*4 + 0xbcd602]
cmp al, 0x1e
je case.0x438ccf.11
xor ecx, ecx
cmp al, 0x1d
sete cl
pop edi
mov eax, ecx
pop esi
ret
mov eax, dword [esp + 0xc]
pop edi
pop esi
lea edx, [eax + eax*2]
shl edx, 5
add edx, eax
xor eax, eax
cmp byte [edx*4 + 0xbcd602], 0xf
sete al
ret
mov eax, dword [esp + 0xc]
pop edi
pop esi
lea ecx, [eax + eax*2]
shl ecx, 5
add ecx, eax
xor eax, eax
cmp byte [ecx*4 + 0xbcd602], 0x10
sete al
ret
mov eax, dword [esp + 0xc]
pop edi
pop esi
lea edx, [eax + eax*2]
shl edx, 5
add edx, eax
xor eax, eax
cmp byte [edx*4 + 0xbcd602], 0x11
sete al
ret
mov eax, dword [esp + 0xc]
pop edi
pop esi
lea ecx, [eax + eax*2]
shl ecx, 5
add ecx, eax
xor eax, eax
cmp byte [ecx*4 + 0xbcd602], 0x12
sete al
ret
mov eax, dword [esp + 0xc]
pop edi
pop esi
lea edx, [eax + eax*2]
shl edx, 5
add edx, eax
xor eax, eax
cmp byte [edx*4 + 0xbcd602], 0x69
sete al
ret
mov ecx, dword [esp + 0xc]
lea eax, [ecx + ecx*2]
shl eax, 5
add eax, ecx
shl eax, 2
mov cl, byte [eax + 0xbcd602]
cmp cl, 0x1a
je case.0x438ccf.11
cmp cl, 0x27
je case.0x438ccf.11
cmp cl, 0x42
je case.0x438ccf.11
cmp cl, 0x19
je case.0x438ccf.11
cmp cl, 4
jne case.0x4387e3.5
mov al, byte [eax + 0xbcd603]
cmp al, 1
je 0x438adb
cmp al, 3
je 0x438adb
cmp al, 6
je 0x438adb
cmp al, 2
je 0x438adb
cmp al, 5
je 0x438adb
cmp al, cl
je 0x438adb
cmp al, 8
je 0x438adb
cmp al, 7
jne case.0x4387e3.5
pop edi
mov eax, 1
pop esi
ret
mov eax, dword [esp + 0xc]
pop edi
pop esi
lea ecx, [eax + eax*2]
shl ecx, 5
add ecx, eax
xor eax, eax
cmp byte [ecx*4 + 0xbcd602], 0x1b
sete al
ret
mov eax, dword [esp + 0xc]
pop edi
pop esi
lea ecx, [eax + eax*2]
shl ecx, 5
add ecx, eax
xor eax, eax
cmp byte [ecx*4 + 0xbcd602], 0x1e
sete al
ret
mov eax, dword [esp + 0xc]
pop edi
pop esi
lea edx, [eax + eax*2]
shl edx, 5
add edx, eax
xor eax, eax
cmp byte [edx*4 + 0xbcd602], 0x1d
sete al
ret
mov eax, dword [esp + 0xc]
pop edi
pop esi
lea ecx, [eax + eax*2]
shl ecx, 5
add ecx, eax
xor eax, eax
cmp byte [ecx*4 + 0xbcd602], 0x1f
sete al
ret
mov eax, dword [esp + 0xc]
pop edi
pop esi
lea edx, [eax + eax*2]
shl edx, 5
add edx, eax
xor eax, eax
cmp byte [edx*4 + 0xbcd602], 0x57
sete al
ret
mov eax, dword [esp + 0xc]
pop edi
pop esi
lea ecx, [eax + eax*2]
shl ecx, 5
add ecx, eax
xor eax, eax
cmp byte [ecx*4 + 0xbcd602], 0x21
sete al
ret
mov eax, dword [esp + 0xc]
pop edi
pop esi
lea edx, [eax + eax*2]
shl edx, 5
add edx, eax
xor eax, eax
cmp byte [edx*4 + 0xbcd602], 0x20
sete al
ret
mov eax, dword [esp + 0xc]
pop edi
pop esi
lea ecx, [eax + eax*2]
shl ecx, 5
add ecx, eax
xor eax, eax
cmp byte [ecx*4 + 0xbcd602], 0x22
sete al
ret
mov eax, dword [esp + 0xc]
pop edi
pop esi
lea edx, [eax + eax*2]
shl edx, 5
add edx, eax
xor eax, eax
cmp byte [edx*4 + 0xbcd602], 5
sete al
ret
mov ecx, dword [esp + 0xc]
lea eax, [ecx + ecx*2]
shl eax, 5
add eax, ecx
shl eax, 2
mov cl, byte [eax + 0xbcd602]
cmp cl, 4
jne 0x438c1c
cmp byte [eax + 0xbcd630], 8
jne case.0x4387e3.5
mov cl, byte [eax + 0xbcd65e]
test cl, cl
je case.0x4387e3.5
pop edi
mov eax, 1
pop esi
ret
cmp cl, 5
jne 0x438c3e
movsx eax, word [eax + 0xbcd652]
mov ecx, eax
shl ecx, 5
add ecx, eax
mov eax, dword [ecx*8 + 0x799ad8]
test ah, 0x10
jmp 0x438960
cmp cl, 0x6a
je case.0x438ccf.11
cmp cl, 0x6d
je case.0x438ccf.11
cmp cl, 0x6b
jne case.0x4387e3.5
pop edi
mov eax, 1
pop esi
ret
mov eax, dword [esp + 0xc]
lea edx, [eax + eax*2]
shl edx, 5
add edx, eax
mov al, byte [edx*4 + 0xbcd602]
cmp al, 1
je case.0x438ccf.11
cmp al, 2
jne case.0x4387e3.5
pop edi
mov eax, 1
pop esi
ret
mov eax, dword [esp + 0xc]
pop edi
pop esi
lea ecx, [eax + eax*2]
shl ecx, 5
add ecx, eax
xor eax, eax
cmp byte [ecx*4 + 0xbcd602], 0x59
sete al
ret
mov ecx, dword [esp + 0xc]
lea eax, [ecx + ecx*2]
shl eax, 5
add eax, ecx
xor ecx, ecx
shl eax, 2
mov cl, byte [eax + 0xbcd602]
add ecx, 0xfffffff5
cmp ecx, 0x5a
ja case.0x4387e3.5
xor edx, edx
mov dl, byte [ecx + 0x438dec]
jmp dword [edx*4 + 0x438de0]
movsx eax, word [eax + 0xbcd652]
mov ecx, eax
shl ecx, 5
add ecx, eax
movsx eax, word [ecx*8 + 0x7999e8]
cmp eax, 0x3f
je 0x438cf6
cmp eax, 0x44
jne case.0x4387e3.5
mov eax, dword [0xeaac28]
imul eax, eax, 0x49d8
cmp word [eax + 0xea5ce8], 0
je case.0x4387e3.5
mov edx, dword [eax + 0xea5f9c]
push 2
jmp 0x438955
pop edi
xor eax, eax
pop esi
ret