Function at 0x40af90
Capabilities:
Parse credit card information

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x20
push ebx
push esi
push edi
mov edi, dword [ebp + 8]
mov esi, ecx
mov ecx, dword [ebp + 0x14]
mov dword [ebp - 8], edx
mov dword [ebp - 0x1c], esi
mov eax, dword [edi]
mov dword [ebp - 0xc], 0
cmp eax, dword [ebp + 0xc]
je 0x40b1d5
mov edx, dword [ebp + 0x20]
mov dword [ebp - 0x14], edx
nop
mov bl, byte [eax]
lea edx, [eax + 1]
mov dword [edi], edx
cmp bl, 0x20
ja 0x40b2c7
mov dword [ebp - 0xc], 0
cmp bl, 0xe
jne 0x40afed
mov eax, dword [ebp + 0x18]
mov ebx, dword [ebp + 0xc]
mov dword [eax], 1
jmp 0x40b1cb
cmp bl, 0xf
jne 0x40b003
mov eax, dword [ebp + 0x18]
mov ebx, dword [ebp + 0xc]
mov dword [eax], 0
jmp 0x40b1cb
cmp bl, 0x19
jne 0x40b016
mov ebx, dword [ebp + 0xc]
lea edx, [ecx + 0x10]
mov dword [ebp - 0xc], edx
jmp 0x40b1cb
cmp bl, 0x1b
jne 0x40b181
mov ebx, dword [ebp + 0xc]
cmp edx, ebx
je 0x40b1cb
mov cl, byte [edx]
inc edx
mov dword [edi], edx
cmp cl, 0x24
jne 0x40b0c9
cmp edx, ebx
jne 0x40b051
xor cl, cl
mov eax, dword [ebp + 0x14]
mov byte [eax + 4], cl
mov ecx, eax
mov dword [eax], 1
jmp 0x40b1cb
mov cl, byte [edx]
inc edx
mov dword [edi], edx
lea eax, [ecx - 0x28]
cmp al, 3
ja 0x40b03e
mov eax, ebx
cmp edx, eax
jne 0x40b090
xor bl, bl
lea eax, [ecx - 0x29]
cmp al, 2
ja 0x40b1c5
movzx eax, cl
mov ecx, dword [ebp + 0x14]
mov byte [ecx + eax*8 - 0x13c], bl
mov ebx, dword [ebp + 0xc]
mov dword [ecx + eax*8 - 0x140], 1
jmp 0x40b1cb
mov bl, byte [edx]
inc edx
mov dword [edi], edx
cmp bl, 0x20
jne 0x40b065
cmp edx, eax
jne 0x40b0a2
xor bl, bl
jmp 0x40b0a9
mov bl, byte [edx]
lea eax, [edx + 1]
mov dword [edi], eax
movzx eax, cl
mov ecx, dword [ebp + 0x14]
mov dword [ecx + eax*8 - 0x140], 3
mov byte [ecx + eax*8 - 0x13c], bl
mov ebx, dword [ebp + 0xc]
jmp 0x40b1cb
lea eax, [ecx - 0x28]
cmp al, 3
ja 0x40b12e
mov eax, ebx
cmp edx, eax
jne 0x40b0f5
xor bl, bl
movzx eax, cl
mov ecx, dword [ebp + 0x14]
add ecx, 0xfffffec0
lea eax, [ecx + eax*8]
xor ecx, ecx
mov edx, eax
mov dword [eax], ecx
mov byte [edx + 4], bl
jmp 0x40b1c5
mov bl, byte [edx]
inc edx
mov dword [edi], edx
cmp bl, 0x20
jne 0x40b0d8
cmp edx, eax
jne 0x40b107
xor bl, bl
jmp 0x40b10e
mov bl, byte [edx]
lea eax, [edx + 1]
mov dword [edi], eax
movzx eax, cl
mov ecx, dword [ebp + 0x14]
add ecx, 0xfffffec0
lea eax, [ecx + eax*8]
mov ecx, 2
mov edx, eax
mov dword [eax], ecx
mov byte [edx + 4], bl
jmp 0x40b1c5
cmp cl, 0x6e
jne 0x40b141
mov eax, dword [ebp + 0x18]
mov dword [eax], 2
jmp 0x40b1c8
cmp cl, 0x6f
jne 0x40b151
mov eax, dword [ebp + 0x18]
mov dword [eax], 3
jmp 0x40b1c8
cmp cl, 0x7c
jne 0x40b161
mov eax, dword [ebp + 0x1c]
mov dword [eax], 3
jmp 0x40b1c8
cmp cl, 0x7d
jne 0x40b171
mov eax, dword [ebp + 0x1c]
mov dword [eax], 2
jmp 0x40b1c8
cmp cl, 0x7e
jne 0x40b1c8
mov eax, dword [ebp + 0x1c]
mov dword [eax], 1
jmp 0x40b1c8
cmp bl, 0x1d
jne 0x40b191
mov ebx, dword [ebp + 0xc]
lea edx, [ecx + 0x18]
mov dword [ebp - 0xc], edx
jmp 0x40b1cb
test bl, bl
je 0x40b0c1
mov ecx, dword [ebp - 8]
cmp bl, 0x20
mov edx, esi
sete al
movzx eax, al
push eax
call fcn.0040af10
add esp, 4
mov byte [ebp - 4], bl
cmp bl, 0x20
jb 0x40b1ea
mov eax, dword [esi + 4]
cmp eax, dword [esi + 8]
je 0x40b1dc
mov byte [eax], bl
inc dword [esi + 4]
mov ebx, dword [ebp + 0xc]
mov ecx, dword [ebp + 0x14]
mov eax, dword [edi]
cmp eax, ebx
jne 0x40afc0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
lea ecx, [ebp - 4]
push ecx
push eax
mov ecx, esi
call fcn.004042d0
jmp 0x40b1c5
mov dl, bl
mov ecx, esi
call fcn.0040ac90
cmp bl, 0xc
jne 0x40b267
cmp byte [ebp - 0x14], 0
je 0x40b20b
xor ecx, ecx
mov al, 0x4c
mov dl, 0x4b
mov dword [ebp - 0x18], ecx
mov bl, 0x4a
jmp 0x40b21d
mov al, 0x70
mov dword [ebp - 0x18], 1
mov ecx, 2
mov dl, 0x30
mov bl, 0x42
mov esi, dword [ebp + 0x14]
mov edi, dword [ebp - 0x18]
mov dword [esi], edi
mov edi, esi
mov byte [edi + 4], bl
mov ebx, dword [ebp + 0xc]
mov dword [edi + 0x10], 0
mov byte [edi + 0x14], dl
mov dword [edi + 0x18], ecx
mov ecx, esi
mov esi, dword [ebp - 0x1c]
mov edi, dword [ebp + 8]
mov byte [ecx + 0x1c], al
mov eax, dword [ebp + 0x18]
mov dword [ecx + 8], 0
mov byte [ecx + 0xc], 0x4a
mov dword [eax], 0
mov eax, dword [ebp + 0x1c]
mov dword [eax], 2
jmp 0x40b1cb
cmp bl, 0x16
jne 0x40b292
mov eax, dword [edi]
cmp eax, dword [ebp + 0xc]
jne 0x40b281
xor dl, dl
mov ecx, esi
call fcn.0040ae60
jmp 0x40b1c5
mov dl, byte [eax]
mov ecx, esi
inc eax
mov dword [edi], eax
call fcn.0040ae60
jmp 0x40b1c5
cmp bl, 0x1c
jne 0x40b1c5
mov eax, dword [edi]
cmp eax, dword [ebp + 0xc]
jne 0x40b2a6
xor dl, dl
jmp 0x40b2ab
mov dl, byte [eax]
inc eax
mov dword [edi], eax
mov ecx, esi
call fcn.0040ae60
mov eax, dword [edi]
cmp eax, dword [ebp + 0xc]
jne 0x40b281
xor dl, dl
mov ecx, esi
call fcn.0040ae60
jmp 0x40b1c5
lea eax, [ebx - 0x7f]
cmp al, 0x21
ja 0x40b55e
mov dword [ebp - 0xc], 0
cmp bl, 0x95
jne 0x40b316
mov ebx, dword [ebp + 0xc]
cmp edx, ebx
je 0x40b1cb
mov ch, byte [edx]
lea eax, [edx + 1]
mov dword [edi], eax
cmp eax, ebx
je 0x40b1c8
mov cl, byte [eax]
inc eax
mov dword [edi], eax
cmp ch, 0x95
jne 0x40b30b
cmp cl, 0x4f
je 0x40b1c8
mov ch, cl
cmp eax, ebx
jne 0x40b2f8
jmp 0x40b1c8
mov ecx, dword [ebp - 8]
mov edx, esi
cmp bl, 0x7f
jne 0x40b338
push 0
call fcn.0040af10
add esp, 4
mov dl, bl
mov ecx, esi
call fcn.0040ac90
jmp 0x40b1c5
cmp bl, 0xa0
jne 0x40b37f
push 1
call fcn.0040af10
mov eax, dword [esi + 4]
add esp, 4
mov byte [ebp - 4], 0xc2
cmp eax, dword [esi + 8]
je 0x40b35b
mov byte [eax], 0xc2
inc dword [esi + 4]
jmp 0x40b367
lea ecx, [ebp - 4]
push ecx
push eax
mov ecx, esi
call fcn.004042d0
mov eax, dword [esi + 4]
mov byte [ebp - 4], 0xa0
cmp eax, dword [esi + 8]
je 0x40b1dc
mov byte [eax], 0xa0
jmp 0x40b1c2
push 0
call fcn.0040af10
mov eax, dword [esi + 4]
add esp, 4
mov byte [ebp - 4], 0x25
cmp eax, dword [esi + 8]
je 0x40b39d
mov byte [eax], 0x25
inc dword [esi + 4]
jmp 0x40b3a9
lea ecx, [ebp - 4]
push ecx
push eax
mov ecx, esi
call fcn.004042d0
mov eax, dword [esi + 4]
mov byte [ebp - 4], 0x5e
cmp eax, dword [esi + 8]
je 0x40b3bd
mov byte [eax], 0x5e
inc dword [esi + 4]
jmp 0x40b3c9
lea ecx, [ebp - 4]
push ecx
push eax
mov ecx, esi
call fcn.004042d0
lea edx, [ebx - 0x40]
mov byte [ebp - 4], dl
cmp dl, 0x20
jb 0x40b3fb
cmp dl, 0x25
je 0x40b3fb
cmp dl, 0x7f
je 0x40b3fb
mov eax, dword [esi + 4]
cmp eax, dword [esi + 8]
je 0x40b3ed
mov byte [eax], dl
inc dword [esi + 4]
jmp 0x40b402
lea ecx, [ebp - 4]
push ecx
push eax
mov ecx, esi
call fcn.004042d0
jmp 0x40b402
mov ecx, esi
call fcn.0040ac90
cmp bl, 0x8b
je 0x40b26c
cmp bl, 0x91
je 0x40b26c
cmp bl, 0x93
je 0x40b26c
cmp bl, 0x94
je 0x40b26c
cmp bl, 0x97
je 0x40b26c
cmp bl, 0x98
je 0x40b26c
cmp bl, 0x90
jne 0x40b480
mov eax, dword [edi]
mov ecx, esi
cmp eax, dword [ebp + 0xc]
jne 0x40b452
xor dl, dl
call fcn.0040ae60
jmp 0x40b1c5
mov bl, byte [eax]
inc eax
mov dl, bl
mov dword [edi], eax
call fcn.0040ae60
cmp bl, 0x20
jne 0x40b1c5
mov eax, dword [edi]
cmp eax, dword [ebp + 0xc]
jne 0x40b281
xor dl, dl
mov ecx, esi
call fcn.0040ae60
jmp 0x40b1c5
cmp bl, 0x9d
jne 0x40b4fd
mov eax, dword [edi]
mov ecx, esi
cmp eax, dword [ebp + 0xc]
jne 0x40b4b9
xor dl, dl
call fcn.0040ae60
mov eax, dword [edi]
xor bl, bl
cmp eax, dword [ebp + 0xc]
je 0x40b1c5
cmp bl, 0x40
jb 0x40b4e3
cmp bl, 0x43
jbe 0x40b1c5
cmp eax, dword [ebp + 0xc]
jne 0x40b4e3
xor bl, bl
jmp 0x40b4e8
mov bl, byte [eax]
inc eax
mov dl, bl
mov dword [edi], eax
call fcn.0040ae60
mov eax, dword [edi]
cmp bl, 0x20
jne 0x40b499
cmp eax, dword [ebp + 0xc]
jne 0x40b281
xor dl, dl
mov ecx, esi
call fcn.0040ae60
jmp 0x40b1c5
mov bl, byte [eax]
inc eax
mov dword [edi], eax
mov dl, bl
mov ecx, esi
call fcn.0040ae60
mov eax, dword [edi]
cmp eax, dword [ebp + 0xc]
jne 0x40b4a2
jmp 0x40b1c5
cmp bl, 0x9b
jne 0x40b1c5
mov eax, dword [edi]
mov ecx, dword [ebp + 0xc]
cmp eax, ecx
je 0x40b534
nop
cmp bl, 0x20
je 0x40b542
cmp eax, ecx
jne 0x40b51d
xor bl, bl
jmp 0x40b522
mov bl, byte [eax]
inc eax
mov dword [edi], eax
mov dl, bl
mov ecx, esi
call fcn.0040ae60
mov eax, dword [edi]
mov ecx, dword [ebp + 0xc]
cmp eax, ecx
jne 0x40b510
xor dl, dl
mov ecx, esi
call fcn.0040ae60
jmp 0x40b1c5
mov bl, byte [eax]
mov ecx, esi
inc eax
mov dl, bl
mov dword [edi], eax
call fcn.0040ae60
cmp bl, 0x53
jne 0x40b1c5
jmp 0x40b1f8
cmp bl, 0xff
jae 0x40b9a7
cmp dword [ebp - 0xc], 0
je 0x40b572
mov ecx, dword [ebp - 0xc]
jmp 0x40b581
mov eax, dword [ebp + 0x18]
cmp bl, 0x7f
cmovae eax, dword [ebp + 0x1c]
mov eax, dword [eax]
lea ecx, [ecx + eax*8]
mov eax, dword [ecx]
and bl, 0x7f
mov ecx, dword [ecx + 4]
mov dword [ebp - 0x18], ecx
mov dword [ebp - 0x10], eax
mov dword [ebp - 0xc], 0
test eax, eax
jne 0x40b6bb
mov ecx, dword [ebp - 8]
mov edx, esi
push 1
call fcn.0040af10
mov eax, dword [ebp - 0x18]
add esp, 4
cmp al, 0x4a
je 0x40b67a
cmp al, 0x36
je 0x40b67a
cmp al, 0x30
je 0x40b660
cmp al, 0x37
je 0x40b660
cmp al, 0x31
je 0x40b646
cmp al, 0x38
je 0x40b646
cmp al, 0x49
jne 0x40b5f6
movzx eax, bl
mov ecx, esi
movzx eax, word [eax*2 + 0x42d426]
movzx edx, ax
call fcn.0040ad30
jmp 0x40b1c5
cmp al, 0x4b
jne 0x40b614
movzx eax, bl
mov ecx, esi
movzx eax, word [eax*2 + 0x42d226]
movzx edx, ax
call fcn.0040ad30
jmp 0x40b1c5
cmp al, 0x4c
jne 0x40b632
movzx eax, bl
mov ecx, esi
movzx eax, word [eax*2 + 0x42c4d6]
movzx edx, ax
call fcn.0040ad30
jmp 0x40b1c5
mov eax, 0xfffd
mov ecx, esi
movzx edx, ax
call fcn.0040ad30
jmp 0x40b1c5
movzx eax, bl
mov ecx, esi
movzx eax, word [eax*2 + 0x42d0a6]
movzx edx, ax
call fcn.0040ad30
jmp 0x40b1c5
movzx eax, bl
mov ecx, esi
movzx eax, word [eax*2 + 0x42cfe6]
movzx edx, ax
call fcn.0040ad30
jmp 0x40b1c5
cmp byte [ebp - 0x14], 0
je 0x40b6a4
mov byte [ebp - 4], bl
cmp bl, 0x20
jb 0x40b696
cmp bl, 0x25
je 0x40b696
cmp bl, 0x7f
jne 0x40b1b8
mov dl, bl
mov ecx, esi
call fcn.0040ac90
jmp 0x40b1c5
movzx eax, bl
mov ecx, esi
movzx edx, word [eax*2 + 0x42d166]
call fcn.0040ad30
jmp 0x40b1c5
cmp eax, 1
jne 0x40b86e
mov ecx, dword [ebp - 8]
mov edx, esi
push eax
call fcn.0040af10
mov eax, dword [edi]
add esp, 4
cmp eax, dword [ebp + 0xc]
jne 0x40b6dd
xor dl, dl
jmp 0x40b6e2
mov dl, byte [eax]
inc eax
mov dword [edi], eax
mov eax, dword [ebp - 0x18]
and dl, 0x7f
cmp al, 0x39
je 0x40b750
cmp al, 0x3a
je 0x40b750
cmp al, 0x3b
je 0x40b750
cmp al, 0x42
je 0x40b750
mov eax, dword [esi + 4]
mov byte [ebp - 4], 0xef
cmp eax, dword [esi + 8]
je 0x40b70c
mov byte [eax], 0xef
inc dword [esi + 4]
jmp 0x40b718
lea ecx, [ebp - 4]
push ecx
push eax
mov ecx, esi
call fcn.004042d0
mov eax, dword [esi + 4]
mov byte [ebp - 4], 0xbf
cmp eax, dword [esi + 8]
je 0x40b72c
mov byte [eax], 0xbf
inc dword [esi + 4]
jmp 0x40b738
lea ecx, [ebp - 4]
push ecx
push eax
mov ecx, esi
call fcn.004042d0
mov eax, dword [esi + 4]
mov byte [ebp - 4], 0xbd
cmp eax, dword [esi + 8]
je 0x40b1dc
mov byte [eax], 0xbd
jmp 0x40b1c2
cmp bl, 0x75
jae 0x40b77b
lea eax, [edx - 0x21]
cmp al, 0x5d
ja 0x40b77b
movzx eax, bl
imul ecx, eax, 0x5e
movzx eax, dl
add ecx, eax
movzx edx, word [ecx*2 + 0x42bcaa]
mov ecx, esi
call fcn.0040ad30
jmp 0x40b1c5
movzx ecx, bl
shl ecx, 8
movzx eax, dl
or ecx, eax
cmp ecx, 0x7521
jb 0x40b7a9
cmp ecx, 0x757f
jae 0x40b7a9
mov edx, dword [ecx*4 + 0x40f8ac]
mov ecx, esi
call fcn.0040ad30
jmp 0x40b1c5
lea eax, [ecx - 0x7621]
cmp eax, 0x5d
ja 0x40b7c7
mov edx, dword [ecx*4 + 0x40f624]
mov ecx, esi
call fcn.0040ad30
jmp 0x40b1c5
lea eax, [ecx - 0x7a21]
cmp eax, 0x5d
ja 0x40b7e5
mov edx, dword [ecx*4 + 0x40dd54]
mov ecx, esi
call fcn.0040ad30
jmp 0x40b1c5
lea eax, [ecx - 0x7b21]
cmp eax, 0x5d
ja 0x40b803
mov edx, dword [ecx*4 + 0x40dacc]
mov ecx, esi
call fcn.0040ad30
jmp 0x40b1c5
lea eax, [ecx - 0x7c21]
cmp eax, 0x5d
ja 0x40b821
mov edx, dword [ecx*4 + 0x40d844]
mov ecx, esi
call fcn.0040ad30
jmp 0x40b1c5
lea eax, [ecx - 0x7d21]
cmp eax, 0x5d
ja 0x40b83f
mov edx, dword [ecx*4 + 0x40d5bc]
mov ecx, esi
call fcn.0040ad30
jmp 0x40b1c5
lea eax, [ecx - 0x7e21]
cmp eax, 0x5d
ja 0x40b85d
mov edx, dword [ecx*4 + 0x40d334]
mov ecx, esi
call fcn.0040ad30
jmp 0x40b1c5
mov edx, 0xfffd
mov ecx, esi
call fcn.0040ad30
jmp 0x40b1c5
cmp eax, 2
jne 0x40b93d
cmp cl, 0x41
jb 0x40b8ed
cmp cl, 0x4f
ja 0x40b8ed
movzx ecx, cl
sub cx, 0x40
movzx eax, bl
shl cx, 8
mov ebx, 0xfffd
or cx, ax
movzx edx, cx
mov ecx, dword [ebp + 0x10]
mov eax, dword [ecx]
mov ecx, dword [ecx + 4]
cmp eax, ecx
je 0x40b8d0
add eax, 2
cmp eax, ecx
je 0x40b8d0
nop dword [eax]
cmp word [eax], dx
je 0x40b8be
add eax, 2
cmp eax, ecx
jne 0x40b8b0
jmp 0x40b8d0
mov ebx, eax
mov eax, dword [ebp + 0x10]
sub ebx, dword [eax]
sub ebx, 2
sar ebx, 1
add ebx, 0xec00
mov ecx, dword [ebp - 8]
mov edx, esi
push 1
call fcn.0040af10
add esp, 4
mov edx, ebx
mov ecx, esi
call fcn.0040ad30
jmp 0x40b1c5
cmp cl, 0x70
jne 0x40b6f8
lea eax, [ebx - 0x60]
cmp al, 0xf
ja 0x40b6f8
push dword [ebp - 0x14]
mov edx, dword [ebp - 8]
mov ecx, esi
push dword [ebp + 0x1c]
movzx eax, bl
push dword [ebp + 0x18]
and eax, 0xf
push dword [ebp + 0x14]
push dword [ebp + 0x10]
lea eax, [eax + eax*4]
lea eax, [eax*4 + str.e_Be_Je0e_p]
mov dword [ebp - 0x18], eax
add eax, 0x14
push eax
lea eax, [ebp - 0x18]
push eax
call fcn.0040af90
add esp, 0x1c
jmp 0x40b1c5
cmp eax, 3
jne 0x40b1c5
cmp edx, dword [ebp + 0xc]
jne 0x40b94f
xor bh, bh
jmp 0x40b956
mov bh, byte [edx]
lea eax, [edx + 1]
mov dword [edi], eax
cmp cl, 0x40
jne 0x40b6f8
and bh, 0x7f
movzx eax, bl
movzx ecx, bh
mov ebx, 0xfffd
shl ax, 8
or cx, ax
movzx edx, cx
mov ecx, dword [ebp + 0x10]
mov eax, dword [ecx]
mov ecx, dword [ecx + 4]
cmp eax, ecx
je 0x40b8d0
add eax, 2
cmp eax, ecx
je 0x40b8d0
cmp word [eax], dx
je 0x40b8be
add eax, 2
cmp eax, ecx
jne 0x40b992
jmp 0x40b8d0
mov ebx, dword [ebp + 0xc]
mov dword [ebp - 0xc], 0
jmp 0x40b1cb