Function at 0x40f89d
Capabilities:
Parse credit card information

Disassembly:
mov edi, dword [ebp - 0x50]
add edi, 0x5a
mov eax, 0x20202020
mov ecx, 0xa
rep stosd dword es:[edi], eax
mov al, 1
mov byte [ebp + 0x668], al
mov byte [ebp + 0x660], al
cmp byte [ebp + 0x660], 0x28
ja 0x40f344
movzx edi, byte [ebp + 0x660]
mov ecx, dword [ebp - 0x50]
add edi, ecx
cmp byte [edi + 0x96], 0x20
je 0x40f33c
mov esi, edi
movzx edi, byte [ebp + 0x668]
add edi, ecx
mov al, byte [esi + 0x96]
mov byte [edi + 0x59], al
inc byte [ebp + 0x668]
inc byte [ebp + 0x660]
jmp 0x40f304
mov esi, dword [ebp - 0x50]
mov ax, word [esi + 0x5a]
mov word [ebp + 0x638], ax
call fcn.0040f945
sub edx, edx
mov dl, byte [ebp + 0x630]
mov edi, dword [ebp - 0x50]
add edi, 0x89
mov eax, edx
shr edx, 0x10
mov cx, 0x64
div cx
and edx, 0xffff
mov ecx, 2
call fcn.00447c29
mov esi, dword [ebp - 0x50]
mov ax, word [esi + 0x5c]
mov word [ebp + 0x638], ax
call fcn.0040f945
sub edx, edx
mov dl, byte [ebp + 0x630]
mov byte [ebp + 0x640], dl
mov edi, dword [ebp - 0x50]
add edi, 0xc2
mov ecx, 3
call fcn.00447c29
mov esi, dword [ebp - 0x50]
mov ax, word [esi + 0x5e]
mov word [ebp + 0x638], ax
call fcn.0040f945
sub edx, edx
mov dl, byte [ebp + 0x630]
mov byte [ebp + 0x648], dl
mov edi, dword [ebp - 0x50]
add edi, 0xc5
mov ecx, 3
call fcn.00447c29
call fcn.0040f999
mov esi, dword [ebp - 0x50]
mov ax, word [esi + 0x60]
mov word [ebp + 0x638], ax
call fcn.0040f945
mov al, byte [ebp + 0x630]
mov byte [ebp + 0x658], al
mov esi, dword [ebp - 0x50]
mov ax, word [esi + 0x62]
mov word [ebp + 0x638], ax
call fcn.0040f945
mov al, byte [ebp + 0x630]
mov byte [ebp + 0x659], al
mov esi, dword [ebp - 0x50]
mov ax, word [esi + 0x64]
mov word [ebp + 0x638], ax
call fcn.0040f945
mov al, byte [ebp + 0x630]
mov byte [ebp + 0x65a], al
push 0xffffffffffffff81
call 0x40f89d
call fcn.0040f2b6
cmp byte [ebp + 0x7c4], 0
jne 0x40f59b
sub edx, edx
mov dl, byte [ebp + 0x658]
shr edx, 5
and edx, 0xffff
mov edi, dword [ebp - 0x50]
add edi, 0x4f
mov ecx, 4
call fcn.00447c29
mov edi, dword [ebp - 0x50]
mov eax, 0x30303030
cmp dword [edi + 0x4b], eax
jne 0x40f49a
mov dword [edi + 0x4b], eax
jmp 0x40f501
cmp dword [edi + 0x4b], 0x31303030
jne 0x40f4ad
mov eax, 0x30313030
mov dword [edi + 0x4b], eax
jmp 0x40f501
cmp dword [edi + 0x4b], 0x32303030
jne 0x40f4c0
mov eax, 0x30333030
mov dword [edi + 0x4b], eax
jmp 0x40f501
cmp dword [edi + 0x4b], 0x33303030
jne 0x40f4d3
mov eax, 0x30363030
mov dword [edi + 0x4b], eax
jmp 0x40f501
cmp dword [edi + 0x4b], 0x34303030
jne 0x40f4e6
mov eax, 0x30393030
mov dword [edi + 0x4b], eax
jmp 0x40f501
cmp dword [edi + 0x4b], 0x37303030
jne 0x40f4f9
mov eax, 0x33323031
mov dword [edi + 0x4b], eax
jmp 0x40f501
mov eax, 0x30313030
mov dword [edi + 0x4b], eax
cmp byte [ebp + 0x658], 0x7f
jbe 0x40f511
sub byte [ebp + 0x658], 0x80
cmp byte [ebp + 0x658], 0x3f
jbe 0x40f521
sub byte [ebp + 0x658], 0x40
cmp byte [ebp + 0x658], 0x1f
jbe 0x40f531
sub byte [ebp + 0x658], 0x20
sub edx, edx
mov dl, byte [ebp + 0x658]
shl edx, 2
xchg dl, dh
mov word [ebp + 0x678], dx
cmp byte [ebp + 0x659], 0x7f
jbe 0x40f568
sub byte [ebp + 0x659], 0x80
mov ax, word [ebp + 0x678]
add ah, 2
adc al, 0
mov word [ebp + 0x678], ax
cmp byte [ebp + 0x659], 0x3f
jbe 0x40f58b
sub byte [ebp + 0x659], 0x40
mov ax, word [ebp + 0x678]
add ah, 1
adc al, 0
mov word [ebp + 0x678], ax
inc byte [ebp + 0x679]
jne 0x40f60a
inc byte [ebp + 0x678]
jmp 0x40f60a
sub edx, edx
mov dl, byte [ebp + 0x658]
shl edx, 2
mov edi, dword [ebp - 0x50]
add edi, 0x4f
mov ecx, 4
call fcn.00447c29
cmp byte [ebp + 0x659], 0x7f
jbe 0x40f5e0
sub byte [ebp + 0x659], 0x80
mov edi, dword [ebp - 0x50]
add edi, 0x4e
mov al, byte [edi]
add al, 2
mov byte [edi], al
cmp al, 0x3a
jb 0x40f5e0
mov ecx, 3
call fcn.00448584
cmp byte [ebp + 0x659], 0x3f
jbe 0x40f60a
sub byte [ebp + 0x659], 0x40
mov edi, dword [ebp - 0x50]
add edi, 0x4e
mov al, byte [edi]
inc al
mov byte [edi], al
cmp al, 0x3a
jb 0x40f60a
mov ecx, 3
call fcn.00448584
mov edi, dword [ebp - 0x50]
mov eax, 0x30303030
cmp dword [edi + 0x4b], eax
jne 0x40f631
add edi, 0x8d
mov eax, 0x696c6e55
stosd dword es:[edi], eax
mov eax, 0x6574696d
stosd dword es:[edi], eax
mov ax, 0x2064
stosw word es:[edi], ax
jmp 0x40f690
cmp word [edi + 0x87], 0x3130
je 0x40f67c
cmp dword [edi + 0x4b], 0x33323031
jne 0x40f67c
mov esi, edi
mov eax, dword [esi + 0x72]
mov dword [edi + 0x8d], eax
mov al, 0x2f
mov byte [edi + 0x91], al
mov esi, edi
mov ax, word [esi + 0x76]
mov word [edi + 0x92], ax
mov al, 0x2f
mov byte [edi + 0x94], al
mov esi, edi
mov ax, word [esi + 0x78]
mov word [edi + 0x95], ax
jmp 0x40f690
mov esi, edi
add edi, 0x8d
mov eax, dword [esi + 0x4b]
stosd dword es:[edi], eax
mov eax, 0x20202020
stosd dword es:[edi], eax
stosw word es:[edi], ax
movzx edx, word [ebp + 0x659]
xchg dl, dh
mov edi, dword [ebp - 0x50]
add edi, 0x33
mov ecx, 5
call fcn.00447c29
mov esi, dword [ebp - 0x50]
mov ax, word [esi + 0x66]
mov word [ebp + 0x638], ax
call fcn.0040f945
sub edx, edx
mov dl, byte [ebp + 0x630]
mov edi, dword [ebp - 0x50]
add edi, 0x52
mov ecx, 3
call fcn.00447c29
cmp byte [ebp + 0x630], 0x7f
jbe 0x40f6f4
sub byte [ebp + 0x630], 0x80
mov edi, dword [ebp - 0x50]
mov eax, 0x20205341
mov dword [edi + 0x89], eax
jmp 0x40f722
cmp byte [ebp + 0x630], 0x3f
jbe 0x40f714
sub byte [ebp + 0x630], 0x40
mov edi, dword [ebp - 0x50]
mov eax, 0x74616553
mov dword [edi + 0x89], eax
jmp 0x40f722
mov edi, dword [ebp - 0x50]
mov eax, 0x636f7250
mov dword [edi + 0x89], eax
cmp byte [ebp + 0x630], 0x1f
jbe 0x40f77b
sub byte [ebp + 0x630], 0x20
mov al, 0x54
mov byte [edi + 0x52], al
cmp word [edi + 0x87], 0x3130
jne 0x40f74c
mov esi, edi
mov eax, dword [esi + 0x72]
mov dword [edi + 0x53], eax
jmp 0x40f786
cmp dword [edi + 0x4b], 0x33323031
jne 0x40f768
mov esi, edi
mov cl, byte [esi + 0x7c]
mov ch, 0x20
shl ecx, 0x10
mov cx, word [esi + 0x7a]
mov dword [edi + 0x53], ecx
jmp 0x40f786
mov esi, edi
mov cl, byte [esi + 0x74]
mov ch, 0x20
shl ecx, 0x10
mov cx, word [esi + 0x72]
mov dword [edi + 0x53], ecx
jmp 0x40f786
mov eax, 0x20202050
mov dword [edi + 0x52], eax
mov byte [edi + 0x56], ah
cmp byte [ebp + 0x630], 0x17
jbe 0x40f79d
sub byte [ebp + 0x630], 0x18
mov al, 0x55
mov byte [edi + 0x57], al
jmp 0x40f7d0
cmp byte [ebp + 0x630], 0xf
jbe 0x40f7b4
sub byte [ebp + 0x630], 0x10
mov al, 0x4c
mov byte [edi + 0x57], al
jmp 0x40f7d0
cmp byte [ebp + 0x630], 7
jbe 0x40f7cb
sub byte [ebp + 0x630], 8
mov al, 0x44
mov byte [edi + 0x57], al
jmp 0x40f7d0
mov al, 0x4e
mov byte [edi + 0x57], al
cmp byte [ebp + 0x630], 3
jbe 0x40f7e7
sub byte [ebp + 0x630], 4
mov al, 0x50
mov byte [edi + 0x58], al
jmp 0x40f7ec
mov al, 0x43
mov byte [edi + 0x58], al
cmp byte [ebp + 0x630], 1
jbe 0x40f803
sub byte [ebp + 0x630], 2
mov al, 0x48
mov byte [edi + 0x59], al
jmp 0x40f808
mov al, 0x53
mov byte [edi + 0x59], al
mov esi, edi
mov ax, word [esi + 0x68]
mov word [ebp + 0x638], ax
call fcn.0040f945
mov al, byte [ebp + 0x630]
mov byte [ebp + 0x650], al
mov esi, dword [ebp - 0x50]
mov ax, word [esi + 0x6a]
mov word [ebp + 0x638], ax
call fcn.0040f945
mov al, byte [ebp + 0x630]
mov byte [ebp + 0x651], al
movzx edx, word [ebp + 0x650]
xchg dl, dh
mov edi, dword [ebp - 0x50]
add edi, 0x87
mov ecx, 5
call fcn.00447c29
mov edi, dword [ebp - 0x50]
cmp byte [edi + 0x6c], 0x30
jne 0x40f871
mov al, 0x4e
mov byte [edi + 0x4a], al
jmp 0x40f883
cmp byte [edi + 0x6c], 0x31
jne 0x40f87e
mov al, 0x50
mov byte [edi + 0x4a], al
jmp 0x40f883
mov al, 0x3f
mov byte [edi + 0x4a], al
mov al, 0
mov byte [ebp + 0x1d0], al
lea ebx, [ebp - 0x38]
push ebx
call fcn.00444950
pop ebx
or eax, eax
jne 0x410042
mov edi, dword [ebp - 0x50]
cmp byte [edi + 0x66], 0x30
je 0x40f8b8
cmp byte [edi + 0x66], 0x31
je 0x40f8b8
cmp byte [edi + 0x66], 0x32
je 0x40f8b8
cmp byte [edi + 0x66], 0x33
jne 0x40f8c2
mov al, 1
mov byte [ebp + 0x670], al
jmp 0x40f92e
cmp byte [edi + 0x66], 0x38
je 0x40f8ce
cmp byte [edi + 0x66], 0x41
jne 0x40f8e8
cmp byte [edi + 0x67], 0x38
jae 0x40f8de
mov al, 2
mov byte [ebp + 0x670], al
jmp 0x40f92e
mov al, 3
mov byte [ebp + 0x670], al
jmp 0x40f92e
cmp byte [edi + 0x66], 0x39
je 0x40f8f4
cmp byte [edi + 0x66], 0x42
jne 0x40f90e
cmp byte [edi + 0x67], 0x38
jae 0x40f904
mov al, 4
mov byte [ebp + 0x670], al
jmp 0x40f92e
mov al, 5
mov byte [ebp + 0x670], al
jmp 0x40f92e
cmp byte [edi + 0x66], 0x43
je 0x40f926
cmp byte [edi + 0x66], 0x44
je 0x40f926
cmp byte [edi + 0x66], 0x45
je 0x40f926
cmp byte [edi + 0x66], 0x46
jne 0x40f92e
mov al, 6
mov byte [ebp + 0x670], al
cmp dword [esp + 4], 0xffffff81
jne fcn.0040f938
ret 4
mov eax, dword [ebp + 0x7b0]
bswap eax
mov esp, dword [ebp - 0x84]
mov ebp, dword [ebp - 0x80]
ret