Function at 0x40ace0
Capabilities:
Parse credit card information

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x38
or eax, 0xffffffff
mov word [ebp - 0x1c], ax
xor eax, eax
push ebx
mov word [ebp - 0x1a], ax
mov dword [ebp - 0x30], eax
xor ecx, ecx
push esi
xor esi, esi
mov eax, 0x65
mov edx, 2
mul edx
seto cl
push edi
mov dword [ebp - 0xc], esi
mov dword [ebp - 0x2c], 0x65
neg ecx
or ecx, eax
push ecx
call fcn.0042010a
mov ebx, eax
add esp, 4
xor eax, eax
push 4
mov dword [ebp - 8], ebx
mov dword [ebp - 0x34], ebx
mov word [ebx], ax
call fcn.0042010a
add esp, 4
test eax, eax
je 0x40b626
mov dword [eax], 1
mov dword [ebp - 0x28], eax
mov edx, dword [ebp + 0x10]
xor edi, edi
cmp dword [edx + 8], esi
jbe 0x40ad8f
mov eax, dword [edx + 4]
mov eax, dword [eax + edi*4]
mov dword [ebp - 0x10], eax
test eax, eax
je 0x40ad82
movzx ecx, word [eax + 8]
cmp cx, 0x3f
jg 0x40ad76
cmp cx, 0x30
jge 0x40ae3e
push eax
call fcn.0042017e
mov edx, dword [ebp + 0x10]
add esp, 4
mov eax, dword [edx + 4]
inc edi
mov dword [eax + edi*4 - 4], esi
cmp edi, dword [edx + 8]
jb 0x40ad55
mov ecx, dword [ebp + 0xc]
mov dword [edx + 8], esi
cmp word [ecx], si
je 0x40afa3
fldz
fld qword [0x4b2750]
fld qword [0x4b2748]
fld qword [0x4b2740]
movzx eax, word [ecx + esi*2]
cmp eax, 0x20
je 0x40ae93
cmp eax, 9
je 0x40ae93
movzx eax, word [ecx + esi*2]
mov dword [ebp - 0xc], esi
test ax, ax
je 0x40af8a
mov edi, eax
mov word [ebp - 0x1a], si
cmp edi, 0x30
jb 0x40adec
cmp edi, 0x39
jbe 0x40b0ed
cmp edi, 0x2e
je 0x40b0ed
cmp edi, 0x41
jae 0x40ae99
cmp edi, 0x61
jae 0x40b5ca
cmp edi, 0x5f
je 0x40aea2
mov eax, edi
cmp eax, 0x24
je case.0x40ae37.64
cmp eax, 0x3d
je 0x40b1bd
sub eax, 0x1a
cmp eax, 0x44
ja case.0x40ae37.27
movzx eax, byte [eax + 0x40b684]
jmp dword [eax*4 + 0x40b638]
mov ecx, dword [eax]
mov dword [ebp - 0xc], ecx
test ecx, ecx
je 0x40ad76
mov eax, dword [ecx + 0xc]
dec dword [eax]
mov eax, dword [ecx + 0xc]
cmp dword [eax], esi
je 0x473dff
push ecx
call fcn.0042017e
mov eax, dword [ebp - 0x10]
add esp, 4
jmp 0x40ad76
fstp st(3)
push 0x40
fstp st(1)
lea ecx, [ebp - 0x24]
fstp st(0)
fstp st(0)
call fcn.0040b7ff
mov ecx, dword [ebp + 0x10]
lea eax, [ebp - 0x24]
push eax
call fcn.0040b6d0
inc esi
mov dword [ebp - 0xc], esi
inc ebp
fcom qword [eax - 0x18]
inc esi
or byte [eax], al
add byte [esi - 0x77], al
jne 0x40ae82
jmp 0x40af65
inc esi
jmp 0x40adb2
cmp edi, 0x5a
ja 0x40adfe
lea eax, [ebp - 0x34]
fstp st(3)
push eax
fstp st(1)
lea eax, [ebp - 0x24]
fstp st(0)
push eax
fstp st(0)
lea eax, [ebp - 0xc]
push eax
push dword [ebp + 0xc]
call fcn.0040aa70
cmp dword [ebp - 0x24], 0xffffffff
je 0x474090
mov ecx, dword [ebp + 0x10]
lea eax, [ebp - 0x24]
push eax
call fcn.0040b6d0
mov ebx, dword [ebp - 0x34]
mov esi, dword [ebp - 0xc]
mov dword [ebp - 8], ebx
jmp 0x40af65
cmp bx, 0x30
jae 0x40b0e1
cmp bx, 0x5f
je 0x40b08a
fstp st(1)
fstp st(0)
fstp st(0)
test edi, edi
je 0x40b62e
lea ecx, [ebp - 0x34]
call fcn.0040b8a7
mov edi, dword [ebp - 0x30]
mov ebx, dword [ebp - 0x34]
push edi
push ebx
mov dword [ebp - 8], ebx
call dword [0x48d65c]
cmp word [ebp - 0x18], 0xf
ja 0x40af2f
mov ecx, dword [ebp - 0x24]
test ecx, ecx
jne 0x47405d
push 0x10
call fcn.0042010a
mov ecx, eax
add esp, 4
test ecx, ecx
je 0x474068
mov eax, dword [ebp - 0x2c]
mov dword [ecx + 8], eax
mov eax, dword [ebp - 0x28]
mov dword [ecx], ebx
mov dword [ecx + 4], edi
mov dword [ecx + 0xc], eax
inc dword [eax]
mov dword [ebp - 0x24], ecx
mov ecx, dword [ebp + 0x10]
lea eax, [ebp - 0x24]
push eax
call fcn.0040b6d0
fldz
mov ecx, dword [ebp + 0xc]
fld qword [0x4b2750]
mov edx, dword [ebp + 0x10]
fld qword [0x4b2748]
fld qword [0x4b2740]
cmp word [ecx + esi*2], 0
jne 0x40adb2
cmp al, 0x71
add byte [edi], cl
test dword [eax], ebp
invalid
mov ax, word [ebp - 0x1c]
fstp st(3)
fstp st(1)
fstp st(0)
fstp st(0)
cmp ax, 0x30
jge 0x40b1e3
mov edx, dword [ebp + 0x10]
mov eax, 0x7f
mov word [ebp - 0x1c], ax
lea eax, [ebp - 0x24]
push eax
mov ecx, edx
mov dword [ebp - 0x24], 0
mov word [ebp - 0x1a], si
call fcn.0040b6d0
mov eax, dword [ebp - 8]
xor esi, esi
mov ebx, dword [ebp - 0x28]
dec dword [ebx]
jne 0x40afe0
push eax
call fcn.0042017e
add esp, 4
push ebx
call fcn.0042017e
add esp, 4
mov eax, dword [ebp - 0x1c]
add eax, 0xffffffd0
cmp ax, 0xf
jbe 0x474121
pop edi
mov eax, esi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc
push edx
call fcn.0040b875
test eax, eax
js 0x474100
cmp edi, 0x24
jne 0x40b4c5
mov edi, 0x33
mov eax, dword [ebp - 0x1c]
add eax, 0xffffffd0
cmp ax, 0xf
jbe 0x473ebb
lea eax, [edi - 0x30]
mov word [ebp - 0x1c], di
mov dword [ebp - 0x18], eax
cmp ax, 0xf
ja 0x473eed
fstp st(3)
mov dword [ebp - 0x24], 0
mov ecx, dword [ebp - 0x28]
inc esi
mov eax, dword [ecx]
mov dword [ebp - 0xc], esi
cmp eax, 1
jg 0x40b151
mov edx, dword [ebp - 0x2c]
xor edi, edi
xor eax, eax
mov word [ebx], ax
mov eax, dword [ebp + 0xc]
mov dword [ebp - 0x30], edi
movzx ebx, word [eax + esi*2]
jmp 0x40b070
fxch st(2)
fxch st(1)
cmp bx, 0x5a
jbe 0x40b0d9
cmp bx, 0x61
jb 0x40aee2
cmp bx, 0x7a
ja 0x40aee2
mov ecx, dword [ebp - 0x28]
mov eax, dword [ecx]
cmp eax, 1
jg 0x473f1f
lea eax, [edi + 2]
cmp edx, eax
jb 0x40b2a9
mov eax, dword [ebp - 8]
fstp st(1)
fstp st(0)
fstp st(0)
fld qword [0x4b2750]
mov word [eax + edi*2], bx
fld qword [0x4b2748]
inc edi
fld qword [0x4b2740]
xor ecx, ecx
mov word [eax + edi*2], cx
mov eax, dword [ebp + 0xc]
inc esi
mov dword [ebp - 0x30], edi
movzx ebx, word [eax + esi*2]
mov dword [ebp - 0xc], esi
jmp 0x40b06c
cmp bx, 0x41
jae 0x40b08a
jmp 0x40b076
cmp bx, 0x39
ja 0x40aeec
jmp 0x40b08a
mov ecx, dword [edx + 8]
fstp st(3)
fstp st(1)
mov esi, 0x40
fstp st(0)
mov dword [ebp - 0x10], ecx
fstp st(0)
test ecx, ecx
je 0x40b10f
mov eax, dword [edx + 4]
mov eax, dword [eax + ecx*4 - 4]
movzx esi, word [eax + 8]
mov ebx, dword [ebp + 0xc]
push esi
lea eax, [ebp - 0x34]
push eax
lea eax, [ebp - 0x24]
push eax
lea eax, [ebp - 0xc]
push eax
push ebx
call fcn.0040b99b
cmp al, 1
jne 0x40b538
cmp si, 0x4a
je 0x40b3fe
mov ecx, dword [ebp + 0x10]
lea eax, [ebp - 0x24]
push eax
call fcn.0040b6d0
mov ebx, dword [ebp - 0x34]
mov esi, dword [ebp - 0xc]
mov dword [ebp - 8], ebx
jmp 0x40af65
fstp st(1)
dec eax
fstp st(0)
push 4
fstp st(0)
mov dword [ecx], eax
call fcn.0042010a
add esp, 4
test eax, eax
je 0x473f13
mov dword [eax], 1
mov dword [ebp - 0x28], eax
xor ecx, ecx
mov eax, 8
mov edx, 2
mul edx
seto cl
mov dword [ebp - 0x2c], 8
neg ecx
or ecx, eax
push ecx
call fcn.0041fa89
fld qword [0x4b2750]
fld qword [0x4b2748]
mov ebx, eax
fld qword [0x4b2740]
add esp, 4
fxch st(2)
mov dword [ebp - 8], ebx
mov dword [ebp - 0x34], ebx
fxch st(1)
jmp 0x40b056
fstp st(3)
inc esi
fstp st(1)
mov dword [ebp - 0xc], esi
cmp word [ecx + esi*2], 0x3d
fstp st(0)
fstp st(0)
lea ecx, [ebp - 0x24]
je 0x40b528
push 0x41
call fcn.0040b7ff
jmp 0x40af59
cmp ax, 0x3f
jg 0x40afa0
mov ebx, dword [ebp - 0x24]
test ebx, ebx
je 0x40afa0
mov ecx, ebx
call fcn.00405cd3
push ebx
call fcn.0042017e
add esp, 4
jmp 0x40afa0
fstp st(3)
push 0x47
fstp st(1)
lea ecx, [ebp - 0x24]
fstp st(0)
fstp st(0)
call fcn.0040b7ff
mov ecx, dword [ebp + 0x10]
lea eax, [ebp - 0x24]
push eax
call fcn.0040b6d0
inc esi
mov dword [ebp - 0xc], esi
jmp 0x40af65
fstp st(3)
push 0x48
fstp st(1)
lea ecx, [ebp - 0x24]
fstp st(0)
fstp st(0)
call fcn.0040b7ff
mov ecx, dword [ebp + 0x10]
lea eax, [ebp - 0x24]
push eax
call fcn.0040b6d0
inc esi
mov dword [ebp - 0xc], esi
jmp 0x40af65
fstp st(3)
push 0x4e
fstp st(1)
lea ecx, [ebp - 0x24]
fstp st(0)
fstp st(0)
call fcn.0040b7ff
mov ecx, dword [ebp + 0x10]
lea eax, [ebp - 0x24]
push eax
call fcn.0040b6d0
inc esi
mov dword [ebp - 0xc], esi
jmp 0x40af65
fstp st(3)
push 0x4f
fstp st(1)
lea ecx, [ebp - 0x24]
fstp st(0)
fstp st(0)
call fcn.0040b7ff
mov ecx, dword [ebp + 0x10]
lea eax, [ebp - 0x24]
push eax
call fcn.0040b6d0
inc esi
mov dword [ebp - 0xc], esi
jmp 0x40af65
cmp eax, 0x41c2
jae 0x473f7f
fstp st(1)
add eax, eax
fstp st(0)
fstp st(0)
push eax
call fcn.0040c91c
xor ecx, ecx
mov dword [ebp - 0x2c], eax
mov edx, 2
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.0041fa89
mov edx, eax
mov eax, dword [ebp - 8]
add esp, 4
mov dword [ebp - 0x10], edx
test eax, eax
je 0x40b30b
push ebp
invalid
lea ecx, [edi*2 + 2]
push ecx
push eax
push edx
call fcn.0041faa0
mov ecx, dword [ebp - 8]
add esp, 0xc
push ecx
call fcn.00421a00
mov edx, dword [ebp - 0x10]
add esp, 4
mov eax, edx
mov edx, dword [ebp - 0x2c]
mov dword [ebp - 8], eax
mov dword [ebp - 0x34], eax
jmp 0x40b0ac
lea eax, [ebp - 0x34]
fstp st(3)
push eax
fstp st(1)
lea eax, [ebp - 0xc]
fstp st(0)
push eax
fstp st(0)
push dword [ebp + 0xc]
push dword [ebp + 8]
call fcn.0040bcb6
lea ecx, [ebp - 0x24]
test eax, eax
js 0x4740ab
push 0x36
call fcn.0040b7ff
lea eax, [ebp - 0x34]
push eax
lea ecx, [ebp - 0x24]
call fcn.0041df08
jmp 0x40aec8
fstp st(3)
push 0x49
fstp st(1)
lea ecx, [ebp - 0x24]
fstp st(0)
fstp st(0)
call fcn.0040b7ff
mov eax, dword [ebp + 0xc]
inc esi
mov dword [ebp - 0xc], esi
cmp word [eax + esi*2], 0x3d
jne 0x40af59
inc esi
push 0x52
lea ecx, [ebp - 0x24]
mov dword [ebp - 0xc], esi
call fcn.0040b7ff
jmp 0x40af59
fstp st(3)
push 0x4d
fstp st(1)
lea ecx, [ebp - 0x24]
fstp st(0)
fstp st(0)
call fcn.0040b7ff
mov eax, dword [ebp + 0xc]
inc esi
mov dword [ebp - 0xc], esi
cmp word [eax + esi*2], 0x3d
jne 0x40af59
inc esi
push 0x56
lea ecx, [ebp - 0x24]
mov dword [ebp - 0xc], esi
call fcn.0040b7ff
jmp 0x40af59
fstp st(3)
push 0x4a
fstp st(1)
lea ecx, [ebp - 0x24]
fstp st(0)
fstp st(0)
call fcn.0040b7ff
mov eax, dword [ebp + 0xc]
inc esi
mov dword [ebp - 0xc], esi
cmp word [eax + esi*2], 0x3d
jne 0x40af59
inc esi
push 0x53
lea ecx, [ebp - 0x24]
mov dword [ebp - 0xc], esi
call fcn.0040b7ff
jmp 0x40af59
cmp word [ebp - 0x1c], 5
jne 0x40b137
mov ecx, dword [ebp - 0x24]
mov eax, dword [ebp - 0x20]
mov edx, dword [ebp - 0x10]
neg ecx
adc eax, 0
neg eax
mov dword [ebp - 0x24], ecx
mov ecx, dword [ebp + 0x10]
mov dword [ebp - 0x20], eax
mov eax, dword [ecx + 4]
mov eax, dword [eax + edx*4 - 4]
mov edx, 0x49
mov word [eax + 8], dx
jmp 0x40b13a
mov eax, dword [ebp + 0xc]
fstp st(3)
inc esi
fstp st(1)
fstp st(0)
mov dword [ebp - 0xc], esi
movzx eax, word [eax + esi*2]
fstp st(0)
lea ecx, [ebp - 0x24]
sub eax, 0x3d
je 0x40b508
dec eax
je 0x40b4f8
push 0x43
call fcn.0040b7ff
jmp 0x40af59
fstp st(3)
push 0x4c
fstp st(1)
lea ecx, [ebp - 0x24]
fstp st(0)
fstp st(0)
call fcn.0040b7ff
mov eax, dword [ebp + 0xc]
inc esi
mov dword [ebp - 0xc], esi
cmp word [eax + esi*2], 0x3d
jne 0x40af59
inc esi
push 0x55
lea ecx, [ebp - 0x24]
mov dword [ebp - 0xc], esi
call fcn.0040b7ff
jmp 0x40af59
mov eax, dword [ebp + 0xc]
fstp st(3)
fstp st(1)
inc esi
fstp st(0)
mov dword [ebp - 0xc], esi
cmp word [eax + esi*2], 0x3d
fstp st(0)
lea ecx, [ebp - 0x24]
je 0x40b518
push 0x42
call fcn.0040b7ff
jmp 0x40af59
mov edi, 0x32
jmp 0x40b017
fstp st(3)
push 0x4b
fstp st(1)
lea ecx, [ebp - 0x24]
fstp st(0)
fstp st(0)
call fcn.0040b7ff
mov eax, dword [ebp + 0xc]
inc esi
mov dword [ebp - 0xc], esi
cmp word [eax + esi*2], 0x3d
jne 0x40af59
jmp 0x473e53
push 0x44
call fcn.0040b7ff
inc esi
mov dword [ebp - 0xc], esi
jmp 0x40af59
push 0x46
call fcn.0040b7ff
inc esi
mov dword [ebp - 0xc], esi
jmp 0x40af59
push 0x45
call fcn.0040b7ff
inc esi
mov dword [ebp - 0xc], esi
jmp 0x40af59
push 0x50
call fcn.0040b7ff
inc esi
mov dword [ebp - 0xc], esi
jmp 0x40af59
mov esi, dword [ebp - 0xc]
cmp edi, 0x2e
jne 0x473e2e
inc esi
lea ecx, [ebp - 0x34]
mov dword [ebp - 0xc], esi
call fcn.0040c4cd
movzx eax, word [ebx + esi*2]
cmp ax, 0x5a
jbe 0x40b572
cmp ax, 0x61
jb 0x40b57a
cmp ax, 0x7a
ja 0x40b57a
push eax
lea ecx, [ebp - 0x34]
call fcn.0040bd2f
inc esi
jmp 0x40b550
cmp ax, 0x41
jae 0x40b566
jmp 0x40b55a
cmp ax, 0x30
jae 0x473e1f
cmp ax, 0x5f
je 0x40b566
cmp ax, 0x7f
ja 0x40b566
cmp dword [ebp - 0x30], 0
mov dword [ebp - 0xc], esi
je 0x474074
push 0x35
lea ecx, [ebp - 0x24]
call fcn.0040b7ff
lea eax, [ebp - 0x34]
push eax
lea ecx, [ebp - 0x24]
call fcn.0041df08
mov ecx, dword [ebp + 0x10]
lea eax, [ebp - 0x24]
push eax
call fcn.0040b6d0
mov ebx, dword [ebp - 0x34]
mov dword [ebp - 8], ebx
jmp 0x40af65
cmp edi, 0x7a
jbe 0x40aea2
jmp 0x40ae07
fstp st(3)
push 0x57
fstp st(1)
lea ecx, [ebp - 0x24]
fstp st(0)
fstp st(0)
call fcn.0040b7ff
mov ecx, dword [ebp + 0x10]
lea eax, [ebp - 0x24]
push eax
call fcn.0040b6d0
inc esi
mov dword [ebp - 0xc], esi
jmp 0x40af65
fstp st(3)
push 0x58
fstp st(1)
lea ecx, [ebp - 0x24]
fstp st(0)
fstp st(0)
call fcn.0040b7ff
mov ecx, dword [ebp + 0x10]
lea eax, [ebp - 0x24]
push eax
call fcn.0040b6d0
inc esi
mov dword [ebp - 0xc], esi
jmp 0x40af65
mov dword [ebp - 0x28], esi
jmp 0x40ad4b
lea eax, [esi - 1]
push eax
jmp 0x474109
mov eax, dword [edi + 0x4c]
mov eax, dword [eax + ebx*4]
mov ecx, dword [eax]
pop edi
leave
je 0x473e06
push es
mov eax, dword [ecx]
push 1
call dword [eax]
inc ebx
cmp ebx, dword [edi + 0x50]
jb 0x473df4
jmp 0xd402d2e
push dword [ebx]
invalid
add al, byte [ebp - 0xc]
add esp, 4
push dword [eax + 0xc]
call 0x6b4201a6
add cl, byte [ebp - 0xc]
add esp, 4
jmp 0x40ae83
clc
cmp dword [edi], ecx
xchg byte [0xe9fff977], bh
push esi
ja 0x473e49
invalid
ja 0x473e4e
invalid
dec eax
daa
dec ebx
add byte [ebx + 0x5dd1055], cl
inc eax
daa
dec ebx
add byte [ecx - 0x5d1607a3], cl
outsd dx, dword [esi]
stc
inc dword [esi + 0x6a]
push esp
lea ecx, [ebp - 0x24]
mov dword [ebp - 0xc], esi
call fcn.0040b827
jmp 0x40af81
invalid
invalid
bnd jmp dword [esi + 0x39]
invalid
stc
jmp dword [esi - 0x7d]
add byte [eax], al
invalid
add esp, 4
lea eax, [edi*2 + 0xf22702]
push eax
push dword [ebp - 0x34]
mov dword [ebp - 8], ecx
push ecx
call 0xe941fac8
mov eax, dword [ebp - 8]
mov dword [ebp - 0x2c], edx
add esp, 0xc
mov dword [ebp - 0x34], eax
jmp 0x40b0d4
fstp qword [ebp - 0x14]
fmul qword [ebp - 0x14]
mov ecx, dword [ebp - 0x34]
mov esi, dword [ebp - 0xc]
jne 0x474053
fnstcw word [ebp - 6]
movzx eax, word [ebp - 6]
mov edi, dword [ebp - 0x30]
or eax, 0xff000c00
ror byte [0xff000c00], 1
mov dword [eax], ecx
invalid
fistp qword [ebp - 0x14]
mov ecx, dword [eax]
in al, dx
fldcw word [ebp - 6]
mov dword [ebp - 8], ecx
jmp 0x40b2e4
mov dword [ebp - 0x24], 0xff000000
jmp 0x40af81
cld
dec dword [ebx - 0x317c33bb]
invalid
inc ebp
int3
fstp st(0)
call fcn.00443138
push 0x7f
lea ecx, [ebp - 0x24]
call fcn.0040b827
mov ecx, dword [ebp + 0x10]
into
mov eax, dword [0xdbe8ec4d]
jne 0x474115
call 0x843f86ac
into
invalid