Function at 0x10003a70
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 0x10003d8e
lea ebx, [edi + 2]
lea ebp, [ebx + 0x7e]
jmp 0x10003a92
xor edi, edi
mov eax, dword [esi + 0x20]
mov dword [esi + 0x1c], eax
cmp eax, 0x6e
jne 0x10003aaa
test dword [esi + 0x18], 0x400
jne 0x10003d95
mov eax, dword [esi + 0xc]
cmp eax, edi
je 0x10003ac8
mov ecx, dword [esi + 4]
cmp ecx, dword [esi + 8]
jb 0x10003ac8
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.0x10003ad7.3
mov eax, dword [esi + 0x28]
dec eax
cmp eax, 4
ja case.0x10003ad7.3
jmp dword [eax*4 + 0x100043fc]
mov eax, esi
call fcn.10004ef0
mov eax, dword [esi + 4]
mov edx, dword [esi + 8]
cmp eax, edx
jb case.default.0x10003aff
mov ecx, dword [esi + 0x28]
dec ecx
cmp ecx, 8
ja case.default.0x10003aff
movzx ecx, byte [ecx + 0x1000441c]
jmp dword [ecx*4 + 0x10004410]
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.0x10003b1e
jmp dword [ecx*4 + 0x10004428]
movzx ecx, di
add ecx, 0xffffffd3
cmp ecx, 0x30
ja case.0x10003c11.37
movzx edx, byte [ecx + 0x1000445c]
jmp dword [edx*4 + 0x10004448]
mov eax, dword [esi]
or dword [eax + 8], 0x40
test byte [esi + 0x18], bl
je case.0x10003c11.37
mov eax, dword [esi]
or dword [eax + 8], ebp
mov eax, dword [esi + 4]
cmp eax, dword [esi + 8]
jae 0x10003f1e
mov eax, esi
call fcn.10004610
mov eax, dword [esi + 0x20]
cmp eax, 0x43
jne 0x10003f15
movzx eax, word [esi + 0x24]
cmp eax, 0x64
je 0x10003bd6
cmp eax, 0x73
je 0x10003bb1
cmp eax, 0x77
jne 0x10003f1e
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], 0x100b9c70
mov dword [esi + 0x20], ecx
jmp 0x10003d84
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], 0x100b9c14
mov dword [esi + 8], 0x100b9c26
mov dword [esi + 0x20], ecx
jmp 0x10003d84
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], 0x100b9bd0
mov dword [esi + 8], 0x100b9be2
mov dword [esi + 0x20], ecx
jmp 0x10003d84
movzx ecx, di
add ecx, 0xffffffdc
cmp ecx, 0x58
ja case.0x10003c11.37
movzx ecx, byte [ecx + 0x100044c4]
jmp dword [ecx*4 + 0x10004490]
test byte [esi + 0x18], bl
je 0x1000426f
cmp eax, edx
jae 0x1000426f
cmp word [eax], 0x3f
jne 0x1000426f
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.0x10003c59.34
movzx edx, byte [eax + 0x10004534]
jmp dword [edx*4 + 0x10004520]
mov edx, dword [esi + 8]
cmp ecx, edx
jae 0x10003c7b
mov eax, dword [esi + 4]
cmp word [eax], 0x29
je 0x10003c7b
add eax, 2
mov dword [esi + 4], eax
cmp eax, dword [esi + 8]
jb 0x10003c67
mov eax, dword [esi + 4]
cmp eax, edx
jae 0x10003d84
add eax, 2
mov dword [esi + 4], eax
jmp 0x10003d84
cmp eax, edx
jae 0x10003f1e
test byte [esi + 0x18], bl
je 0x10004393
mov eax, esi
call fcn.10004610
cmp dword [esi + 0x14], 0
jne 0x10003f1e
cmp dword [esi + 0x20], 0x43
jne 0x100043ee
movzx eax, word [esi + 0x24]
add eax, 0xffffffbc
cmp eax, 0x33
ja case.0x10003cd4.69
movzx ecx, byte [eax + 0x10004570]
jmp dword [ecx*4 + 0x10004554]
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], 0x100b9bb6
jmp 0x10003d7e
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], 0x100b9bd0
jmp 0x10003d7e
mov eax, dword [esi + 4]
mov ecx, dword [esi + 8]
mov dword [esi + 4], str.__:space:__
mov dword [esi + 8], 0x100b9bfa
jmp 0x10003d78
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], 0x100b9c14
jmp 0x10003d7e
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], 0x100b9c40
jmp 0x10003d7e
mov eax, dword [esi + 4]
mov ecx, dword [esi + 8]
mov dword [esi + 4], 0x100b9c40
mov dword [esi + 8], 0x100b9c5a
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 0x10003a90
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 0x10003dd0
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 0x10003dea
mov dword [esi + 0x14], 7
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
ret
movzx eax, di
call fcn.10004ba0
pop edi
pop esi
pop ebp
pop ebx
ret
movzx ecx, di
add ecx, 0xffffffd4
cmp ecx, 0x51
ja case.0x10003e14.45
movzx ecx, byte [ecx + 0x100045b8]
jmp dword [ecx*4 + 0x100045a4]
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.0x10003e14.45
mov dword [esi + 0x28], 1
test byte [esi + 0x18], bl
je 0x10003e81
cmp eax, dword [esi + 8]
jae 0x10003e81
cmp word [eax], 0x3f
jne 0x10003e81
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 0x10003eaa
mov dword [esi + 0x14], 0xa
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
ret
cmp dword [esi + 0x28], 5
jne case.0x10003e14.45
cmp eax, dword [esi + 8]
jae case.0x10003e14.45
cmp word [eax], 0x7d
jne case.0x10003e14.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 0x10003ef7
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 0x10003fac
cmp dword [esi + 0x14], 0
mov dword [esi + 0x20], 0x65
jne 0x10003f32
mov dword [esi + 0x14], 5
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
ret
cmp dword [esi + 0x1c], 0x5b
je case.0x10003c11.37
cmp eax, dword [esi + 8]
jae 0x10003f4a
cmp word [eax], 0x5d
je case.0x10003c11.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 0x10003f83
cmp dword [esi + 0x14], 0
mov dword [esi + 0x20], 0x65
jne 0x10003dea
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 0x10003ff8
cmp ecx, 0x3a
je 0x10003fd7
cmp ecx, 0x3d
je 0x10003fb6
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.0x10003c11.37
cmp eax, dword [esi + 8]
jae case.0x10003c11.37
cmp word [eax], 0x5d
jne case.0x10003c11.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.0x10003c11.37
cmp eax, dword [esi + 8]
jae case.0x10003c11.37
cmp word [eax], 0x5d
jne case.0x10003c11.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.0x10003c11.37
cmp eax, dword [esi + 8]
jae case.0x10003c11.37
cmp word [eax], 0x5d
jne case.0x10003c11.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 0x1000410f
cmp eax, dword [esi + 8]
jae 0x1000410f
cmp word [eax], 0x3f
jne 0x1000410f
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 0x10004156
cmp eax, dword [esi + 8]
jae 0x10004156
cmp word [eax], 0x3f
jne 0x10004156
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 0x1000419b
cmp eax, dword [esi + 8]
jae 0x1000419b
cmp word [eax], 0x3f
jne 0x1000419b
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 0x100041bf
mov eax, esi
call fcn.10004ef0
mov eax, dword [esi + 4]
cmp eax, dword [esi + 8]
jae 0x100041f3
movzx eax, word [eax]
push eax
call sym.tcl85.dll_Tcl_UniCharIsDigit
add esp, 4
test eax, eax
je 0x100041f3
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.0x10003c11.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 0x10004268
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 0x100041a2
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 0x1000429d
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 0x10004323
cmp word [eax], bx
jne 0x10004323
mov edi, 0x3a
cmp word [eax + 2], di
jne 0x10004323
movzx ecx, word [eax + 4]
cmp cx, 0x3c
je 0x100042e6
cmp cx, 0x3e
jne 0x10004323
cmp word [eax + 6], di
jne 0x10004323
mov edi, 0x5d
cmp word [eax + 8], di
jne 0x10004323
cmp word [eax + 0xa], di
jne 0x10004323
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 0x1000434d
cmp word [eax], 0x5e
jne 0x1000434d
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 0x100043b2
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 0x100043e7
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