Function at 0x1e0048fc
Capabilities:
Validate payment card number using luhn algorithm

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x5c
push ebx
push esi
xor esi, esi
push edi
mov dword [esp + 0x30], esi
cmp dword [ebp + 8], esi
je 0x1e046918
cmp dword [ebp + 0xc], esi
je 0x1e046918
push dword [ebp + 8]
call sym.python31.dll_PyUnicodeUCS2_FromObject
pop ecx
cmp eax, esi
je 0x1e046929
mov dword [esp + 0x4c], esi
mov dword [esp + 0x48], esi
mov esi, dword [eax + 0xc]
mov dword [esp + 0x50], eax
mov eax, dword [eax + 8]
lea ebx, [eax + 0x64]
mov edi, ebx
mov dword [esp + 0xc], eax
call fcn.1e015414
mov dword [esp + 0x30], eax
test eax, eax
je 0x1e0467d3
mov eax, dword [eax + 0xc]
mov edi, dword [ebp + 0xc]
mov dword [esp + 0x2c], eax
mov eax, dword [edi + 4]
test dword [eax + 0x54], 0x4000000
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x28], ebx
je 0x1e004dc4
push edi
call sym.python31.dll_PyTuple_Size
and dword [esp + 0x40], 0
pop ecx
mov dword [esp + 0x38], eax
mov eax, dword [edi + 4]
cmp dword [eax + 0x38], 0
je 0x1e0049a5
test dword [eax + 0x54], 0x14000000
je 0x1e004f6a
dec dword [esp + 0xc]
js 0x1e0049d5
push 2
pop edi
cmp word [esi], 0x25
je 0x1e004a20
dec ebx
js 0x1e046373
mov ax, word [esi]
mov ecx, dword [esp + 0x2c]
add dword [esp + 0x2c], edi
mov dword [esp + 0x1c], ebx
mov word [ecx], ax
add esi, edi
dec dword [esp + 0xc]
jns 0x1e0049ae
mov eax, dword [esp + 0x38]
cmp dword [esp + 0x3c], eax
jl 0x1e0468ee
mov eax, dword [esp + 0x28]
sub eax, ebx
push eax
lea eax, [esp + 0x34]
push eax
call fcn.1e012f40
pop ecx
pop ecx
test eax, eax
jl 0x1e0467b0
cmp dword [esp + 0x4c], 0
jne 0x1e004f73
mov eax, dword [esp + 0x50]
dec dword [eax]
je 0x1e04690b
mov eax, dword [esp + 0x30]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
or dword [esp + 0x10], 0xffffffff
or dword [esp + 0x24], 0xffffffff
xor eax, eax
add esi, edi
cmp word [esi], 0x28
mov dword [esp + 0x14], eax
mov dword [esp + 0x20], eax
mov dword [esp + 0x18], eax
je 0x1e004e73
dec dword [esp + 0xc]
js 0x1e046881
movzx ebx, word [esi]
movzx eax, bx
add esi, edi
sub eax, 0x20
mov dword [esp + 0x34], esi
je 0x1e0463e0
sub eax, 3
je 0x1e0463d6
sub eax, 8
je 0x1e0463cd
sub eax, edi
je 0x1e0463c3
sub eax, 3
je 0x1e004e52
cmp bx, 0x2a
je 0x1e0463ea
lea eax, [ebx - 0x30]
cmp ax, 9
ja 0x1e004abc
movzx eax, bx
sub eax, 0x30
dec dword [esp + 0xc]
mov dword [esp + 0x10], eax
js 0x1e004abc
movzx ebx, word [esi]
inc esi
inc esi
mov dword [esp + 0x34], esi
cmp bx, 0x30
jae 0x1e004cf6
cmp bx, 0x2e
jne 0x1e004b18
dec dword [esp + 0xc]
js 0x1e046881
movzx ebx, word [esi]
xor edi, edi
inc esi
inc esi
cmp bx, 0x2a
je 0x1e046465
lea eax, [ebx - 0x30]
cmp ax, 9
ja 0x1e046509
dec dword [esp + 0xc]
js 0x1e046881
movzx eax, bx
sub eax, 0x30
mov dword [esp + 0x24], eax
movzx ax, byte [esi]
movzx ebx, ax
inc esi
inc esi
lea eax, [ebx - 0x30]
mov dword [esp + 0x34], esi
cmp ax, 9
jbe 0x1e0464d6
cmp dword [esp + 0xc], 0
jl 0x1e046881
cmp bx, 0x68
je 0x1e046516
cmp bx, 0x6c
je 0x1e046516
cmp bx, 0x4c
je 0x1e046516
cmp bx, 0x25
je 0x1e004b65
push dword [esp + 0x38]
lea ecx, [esp + 0x40]
push dword [ebp + 0xc]
call fcn.1e004859
pop ecx
pop ecx
test eax, eax
je 0x1e0467b0
mov dword [esp + 0x20], eax
movzx eax, bx
xor edi, edi
cmp eax, 0x67
mov dword [esp + 0x44], edi
mov dword [esp + 0x40], 0x20
jg 0x1e004d25
cmp eax, 0x65
jl 0x1e04652e
push eax
push dword [esp + 0x28]
push dword [esp + 0x1c]
push dword [esp + 0x2c]
call fcn.1e004883
add esp, 0x10
test eax, eax
je 0x1e0467b0
mov dword [esp + 0x18], eax
test byte [esp + 0x14], 0x10
mov eax, dword [esp + 0x18]
mov esi, dword [eax + 0xc]
mov eax, dword [eax + 8]
mov dword [esp + 0x20], eax
jne 0x1e004e66
movzx eax, word [esi]
cmp ax, 0x2d
je 0x1e046617
cmp ax, 0x2b
je 0x1e046617
test byte [esp + 0x14], 2
jne 0x1e04660f
movsx edi, byte [esp + 0x14]
and edi, 4
shl edi, 3
mov dword [esp + 0x44], edi
mov eax, dword [esp + 0x10]
cmp eax, dword [esp + 0x20]
jl 0x1e004db7
mov ecx, dword [esp + 0x1c]
xor eax, eax
test di, di
setne al
mov edx, ecx
sub edx, eax
cmp edx, dword [esp + 0x10]
jl 0x1e046625
mov edi, dword [esp + 0x2c]
mov eax, dword [esp + 0x44]
push 2
test ax, ax
jne 0x1e046672
mov ecx, dword [esp + 0x24]
pop eax
mov edx, dword [esp + 0x14]
and edx, 8
mov dword [esp + 0x2c], edx
jne 0x1e0466a5
cmp dword [esp + 0x10], ecx
jle 0x1e004c69
test byte [esp + 0x14], 1
jne 0x1e004c69
mov dx, word [esp + 0x40]
dec dword [esp + 0x1c]
mov word [edi], dx
add edi, eax
dec dword [esp + 0x10]
cmp dword [esp + 0x10], ecx
jg 0x1e004c51
cmp word [esp + 0x40], 0x20
jne 0x1e004c89
mov edx, dword [esp + 0x44]
test dx, dx
jne 0x1e046701
cmp dword [esp + 0x2c], 0
jne 0x1e04670b
lea edx, [ecx + ecx]
cmp edx, 0x10
jae 0x1e004d9d
test edx, edx
jbe 0x1e004cad
mov eax, edi
sub esi, edi
mov dword [esp + 0x44], edx
mov dl, byte [esi + eax]
mov byte [eax], dl
inc eax
dec dword [esp + 0x44]
jne 0x1e004ca1
mov edx, dword [esp + 0x10]
sub dword [esp + 0x1c], ecx
lea eax, [ecx + ecx]
add edi, eax
dec edx
cmp edx, ecx
mov dword [esp + 0x2c], edi
jge 0x1e046742
cmp dword [esp + 0x48], 0
jne 0x1e004f57
mov eax, dword [esp + 0x18]
test eax, eax
je 0x1e004ce6
dec dword [eax]
jne 0x1e004ce6
mov ecx, dword [eax + 4]
push eax
call dword [ecx + 0x18]
pop ecx
mov ebx, dword [esp + 0x1c]
mov esi, dword [esp + 0x34]
push 2
pop edi
jmp 0x1e0049cf
cmp bx, 0x39
ja 0x1e004abc
mov ecx, dword [esp + 0x10]
imul ecx, ecx, 0xa
mov eax, ecx
push 0xa
cdq
pop edi
idiv edi
cmp eax, dword [esp + 0x10]
jne 0x1e046873
movzx eax, bx
lea eax, [eax + ecx - 0x30]
jmp 0x1e004a9f
cmp eax, 0x69
je 0x1e004dd6
cmp eax, 0x6f
je 0x1e004dd6
cmp eax, 0x71
jle 0x1e046575
cmp eax, 0x73
jg 0x1e0465c4
mov eax, dword [esp + 0x20]
mov ecx, dword [eax + 4]
test dword [ecx + 0x54], 0x10000000
je 0x1e004f22
cmp bx, 0x73
jne 0x1e0465cf
inc dword [eax]
mov dword [esp + 0x18], eax
cmp dword [esp + 0x24], 0
mov eax, dword [esp + 0x18]
mov esi, dword [eax + 0xc]
mov eax, dword [eax + 8]
mov dword [esp + 0x20], eax
jl 0x1e004bf3
cmp eax, dword [esp + 0x24]
jle 0x1e004bf3
mov eax, dword [esp + 0x24]
mov dword [esp + 0x20], eax
jmp 0x1e004bf3
mov eax, dword [esp + 0x20]
add eax, eax
push eax
push esi
push edi
call fcn.1e037fdc
mov ecx, dword [esp + 0x2c]
add esp, 0xc
jmp 0x1e004cad
mov eax, dword [esp + 0x20]
mov dword [esp + 0x10], eax
jmp 0x1e004c01
or dword [esp + 0x38], 0xffffffff
mov dword [esp + 0x3c], 0xfffffffe
jmp 0x1e00498f
cmp bx, 0x69
jne 0x1e004ddf
push 0x64
pop ebx
push dword [esp + 0x20]
call sym.python31.dll_PyNumber_Check
add esp, 4
test eax, eax
je 0x1e046816
mov esi, dword [esp + 0x20]
mov eax, dword [esi + 4]
test dword [eax + 0x54], 0x1000000
je 0x1e0465f1
inc dword [esi]
test esi, esi
je 0x1e046816
mov eax, dword [esi + 4]
test dword [eax + 0x54], 0x1000000
je 0x1e046809
movzx eax, bx
push eax
push dword [esp + 0x28]
push dword [esp + 0x1c]
push esi
call fcn.1e0294c6
add esp, 0x10
dec dword [esi]
mov dword [esp + 0x18], eax
je 0x1e046602
cmp dword [esp + 0x18], 0
jne 0x1e004ba9
jmp 0x1e0467b0
or dword [esp + 0x14], 0x10
dec dword [esp + 0xc]
jns 0x1e004a4e
jmp 0x1e004a86
mov dword [esp + 0x40], 0x30
jmp 0x1e004bc2
cmp dword [esp + 0x48], eax
je 0x1e04683c
xor ecx, ecx
add esi, edi
inc ecx
dec dword [esp + 0xc]
mov edx, esi
dec dword [esp + 0xc]
js 0x1e046856
movzx eax, word [esi]
cmp ax, 0x29
je 0x1e004f1f
cmp ax, 0x28
je 0x1e0463b0
add esi, edi
test ecx, ecx
jg 0x1e004e88
mov eax, esi
sub eax, edx
sar eax, 1
dec eax
push eax
push edx
call sym.python31.dll_PyUnicodeUCS2_FromUnicode
pop ecx
pop ecx
test eax, eax
je 0x1e0467b0
cmp dword [esp + 0x4c], 0
mov ebx, eax
je 0x1e004ee0
mov eax, dword [ebp + 0xc]
dec dword [eax]
je 0x1e0463b6
and dword [esp + 0x4c], 0
push ebx
push dword [esp + 0x4c]
call sym.python31.dll_PyObject_GetItem
dec dword [ebx]
pop ecx
pop ecx
mov dword [ebp + 0xc], eax
jne 0x1e004efb
mov eax, dword [ebx + 4]
push ebx
call dword [eax + 0x18]
pop ecx
cmp dword [ebp + 0xc], 0
je 0x1e0467b0
or dword [esp + 0x38], 0xffffffff
mov dword [esp + 0x4c], 1
mov dword [esp + 0x3c], 0xfffffffe
jmp 0x1e004a44
dec ecx
jmp 0x1e004ea9
cmp bx, 0x73
jne 0x1e0465cf
push dword [esp + 0x20]
call sym.python31.dll_PyObject_Str
pop ecx
mov dword [esp + 0x18], eax
test eax, eax
je 0x1e0467b0
mov ecx, dword [eax + 4]
test dword [ecx + 0x54], 0x10000000
jne 0x1e004d6d
jmp 0x1e046888
mov eax, dword [esp + 0x38]
cmp dword [esp + 0x3c], eax
jge 0x1e004cd2
jmp 0x1e046775
mov dword [esp + 0x48], edi
jmp 0x1e0049a5
mov eax, dword [ebp + 0xc]
dec dword [eax]
jne 0x1e004a09
jmp 0x1e0468fe
fucomp st(5)
add al, 4
mov esi, 0x5050537
imul ecx, dword [esi + 0x4eddf92], 4
mov edi, 0x5050533
imul ecx, dword [esi + 0x4ede19a], 4
mov ebp, 0x5050569
imul ecx, dword [esi + 0x4ede38a], 4
mov esi, 0x5050571
imul ecx, dword [esi + 0x4ede592], 4
mov edi, 0x5050571
imul ecx, dword [esi + 0x4ede79a], 4
in eax, dx
add al, 4
cmp ch, al
imul ecx, dword [esi + 0x4ede98a], 4
mov cs, word [edx + 0x404ede9]
push edi
pop eax
mov cl, cl
or dword [esi + 0x58cfbc7], eax
add eax, 0x5050fed
add eax, 0x50554805
sti
mov word [0x50fed05], es
add eax, 0x55480505
dec eax
push ebp
push eax
cmp dword [edi + 0x4d], ecx
dec edi
cmp al, 0x42
mov cl, cl
or dword [edi + 0x57], ebx
xchg bh, cl
cmp dh, al
add eax, 0x51e78605
xchg edi, eax
add eax, 0x9751e786
add eax, 0x4ac78605
add dword [0x8acb5f05], 0x404fc29
push ecx
retf
nop
xchg edx, eax
mov cl, 0xeb
add al, 4
mov ss, word [edx + 0x404f2a9]
push ebp
pop eax
mov cl, cl
or dword [esi + 0x63fc6c5], eax
add eax, 0x2623cd86
add eax, 0x72e58605
dec edi
push es
add eax, 0xf586555d
retf 0x65d
dec esp
dec esi
xchg dh, dh
or al, 0x42
add eax, 0x6eee8605
sub dword [0xa8f68605], eax
std
add eax, 0x55555e05
mov cl, cl
or eax, esi
or edx, dword [edx + 0x51]
dec ecx
cmp al, 0x4b
push eax
xchg ch, ah
mov bh, 0x2d
add eax, 0xc2885d05
cmp eax, 0x50404f7
jp 0x1e04651c
int3
mov bh, byte [ecx]
inc byte [esp + eax]
add eax, 0xee050505
pop es
add eax, 0x3d9a9005
test dword [esp + eax], 0x599a8e
add al, 4
add eax, 0xf73d9a90
add al, 4
mov ds, word [edx + 0x4040059]
add al, 0x8e
lcall 0xf058, 0x4040059
or dword [ecx + 0x4a], ecx
pop eax
lock or dword [ecx + 0x4a], ecx
push edx
inc ebx
xchg al, bh
cmpsb byte [esi], byte es:[edi]
sbb dword [0x86586005], eax
add eax, 0x86586005
rcr byte [edx], 1
add eax, 0xc5e88605
pop es
push es
add eax, 0x5050ded
add eax, 0x37444d05
cmp eax, 0x88403b3e
leave
or dword [esi + 0x5ed66c8], eax
add eax, 0xd18a9260
in eax, dx
add al, 4
mov cs, word [edx + 0x404f741]
nop
xchg edx, eax
pop ecx
add byte [esp + eax], al
nop
push esi
xor eax, 0xf7459a8e
add al, 4
cmp ch, al
imul ecx, dword [esi + 0x402ed8a], 4
in eax, dx
add al, byte [esp + eax]
cmp dh, cl
imul ecx, dword [esi + 0x4047592], 4
pop ebx
pop ebx
mov cl, cl
or dword [esi + 0x5b25ccb], eax
add eax, 0x3c4708f0
cmp eax, 0x88555763
leave
or ebp, ebp
or al, 5
add eax, 0x513d0505
inc ecx
dec edx
push eax
cmp eax, 0x5f09c988
pop ebx
push esi
mov cl, cl
or dword [esi + 0x531bbf3], eax
add eax, 0x459a9063
test dword [esp + eax], 0x6b07906b
mov cs, word [edx + 0x404f973]
nop
xchg edx, eax
inc ebp
test dword [esp + eax], 0x8e07c688
xchg edx, eax
inc ebp
test dword [esp + eax], 0x739a906b
stc
add al, 4
imul ecx, dword [esi + 0x402ed9a], 4
nop
mov al, byte [ecx - 9]
add al, 4
imul edx, dword [eax - 0x6d7194f3], 0x71
stc
add al, 4
nop
lcall 0xc788, 0x404f741
pop es
mov ds, word [edx + 0x404f741]
imul edx, dword [eax + 0x4f9718a], 4
mov dh, byte [ecx - 7]
add al, 4
imul ecx, dword [esi + 0x404758a], 4
pop eax
xchg al, cl
hlt
xor cl, cl
add eax, 0x50ded05
add eax, 0x37460505
dec esp
cmp al, 0x49
dec ecx
cmp al, 0x4f
mov cl, cl
or dword [esi + 0x5353fc8], eax
add eax, 0xed865560
push 0xffffffffffffffc7
add eax, 0xd6c58605
inc eax
push es
add eax, 0x92bc145d
jne 0x1e046649
add al, 4
mov cl, dh
jp 0x1e046668
adc al, 0xbc
lcall 0xbc14, 0x40402ed
mov dh, byte [ebp + 4]
add al, 4
xor ch, dl
mov ds, word [edx + 0x404f2a1]
invalid
add al, 4
adc al, 0xbc
lcall 0xcf40, 0x4040475
adc al, 0x89
push cs
add al, 4
add al, 0x14
mov esp, 0x402ed8a
add al, 0x88
cmc
and eax, 0x7592bc14
add al, 4
add al, 0x40
invalid
iretd
mov ah, byte [ebp + 0x40404f2]
add al, 4
add al, 0xf0
bswap esp
mov ah, byte [ebp + 0x60404f2]
add eax, 0x92900505
movsd dword es:[edi], dword [esi]
add al, 4
mov ss, word [edx + 0x404f2a1]
mov dl, al
mov eax, dword [0x50404f2]
jp 0x1e046714
push edi
xchg bh, ch
push esi
sbb dword [0x27f78605], eax
inc ecx
add eax, 0x55575f05
mov cl, cl
or dword [esi + 0x6090aef], eax
add eax, 0x70d0ef86
push es
add eax, 0x885c585f
leave
or eax, esi
or dword [edx + 0x3b], eax
inc edx
inc ebx
xchg al, cl
jge 0x1e046704
add eax, 0x599a9060
nop
lcall 0x9a8e, 0x4040059
cmp esi, edi
add byte [esp + eax], al
mov ds, word [edx + 0x404fe39]
add al, 4
invalid
aas
inc esp
xchg dh, al
leave
test dword [0xed585e05], 0x505050c
add eax, 0x45484e3f
inc esp
inc esi
mov cl, cl
or dword [esi + 0x5b0e4d0], eax
add eax, 0x3aabd086
add eax, 0x53f88605
jae 0x1e046744
add eax, 0x598a9060
mov bl, byte [ecx]
add al, 4
add byte [esp + eax], al
nop
or eax, 0x59928e
add al, 4
nop
lcall 0x9a40, 0x4040059
cmp eax, 0x790404f7
adc eax, 0x598a90
add al, 4
mov byte [ebp + 0x35], bh
add eax, 0x2bb8a14
add al, 4
int3
add eax, 0xf5865505
mov edx, 0x5d050628
pop ebx
pop ebx
mov cl, cl
or ebp, ebp
syscall
add eax, 0x513b0505
dec esp
aas
dec edx
dec ebx
dec ebx
push ebx
push ebp
mov cl, cl
or dword [esi + 0x56669fb], eax
add eax, 0xf18ffb86
add eax, 0xb0f38605
loope 0x1e0467ac
add eax, 0x39c28863
inc byte [esp + eax]
add eax, 0x5858467a
jp 0x1e0467f8
pop eax
pop eax
mov cl, cl
or dword [esi + 0x51083f0], eax
add eax, 0x3496c886
add eax, 0x58c88605
jae 0x1e0467ce
add eax, 0xec865c60
loop 0x1e046806
aaa
add eax, 0xdcd48605
mov dword [esi], eax
add eax, 0x6d39f486
push es
fmul qword [ecx - 0xb79fafa]
cmp dword [ebp + 6], ebp
add eax, 0x76ecec86
add eax, 0x8acc6405
in eax, 0xfa
add al, 4
add eax, 0xee050505
inc edx
adc byte [0x88585605], al
leave
or dword [esi + 0x622f0e6], eax
xchg dh, ah
lock and al, byte [esi]
add eax, 0x494aee86
add eax, 0xcdee8605
push es
int 0x64
push es
add eax, 0x8856585e
leave
or dword [esi + 0x50e56f8], eax
add eax, 0xf4865c60
pushal
pop esp
xchg ah, dh
add al, byte [0x40f48605]
cmp byte [esi], al
add eax, 0x39929064
inc byte [esp + eax]
nop
push esi
sbb eax, 0x1a99a8e
add al, 4
int3
add eax, 0xa98a9005
add dword [esp + eax], eax
mov cs, word [edx + 0x404f29d]
mov dl, al
popfd
add al, 4
add eax, 0x9290167a
and eax, 0x8e0404fe
inc byte [esp + eax]
mov ss, word [edx + 0x4040191]
xchg edx, eax
xchg ecx, eax
add dword [esp + eax], eax
out dx, al
test byte [edi], 5
add eax, 0xf29d9a90
add al, 4
nop
mov ch, byte [ecx + 0x8040401]
inc edi
inc ecx
mov cs, word [edx + 0x404f299]
jp 0x1e046891
nop
xchg edx, eax
and eax, 0x8e0404fe
xchg edx, eax
xchg ecx, eax
add dword [esp + eax], eax
mov ss, word [edx + 0x4040191]
out dx, al
into
pop es
add eax, 0x50dbf05
add eax, 0x5c77005
nop
xchg edx, eax
cdq
add al, 4
jo 0x1e04685a
add eax, 0xf2999290
add al, 4
nop
pop ecx
push es
jge 0x1e04682d
lcall 0xc288, 0x404f295
xchg ebp, eax
add al, 4
add eax, 0x8a90167a
and eax, 0x8e0404fe
mov dl, byte [ecx - 0x11fbfbff]
pushfd
pop es
add eax, 0xa9929005
add dword [esp + eax], eax
or byte [edx + 0x404f295], dl
mov ss, word [edx + 0x404fe31]
jp 0x1e0468e8
nop
lcall 0x9a8e, 0x404fe25
xchg ecx, eax
add dword [esp + eax], eax
out dx, al
ja 0x1e0468e8
add eax, 0x318a9005
inc byte [esp + eax]
nop
add al, 0x90
xchg edx, eax
test eax, 0x8040401
add al, 8
dec ebp
and eax, 0xebad928e
add al, 4
nop
lcall 0x8a90, 0x404fe31
test eax, 0x8040401
nop
mov ch, byte [ecx + 0x8040401]
inc edi
sub dword [esi + 0x4eba98a], ecx
add al, 0x90
add al, 4
nop
xchg edx, eax
xor esi, edi
add al, 4
nop
lcall 0x5608, 0x40401a9
add al, 8
push esi
and dword [esi + 0x4eba59a], ecx
add al, 0xcc
mov ch, byte [0x50404fe]
add eax, 0x14f00505
nop
mov ch, byte [0x880404fe]