Function at 0x416755
Capabilities:
Parse credit card information

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x34
mov eax, dword [0x49af80]
push ebx
push esi
push edi
mov al, byte [eax + 0x10]
xor ebx, ebx
mov dword [esp + 0x28], ebx
mov edi, edx
mov dword [esp + 0x1c], edi
mov esi, ecx
cmp al, 8
jne 0x41678b
cmp dword [0x49af6c], ebx
jne 0x41678b
mov ecx, ebx
mov dword [esp + 0x20], ebx
jmp 0x416792
xor ecx, ecx
inc ecx
mov dword [esp + 0x20], ecx
xor edx, edx
mov byte [edi], bl
mov edi, dword [ebp + 8]
cmp al, 0xe
sete dl
mov dword [esp + 0x2c], edx
cmp dword [esi], edi
jb 0x4167ae
push 0xf
pop eax
jmp 0x416f61
mov eax, dword [0x49af80]
mov eax, dword [eax + 0x19]
mov dword [esp + 0x24], eax
test eax, eax
je 0x416806
test ecx, ecx
je 0x416806
mov edx, dword [esi]
call fcn.0040124c
push 0x27
pop ecx
cmp ax, cx
je 0x416806
mov ecx, dword [esi]
lea eax, [esp + 0x18]
push ebx
push eax
lea eax, [esp + 0x1c]
push eax
mov eax, dword [0x49af80]
push dword [esp + 0x30]
mov edx, dword [eax + 0x15]
call fcn.0041662d
mov ecx, eax
mov dword [esp + 0x24], eax
push 2
pop ebx
sub ecx, 1
je 0x416861
sub ecx, ebx
je 0x416835
sub ecx, 1
je 0x416861
mov edx, dword [esi]
mov ebx, dword [0x49af80]
call fcn.0040124c
movzx ecx, byte [ebx + 0x35]
cmp ax, cx
jne 0x4168d9
lea eax, [edx + 1]
mov dword [esi], eax
mov cl, byte [ebx + 0x35]
mov edx, esi
push edi
call fcn.00417324
jmp 0x416f61
mov eax, dword [esp + 0x18]
add dword [esi], eax
mov ebx, dword [esp + 0x14]
cmp edi, dword [esi]
jbe 0x416854
mov edx, esi
call fcn.00414762
movzx ecx, byte [ebx]
cmp ax, cx
jne 0x41683f
cmp edi, dword [esi]
sbb eax, eax
and eax, 0xfffffffa
add eax, 6
jmp 0x416f61
mov ecx, dword [esi]
mov edx, dword [esp + 0x18]
add edx, ecx
mov dword [esp + 0x30], ecx
mov dword [esi], edx
call fcn.0040124c
push 0x2d
pop ecx
cmp ax, cx
jne 0x416881
lea eax, [edx + 1]
mov dword [esi], eax
cmp dword [esp + 0x24], 4
mov edx, edi
mov ecx, esi
jne 0x416893
call fcn.004176ca
jmp 0x416898
call fcn.004175d5
mov eax, dword [esp + 0x14]
mov al, byte [eax]
mov byte [esp + 0x13], al
test al, al
je 0x4168c7
mov edx, dword [esi]
call fcn.0040124c
movzx ecx, byte [esp + 0x13]
cmp ax, cx
je 0x4168c2
mov eax, dword [esp + 0x30]
mov dword [esi], eax
jmp 0x416806
lea ecx, [edx + 1]
mov dword [esi], ecx
cmp dword [esp + 0x24], 4
push 0x12
pop eax
cmove ebx, eax
mov eax, ebx
jmp 0x416f61
cmp dword [0x49af64], 0
jne 0x416f19
mov eax, dword [0x49af80]
test byte [eax + 8], 0x60
je 0x416f19
imul ecx, dword [0x49af7c], 6
mov eax, dword [0x49af70]
mov al, byte [ecx + eax - 5]
cmp al, 0x22
je 0x416f19
cmp al, 0x21
je 0x416f19
mov ecx, dword [0x49b160]
test ecx, ecx
je 0x416935
mov dword [esp + 0x28], edx
mov edx, esi
call fcn.00414762
mov ecx, dword [0x49b160]
movzx ebx, ax
jmp 0x41693d
movzx ebx, byte [edx]
lea eax, [edx + 1]
mov dword [esi], eax
movzx edx, bx
cmp edx, 0x23
jg 0x416a20
je 0x416a06
push 9
pop eax
cmp edx, eax
jl 0x416973
cmp edx, 0xa
jle 0x4169c4
cmp edx, 0xd
je 0x4169c4
cmp edx, 0x20
je 0x4169c4
cmp edx, 0x21
je 0x4169b7
cmp edx, 0x22
je 0x416f53
mov eax, dword [0x49af80]
test byte [eax + 8], 0x40
je 0x416d63
cmp edx, 0x23
je 0x416a11
cmp edx, 0x7b
je 0x416d9d
test ecx, ecx
je 0x416a56
mov eax, dword [esp + 0x28]
mov edx, eax
mov dword [esi], eax
call fcn.0040124c
mov ecx, dword [0x49b160]
movzx ebx, ax
jmp 0x416a5d
mov eax, dword [esi]
cmp byte [eax], 0x3d
je 0x416eb0
jmp 0x416973
cmp dword [esi], edi
jae 0x4169ff
push 0x20
pop ebx
mov edx, dword [esi]
call fcn.0040124c
movzx eax, ax
cmp ax, bx
je 0x4169f2
push 9
pop ecx
cmp ax, cx
je 0x4169f2
push 0xa
pop ecx
cmp ax, cx
je 0x4169f2
push 0xd
pop ecx
cmp ax, cx
jne 0x4169ff
mov edx, dword [esi]
call fcn.00401229
mov dword [esi], eax
cmp eax, edi
jb 0x4169cb
push 0x10
jmp 0x4167a8
cmp dword [esp + 0x20], 0
je 0x416f0d
push edi
mov edx, esi
mov ecx, ebx
call fcn.004172e8
jmp 0x416f61
push 0x27
pop eax
cmp edx, eax
je 0x416f53
cmp edx, 0x28
je 0x416eb0
cmp edx, 0x3b
jle 0x416973
cmp edx, 0x3e
jle 0x416eb0
cmp edx, 0x5b
jne 0x416973
mov cl, 0x5d
jmp 0x416828
dec dword [esi]
mov eax, dword [esi]
movzx ebx, byte [eax]
test ecx, ecx
je 0x416a70
mov ecx, ebx
call fcn.0048bd75
mov ecx, dword [0x49b160]
jmp 0x416a72
xor eax, eax
test eax, eax
jne 0x416ab6
test ecx, ecx
je 0x416a8f
mov eax, dword [0x4992a0]
xor ecx, ecx
mov edx, 0x411
cmp word [eax + 4], dx
sete cl
jmp 0x416a91
xor ecx, ecx
test ecx, ecx
je 0x416aa7
mov eax, 0xa0
cmp bx, ax
jb 0x416aa7
add eax, 0x3f
cmp bx, ax
jbe 0x416ab6
push ebx
call dword [sym.imp.USER32.dll_IsCharAlphaNumericA]
test eax, eax
je 0x416d4b
mov eax, edi
sub eax, dword [esi]
mov dword [esp + 0x14], eax
jmp 0x416d42
mov edx, dword [esi]
push ecx
push eax
lea ecx, [esp + 0x3c]
call fcn.00419388
test dword [esp + 0x34], 0x7fff
jne 0x416d90
mov edx, dword [esp + 0x14]
cmp edx, 3
jl 0x416d4b
mov ecx, dword [esp + 0x18]
mov eax, dword [0x49b160]
test eax, eax
je 0x416b2e
mov ecx, dword [esi]
dec edx
add edx, ecx
call fcn.0048bd99
inc eax
sub ecx, eax
mov dword [esp + 0x18], eax
add ecx, dword [esp + 0x14]
mov edx, ecx
call fcn.0040124c
mov ecx, eax
call fcn.0048bd75
mov edx, dword [esp + 0x14]
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x28], eax
mov eax, dword [0x49b160]
jmp 0x416b33
and dword [esp + 0x28], 0
cmp dword [esp + 0x28], 0
jne 0x416c0e
xor ecx, ecx
test eax, eax
je 0x416b5d
mov eax, dword [0x4992a0]
mov edi, 0x411
cmp word [eax + 4], di
mov edi, dword [ebp + 8]
mov eax, dword [0x49b160]
sete cl
test ecx, ecx
je 0x416bc4
test eax, eax
je 0x416b72
mov ecx, dword [esi]
dec edx
add edx, ecx
call fcn.0048bd99
inc eax
jmp 0x416b75
xor eax, eax
inc eax
mov edx, dword [esi]
sub edx, eax
add edx, dword [esp + 0x14]
call fcn.0040124c
mov ecx, 0xa0
cmp ax, cx
jb 0x416bc4
cmp dword [0x49b160], 0
mov ecx, dword [esi]
je 0x416ba6
mov edx, dword [esp + 0x14]
dec edx
add edx, ecx
call fcn.0048bd99
inc eax
jmp 0x416ba9
xor eax, eax
inc eax
sub ecx, eax
mov dword [esp + 0x18], eax
add ecx, dword [esp + 0x14]
mov edx, ecx
call fcn.0040124c
mov ecx, 0xdf
cmp ax, cx
jbe 0x416c06
cmp dword [0x49b160], 0
je 0x416bde
mov edx, dword [esp + 0x14]
mov ecx, dword [esi]
dec edx
add edx, ecx
call fcn.0048bd99
inc eax
jmp 0x416be1
xor eax, eax
inc eax
mov edx, dword [esi]
sub edx, eax
mov dword [esp + 0x18], eax
add edx, dword [esp + 0x14]
call fcn.0040124c
movzx eax, al
push eax
call dword [sym.imp.USER32.dll_IsCharAlphaNumericA]
mov edx, dword [esp + 0x14]
test eax, eax
je 0x416c1d
jmp 0x416c0a
mov edx, dword [esp + 0x14]
mov ecx, dword [esp + 0x18]
sub edx, ecx
mov dword [esp + 0x14], edx
cmp edx, 3
jge 0x416aef
cmp edx, 3
jl 0x416d4b
mov eax, dword [0x49b160]
test eax, eax
je 0x416c5f
mov ecx, dword [esi]
dec edx
add edx, ecx
call fcn.0048bd99
inc eax
sub ecx, eax
mov dword [esp + 0x18], eax
add ecx, dword [esp + 0x14]
mov edx, ecx
call fcn.0040124c
mov ecx, eax
call fcn.0048bd75
mov edx, dword [esp + 0x14]
mov ecx, eax
mov eax, dword [0x49b160]
jmp 0x416c61
xor ecx, ecx
test ecx, ecx
jne 0x416d3e
test eax, eax
je 0x416c86
mov eax, dword [0x4992a0]
mov edi, 0x411
cmp word [eax + 4], di
mov edi, dword [ebp + 8]
mov eax, dword [0x49b160]
sete cl
test ecx, ecx
je 0x416ced
test eax, eax
je 0x416c9b
mov ecx, dword [esi]
dec edx
add edx, ecx
call fcn.0048bd99
inc eax
jmp 0x416c9e
xor eax, eax
inc eax
mov edx, dword [esi]
sub edx, eax
add edx, dword [esp + 0x14]
call fcn.0040124c
mov ecx, 0xa0
cmp ax, cx
jb 0x416ced
cmp dword [0x49b160], 0
mov ecx, dword [esi]
je 0x416ccf
mov edx, dword [esp + 0x14]
dec edx
add edx, ecx
call fcn.0048bd99
inc eax
jmp 0x416cd2
xor eax, eax
inc eax
sub ecx, eax
mov dword [esp + 0x18], eax
add ecx, dword [esp + 0x14]
mov edx, ecx
call fcn.0040124c
mov ecx, 0xdf
cmp ax, cx
jbe 0x416d3e
cmp dword [0x49b160], 0
je 0x416d07
mov edx, dword [esp + 0x14]
mov ecx, dword [esi]
dec edx
add edx, ecx
call fcn.0048bd99
inc eax
jmp 0x416d0a
xor eax, eax
inc eax
mov edx, dword [esi]
sub edx, eax
mov dword [esp + 0x18], eax
add edx, dword [esp + 0x14]
call fcn.0040124c
movzx eax, al
push eax
call dword [sym.imp.USER32.dll_IsCharAlphaNumericA]
test eax, eax
jne 0x416d3e
mov edx, dword [esp + 0x14]
sub edx, dword [esp + 0x18]
mov dword [esp + 0x14], edx
cmp edx, 3
jge 0x416c26
mov eax, dword [esp + 0x14]
cmp eax, 3
jge 0x416ac3
mov edx, dword [esi]
call fcn.00401229
mov dword [esi], eax
mov eax, dword [0x49af80]
test byte [eax + 8], 0x20
je 0x416fd0
cmp dword [esp + 0x2c], 0
push 0x30
pop ecx
push 0x39
pop eax
je 0x416e02
cmp bx, cx
jb 0x416d7e
cmp bx, ax
jbe 0x416dec
cmp dword [0x49b160], 0
je 0x416da5
mov ecx, ebx
call fcn.0048bd75
jmp 0x416da7
mov eax, dword [esp + 0x14]
add dword [esi], eax
push 6
jmp 0x4167a8
push 0x7d
pop ebx
jmp 0x416a11
xor eax, eax
test eax, eax
movzx eax, bx
mov dword [esp + 0x18], eax
jne 0x416dbc
push eax
call dword [sym.imp.USER32.dll_CharUpperA]
movzx eax, al
cmp eax, 0x41
jl 0x416dfc
cmp dword [0x49b160], 0
je 0x416dd3
mov ecx, ebx
call fcn.0048bd75
jmp 0x416dd5
xor eax, eax
test eax, eax
mov eax, dword [esp + 0x18]
jne 0x416de7
push eax
call dword [sym.imp.USER32.dll_CharUpperA]
movzx eax, al
cmp eax, 0x46
jg 0x416dfc
dec dword [esi]
mov edx, edi
mov ecx, esi
call fcn.004176ca
jmp 0x416f61
push 0x39
pop eax
push 0x30
pop ecx
cmp dword [esp + 0x20], 0
je 0x416e55
cmp bx, cx
jb 0x416e13
cmp bx, ax
jbe 0x416e47
mov eax, dword [0x49af78]
movzx eax, byte [eax + 5]
cmp bx, ax
je 0x416e2d
push 0x2d
pop eax
cmp bx, ax
jne 0x416eb0
mov edx, dword [esi]
call fcn.0040124c
push 0x30
mov dx, ax
pop ecx
cmp dx, cx
jb 0x416eb0
push 0x39
pop eax
cmp dx, ax
ja 0x416eb0
mov edx, edi
mov ecx, esi
call fcn.004175d5
jmp 0x416f61
mov eax, dword [0x49b160]
test eax, eax
je 0x416e70
mov ecx, ebx
call fcn.0048bd75
mov edx, eax
xor ecx, ecx
mov eax, dword [0x49b160]
jmp 0x416e74
xor ecx, ecx
mov edx, ecx
test edx, edx
jne 0x416eb0
test eax, eax
je 0x416e8f
mov eax, dword [0x4992a0]
xor ecx, ecx
mov edx, 0x411
cmp word [eax + 4], dx
sete cl
test ecx, ecx
je 0x416ea5
mov eax, 0xa0
cmp bx, ax
jb 0x416ea5
add eax, 0x3f
cmp bx, ax
jbe 0x416eb0
push ebx
call dword [sym.imp.USER32.dll_IsCharAlphaA]
test eax, eax
je 0x416f0d
mov eax, dword [esi]
lea edx, [esp + 0x28]
push edi
push dword [esp + 0x20]
mov ecx, ebx
mov dword [esp + 0x30], eax
call fcn.004171ae
mov edx, eax
test edx, edx
je 0x416f0d
mov eax, dword [esp + 0x1c]
cmp edx, 0xd
jne 0x416ef2
mov cl, byte [eax]
cmp cl, 5
jb 0x416ee1
cmp cl, 0x10
jb 0x416ef2
cmp dword [esp + 0x20], 0
je 0x416f0d
cmp cl, 0x12
je 0x416ef2
cmp cl, 0x11
jne 0x416f0d
cmp dword [esp + 0x20], 0
jne 0x416f03
cmp edx, 0xa
jne 0x416f03
cmp byte [eax], 0x23
jne 0x416f0d
mov eax, dword [esp + 0x28]
mov dword [esi], eax
mov eax, edx
jmp 0x416f61
push edi
mov edx, esi
mov ecx, ebx
call fcn.004173cf
jmp 0x416f61
mov edx, esi
call fcn.00414762
movzx ebx, ax
mov eax, ebx
cmp eax, 0x23
jg 0x416fae
je 0x41718a
push 9
pop ecx
cmp eax, ecx
jl 0x416fd0
cmp eax, 0xa
jle 0x416f6a
cmp eax, 0xd
je 0x416f6a
cmp eax, 0x20
je 0x416f6a
cmp eax, 0x22
jne 0x416fd0
push edi
push dword [esp + 0x20]
mov edx, esi
mov cl, bl
call fcn.00417362
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
cmp dword [esi], edi
jae 0x4169ff
push 0x20
pop ebx
mov edx, dword [esi]
call fcn.0040124c
movzx eax, ax
cmp ax, bx
je 0x416fa0
push 9
pop ecx
cmp ax, cx
je 0x416fa0
push 0xa
pop ecx
cmp ax, cx
je 0x416fa0
push 0xd
pop ecx
cmp ax, cx
jne 0x4169ff
lea eax, [edx + 1]
mov dword [esi], eax
cmp eax, edi
jb 0x416f75
jmp 0x4169ff
push 0x27
pop ecx
cmp eax, ecx
je 0x416f53
cmp eax, 0x3f
je 0x4171a7
cmp eax, 0x5b
je 0x416a4f
cmp eax, 0x7b
je 0x41712b
cmp dword [0x49af64], 0
jne 0x41700d
mov eax, dword [0x49af78]
movzx eax, byte [eax + 5]
cmp bx, ax
je 0x416fef
push 0x2d
pop eax
cmp bx, ax
jne 0x41700d
mov edx, dword [esi]
call fcn.0040124c
push 0x30
mov dx, ax
pop ecx
cmp dx, cx
jb 0x41700d
push 0x39
pop eax
cmp dx, ax
jbe 0x416e47
push edi
push dword [esp + 0x20]
mov edx, esi
mov ecx, ebx
call fcn.004171ae
test eax, eax
jne 0x416f61
cmp dword [esp + 0x2c], eax
je 0x41709a
push 0x30
pop eax
cmp bx, ax
jb 0x41703d
push 0x39
pop eax
cmp bx, ax
jbe 0x416dec
cmp dword [0x49b160], 0
je 0x41704f
mov ecx, ebx
call fcn.0048bd75
jmp 0x417051
xor eax, eax
test eax, eax
movzx eax, bx
mov dword [esp + 0x20], eax
jne 0x417066
push eax
call dword [sym.imp.USER32.dll_CharUpperA]
movzx eax, al
cmp eax, 0x41
jl 0x41709a
cmp dword [0x49b160], 0
je 0x41707d
mov ecx, ebx
call fcn.0048bd75
jmp 0x41707f
xor eax, eax
test eax, eax
mov eax, dword [esp + 0x20]
jne 0x417091
push eax
call dword [sym.imp.USER32.dll_CharUpperA]
movzx eax, al
cmp eax, 0x46
jle 0x416dec
push 9
lea eax, [ebx - 0x30]
pop ecx
cmp ax, cx
jbe 0x416e47
mov eax, dword [0x49b160]
test eax, eax
je 0x4170c4
mov ecx, ebx
call fcn.0048bd75
mov edx, eax
xor ecx, ecx
mov eax, dword [0x49b160]
jmp 0x4170c8
xor ecx, ecx
mov edx, ecx
test edx, edx
jne 0x41711e
test eax, eax
je 0x4170e3
mov eax, dword [0x4992a0]
xor ecx, ecx
mov edx, 0x411
cmp word [eax + 4], dx
sete cl
test ecx, ecx
je 0x4170f9
mov eax, 0xa0
cmp bx, ax
jb 0x4170f9
add eax, 0x3f
cmp bx, ax
jbe 0x41711e
push ebx
call dword [sym.imp.USER32.dll_IsCharAlphaA]
test eax, eax
jne 0x41711e
mov eax, dword [0x49af78]
push 0x11
movzx ecx, byte [eax + 0x19]
pop eax
push 7
cmp bx, cx
pop edx
cmove eax, edx
jmp 0x416f61
push edi
mov edx, esi
call fcn.00417532
jmp 0x416f61
mov edx, dword [esi]
call fcn.0040124c
cmp ax, 0x74
je 0x417143
cmp ax, 0x64
je 0x417143
push 0x7d
pop ebx
jmp 0x41718a
cmp dword [0x49b160], 0
je 0x417158
mov edx, esi
call fcn.0048bddf
movzx eax, ax
jmp 0x417160
lea eax, [edx + 1]
mov dword [esi], eax
movzx eax, byte [eax]
cmp ax, 0x73
jne 0x417168
inc dword [esi]
mov eax, dword [esi]
cmp byte [eax], 0x20
jne 0x417172
inc eax
mov dword [esi], eax
mov edx, esi
call fcn.00414762
push 0x27
pop ecx
cmp ax, cx
je 0x417188
push 0x11
jmp 0x4167a8
mov ebx, ecx
push edi
mov edx, esi
mov ecx, ebx
call fcn.004172e8
push 0x27
pop ecx
cmp bx, cx
jne 0x416f61
inc dword [esi]
jmp 0x416f61
push 0x13
jmp 0x4167a8