Function at 0x640b10
Capabilities:
Parse credit card information

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x5c
mov dword [esp + 0x58], 0
lea eax, [esp + 0x58]
mov dword [esp], eax
call fcn.00643560
mov esi, eax
test esi, esi
jne 0x641411
mov eax, 0x38
add al, 0xd8
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x58]
lea ecx, [esp + 0x50]
mov dword [esp + 4], ecx
mov dword [esp], eax
call fcn.00643570
mov ebp, dword [esp + 0x50]
test ebp, ebp
je 0x6413e6
mov byte [esp + 0x2d], al
mov byte [esp + 0x2f], al
mov byte [esp + 0x2c], cl
mov byte [esp + 0x2e], al
mov byte [esp + 0x2b], al
mov byte [esp + 0x3f], al
mov byte [esp + 0x46], al
mov byte [esp + 0x47], al
mov byte [esp + 0x4f], al
mov byte [esp + 0x37], dl
mov byte [esp + 0x4e], al
mov edi, 0xffffffff
mov dword [esp + 0x48], edx
mov ebx, dword [esp + 0x1c]
mov dword [esp + 0x30], ecx
mov dword [esp + 0x40], edx
mov dword [esp + 0x38], edx
jmp 0x640c57
mov al, bl
add al, 0x6b
mov byte [esp + 0x4e], al
add bl, 0x4f
mov cl, bl
xor cl, 0x57
mov byte [esp + 0x37], cl
mov dl, cl
add dl, 0x1d
mov byte [esp + 0x4f], dl
mov al, dl
add al, cl
add al, bl
add al, 0xa3
mov byte [esp + 0x46], al
mov cl, al
xor cl, dl
xor cl, 0x12
mov byte [esp + 0x3f], cl
xor cl, al
mov al, cl
xor al, 0x76
mov byte [esp + 0x2b], al
xor cl, 6
mov byte [esp + 0x2e], cl
mov esi, ebx
mov bl, cl
add bl, 0xe
mov dword [esp + 0x38], ebx
mov al, bl
xor al, cl
add al, 0x62
mov byte [esp + 0x2c], al
mov dl, al
add dl, bl
add dl, 0x76
mov dword [esp + 0x40], edx
add dl, al
add dl, 0xd5
mov al, dl
xor al, 0x74
mov byte [esp + 0x47], al
mov ah, al
add ah, dl
add ah, 0xb4
mov byte [esp + 0x2f], ah
mov ch, ah
sub ch, al
add ch, 9
mov byte [esp + 0x2d], ch
mov cl, ch
add cl, ah
xor cl, 0x7c
mov dword [esp + 0x30], ecx
mov al, cl
add al, 0xe2
mov dword [esp + 0x48], eax
cmp dword [esp + 0x74], 0
mov eax, esi
mov cl, al
sete ah
and bl, 0xc0
movzx ebx, bl
add edi, 1
jb 0x640bb0
mov dword [esp + 0x20], ecx
mov dword [esp + 0x24], edx
mov ecx, 0x35
add ecx, 0x9a
mov dword [esp + 0x10], ecx
mov ecx, 0x2a
add ecx, 0xffffffe6
mov dword [esp + 0x14], ecx
mov ecx, 0x43
add ecx, 0xc
mov dword [esp + 0x18], ecx
lea edi, [esp + 0x50]
nop dword [eax]
mov esi, dword [ebp]
cmp esi, 0x1c
jae 0x640cc0
mov byte [esp + 0x36], ah
mov ebx, 0xf2
jmp 0x6413c0
and ebx, 0xffffff55
xor ebx, 0x50
mov ebp, dword [ebp + 4]
mov al, byte [ebp + 0x14]
test ah, 1
je 0x640d10
add ebx, 5
mov ecx, dword [esp + 0x48]
movzx ecx, cl
cmp ecx, 0x3d
mov edx, dword [esp + 0x24]
jne 0x640d34
lea ecx, [ebx + 0x99]
not cl
mov dword [esp + 0x48], ecx
test al, al
mov cl, byte [esp + 0x4f]
jne 0x640d49
mov byte [esp + 0x36], ah
jmp 0x640e0e
add ebx, 0x86
movzx ecx, byte [esp + 0x47]
cmp ecx, 0x2e
mov edx, dword [esp + 0x24]
je 0x640d60
cmp ecx, 0x31
jne 0x640d6b
mov byte [esp + 0x36], ah
mov cl, bl
add cl, 0x52
jmp 0x640d74
mov cl, bl
add cl, 0xe8
mov dword [esp + 0x48], ecx
test al, al
mov cl, byte [esp + 0x4f]
je 0x640e03
mov byte [esp + 0x36], ah
movzx eax, al
cmp eax, 2
je 0x640da7
cmp eax, 0x54
jne 0x641080
jmp 0x640d95
mov byte [esp + 0x36], ah
mov cl, bl
add cl, 0x58
jmp 0x640d74
mov byte [esp + 0x36], ah
mov cl, bl
add cl, 0x5b
mov byte [esp + 0x47], cl
test al, al
je 0x640f61
movzx eax, al
cmp eax, 2
je 0x640dd8
cmp eax, 0x54
mov cl, byte [esp + 0x4f]
jne 0x641080
movzx eax, dl
mov edx, 0xbc
cmp eax, 0x5e
jne 0x640de1
add dl, 0x9e
jmp 0x640de4
mov al, byte [esp + 0x2f]
add ebx, 0xa2
movzx eax, al
cmp eax, 0x4d
je 0x640e78
cmp eax, 0x57
je 0x640e7e
cmp eax, 0x7b
jne 0x640e84
mov al, bl
add al, 0x84
jmp 0x640e88
mov cl, byte [esp + 0x4f]
jmp 0x640e99
add dl, 0xa2
movzx eax, byte [ebp + 0x15]
cmp eax, 0x55
jne 0x641080
movzx eax, byte [ebp + 0x16]
cmp eax, 0x43
jne 0x641080
jmp 0x6410ff
mov byte [esp + 0x36], ah
mov eax, dword [esp + 0x48]
movzx ebx, al
and ebx, 0xffffff97
add ebx, 0xfffffff7
mov eax, dword [esp + 0x30]
movzx eax, al
cmp eax, 5
je 0x640e2f
cmp eax, 0x2f
jne 0x640e45
lea eax, [ebx + 0x8a]
xor al, 0xb9
jmp 0x640e33
mov al, bl
add al, 0x3a
mov dword [esp + 0x30], eax
movzx eax, byte [ebp + 0x15]
cmp eax, 5
jne 0x640e5a
jmp 0x640f1e
mov al, bl
add al, 0xf9
mov dword [esp + 0x30], eax
movzx eax, byte [ebp + 0x15]
cmp eax, 5
je 0x640f17
movzx eax, al
cmp eax, 0x50
jne 0x640e6f
movzx eax, byte [ebp + 0x16]
cmp eax, 0x56
je 0x641103
mov byte [esp + 0x4f], cl
jmp 0x640f61
mov al, bl
add al, 0x60
jmp 0x640e88
mov al, bl
add al, 0x56
jmp 0x640e88
mov al, bl
add al, 0x45
mov byte [esp + 0x2f], al
movzx eax, byte [ebp + 0x15]
cmp eax, 0x42
je 0x641103
mov eax, dword [esp + 0x38]
movzx eax, al
cmp eax, 0x2f
jne 0x640ead
mov eax, dword [esp + 0x18]
add al, 0x2e
jmp 0x640eb4
mov eax, 0x8b
xor al, 0xa4
cmp byte [ebp + 0x15], 0
je 0x640ec3
mov dword [esp + 0x38], eax
jmp 0x641080
mov ebx, edx
mov dl, cl
mov cl, byte [esp + 0x2e]
mov dword [esp + 0x38], eax
and al, 0xad
movzx eax, al
add eax, 0xfffffffe
movzx ecx, cl
cmp ecx, 0x7c
jne 0x640efb
mov cl, al
add cl, 0x51
mov byte [esp + 0x2e], cl
cmp byte [ebp + 0x16], 0
mov cl, dl
mov edx, ebx
jne 0x641080
jmp 0x641024
mov cl, al
add cl, 0xf6
cmp byte [ebp + 0x16], 0
je 0x641019
mov byte [esp + 0x2e], cl
mov cl, dl
mov edx, ebx
jmp 0x641080
mov eax, dword [esp + 0x30]
movzx ebx, al
mov al, byte [esp + 0x2d]
and ebx, 0xfffffff6
add ebx, 0x12
movzx eax, al
mov dl, bl
cmp eax, 0x17
je 0x640f3b
cmp eax, 0x55
jne 0x640f40
inc dl
jmp 0x640f43
add dl, 0x3f
jmp 0x640f43
add dl, 0x2d
movzx eax, byte [ebp + 0x16]
cmp eax, 0x69
jne 0x640f55
mov byte [esp + 0x2d], dl
jmp 0x641103
mov byte [esp + 0x2d], dl
mov byte [esp + 0x4f], cl
mov edx, dword [esp + 0x24]
mov ecx, dword [esp + 0x40]
mov eax, 0x6a
movzx ecx, cl
cmp ecx, 0x15
je 0x640f86
cmp ecx, 0x4b
je 0x640f98
cmp ecx, 0x68
jne 0x640fb3
mov ecx, 0x6a
xor cl, 0x7f
jmp 0x640fa0
mov ecx, 0x6a
add cl, 0xba
mov dword [esp + 0x40], ecx
cmp byte [ebp + 0x15], 0
jmp 0x640fc5
mov ecx, 0x6a
xor cl, 2
cmp byte [ebp + 0x15], 0
je 0x640fd1
mov dword [esp + 0x40], ecx
mov cl, byte [esp + 0x4f]
jmp 0x641080
mov ecx, dword [esp + 0x10]
mov al, cl
add al, 0x7c
mov dword [esp + 0x40], eax
cmp byte [ebp + 0x15], 0
mov eax, ecx
mov cl, byte [esp + 0x4f]
jne 0x641080
jmp 0x640fdc
movzx eax, cl
mov dword [esp + 0x40], ecx
mov cl, byte [esp + 0x4f]
cmp byte [ebp + 0x16], 0
jne 0x641080
cmp byte [ebp + 0x17], 0
jne 0x641080
cmp byte [ebp + 0x18], 0
jne 0x641080
mov ebx, edx
mov dl, cl
and eax, 0xffffff00
or eax, 0xaa
add eax, 0xffffff98
movzx ecx, byte [esp + 0x2c]
cmp ecx, 0x40
jne 0x641059
add al, 0x2e
jmp 0x64105b
movzx eax, cl
mov byte [esp + 0x2e], cl
mov cl, dl
mov edx, ebx
cmp byte [ebp + 0x17], 0
jne 0x641080
cmp byte [ebp + 0x18], 0
jne 0x641080
mov ebx, edx
mov dl, cl
and eax, 0xfffffff5
xor eax, 0x9b
xor eax, 0x72
movzx ecx, byte [esp + 0x2b]
cmp ecx, 0xd
je 0x641061
cmp ecx, 0x51
jne 0x641069
xor eax, 0x4a
add al, 0x84
mov byte [esp + 0x2b], al
jmp 0x64106f
add al, 0xfe
mov byte [esp + 0x2c], al
jmp 0x64106f
xor al, 0x99
mov byte [esp + 0x2b], al
jmp 0x64106f
xor al, 0xc5
mov byte [esp + 0x2b], al
cmp byte [ebp + 0x19], 0
mov cl, dl
mov edx, ebx
je 0x6410ff
nop dword [eax]
cmp esi, 0x5d
jb 0x641280
mov eax, dword [ebp + 0x58]
add esi, 0xffffffa4
cmp eax, esi
cmovbe esi, eax
cmp esi, 6
jbe 0x6410ce
mov ebx, 0xf5
xor ebx, 0x62
movzx eax, byte [esp + 0x3f]
cmp eax, 2
je 0x641111
mov dword [esp + 0x24], edx
cmp eax, 0x18
je 0x64114a
cmp eax, 0x21
jne 0x64117f
mov byte [esp + 0x4f], cl
mov al, bl
add al, 0x6b
jmp 0x641152
mov eax, 0xf5
lea eax, [eax - 0x50]
add eax, 0xffffff75
movzx ecx, cl
cmp ecx, 0x35
jne 0x6410ea
mov cl, al
xor cl, 0x2f
jmp 0x6410ef
mov cl, al
add cl, 0x28
cmp esi, 2
mov eax, ebp
jbe 0x641280
jmp 0x641227
mov dword [esp + 0x24], edx
mov byte [esp + 0x4f], cl
mov ebx, 0xf2
jmp 0x6413c0
mov dword [esp + 0x24], edx
mov byte [esp + 0x4f], cl
mov byte [esp + 0x3f], 0x18
lea eax, [ebp + 0x5c]
mov dword [esp + 4], esi
mov dword [esp], eax
mov dword [esp + 0xc], 7
mov dword [esp + 8], str.virtual
call fcn.006438d0
test eax, eax
jne 0x640cac
add ebx, 0x43
jmp 0x6411c0
mov byte [esp + 0x4f], cl
mov al, bl
add al, 0x8a
mov byte [esp + 0x3f], al
lea eax, [ebp + 0x5c]
mov dword [esp + 4], esi
mov dword [esp], eax
mov dword [esp + 0xc], 7
mov dword [esp + 8], str.virtual
call fcn.006438d0
test eax, eax
jne 0x640cac
jmp 0x6411c0
mov byte [esp + 0x4f], cl
add bl, 0xb2
lea eax, [ebp + 0x5c]
mov dword [esp + 4], esi
mov dword [esp], eax
mov dword [esp + 0xc], 7
mov dword [esp + 8], str.virtual
call fcn.006438d0
test eax, eax
je 0x6411b7
mov byte [esp + 0x3f], bl
mov ebx, 0xf2
jmp 0x6413c0
mov al, bl
movzx ebx, al
mov byte [esp + 0x3f], al
and ebx, 0xffffff20
add ebx, 0xfe
movzx eax, byte [esp + 0x46]
cmp eax, 7
je 0x64120f
mov ecx, 0xffffffff
cmp eax, 9
jne 0x641208
add bl, 0xb
jmp 0x641212
and ebx, 0xffffff3e
inc bl
mov eax, dword [esp + 0x50]
mov eax, dword [eax + 4]
mov dl, bl
mov byte [esp + 0x46], dl
movzx ebx, bl
add ecx, 1
jb 0x6411f0
jmp 0x64121f
xor bl, 0xf9
mov eax, dword [esp + 0x50]
mov eax, dword [eax + 4]
mov cl, bl
mov byte [esp + 0x46], cl
mov cl, byte [esp + 0x4f]
mov edx, dword [esp + 0x24]
mov dword [esp + 0x24], edx
mov byte [esp + 0x4f], cl
movzx ecx, byte [esp + 0x37]
cmp ecx, 0x18
jne 0x641246
mov ecx, dword [esp + 0x14]
xor cl, 8
mov byte [esp + 0x37], cl
jmp 0x64124b
mov byte [esp + 0x37], 0x1c
add eax, 0x5c
mov dword [esp + 4], esi
mov dword [esp], eax
mov dword [esp + 0xc], 3
mov dword [esp + 8], 0x7e27d0
call fcn.006438d0
test eax, eax
jne 0x640cac
mov cl, byte [esp + 0x4f]
mov edx, dword [esp + 0x24]
nop word [eax + eax]
mov eax, dword [esp + 0x20]
movzx eax, al
cmp eax, 0xb
jne 0x6412bb
mov dword [esp + 0x24], edx
mov byte [esp + 0x4f], cl
lea eax, [esp + 0x54]
mov dword [esp], eax
mov dword [esp + 4], 9
call fcn.0063c020
mov esi, eax
test esi, esi
jne 0x641411
mov eax, 0x97
add al, 0x74
jmp 0x6412e8
mov dword [esp + 0x24], edx
mov byte [esp + 0x4f], cl
lea eax, [esp + 0x54]
mov dword [esp], eax
mov dword [esp + 4], 9
call fcn.0063c020
mov esi, eax
test esi, esi
jne 0x641411
mov eax, 0x97
add al, 0xb8
mov cl, byte [esp + 0x4e]
mov dword [esp + 0x20], eax
add ebp, 0x14
and al, 0xbb
movzx ebx, al
add ebx, 0x91
movzx eax, cl
cmp eax, 0x48
je 0x641338
cmp eax, 0x6b
jne 0x64136e
mov eax, dword [esp + 0x50]
mov eax, dword [eax + 4]
mov eax, dword [eax + 0x10]
mov ecx, dword [esp + 0x54]
mov dword [esp + 8], eax
mov dword [esp + 4], ebp
mov dword [esp], ecx
call fcn.0063c080
mov esi, eax
test esi, esi
jne 0x6413f0
add bl, 0x7c
jmp 0x641363
mov eax, dword [esp + 0x50]
mov eax, dword [eax + 4]
mov eax, dword [eax + 0x10]
mov ecx, dword [esp + 0x54]
mov dword [esp + 8], eax
mov dword [esp + 4], ebp
mov dword [esp], ecx
call fcn.0063c080
mov esi, eax
test esi, esi
jne 0x6413f0
add bl, 0xcf
mov al, bl
mov byte [esp + 0x4e], al
movzx ebx, bl
jmp 0x64139a
mov eax, dword [esp + 0x50]
mov eax, dword [eax + 4]
mov eax, dword [eax + 0x10]
mov ecx, dword [esp + 0x54]
mov dword [esp + 8], eax
mov dword [esp + 4], ebp
mov dword [esp], ecx
call fcn.0063c080
mov esi, eax
test esi, esi
jne 0x6413f0
mov al, bl
add al, 0xac
mov byte [esp + 0x4e], al
mov eax, dword [esp + 0x54]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x70]
mov dword [esp], eax
call fcn.0063c180
mov esi, eax
test esi, esi
jne 0x6413f0
and ebx, 0xffffff08
or ebx, 0x85
and ebx, 0xffffff80
or ebx, 0x2a
mov eax, dword [esp + 0x58]
mov dword [esp + 4], edi
mov dword [esp], eax
call fcn.00643570
mov ebp, dword [esp + 0x50]
test ebp, ebp
mov ah, byte [esp + 0x36]
jne 0x640ca0
mov eax, dword [esp + 0x1c]
xor esi, esi
test al, al
jmp 0x641411
mov edi, 0xffffffff
jmp 0x64140c
mov eax, dword [esp + 0x54]
mov dword [esp], eax
call fcn.00689a80
add edi, 1
jb 0x641400
mov eax, dword [esp + 0x58]
test eax, eax
je 0x641421
mov dword [esp], eax
call fcn.00644400
mov eax, esi
add esp, 0x5c
pop esi
pop edi
pop ebx
pop ebp
ret