Function at 0x4039d0
Capabilities:
Parse credit card information

Disassembly:
sub esp, 0x28
or eax, 0xffffffff
mov word [esp + 0x10], ax
push ebp
xor ecx, ecx
mov eax, 0x65
xor ebp, ebp
mov dword [esp + 0x20], eax
mov edx, 2
mul edx
seto cl
push esi
push edi
mov dword [esp + 0x24], ebp
neg ecx
or ecx, eax
push ecx
call fcn.0041231a
add esp, 4
xor ecx, ecx
push 4
mov dword [esp + 0x24], eax
mov word [eax], cx
call fcn.0041231a
add esp, 4
test eax, eax
je 0x42bff4
mov dword [eax], 1
mov dword [esp + 0x2c], eax
mov edx, dword [esp + 0x3c]
cmp dword [edx + 8], ebp
jbe 0x403a63
xor edi, edi
mov eax, edx
mov ecx, dword [eax + 4]
mov esi, dword [ecx + edi*4]
test esi, esi
je 0x403a5d
movzx eax, word [esi + 8]
cmp ax, 0x3f
jle 0x403b2d
push esi
call fcn.00411eef
mov eax, dword [esp + 0x40]
add esp, 4
inc edi
cmp edi, dword [eax + 8]
jb 0x403a38
mov edx, dword [esp + 0x3c]
mov dword [edx + 8], ebp
cmp word [ebx], bp
je 0x403c6f
jmp 0x403a80
movzx eax, word [ebx + ebp*2]
cmp ax, 0x20
je 0x403b85
cmp ax, 9
je 0x403b85
movzx eax, word [ebx + ebp*2]
test ax, ax
je 0x403c5a
movzx esi, ax
mov dword [esp + 0x10], ebp
mov word [esp + 0x1e], bp
cmp si, 0x30
jae 0x403b8b
cmp si, 0x2e
je 0x403b95
cmp si, 0x41
jae 0x403cf9
cmp si, 0x61
jae 0x403f63
cmp si, 0x5f
je 0x403d03
movzx eax, si
cmp eax, 0x24
je 0x403cbe
cmp eax, 0x3d
je 0x403d3a
cmp eax, 0x28
je 0x403d77
cmp eax, 0x29
je 0x403d59
cmp eax, 0x22
je 0x403d95
sub eax, 0x1a
cmp eax, 0x44
ja 0x42c245
movzx ecx, byte [eax + 0x403428]
jmp dword [ecx*4 + 0x4033ec]
cmp ax, 0x30
jl 0x403a50
mov ecx, dword [esi]
test ecx, ecx
je 0x403a50
mov eax, dword [ecx + 0xc]
dec dword [eax]
mov edx, dword [ecx + 0xc]
mov dword [esp + 0x10], ecx
cmp dword [edx], ebp
je 0x42bffd
mov ecx, dword [esp + 0x10]
push ecx
call fcn.00411eef
add esp, 4
jmp 0x403a50
inc ebp
jmp 0x403a80
cmp si, 0x39
ja 0x403abb
lea eax, [esp + 0x20]
push eax
lea ecx, [esp + 0x18]
push ecx
push ebx
lea eax, [esp + 0x1c]
call fcn.004041d0
cmp al, 1
jne 0x42c021
mov edi, dword [esp + 0x3c]
lea edx, [esp + 0x14]
push edx
call fcn.004038c0
mov ebp, dword [esp + 0x10]
jmp 0x403c4f
cmp ax, 0x30
jae 0x403e3a
cmp ax, 0x5f
je 0x403cec
cmp dword [esp + 0x24], 0
je 0x42c1d0
lea eax, [esp + 0x20]
call fcn.004036e0
mov esi, dword [esp + 0x24]
mov edi, dword [esp + 0x20]
push esi
push edi
call dword [0x482640]
cmp word [esp + 0x1c], 0x30
jge 0x403e8e
mov edx, 0x33
push 0x10
mov word [esp + 0x20], dx
call fcn.0041231a
add esp, 4
test eax, eax
je 0x42c1c3
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x28]
mov dword [eax], edi
mov dword [eax + 4], esi
mov dword [eax + 8], edx
mov dword [eax + 0xc], ecx
inc dword [ecx]
mov dword [esp + 0x14], eax
lea eax, [esp + 0x14]
push eax
mov edi, dword [esp + 0x40]
call fcn.004038c0
cmp word [ebx + ebp*2], 0
jne 0x403a80
mov ax, word [esp + 0x1c]
cmp ax, 0x30
jl 0x403c6f
cmp ax, 0x3f
jle 0x403e6d
mov edi, dword [esp + 0x3c]
lea ecx, [esp + 0x14]
mov eax, 0x7f
push ecx
mov word [esp + 0x20], ax
mov dword [esp + 0x18], 0
mov word [esp + 0x22], bp
call fcn.004038c0
mov esi, dword [esp + 0x2c]
add dword [esi], 0xffffffff
jne 0x403cb3
mov edx, dword [esp + 0x20]
push edx
call fcn.00411eef
add esp, 4
push esi
call fcn.00411eef
add esp, 4
xor eax, eax
pop edi
pop esi
pop ebp
add esp, 0x28
ret 8
lea esi, [esp + 0x20]
inc ebp
call fcn.00404370
movzx eax, word [ebx + ebp*2]
cmp ax, 0x5a
ja 0x403cd8
cmp ax, 0x41
jae 0x403cec
cmp ax, 0x61
jb 0x403bc8
cmp ax, 0x7a
ja 0x403bc8
push eax
lea eax, [esp + 0x24]
call fcn.00404070
inc ebp
jmp 0x403cc8
cmp si, 0x5a
ja 0x403acf
lea ecx, [esp + 0x20]
push ecx
lea edx, [esp + 0x18]
push edx
lea eax, [esp + 0x18]
mov ecx, ebx
call fcn.00403770
cmp dword [esp + 0x14], 0xffffffff
je 0x42c1fe
mov edi, dword [esp + 0x3c]
lea eax, [esp + 0x14]
push eax
call fcn.004038c0
mov ebp, dword [esp + 0x10]
jmp 0x403c4f
inc ebp
cmp word [ebx + ebp*2], 0x3d
lea esi, [esp + 0x14]
je 0x42c199
mov edi, 0x41
call fcn.00403700
jmp 0x403c41
mov edi, 0x48
lea esi, [esp + 0x14]
call fcn.00403700
mov edi, dword [esp + 0x3c]
push esi
call fcn.004038c0
inc ebp
jmp 0x403c4f
mov edi, 0x47
lea esi, [esp + 0x14]
call fcn.00403700
mov edi, dword [esp + 0x3c]
push esi
call fcn.004038c0
inc ebp
jmp 0x403c4f
mov edx, dword [esp + 0x38]
push edx
lea eax, [esp + 0x24]
lea edi, [esp + 0x14]
call fcn.00404130
lea esi, [esp + 0x14]
test eax, eax
jne 0x42c28a
lea edi, [eax + 0x36]
call fcn.00403700
lea esi, [esp + 0x20]
lea edi, [esp + 0x14]
call fcn.00403250
push edi
mov edi, dword [esp + 0x40]
call fcn.004038c0
mov ebp, dword [esp + 0x10]
jmp 0x403c4f
cmp ax, 0x39
jbe 0x403cec
jmp 0x403bd2
mov esi, dword [esp + 0x14]
test esi, esi
je 0x403c6f
mov ecx, esi
call fcn.00403220
push esi
call fcn.00411eef
add esp, 4
jmp 0x403c6f
cmp word [esp + 0x1c], 0x3f
jg 0x403c0c
jmp 0x42c1a9
cmp si, 0x7a
jbe 0x403d03
jmp 0x403ad9
mov dword [esp + 0x2c], ebp
jmp 0x403a2b
mov eax, dword [esp + 0x10]
mov ecx, dword [eax]
push ecx
call fcn.00411eef
mov edx, dword [esp + 0x14]
mov eax, dword [edx + 0xc]
add esp, 4
push eax
call fcn.00411eef
add esp, 4
jmp 0x403b55
mov ebp, dword [esp + 0x10]
cmp si, 0x2e
jne 0x403ac5
lea esi, [esp + 0x20]
inc ebp
call fcn.00404370
movzx eax, word [ebx + ebp*2]
cmp ax, 0x41
jb 0x42c051
cmp ax, 0x5a
jbe 0x42c0ae
cmp ax, 0x61
jb 0x42c065
cmp ax, 0x7a
jbe 0x42c0ae
cmp ax, 0x30
jb 0x42c079
cmp ax, 0x39
jbe 0x42c0ae
cmp ax, 0x5f
je 0x42c0ae
cmp dword [esp + 0x24], 0
je 0x42c1d0
mov edi, 0x35
lea esi, [esp + 0x14]
call fcn.00403700
lea esi, [esp + 0x20]
lea edi, [esp + 0x14]
call fcn.00403250
jmp 0x403c41
push eax
lea eax, [esp + 0x24]
call fcn.00404070
inc ebp
jmp 0x42c039
mov edi, 0x50
call fcn.00403700
inc ebp
jmp 0x403c41
cmp dword [esp + 0x14], 0
je 0x403c0c
mov ecx, dword [esp + 0x14]
push ecx
call fcn.004442f6
jmp 0x403c0c
mov dword [esp + 0x14], 0
jmp 0x403c41
mov ecx, dword [esp + 0x38]
dec ebp
push ebp
push 0x138b
push ecx
call fcn.00460ba9
lea ecx, [esp + 0x20]
call fcn.00403220
lea edx, [esp + 0x14]
push edx
call fcn.0044c053
mov eax, 1
jmp 0x403cb5
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x38]
push eax
push 0x138c
push ecx
call fcn.00460ba9
lea ecx, [esp + 0x20]
call fcn.00403220
lea edx, [esp + 0x14]
push edx
call fcn.0044c053
mov eax, 1
jmp 0x403cb5
mov edx, dword [esp + 0x38]
push ebp
push 0x1388
push edx
call fcn.00460ba9
mov edi, 0x7f
lea esi, [esp + 0x14]
call fcn.00403700
mov edi, dword [esp + 0x3c]
push esi
call fcn.004038c0
lea ecx, [esp + 0x20]
call fcn.00403220
lea ecx, [esp + 0x14]
push ecx
call fcn.0044c053
mov eax, 1
jmp 0x403cb5
mov edi, 0x7f
call fcn.00403700
mov edi, dword [esp + 0x3c]
lea edx, [esp + 0x14]
push edx
call fcn.004038c0
lea ecx, [esp + 0x20]
call fcn.00403220
lea eax, [esp + 0x14]
push eax
call fcn.0044c053
mov eax, 1
jmp 0x403cb5