Function at 0x10003aa0
Capabilities:
Parse credit card information

Disassembly:
push ebx
push ebp
push esi
push edi
mov esi, eax
xor edi, edi
cmp dword [esi + 0x14], edi
jne 0x10003dbe
lea ebx, [edi + 2]
lea ebp, [ebx + 0x7e]
jmp 0x10003ac2
xor edi, edi
mov eax, dword [esi + 0x20]
mov dword [esi + 0x1c], eax
cmp eax, 0x6e
jne 0x10003ada
test dword [esi + 0x18], 0x400
jne 0x10003dc5
mov eax, dword [esi + 0xc]
cmp eax, edi
je 0x10003af8
mov ecx, dword [esi + 4]
cmp ecx, dword [esi + 8]
jb 0x10003af8
mov edx, dword [esi + 0x10]
mov dword [esi + 4], eax
mov dword [esi + 8], edx
mov dword [esi + 0x10], edi
mov dword [esi + 0xc], edi
test byte [esi + 0x18], 0x20
je case.0x10003b07.3
mov eax, dword [esi + 0x28]
dec eax
cmp eax, 4
ja case.0x10003b07.3
jmp dword [eax*4 + 0x1000442c]
mov eax, esi
call fcn.10004f20
mov eax, dword [esi + 4]
mov edx, dword [esi + 8]
cmp eax, edx
jb case.default.0x10003b2f
mov ecx, dword [esi + 0x28]
dec ecx
cmp ecx, 8
ja case.default.0x10003b2f
movzx ecx, byte [ecx + 0x1000444c]
jmp dword [ecx*4 + 0x10004440]
mov ecx, dword [esi + 0x28]
movzx edi, word [eax]
add eax, 2
add ecx, 0xfffffffe
mov dword [esi + 4], eax
cmp ecx, 7
ja case.default.0x10003b4e
jmp dword [ecx*4 + 0x10004458]
movzx ecx, di
add ecx, 0xffffffd3
cmp ecx, 0x30
ja case.0x10003c41.37
movzx edx, byte [ecx + 0x1000448c]
jmp dword [edx*4 + 0x10004478]
mov eax, dword [esi]
or dword [eax + 8], 0x40
test byte [esi + 0x18], bl
je case.0x10003c41.37
mov eax, dword [esi]
or dword [eax + 8], ebp
mov eax, dword [esi + 4]
cmp eax, dword [esi + 8]
jae 0x10003f4e
mov eax, esi
call fcn.10004640
mov eax, dword [esi + 0x20]
cmp eax, 0x43
jne 0x10003f45
movzx eax, word [esi + 0x24]
cmp eax, 0x64
je 0x10003c06
cmp eax, 0x73
je 0x10003be1
cmp eax, 0x77
jne 0x10003f4e
mov ecx, dword [esi + 4]
mov edx, dword [esi + 8]
mov dword [esi + 0xc], ecx
mov ecx, dword [esi + 0x1c]
mov dword [esi + 0x10], edx
mov dword [esi + 4], str._:alnum:__alert
mov dword [esi + 8], 0x100bae50
mov dword [esi + 0x20], ecx
jmp 0x10003db4
mov ecx, dword [esi + 8]
mov eax, dword [esi + 4]
mov dword [esi + 0x10], ecx
mov ecx, dword [esi + 0x1c]
mov dword [esi + 0xc], eax
mov dword [esi + 4], 0x100badf4
mov dword [esi + 8], 0x100bae06
mov dword [esi + 0x20], ecx
jmp 0x10003db4
mov edx, dword [esi + 4]
mov eax, dword [esi + 8]
mov ecx, dword [esi + 0x1c]
mov dword [esi + 0xc], edx
mov dword [esi + 0x10], eax
mov dword [esi + 4], 0x100badb0
mov dword [esi + 8], 0x100badc2
mov dword [esi + 0x20], ecx
jmp 0x10003db4
movzx ecx, di
add ecx, 0xffffffdc
cmp ecx, 0x58
ja case.0x10003c41.37
movzx ecx, byte [ecx + 0x100044f4]
jmp dword [ecx*4 + 0x100044c0]
test byte [esi + 0x18], bl
je 0x1000429f
cmp eax, edx
jae 0x1000429f
cmp word [eax], 0x3f
jne 0x1000429f
mov eax, dword [esi]
or dword [eax + 8], ebp
add dword [esi + 4], ebx
mov ecx, dword [esi + 4]
movzx eax, word [ecx]
add ecx, ebx
sub eax, 0x21
mov dword [esi + 4], ecx
cmp eax, 0x1c
ja case.0x10003c89.34
movzx edx, byte [eax + 0x10004564]
jmp dword [edx*4 + 0x10004550]
mov edx, dword [esi + 8]
cmp ecx, edx
jae 0x10003cab
mov eax, dword [esi + 4]
cmp word [eax], 0x29
je 0x10003cab
add eax, 2
mov dword [esi + 4], eax
cmp eax, dword [esi + 8]
jb 0x10003c97
mov eax, dword [esi + 4]
cmp eax, edx
jae 0x10003db4
add eax, 2
mov dword [esi + 4], eax
jmp 0x10003db4
cmp eax, edx
jae 0x10003f4e
test byte [esi + 0x18], bl
je 0x100043c3
mov eax, esi
call fcn.10004640
cmp dword [esi + 0x14], 0
jne 0x10003f4e
cmp dword [esi + 0x20], 0x43
jne 0x1000441e
movzx eax, word [esi + 0x24]
add eax, 0xffffffbc
cmp eax, 0x33
ja case.0x10003d04.69
movzx ecx, byte [eax + 0x100045a0]
jmp dword [ecx*4 + 0x10004584]
mov edx, dword [esi + 4]
mov eax, dword [esi + 8]
mov dword [esi + 0xc], edx
mov dword [esi + 0x10], eax
mov dword [esi + 4], str.__:digit:__
mov dword [esi + 8], 0x100bad96
jmp 0x10003dae
mov ecx, dword [esi + 4]
mov edx, dword [esi + 8]
mov dword [esi + 0xc], ecx
mov dword [esi + 0x10], edx
mov dword [esi + 4], str.__:digit:___:digit:_
mov dword [esi + 8], 0x100badb0
jmp 0x10003dae
mov eax, dword [esi + 4]
mov ecx, dword [esi + 8]
mov dword [esi + 4], str.__:space:__
mov dword [esi + 8], 0x100badda
jmp 0x10003da8
mov edx, dword [esi + 4]
mov eax, dword [esi + 8]
mov dword [esi + 0xc], edx
mov dword [esi + 0x10], eax
mov dword [esi + 4], str.__:space:___:space:_
mov dword [esi + 8], 0x100badf4
jmp 0x10003dae
mov ecx, dword [esi + 4]
mov edx, dword [esi + 8]
mov dword [esi + 0xc], ecx
mov dword [esi + 0x10], edx
mov dword [esi + 4], str.__:alnum:_____:alnum:___
mov dword [esi + 8], 0x100bae20
jmp 0x10003dae
mov eax, dword [esi + 4]
mov ecx, dword [esi + 8]
mov dword [esi + 4], 0x100bae20
mov dword [esi + 8], 0x100bae3a
mov dword [esi + 0x10], ecx
mov dword [esi + 0xc], eax
mov edx, dword [esi + 0x1c]
mov dword [esi + 0x20], edx
cmp dword [esi + 0x14], 0
je 0x10003ac0
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
ret
xor eax, eax
pop edi
mov word [esi + 0x24], ax
mov dword [esi + 0x20], 0x41
pop esi
pop ebp
mov eax, 1
pop ebx
ret
pop edi
mov dword [esi + 0x20], 0x65
pop esi
pop ebp
mov eax, 1
pop ebx
ret
mov dword [esi + 0x20], 0x65
cmp dword [esi + 0x14], edi
jne 0x10003e00
mov dword [esi + 0x14], 9
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
ret
mov dword [esi + 0x20], 0x65
cmp dword [esi + 0x14], edi
jne 0x10003e1a
mov dword [esi + 0x14], 7
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
ret
movzx eax, di
call fcn.10004bd0
pop edi
pop esi
pop ebp
pop ebx
ret
movzx ecx, di
add ecx, 0xffffffd4
cmp ecx, 0x51
ja case.0x10003e44.45
movzx ecx, byte [ecx + 0x100045e8]
jmp dword [ecx*4 + 0x100045d4]
add edi, 0xffffffd0
mov word [esi + 0x24], di
pop edi
mov dword [esi + 0x20], 0x64
pop esi
pop ebp
mov eax, 1
pop ebx
ret
pop edi
mov dword [esi + 0x20], 0x2c
pop esi
pop ebp
mov eax, 1
pop ebx
ret
cmp dword [esi + 0x28], 4
jne case.0x10003e44.45
mov dword [esi + 0x28], 1
test byte [esi + 0x18], bl
je 0x10003eb1
cmp eax, dword [esi + 8]
jae 0x10003eb1
cmp word [eax], 0x3f
jne 0x10003eb1
add eax, 2
mov dword [esi + 4], eax
mov eax, dword [esi]
or dword [eax + 8], ebp
xor edx, edx
pop edi
mov dword [esi + 0x20], 0x7d
mov word [esi + 0x24], dx
pop esi
pop ebp
lea eax, [edx + 1]
pop ebx
ret
pop edi
mov eax, 1
mov dword [esi + 0x20], 0x7d
mov word [esi + 0x24], ax
pop esi
pop ebp
pop ebx
ret
cmp dword [esi + 0x14], 0
mov dword [esi + 0x20], 0x65
jne 0x10003eda
mov dword [esi + 0x14], 0xa
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
ret
cmp dword [esi + 0x28], 5
jne case.0x10003e44.45
cmp eax, dword [esi + 8]
jae case.0x10003e44.45
cmp word [eax], 0x7d
jne case.0x10003e44.45
add eax, 2
pop edi
mov dword [esi + 4], eax
mov dword [esi + 0x28], ebx
mov dword [esi + 0x20], 0x7d
pop esi
pop ebp
mov eax, 1
pop ebx
ret
cmp dword [esi + 0x1c], 0x5b
mov eax, 1
jne 0x10003f27
mov word [esi + 0x24], di
pop edi
mov dword [esi + 0x20], 0x70
pop esi
pop ebp
pop ebx
ret
mov ecx, dword [esi + 0x18]
and cl, 1
movsx edx, cl
neg edx
sbb edx, edx
add edx, ebx
pop edi
mov dword [esi + 0x28], edx
mov dword [esi + 0x20], 0x5d
pop esi
pop ebp
pop ebx
ret
cmp eax, 0x70
je 0x10003fdc
cmp dword [esi + 0x14], 0
mov dword [esi + 0x20], 0x65
jne 0x10003f62
mov dword [esi + 0x14], 5
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
ret
cmp dword [esi + 0x1c], 0x5b
je case.0x10003c41.37
cmp eax, dword [esi + 8]
jae 0x10003f7a
cmp word [eax], 0x5d
je case.0x10003c41.37
mov word [esi + 0x24], di
pop edi
mov dword [esi + 0x20], 0x52
pop esi
pop ebp
mov eax, 1
pop ebx
ret
cmp eax, dword [esi + 8]
jb 0x10003fb3
cmp dword [esi + 0x14], 0
mov dword [esi + 0x20], 0x65
jne 0x10003e1a
pop edi
mov dword [esi + 0x14], 7
pop esi
pop ebp
xor eax, eax
pop ebx
ret
movzx ecx, word [eax]
add eax, 2
mov dword [esi + 4], eax
cmp ecx, 0x2e
je 0x10004028
cmp ecx, 0x3a
je 0x10004007
cmp ecx, 0x3d
je 0x10003fe6
add eax, 0xfffffffe
mov dword [esi + 4], eax
mov dword [esi + 0x20], 0x70
mov word [esi + 0x24], di
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
ret
mov eax, dword [esi]
mov dword [esi + 0x28], 8
or dword [eax + 8], 0x400
pop edi
mov dword [esi + 0x20], 0x45
pop esi
pop ebp
mov eax, 1
pop ebx
ret
mov eax, dword [esi]
mov dword [esi + 0x28], 9
or dword [eax + 8], 0x400
pop edi
mov dword [esi + 0x20], 0x43
pop esi
pop ebp
mov eax, 1
pop ebx
ret
pop edi
mov dword [esi + 0x28], 7
mov dword [esi + 0x20], 0x49
pop esi
pop ebp
mov eax, 1
pop ebx
ret
cmp di, 0x2e
jne case.0x10003c41.37
cmp eax, dword [esi + 8]
jae case.0x10003c41.37
cmp word [eax], 0x5d
jne case.0x10003c41.37
add eax, 2
mov dword [esi + 4], eax
mov eax, 0x2e
pop edi
mov word [esi + 0x24], ax
mov dword [esi + 0x28], 6
mov dword [esi + 0x20], 0x58
pop esi
pop ebp
mov eax, 1
pop ebx
ret
cmp di, 0x3d
jne case.0x10003c41.37
cmp eax, dword [esi + 8]
jae case.0x10003c41.37
cmp word [eax], 0x5d
jne case.0x10003c41.37
add eax, 2
mov ecx, 0x3d
pop edi
mov dword [esi + 4], eax
mov dword [esi + 0x28], 6
mov dword [esi + 0x20], 0x58
mov word [esi + 0x24], cx
pop esi
pop ebp
lea eax, [ecx - 0x3c]
pop ebx
ret
cmp di, 0x3a
jne case.0x10003c41.37
cmp eax, dword [esi + 8]
jae case.0x10003c41.37
cmp word [eax], 0x5d
jne case.0x10003c41.37
add eax, 2
mov edx, 0x3a
pop edi
mov dword [esi + 4], eax
mov dword [esi + 0x28], 6
mov dword [esi + 0x20], 0x58
mov word [esi + 0x24], dx
pop esi
pop ebp
lea eax, [edx - 0x39]
pop ebx
ret
pop edi
mov dword [esi + 0x20], 0x7c
pop esi
pop ebp
mov eax, 1
pop ebx
ret
test byte [esi + 0x18], bl
je 0x1000413f
cmp eax, dword [esi + 8]
jae 0x1000413f
cmp word [eax], 0x3f
jne 0x1000413f
add eax, 2
mov dword [esi + 4], eax
mov eax, dword [esi]
or dword [eax + 8], ebp
xor eax, eax
pop edi
mov word [esi + 0x24], ax
mov dword [esi + 0x20], 0x2a
pop esi
pop ebp
mov eax, 1
pop ebx
ret
mov ecx, 1
pop edi
mov dword [esi + 0x20], 0x2a
mov word [esi + 0x24], cx
pop esi
pop ebp
mov eax, ecx
pop ebx
ret
test byte [esi + 0x18], bl
je 0x10004186
cmp eax, dword [esi + 8]
jae 0x10004186
cmp word [eax], 0x3f
jne 0x10004186
add eax, 2
mov dword [esi + 4], eax
mov eax, dword [esi]
or dword [eax + 8], ebp
xor edx, edx
pop edi
mov dword [esi + 0x20], 0x2b
mov word [esi + 0x24], dx
pop esi
pop ebp
lea eax, [edx + 1]
pop ebx
ret
pop edi
mov eax, 1
mov dword [esi + 0x20], 0x2b
mov word [esi + 0x24], ax
pop esi
pop ebp
pop ebx
ret
test byte [esi + 0x18], bl
je 0x100041cb
cmp eax, dword [esi + 8]
jae 0x100041cb
cmp word [eax], 0x3f
jne 0x100041cb
add eax, 2
mov dword [esi + 4], eax
mov eax, dword [esi]
or dword [eax + 8], ebp
xor ecx, ecx
pop edi
mov dword [esi + 0x20], 0x3f
mov word [esi + 0x24], cx
pop esi
pop ebp
lea eax, [ecx + 1]
pop ebx
ret
mov dword [esi + 0x20], 0x3f
mov edx, 1
pop edi
mov word [esi + 0x24], dx
pop esi
pop ebp
mov eax, edx
pop ebx
ret
test byte [esi + 0x18], 0x20
je 0x100041ef
mov eax, esi
call fcn.10004f20
mov eax, dword [esi + 4]
cmp eax, dword [esi + 8]
jae 0x10004223
movzx eax, word [eax]
push eax
call sym.tcl85.dll_Tcl_UniCharIsDigit
add esp, 4
test eax, eax
je 0x10004223
mov eax, dword [esi]
mov ecx, 4
or dword [eax + 8], ecx
pop edi
mov dword [esi + 0x28], ecx
mov dword [esi + 0x20], 0x7b
pop esi
pop ebp
lea eax, [ecx - 3]
pop ebx
ret
mov eax, dword [esi]
or dword [eax + 8], 8
mov eax, dword [esi]
or dword [eax + 8], 0x100
jmp case.0x10003c41.37
xor ecx, ecx
pop edi
mov dword [esi + 0x20], 0x28
mov word [esi + 0x24], cx
pop esi
pop ebp
lea eax, [ecx + 1]
pop ebx
ret
mov eax, dword [esi]
or dword [eax + 8], ebx
mov edx, 1
pop edi
mov dword [esi + 0x20], 0x4c
mov word [esi + 0x24], dx
pop esi
pop ebp
mov eax, edx
pop ebx
ret
mov eax, dword [esi]
or dword [eax + 8], ebx
xor eax, eax
pop edi
mov word [esi + 0x24], ax
mov dword [esi + 0x20], 0x4c
pop esi
pop ebp
mov eax, 1
pop ebx
ret
cmp dword [esi + 0x14], 0
mov dword [esi + 0x20], 0x65
jne 0x10004298
mov dword [esi + 0x14], 0xd
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
ret
test byte [esi + 0x18], 0x10
mov dword [esi + 0x20], 0x28
je 0x100041d2
xor ecx, ecx
pop edi
mov word [esi + 0x24], cx
pop esi
pop ebp
lea eax, [ecx + 1]
pop ebx
ret
cmp dword [esi + 0x1c], 0x28
jne 0x100042cd
mov eax, dword [esi]
or dword [eax + 8], 0x100
mov word [esi + 0x24], di
pop edi
mov dword [esi + 0x20], 0x29
pop esi
pop ebp
mov eax, 1
pop ebx
ret
mov edx, dword [esi + 8]
mov ecx, edx
sub ecx, eax
and ecx, 0xfffffffe
cmp ecx, 0xc
mov ebx, 0x5b
jl 0x10004353
cmp word [eax], bx
jne 0x10004353
mov edi, 0x3a
cmp word [eax + 2], di
jne 0x10004353
movzx ecx, word [eax + 4]
cmp cx, 0x3c
je 0x10004316
cmp cx, 0x3e
jne 0x10004353
cmp word [eax + 6], di
jne 0x10004353
mov edi, 0x5d
cmp word [eax + 8], di
jne 0x10004353
cmp word [eax + 0xa], di
jne 0x10004353
add eax, 0xc
mov dword [esi + 4], eax
mov eax, dword [esi]
or dword [eax + 8], ebp
movzx ecx, cx
xor edx, edx
cmp cx, 0x3c
setne dl
lea eax, [edi - 0x5c]
pop edi
lea edx, [edx + edx + 0x3c]
mov dword [esi + 0x20], edx
pop esi
pop ebp
pop ebx
ret
mov dword [esi + 0x28], 6
cmp eax, edx
jae 0x1000437d
cmp word [eax], 0x5e
jne 0x1000437d
add eax, 2
mov dword [esi + 4], eax
xor eax, eax
pop edi
mov dword [esi + 0x20], ebx
mov word [esi + 0x24], ax
pop esi
pop ebp
mov eax, 1
pop ebx
ret
mov ecx, 1
pop edi
mov dword [esi + 0x20], ebx
mov word [esi + 0x24], cx
pop esi
pop ebp
mov eax, ecx
pop ebx
ret
pop edi
mov dword [esi + 0x20], 0x2e
pop esi
pop ebp
mov eax, 1
pop ebx
ret
pop edi
mov dword [esi + 0x20], 0x5e
pop esi
pop ebp
mov eax, 1
pop ebx
ret
pop edi
mov dword [esi + 0x20], 0x24
pop esi
pop ebp
mov eax, 1
pop ebx
ret
movzx edx, word [eax]
push edx
call sym.tcl85.dll_Tcl_UniCharIsAlnum
add esp, 4
test eax, eax
je 0x100043e2
mov eax, dword [esi]
or dword [eax + 8], 0x10
mov eax, dword [esi]
or dword [eax + 8], 0x100
mov eax, dword [esi + 4]
mov dword [esi + 0x20], 0x70
mov cx, word [eax]
add eax, 2
pop edi
mov dword [esi + 4], eax
mov word [esi + 0x24], cx
pop esi
pop ebp
mov eax, 1
pop ebx
ret
cmp dword [esi + 0x14], 0
mov dword [esi + 0x20], 0x65
jne 0x10004417
mov dword [esi + 0x14], 0xf
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
ret
xor eax, eax
cmp dword [esi + 0x14], eax
pop edi
pop esi
pop ebp
sete al
pop ebx
ret