Function at 0x10021620
Capabilities:
Parse credit card information

Disassembly:
push esi
mov esi, ecx
xor cl, cl
mov eax, dword [esi + 0x4c]
cmp eax, 0xffffffff
je 0x10021ac6
push edi
lea edi, [esi + 8]
push ebx
cmp eax, 0x7c
je 0x10021ac4
cmp eax, 0x29
jne 0x10021660
cmp dword [esi + 0x10], 0
jne 0x10021ac4
test dword [esi + 0x50], 0x10000000
je 0x10021ad3
jmp 0x10021a57
cmp eax, 0x2e
jne 0x100216bb
push 5
lea ecx, [esi + 0x24]
call fcn.1000d310
mov eax, dword [esi]
mov edx, dword [edi]
cmp eax, edx
je 0x10021aa5
cmp word [eax], 0x5c
jne 0x100216b1
lea ecx, [eax + 2]
cmp ecx, edx
je 0x100216b1
mov ebx, dword [esi + 0x50]
test bl, 8
jne 0x1002169d
movzx edx, word [ecx]
cmp edx, 0x28
je 0x100216af
cmp edx, 0x29
je 0x100216af
test bl, 0x10
jne 0x100216b1
movzx edx, word [ecx]
cmp edx, 0x7b
je 0x100216af
cmp edx, 0x7d
jne 0x100216b1
mov eax, ecx
add eax, 2
mov dword [esi], eax
jmp 0x10021aa5
cmp eax, 0x5c
jne 0x100217ef
mov eax, dword [esi]
mov edx, dword [edi]
cmp eax, edx
je 0x10021707
cmp word [eax], 0x5c
jne 0x10021702
lea ecx, [eax + 2]
cmp ecx, edx
je 0x10021702
mov ebx, dword [esi + 0x50]
test bl, 8
jne 0x100216ee
movzx edx, word [ecx]
cmp edx, 0x28
je 0x10021700
cmp edx, 0x29
je 0x10021700
test bl, 0x10
jne 0x10021702
movzx edx, word [ecx]
cmp edx, 0x7b
je 0x10021700
cmp edx, 0x7d
jne 0x10021702
mov eax, ecx
add eax, 2
mov dword [esi], eax
mov ecx, esi
call fcn.100257b0
test byte [esi + 0x50], 0x80
je 0x100217e3
movzx eax, word [esi + 0x48]
mov ecx, eax
cmp eax, 0x62
jne 0x1002177c
push 4
lea ecx, [esi + 0x24]
call fcn.1000d310
mov eax, dword [esi]
mov edx, dword [edi]
cmp eax, edx
je 0x10021770
cmp word [eax], 0x5c
jne 0x1002176b
lea ecx, [eax + 2]
cmp ecx, edx
je 0x1002176b
mov ebx, dword [esi + 0x50]
test bl, 8
jne 0x10021757
movzx edx, word [ecx]
cmp edx, 0x28
je 0x10021769
cmp edx, 0x29
je 0x10021769
test bl, 0x10
jne 0x1002176b
movzx edx, word [ecx]
cmp edx, 0x7b
je 0x10021769
cmp edx, 0x7d
jne 0x1002176b
mov eax, ecx
add eax, 2
mov dword [esi], eax
mov ecx, esi
call fcn.100257b0
jmp 0x10021ab6
cmp ecx, 0x42
jne 0x100217e3
push 4
lea ecx, [esi + 0x24]
call fcn.1000d310
mov eax, dword [esi + 0x28]
xor dword [eax + 8], 1
mov eax, dword [esi]
mov edx, dword [edi]
cmp eax, edx
je 0x100217d7
cmp word [eax], 0x5c
jne 0x100217d2
lea ecx, [eax + 2]
cmp ecx, edx
je 0x100217d2
mov edx, dword [esi + 0x50]
test dl, 8
jne 0x100217be
movzx eax, word [ecx]
cmp eax, 0x28
je 0x100217d0
cmp eax, 0x29
je 0x100217d0
mov eax, dword [esi]
test dl, 0x10
jne 0x100217d2
movzx edx, word [ecx]
cmp edx, 0x7b
je 0x100217d0
cmp edx, 0x7d
jne 0x100217d2
mov eax, ecx
add eax, 2
mov dword [esi], eax
mov ecx, esi
call fcn.100257b0
jmp 0x10021ab6
mov ecx, esi
call fcn.10021af0
jmp 0x10021aac
cmp eax, 0x5b
jne 0x100218df
mov eax, dword [esi]
mov edx, dword [edi]
cmp eax, edx
je 0x1002183d
cmp word [eax], 0x5c
jne 0x10021838
lea ecx, [eax + 2]
cmp ecx, edx
je 0x10021838
mov edx, dword [esi + 0x50]
test dl, 8
jne 0x10021824
movzx eax, word [ecx]
cmp eax, 0x28
je 0x10021836
cmp eax, 0x29
je 0x10021836
mov eax, dword [esi]
test dl, 0x10
jne 0x10021838
movzx edx, word [ecx]
cmp edx, 0x7b
je 0x10021836
cmp edx, 0x7d
jne 0x10021838
mov eax, ecx
add eax, 2
mov dword [esi], eax
mov ecx, esi
call fcn.100257b0
lea ecx, [esi + 0x24]
call fcn.10020e70
mov eax, dword [esi + 0x4c]
cmp eax, 0x5e
jne 0x100218aa
mov eax, dword [esi + 0x28]
xor dword [eax + 8], 1
mov eax, dword [esi]
mov edx, dword [edi]
cmp eax, edx
je 0x100218a0
cmp word [eax], 0x5c
jne 0x1002189b
lea ecx, [eax + 2]
cmp ecx, edx
je 0x1002189b
mov edx, dword [esi + 0x50]
test dl, 8
jne 0x10021887
movzx eax, word [ecx]
cmp eax, 0x28
je 0x10021899
cmp eax, 0x29
je 0x10021899
mov eax, dword [esi]
test dl, 0x10
jne 0x1002189b
movzx edx, word [ecx]
cmp edx, 0x7b
je 0x10021899
cmp edx, 0x7d
jne 0x1002189b
mov eax, ecx
add eax, 2
mov dword [esi], eax
mov ecx, esi
call fcn.100257b0
mov eax, dword [esi + 0x4c]
test dword [esi + 0x50], 0x20000000
je 0x100218c8
cmp eax, 0x5d
jne 0x100218c8
push eax
lea ecx, [esi + 0x24]
call fcn.10020df0
mov ecx, esi
call fcn.10025370
mov ecx, esi
call fcn.10022230
push 4
push 0x5d
mov ecx, esi
call fcn.100240e0
jmp 0x10021aac
cmp eax, 0x28
jne 0x10021951
mov eax, dword [esi]
mov edx, dword [edi]
cmp eax, edx
je 0x10021929
cmp word [eax], 0x5c
jne 0x10021924
lea ecx, [eax + 2]
cmp ecx, edx
je 0x10021924
mov edx, dword [esi + 0x50]
test dl, 8
jne 0x10021910
movzx eax, word [ecx]
cmp eax, 0x28
je 0x10021922
cmp eax, 0x29
je 0x10021922
mov eax, dword [esi]
test dl, 0x10
jne 0x10021924
movzx edx, word [ecx]
cmp edx, 0x7b
je 0x10021922
cmp edx, 0x7d
jne 0x10021924
mov eax, ecx
add eax, 2
mov dword [esi], eax
mov ecx, esi
call fcn.100257b0
mov ecx, esi
call fcn.10025990
push 5
push 0x29
mov ecx, esi
mov bl, al
call fcn.100240e0
test bl, bl
je 0x10021ab6
jmp 0x10021aac
cmp eax, 0x5e
jne 0x100219b1
push 2
lea ecx, [esi + 0x24]
call fcn.1000d310
mov eax, dword [esi]
mov edx, dword [edi]
cmp eax, edx
je 0x100219a5
cmp word [eax], 0x5c
jne 0x100219a0
lea ecx, [eax + 2]
cmp ecx, edx
je 0x100219a0
mov edx, dword [esi + 0x50]
test dl, 8
jne 0x1002198c
movzx eax, word [ecx]
cmp eax, 0x28
je 0x1002199e
cmp eax, 0x29
je 0x1002199e
mov eax, dword [esi]
test dl, 0x10
jne 0x100219a0
movzx edx, word [ecx]
cmp edx, 0x7b
je 0x1002199e
cmp edx, 0x7d
jne 0x100219a0
mov eax, ecx
add eax, 2
mov dword [esi], eax
mov ecx, esi
call fcn.100257b0
jmp 0x10021ab6
cmp eax, 0x24
jne 0x10021a0d
push 3
lea ecx, [esi + 0x24]
call fcn.1000d310
mov eax, dword [esi]
mov ecx, dword [edi]
cmp eax, ecx
je 0x10021a01
cmp word [eax], 0x5c
jne 0x100219fe
add eax, 2
cmp eax, ecx
je 0x100219fe
mov ecx, dword [esi + 0x50]
test cl, 8
jne 0x100219ea
movzx edx, word [eax]
cmp edx, 0x28
je 0x100219fc
cmp edx, 0x29
je 0x100219fc
test cl, 0x10
jne 0x100219fe
movzx ecx, word [eax]
cmp ecx, 0x7b
je 0x100219fc
cmp ecx, 0x7d
jne 0x100219fe
mov dword [esi], eax
add dword [esi], 2
mov ecx, esi
call fcn.100257b0
jmp 0x10021ab6
cmp eax, 0x2a
je 0x10021aca
cmp eax, 0x2b
je 0x10021aca
cmp eax, 0x3f
je 0x10021aca
cmp eax, 0x7b
je 0x10021aca
cmp eax, 0x7d
jne 0x10021a45
test dword [esi + 0x50], 0x10000000
je 0x10021adc
jmp 0x10021a57
cmp eax, 0x5d
jne 0x10021a57
test dword [esi + 0x50], 0x10000000
je 0x10021ae5
movzx eax, word [esi + 0x48]
lea ecx, [esi + 0x24]
push eax
call fcn.10020c20
mov eax, dword [esi]
mov ecx, dword [edi]
cmp eax, ecx
je 0x10021aa5
cmp word [eax], 0x5c
jne 0x10021aa2
add eax, 2
cmp eax, ecx
je 0x10021aa2
mov ecx, dword [esi + 0x50]
test cl, 8
jne 0x10021a8e
movzx edx, word [eax]
cmp edx, 0x28
je 0x10021aa0
cmp edx, 0x29
je 0x10021aa0
test cl, 0x10
jne 0x10021aa2
movzx ecx, word [eax]
cmp ecx, 0x7b
je 0x10021aa0
cmp ecx, 0x7d
jne 0x10021aa2
mov dword [esi], eax
add dword [esi], 2
mov ecx, esi
call fcn.100257b0
mov ecx, esi
call fcn.100253c0
lea edi, [esi + 8]
mov eax, dword [esi + 0x4c]
mov cl, 1
cmp eax, 0xffffffff
jne 0x10021636
pop ebx
pop edi
mov al, cl
pop esi
ret
push 0xa
mov ecx, esi
call fcn.1000c710
push 5
mov ecx, esi
call fcn.1000c710
push 6
mov ecx, esi
call fcn.1000c710
push 4
mov ecx, esi
call fcn.1000c710
int3