Function at 0x409e6e
Capabilities:
Parse credit card information

Disassembly:
mov eax, 0x101c
call fcn.00414d30
mov eax, dword [0x4c9944]
xor eax, esp
mov dword [esp + 0x1018], eax
mov al, byte [esp + 0x1024]
push ebx
push ebp
mov byte [0x4ca27d], al
xor ebx, ebx
mov al, byte [esp + 0x1030]
mov byte [0x4ca27c], al
mov byte [0x4ca27e], bl
push esi
mov esi, dword [esp + 0x102c]
push edi
test al, al
je 0x409eba
call fcn.00406245
cmp byte [0xf9fa60], bl
je 0x409ec7
call fcn.00409bfb
cmp byte [0xfd2b02], bl
je 0x409edb
mov byte [esp + 0x1c], bl
cmp byte [0x4ca27c], bl
je 0x409ee0
mov byte [esp + 0x1c], 1
push dword [esp + 0x1c]
push 0xa
call fcn.004033bd
push dword [esp + 0x24]
push 0xd
call fcn.004033bd
push esi
call fcn.00407381
add esp, 0x14
mov dword [0xf5d604], ebx
cmp byte [0x4ca27c], bl
jne 0x409f19
mov byte [esp + 0x13], bl
cmp byte [0xfd2aee], bl
je 0x409f1e
mov byte [esp + 0x13], 1
mov esi, ebx
mov dword [esp + 0x14], ebx
jmp 0x409f39
call fcn.00409df0
cmp dword [0x4ca2ec], 0
je 0x409f4b
call fcn.00405ee2
call fcn.00409753
mov ebx, dword [0x4cb2f4]
cmp byte [ebx], 4
je 0x409f26
jmp 0x409f5a
mov ebx, dword [0x4cb2f4]
cmp byte [ebx], 4
je 0x40a5d5
mov eax, dword [esp + 0x14]
xor edx, edx
cmp eax, dword [0xb5a438]
mov ecx, dword [0x4cc2fc]
mov ebp, ecx
cmove esi, edx
mov dword [esp + 0x18], ebp
mov dword [esp + 0x14], esi
xor esi, esi
push 0x41
mov dl, byte [ebx + ebp - 1]
movzx eax, dl
pop edi
mov eax, dword [eax*4 + 0xad6ce0]
test eax, eax
je 0x40a000
cmp byte [esp + 0x13], 0
je 0x409fb3
cmp dl, 0x2e
jne 0x409fb3
cmp byte [ebx + ebp], dl
jne 0x409fb3
cmp byte [ebx + ebp + 1], dl
jne 0x409fb3
mov edx, dword [esp + 0x14]
cmp edx, dword [0xb5a438]
jne 0x40a004
push eax
call fcn.00408414
pop ecx
test al, al
je 0x409ff4
mov eax, dword [0x4cc2fc]
push 0xb
pop ebx
dec eax
mov edi, ebx
push eax
push ebp
push dword [0x4cb2f4]
lea eax, [esp + 0x34]
push eax
call fcn.004115cf
lea eax, [esp + 0x38]
push ebx
push eax
call fcn.00405034
mov esi, eax
add esp, 0x18
mov dword [esp + 0x1c], esi
jmp 0x40a4cf
mov ebx, dword [0x4cb2f4]
mov ecx, dword [0x4cc2fc]
mov edx, dword [esp + 0x14]
cmp byte [esp + 0x13], 0
je 0x40a01e
cmp byte [ecx + ebx - 1], 0x27
jne 0x40a01e
cmp edx, dword [0xb5a438]
jne 0x40a1c3
movzx eax, byte [ecx + ebx - 1]
mov eax, dword [eax*4 + 0x9d4160]
mov dword [esp + 0x24], eax
test eax, eax
je 0x40a1c3
mov eax, dword [eax*4 + 0x9d0f40]
mov dword [esp + 0x1c], esi
imul ebp, eax, 0x200c
push 0
add ebp, 0x9d4580
push dword [ebp + 0x2008]
lea eax, [ebp + 8]
push 1
push eax
call fcn.004084c8
add esp, 0x10
test al, al
je 0x40a09f
cmp byte [0x4ca27c], 0
mov edi, dword [ebp]
je 0x40a0c2
cmp edi, 0x1e
jl 0x40a084
mov eax, dword [esp + 0x14]
cmp eax, dword [0xb5a438]
jne 0x40a08e
mov eax, dword [0xb5a404]
cmp dword [ebp + 4], eax
jne 0x40a0c2
mov ebp, dword [esp + 0x18]
mov ecx, ebp
push 0x41
pop edi
mov dword [0x4cc2fc], ecx
jmp 0x40a0a9
mov ecx, dword [0x4cc2fc]
mov ebp, dword [esp + 0x18]
mov eax, dword [esp + 0x24]
inc eax
mov dword [esp + 0x24], eax
mov eax, dword [eax*4 + 0x9d0f40]
test eax, eax
jne 0x40a041
jmp 0x40a1ba
mov eax, dword [0x4cc2fc]
mov ebp, dword [esp + 0x18]
mov dword [esp + 0x24], eax
mov dword [esp + 0x1c], esi
mov cl, byte [ebx + eax - 1]
mov byte [ebx + eax - 1], 0
mov al, byte [0xfd2b03]
mov byte [esp + 0x23], cl
test al, al
je 0x40a107
lea eax, [ebp - 1]
add eax, ebx
push 0xf
push eax
call fcn.00405034
mov ebx, dword [0x4cb2f4]
pop ecx
mov dword [esp + 0x20], eax
mov al, byte [0xfd2b03]
pop ecx
mov cl, byte [0xfd2afd]
test cl, cl
jne 0x40a11d
cmp byte [0xfd2afe], cl
jne 0x40a11d
test al, al
je 0x40a159
cmp edi, 0xd
je 0x40a159
cmp edi, 0xc
je 0x40a159
cmp byte [0x4ca27c], 0
je 0x40a13c
mov eax, dword [esp + 0x14]
cmp eax, dword [0xb5a438]
jne 0x40a159
lea eax, [ebx - 1]
add eax, ebp
push eax
test cl, cl
je 0x40a14d
call fcn.00411595
jmp 0x40a152
call fcn.0041155b
mov ebx, dword [0x4cb2f4]
pop ecx
lea eax, [ebx - 1]
add eax, ebp
push 0xf
push eax
call fcn.00405034
cmp byte [0xfd2b03], 0
mov esi, eax
mov eax, dword [esp + 0x24]
mov ebx, dword [0x4cb2f4]
cmove eax, esi
cmp byte [esp + 0x1b], 0
pop ecx
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x28]
pop ecx
mov cl, byte [esp + 0x23]
mov byte [ebx + eax - 1], cl
je 0x40a1a1
mov eax, dword [esp + 0x14]
cmp eax, dword [0xb5a438]
je 0x40a1b4
push esi
call fcn.0040727f
pop ecx
test al, al
je 0x40a1b4
push 0x19
pop edi
jmp 0x40a4cc
mov ecx, dword [0x4cc2fc]
cmp edi, 0x41
jne 0x40a4cc
mov al, byte [ecx + ebx - 1]
push 0xb
pop edi
mov byte [esp + 0x28], al
lea eax, [esp + 0x28]
push edi
push eax
mov byte [esp + 0x31], 0
call fcn.00405034
mov ebx, dword [0x4cc2fc]
mov esi, eax
mov ebp, dword [0x4cb2f4]
pop ecx
pop ecx
mov dword [esp + 0x1c], esi
cmp byte [ebx + ebp - 1], 0xa
jne 0x40a1ff
inc dword [0x4cc304]
mov eax, dword [esp + 0x18]
inc ebx
mov dword [0x4cc2fc], ebx
mov cl, byte [eax + ebp - 1]
cmp cl, 0x22
je 0x40a21f
cmp cl, 0x27
jne 0x40a27f
cmp byte [esp + 0x13], 0
jne 0x40a27f
cmp byte [0xfd2ae7], 0
je 0x40a27f
cmp cl, 0x22
jne 0x40a241
imul eax, dword [0x5cd3c0], 0x200c
cmp word [eax + 0x9d458a], 0x22
je 0x40a25a
cmp cl, 0x27
jne 0x40a27f
imul eax, dword [0x5cd3c4], 0x200c
cmp word [eax + 0x9d458a], 0x27
jne 0x40a27f
push 0xa8
push 1
push str.Unmatched_opening_quote_accepted_as_literal_token
push 0x433216
call fcn.0040354d
mov ebp, dword [0x4cb2f4]
add esp, 0x10
mov ebx, dword [0x4cc2fc]
push esi
call fcn.0040727f
pop ecx
mov cl, al
push 0x19
test cl, cl
pop eax
cmove eax, edi
cmp byte [esp + 0x13], 0
mov dword [esp + 0x24], eax
mov edi, eax
je 0x40a4c8
test cl, cl
je 0x40a336
push 0x19
pop edi
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x14]
cmp byte [0x4ca27c], 0
mov dword [esp + 0x1c], esi
je 0x40a58f
mov dword [esp + 0x1c], esi
cmp edx, dword [0xb5a430]
jne 0x40a4bf
mov dl, byte [ebx + ebp - 1]
mov al, byte [ecx + ebp - 1]
cmp dl, 0x3d
jne 0x40a2ee
cmp al, 0x7e
je 0x40a2ff
cmp al, 0x3c
je 0x40a2ff
cmp al, 0x3e
je 0x40a2ff
cmp dl, 0x2f
jne 0x40a438
cmp al, 0x5e
jne 0x40a438
inc ebx
mov dword [0x4cc2fc], ebx
lea eax, [ebx - 1]
push eax
push ecx
lea eax, [esp + 0x30]
push ebp
push eax
call fcn.004115cf
push 0xb
pop ebx
lea eax, [esp + 0x38]
push ebx
push eax
call fcn.00405034
mov ebp, dword [esp + 0x30]
mov esi, eax
add esp, 0x18
mov dword [esp + 0x1c], esi
jmp 0x40a4cf
cmp esi, dword [0xb5a438]
jne 0x40a3da
cmp byte [ebx + ebp - 1], 0x25
jne 0x40a3da
mov eax, dword [0xad6d74]
test eax, eax
je 0x40a39f
push eax
call fcn.00408414
pop ecx
test al, al
je 0x40a39f
mov eax, dword [0x4cc2fc]
push 0xb
pop ebp
dec eax
mov edi, ebp
push eax
push ebx
push dword [0x4cb2f4]
lea eax, [esp + 0x34]
push eax
call fcn.004115cf
lea eax, [esp + 0x38]
push ebp
push eax
call fcn.00405034
mov ebp, dword [0x4cb2f4]
add esp, 0x18
mov ebx, dword [0x4cc2fc]
mov esi, eax
jmp 0x40a2ac
mov eax, dword [0xb5a438]
push 0xb
push 0x4355e0
mov dword [esp + 0x1c], eax
call fcn.00405034
mov edi, dword [esp + 0x2c]
mov esi, eax
mov ebp, dword [0x4cb2f4]
pop ecx
pop ecx
mov ecx, dword [0x4cc2fc]
mov dword [esp + 0x18], ecx
lea ebx, [ecx + 1]
mov dword [0x4cc2fc], ebx
jmp 0x40a2b0
cmp esi, dword [0xb5a434]
jne 0x40a3e9
push 0xf
jmp 0x40a2ab
mov edi, eax
cmp esi, dword [0xb5a474]
jne 0x40a2ac
mov edx, dword [esp + 0x14]
cmp edx, dword [0xb5a438]
je 0x40a42f
cmp byte [ebx + ebp - 1], 0x2e
jne 0x40a42f
cmp byte [ebx + ebp], 0x2e
mov ecx, dword [esp + 0x18]
jne 0x40a2b4
mov esi, dword [0xb5a3e8]
add ebx, 2
push 0x19
pop edi
mov dword [0x4cc2fc], ebx
jmp 0x40a2b4
mov ecx, dword [esp + 0x18]
jmp 0x40a2b4
mov dword [esp + 0x1c], esi
cmp al, 0x3f
jne 0x40a4c8
call fcn.00409753
mov ebx, dword [0x4cb2f4]
mov ecx, dword [0x4cc2fc]
mov dword [esp + 0x1c], esi
lea edx, [ebx - 1]
add edx, ecx
lea ebp, [ecx - 1]
mov byte [ebx + ebp - 1], 0x3f
mov dword [esp + 0x18], ebp
movzx eax, byte [edx]
cmp byte [eax + 0xf5e740], 0
je 0x40a4cc
cmp byte [eax + 0xf5e640], 0
je 0x40a493
inc ecx
inc edx
movzx eax, byte [edx]
cmp byte [eax + 0xf5e640], 0
jne 0x40a47f
mov dword [0x4cc2fc], ecx
lea eax, [ecx - 1]
push eax
push ebp
lea eax, [esp + 0x30]
push ebx
push eax
call fcn.004115cf
lea eax, [esp + 0x38]
push 0xf
push eax
call fcn.00405034
add esp, 0x18
mov esi, eax
mov dword [esp + 0x1c], esi
push 0xf
jmp 0x40a1ae
mov ebp, dword [esp + 0x18]
push 0xb
pop ebx
jmp 0x40a4d3
mov ebp, dword [esp + 0x18]
push 0xb
pop ebx
mov edx, dword [esp + 0x14]
cmp byte [0x4ca27c], 0
je 0x40a592
cmp edi, 0x19
jne 0x40a547
cmp edx, dword [0xb5a438]
je 0x40a553
cmp esi, dword [0xb5a420]
jne 0x40a4ff
call fcn.004078c4
jmp 0x409f39
cmp esi, dword [0xb5a428]
jne 0x40a511
call fcn.0040780a
jmp 0x409f39
cmp esi, dword [0xb5a424]
jne 0x40a523
call fcn.0040760d
jmp 0x409f39
cmp esi, dword [0xb5a41c]
jne 0x40a535
call fcn.00407983
jmp 0x409f39
cmp esi, dword [0xb5a42c]
jne 0x40a57c
call fcn.00405f55
jmp 0x409f39
cmp edx, dword [0xb5a438]
jne 0x40a56a
cmp edi, ebx
jne 0x40a56a
push esi
call fcn.00406223
pop ecx
test eax, eax
je 0x40a56a
push eax
push ebp
call fcn.00407fbb
pop ecx
pop ecx
push 0x41
pop edi
cmp edi, 0x41
je 0x409f39
cmp edi, 0xa
je 0x409f39
push dword [esp + 0x1c]
push esi
push edi
call fcn.00407077
add esp, 0xc
jmp 0x409f39
push 0xb
pop ebx
cmp edi, ebx
je 0x40a59b
cmp edi, 0x19
jne 0x40a5aa
cmp edx, dword [0xb5a438]
jne 0x40a5b8
cmp byte [esp + 0x13], 0
je 0x40a5b8
cmp edi, 0x18
jne 0x40a56a
cmp byte [0xfd2af0], 0
jmp 0x40a576
push esi
call fcn.00406223
pop ecx
test eax, eax
je 0x40a56a
push eax
mov eax, dword [esp + 0x1c]
push eax
call fcn.00407fbb
pop ecx
pop ecx
jmp 0x409f39
cmp byte [0x4ca27c], 0
pop edi
pop esi
pop ebp
pop ebx
je 0x40a5ef
mov eax, dword [0x4ca270]
inc eax
push eax
call fcn.00409b86
pop ecx
mov eax, dword [0xf5d604]
inc eax
imul ecx, eax, 0x14
mov dword [0xf5d604], eax
mov eax, dword [0xb5a47c]
add ecx, dword [0xf5d60c]
mov dword [ecx], eax
mov eax, dword [0xb5a47c]
mov dword [ecx + 4], eax
mov eax, dword [0x4cc300]
mov dword [ecx + 8], 0xa
imul eax, dword [0xfd2b2c]
add eax, dword [0x4cc304]
mov dword [ecx + 0xc], eax
call fcn.004061e5
mov ecx, dword [esp + 0x1018]
xor ecx, esp
call fcn.00414d1e
add esp, 0x101c
ret