Function at 0x4ca600
Capabilities:
Parse credit card information

Disassembly:
mov ecx, dword [0x7762b4]
mov ecx, dword fs:[ecx]
mov ecx, dword [ecx]
cmp esp, dword [ecx + 8]
jbe 0x4cb164
sub esp, 0x58
mov eax, dword [esp + 0x5c]
mov ecx, dword [eax + 0x34]
test ecx, ecx
jne 0x4cafc0
mov dword [esp], eax
call sym.go_scanner._Scanner_.skipWhitespace
mov eax, dword [esp + 0x5c]
mov ecx, dword [eax]
mov edx, dword [eax + 0x24]
cmp dword [ecx + 0xc], edx
jl 0x4cb0ac
mov dword [esp + 0x20], edx
mov edx, dword [eax + 0x20]
mov dword [esp + 0x28], edx
mov ecx, dword [ecx + 8]
mov dword [esp + 0x30], ecx
mov dword [esp], edx
call sym.go_scanner.isLetter
movzx eax, byte [esp + 4]
mov ecx, dword [esp + 0x30]
mov edx, dword [esp + 0x20]
add ecx, edx
mov dword [esp + 0x30], ecx
test al, al
jne 0x4caef8
mov edx, dword [esp + 0x28]
lea ebx, [edx - 0x30]
cmp ebx, 9
jbe 0x4caed2
cmp edx, 0x2e
jne 0x4ca6ba
mov ebx, dword [esp + 0x5c]
mov eax, dword [ebx + 0x28]
mov ebp, dword [ebx + 0x10]
cmp ebp, eax
jle 0x4ca6a8
jbe 0x4cb0a5
mov ebp, dword [ebx + 0xc]
movzx eax, byte [ebp + eax]
jmp 0x4ca6aa
xor eax, eax
movzx eax, al
add eax, 0xffffffd0
cmp eax, 9
ja 0x4ca6be
jmp 0x4caed6
mov ebx, dword [esp + 0x5c]
mov dword [esp], ebx
call sym.go_scanner._Scanner_.next
mov eax, dword [esp + 0x28]
cmp eax, 0x2e
jle 0x4ca9fb
cmp eax, 0x5b
jg 0x4ca8d9
cmp eax, 0x3b
jg 0x4ca7d7
cmp eax, 0x2f
jne 0x4ca781
mov eax, dword [esp + 0x5c]
mov ecx, dword [eax + 0x20]
cmp ecx, 0x2f
je 0x4ca6ff
cmp ecx, 0x2a
jne 0x4ca759
mov dword [esp], eax
call sym.go_scanner._Scanner_.scanComment
mov eax, dword [esp + 0x5c]
movzx ecx, byte [eax + 0x30]
mov edx, dword [esp + 4]
mov ebx, dword [esp + 8]
test cl, cl
je 0x4ca73c
mov ebp, dword [esp + 0xc]
test ebp, ebp
je 0x4ca73c
mov ecx, dword [eax]
cmp dword [ecx + 0xc], ebp
jl 0x4cafee
mov esi, dword [ecx + 8]
add ebp, esi
mov dword [eax + 0x34], ebp
mov byte [eax + 0x30], 0
xor ecx, ecx
mov ebp, dword [eax + 0x1c]
test ebp, 1
je 0x4ca617
mov ebp, edx
mov edx, ecx
mov ecx, 2
jmp 0x4caf9a
cmp ecx, 0x3d
je 0x4ca765
mov ecx, 0xf
jmp 0x4ca776
mov dword [esp], eax
call sym.go_scanner._Scanner_.next
mov eax, dword [esp + 0x5c]
mov ecx, 0x1a
xor edx, edx
xor ebx, ebx
xor ebp, ebp
jmp 0x4caf9a
cmp eax, 0x3a
jne 0x4ca7b3
mov eax, dword [esp + 0x5c]
cmp dword [eax + 0x20], 0x3d
je 0x4ca797
mov ecx, 0x3a
jmp 0x4ca7a8
mov dword [esp], eax
call sym.go_scanner._Scanner_.next
mov eax, dword [esp + 0x5c]
mov ecx, 0x2f
xor edx, edx
xor ebx, ebx
xor ebp, ebp
jmp 0x4caf9a
cmp eax, 0x3b
jne 0x4cab05
mov eax, dword [esp + 0x5c]
xor edx, edx
mov ebx, 1
mov ecx, 0x39
lea ebp, [0x5ecd18]
jmp 0x4caf9a
cmp eax, 0x3d
jg 0x4ca870
cmp eax, 0x3c
jne 0x4ca843
mov eax, dword [esp + 0x5c]
cmp dword [eax + 0x20], 0x2d
jne 0x4ca7fe
mov dword [esp], eax
call sym.go_scanner._Scanner_.next
mov eax, 0x24
jmp 0x4ca832
mov dword [esp], eax
mov dword [esp + 4], 0x28
mov dword [esp + 8], 0x2d
mov dword [esp + 0xc], 0x3c
mov dword [esp + 0x10], 0x14
mov dword [esp + 0x14], 0x1f
call sym.go_scanner._Scanner_.switch4
mov eax, dword [esp + 0x18]
xor edx, edx
xor ebx, ebx
mov ecx, eax
xor ebp, ebp
mov eax, dword [esp + 0x5c]
jmp 0x4caf9a
mov eax, dword [esp + 0x5c]
cmp dword [eax + 0x20], 0x3d
je 0x4ca854
mov ecx, 0x2a
jmp 0x4ca865
mov dword [esp], eax
call sym.go_scanner._Scanner_.next
mov eax, dword [esp + 0x5c]
mov ecx, 0x27
xor edx, edx
xor ebx, ebx
xor ebp, ebp
jmp 0x4caf9a
cmp eax, 0x3e
je 0x4ca892
cmp eax, 0x5b
jne 0x4cab05
mov eax, dword [esp + 0x5c]
xor edx, edx
xor ebx, ebx
mov ecx, 0x32
xor ebp, ebp
jmp 0x4caf9a
mov eax, dword [esp + 0x5c]
mov dword [esp], eax
mov dword [esp + 4], 0x29
mov dword [esp + 8], 0x2e
mov dword [esp + 0xc], 0x3e
mov dword [esp + 0x10], 0x15
mov dword [esp + 0x14], 0x20
call sym.go_scanner._Scanner_.switch4
mov ecx, dword [esp + 0x18]
mov eax, dword [esp + 0x5c]
xor edx, edx
xor ebx, ebx
xor ebp, ebp
jmp 0x4caf9a
cmp eax, 0x60
jg 0x4ca95c
cmp eax, 0x5d
jne 0x4ca8fa
mov eax, dword [esp + 0x5c]
mov edx, 1
xor ebx, ebx
mov ecx, 0x37
xor ebp, ebp
jmp 0x4caf9a
cmp eax, 0x5e
jne 0x4ca92c
mov eax, dword [esp + 0x5c]
cmp dword [eax + 0x20], 0x3d
je 0x4ca910
mov ecx, 0x13
jmp 0x4ca921
mov dword [esp], eax
call sym.go_scanner._Scanner_.next
mov eax, dword [esp + 0x5c]
mov ecx, 0x1e
xor edx, edx
xor ebx, ebx
xor ebp, ebp
jmp 0x4caf9a
cmp eax, 0x60
jne 0x4cab05
mov eax, dword [esp + 0x5c]
mov dword [esp], eax
call sym.go_scanner._Scanner_.scanRawString
mov ebp, dword [esp + 4]
mov ebx, dword [esp + 8]
mov eax, dword [esp + 0x5c]
mov edx, 1
mov ecx, 9
jmp 0x4caf9a
cmp eax, 0x7c
jg 0x4ca9c2
cmp eax, 0x7b
jne 0x4ca97a
mov eax, dword [esp + 0x5c]
xor edx, edx
xor ebx, ebx
mov ecx, 0x33
xor ebp, ebp
jmp 0x4caf9a
cmp eax, 0x7c
jne 0x4cab05
mov eax, dword [esp + 0x5c]
mov dword [esp], eax
mov dword [esp + 4], 0x12
mov dword [esp + 8], 0x1d
mov dword [esp + 0xc], 0x7c
mov dword [esp + 0x10], 0x23
call sym.go_scanner._Scanner_.switch3
mov ecx, dword [esp + 0x14]
mov eax, dword [esp + 0x5c]
xor edx, edx
xor ebx, ebx
xor ebp, ebp
jmp 0x4caf9a
cmp eax, 0x7d
jne 0x4ca9de
mov eax, dword [esp + 0x5c]
mov edx, 1
xor ebx, ebx
mov ecx, 0x38
xor ebp, ebp
jmp 0x4caf9a
cmp eax, 0x7e
jne 0x4cab05
mov eax, dword [esp + 0x5c]
xor edx, edx
xor ebx, ebx
mov ecx, 0x58
xor ebp, ebp
jmp 0x4caf9a
cmp eax, 0x27
jg 0x4cad5e
cmp eax, 0x21
jg 0x4caac1
cmp eax, 0xffffffff
jne 0x4caa58
mov eax, dword [esp + 0x5c]
movzx ecx, byte [eax + 0x30]
test cl, cl
jne 0x4caa2e
xor edx, edx
xor ebx, ebx
mov ecx, 1
xor ebp, ebp
jmp 0x4caf9a
mov byte [eax + 0x30], 0
mov eax, dword [esp + 0x30]
mov dword [esp + 0x60], eax
mov dword [esp + 0x64], 0x39
lea eax, str._n_tX__0
mov dword [esp + 0x68], eax
mov dword [esp + 0x6c], 1
add esp, 0x58
ret
cmp eax, 0xa
je 0x4caa93
cmp eax, 0x21
jne 0x4cab05
mov eax, dword [esp + 0x5c]
cmp dword [eax + 0x20], 0x3d
je 0x4caa77
mov ecx, 0x2b
jmp 0x4caa88
mov dword [esp], eax
call sym.go_scanner._Scanner_.next
mov eax, dword [esp + 0x5c]
mov ecx, 0x2c
xor edx, edx
xor ebx, ebx
xor ebp, ebp
jmp 0x4caf9a
mov eax, dword [esp + 0x5c]
mov byte [eax + 0x30], 0
mov eax, dword [esp + 0x30]
mov dword [esp + 0x60], eax
mov dword [esp + 0x64], 0x39
lea eax, str._n_tX__0
mov dword [esp + 0x68], eax
mov dword [esp + 0x6c], 1
add esp, 0x58
ret
cmp eax, 0x25
jg 0x4cacc1
cmp eax, 0x22
je 0x4cac9a
cmp eax, 0x25
jne 0x4cab05
mov eax, dword [esp + 0x5c]
cmp dword [eax + 0x20], 0x3d
je 0x4caae9
mov ecx, 0x10
jmp 0x4caafa
mov dword [esp], eax
call sym.go_scanner._Scanner_.next
mov eax, dword [esp + 0x5c]
mov ecx, 0x1b
xor edx, edx
xor ebx, ebx
xor ebp, ebp
jmp 0x4caf9a
cmp eax, 0xfeff
je 0x4cac5d
cmp eax, 0x201c
je 0x4cab22
cmp eax, 0x201d
jne 0x4cabcf
mov eax, dword [esp + 0x5c]
mov ecx, dword [eax]
mov dword [esp], ecx
mov ecx, dword [esp + 0x30]
mov dword [esp + 4], ecx
call sym.go_token._File_.Offset
mov eax, dword [esp + 8]
mov dword [esp + 0x2c], eax
mov dword [esp + 0x48], 0
mov dword [esp + 0x4c], 0
mov dword [esp + 0x50], 0
mov dword [esp + 0x54], 0
mov ecx, dword [esp + 0x28]
mov dword [esp], ecx
call sym.runtime.convT32
mov eax, dword [esp + 4]
lea ecx, [0x5c2cc0]
mov dword [esp + 0x48], ecx
mov dword [esp + 0x4c], eax
mov dword [esp + 0x50], ecx
lea eax, [0x633354]
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0x5c]
mov dword [esp], eax
mov ecx, dword [esp + 0x2c]
mov dword [esp + 4], ecx
lea ecx, [0x5fa3eb]
mov dword [esp + 8], ecx
mov dword [esp + 0xc], 0x28
lea ecx, [esp + 0x48]
mov dword [esp + 0x10], ecx
mov dword [esp + 0x14], 2
mov dword [esp + 0x18], 2
call sym.go_scanner._Scanner_.errorf
jmp 0x4cac59
mov eax, dword [esp + 0x5c]
mov ecx, dword [eax]
mov dword [esp], ecx
mov ecx, dword [esp + 0x30]
mov dword [esp + 4], ecx
call sym.go_token._File_.Offset
mov eax, dword [esp + 8]
mov dword [esp + 0x2c], eax
mov dword [esp + 0x40], 0
mov dword [esp + 0x44], 0
mov ecx, dword [esp + 0x28]
mov dword [esp], ecx
call sym.runtime.convT32
mov eax, dword [esp + 4]
lea ecx, [0x5c2cc0]
mov dword [esp + 0x40], ecx
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x5c]
mov dword [esp], eax
mov ecx, dword [esp + 0x2c]
mov dword [esp + 4], ecx
lea ecx, [0x5f2eef]
mov dword [esp + 8], ecx
mov dword [esp + 0xc], 0x15
lea ecx, [esp + 0x40]
mov dword [esp + 0x10], ecx
mov dword [esp + 0x14], 1
mov dword [esp + 0x18], 1
call sym.go_scanner._Scanner_.errorf
mov eax, dword [esp + 0x28]
mov ecx, eax
sar eax, 0x1f
mov edx, dword [esp + 0x5c]
movzx ebx, byte [edx + 0x30]
mov byte [esp + 0x1f], bl
mov dword [esp], 0
mov dword [esp + 4], ecx
mov dword [esp + 8], eax
call sym.runtime.intstring
mov ebp, dword [esp + 0xc]
mov ebx, dword [esp + 0x10]
mov eax, dword [esp + 0x5c]
movzx edx, byte [esp + 0x1f]
xor ecx, ecx
jmp 0x4caf9a
mov eax, dword [esp + 0x5c]
mov dword [esp], eax
call sym.go_scanner._Scanner_.scanString
mov ebp, dword [esp + 4]
mov ebx, dword [esp + 8]
mov eax, dword [esp + 0x5c]
mov edx, 1
mov ecx, 9
jmp 0x4caf9a
cmp eax, 0x26
jne 0x4cad37
mov eax, dword [esp + 0x5c]
cmp dword [eax + 0x20], 0x5e
jne 0x4cacfc
mov dword [esp], eax
call sym.go_scanner._Scanner_.next
mov eax, dword [esp + 0x5c]
cmp dword [eax + 0x20], 0x3d
je 0x4cace9
mov ecx, 0x16
jmp 0x4cad2c
mov dword [esp], eax
call sym.go_scanner._Scanner_.next
mov eax, dword [esp + 0x5c]
mov ecx, 0x21
jmp 0x4cad2c
mov dword [esp], eax
mov dword [esp + 4], 0x11
mov dword [esp + 8], 0x1c
mov dword [esp + 0xc], 0x26
mov dword [esp + 0x10], 0x22
call sym.go_scanner._Scanner_.switch3
mov ecx, dword [esp + 0x14]
mov eax, dword [esp + 0x5c]
xor edx, edx
xor ebx, ebx
xor ebp, ebp
jmp 0x4caf9a
mov eax, dword [esp + 0x5c]
mov dword [esp], eax
call sym.go_scanner._Scanner_.scanRune
mov ebp, dword [esp + 4]
mov ebx, dword [esp + 8]
mov eax, dword [esp + 0x5c]
mov edx, 1
mov ecx, 8
jmp 0x4caf9a
cmp eax, 0x2a
jg 0x4cadc5
cmp eax, 0x28
jne 0x4cad7c
mov eax, dword [esp + 0x5c]
xor edx, edx
xor ebx, ebx
mov ecx, 0x31
xor ebp, ebp
jmp 0x4caf9a
cmp eax, 0x29
jne 0x4cad98
mov eax, dword [esp + 0x5c]
mov edx, 1
xor ebx, ebx
mov ecx, 0x36
xor ebp, ebp
jmp 0x4caf9a
mov eax, dword [esp + 0x5c]
cmp dword [eax + 0x20], 0x3d
je 0x4cada9
mov ecx, 0xe
jmp 0x4cadba
mov dword [esp], eax
call sym.go_scanner._Scanner_.next
mov eax, dword [esp + 0x5c]
mov ecx, 0x19
xor edx, edx
xor ebx, ebx
xor ebp, ebp
jmp 0x4caf9a
cmp eax, 0x2c
jg 0x4cae26
cmp eax, 0x2b
je 0x4cade3
mov eax, dword [esp + 0x5c]
xor edx, edx
xor ebx, ebx
mov ecx, 0x34
xor ebp, ebp
jmp 0x4caf9a
mov eax, dword [esp + 0x5c]
mov dword [esp], eax
mov dword [esp + 4], 0xc
mov dword [esp + 8], 0x17
mov dword [esp + 0xc], 0x2b
mov dword [esp + 0x10], 0x25
call sym.go_scanner._Scanner_.switch3
mov ecx, dword [esp + 0x14]
cmp ecx, 0x25
sete dl
mov eax, dword [esp + 0x5c]
xor ebx, ebx
xor ebp, ebp
jmp 0x4caf9a
cmp eax, 0x2d
je 0x4cae8f
mov edx, dword [esp + 0x5c]
cmp dword [edx + 0x20], 0x2e
jne 0x4cae7b
mov eax, dword [edx + 0x28]
mov ecx, dword [edx + 0x10]
cmp eax, ecx
jge 0x4cae4e
jae 0x4cafe9
mov ecx, dword [edx + 0xc]
movzx eax, byte [ecx + eax]
jmp 0x4cae50
xor eax, eax
cmp al, 0x2e
je 0x4cae5c
mov eax, 0x35
jmp 0x4cae80
mov dword [esp], edx
call sym.go_scanner._Scanner_.next
mov eax, dword [esp + 0x5c]
mov dword [esp], eax
call sym.go_scanner._Scanner_.next
mov edx, dword [esp + 0x5c]
mov eax, 0x30
jmp 0x4cae80
mov eax, 0x35
xor ebx, ebx
mov ecx, eax
xor ebp, ebp
mov eax, edx
xor edx, edx
jmp 0x4caf9a
mov eax, dword [esp + 0x5c]
mov dword [esp], eax
mov dword [esp + 4], 0xd
mov dword [esp + 8], 0x18
mov dword [esp + 0xc], 0x2d
mov dword [esp + 0x10], 0x26
call sym.go_scanner._Scanner_.switch3
mov ecx, dword [esp + 0x14]
cmp ecx, 0x26
sete dl
mov eax, dword [esp + 0x5c]
xor ebx, ebx
xor ebp, ebp
jmp 0x4caf9a
mov ebx, dword [esp + 0x5c]
mov dword [esp], ebx
call sym.go_scanner._Scanner_.scanNumber
mov ecx, dword [esp + 4]
mov ebp, dword [esp + 8]
mov ebx, dword [esp + 0xc]
mov eax, dword [esp + 0x5c]
mov edx, 1
jmp 0x4caf9a
mov eax, dword [esp + 0x5c]
mov dword [esp], eax
call sym.go_scanner._Scanner_.scanIdentifier
mov eax, dword [esp + 8]
mov ecx, dword [esp + 4]
cmp eax, 1
jg 0x4caf1d
mov edx, 1
mov ebx, 4
jmp 0x4caf90
mov dword [esp + 0x24], eax
mov dword [esp + 0x34], ecx
mov edx, dword [0x736e50]
lea ebx, [0x5c41c0]
mov dword [esp], ebx
mov dword [esp + 4], edx
mov dword [esp + 8], ecx
mov dword [esp + 0xc], eax
call sym.runtime.mapaccess2_faststr
movzx eax, byte [esp + 0x14]
test al, al
je 0x4caf56
mov eax, dword [esp + 0x10]
mov eax, dword [eax]
jmp 0x4caf5b
mov eax, 4
cmp eax, 0x3d
jg 0x4caf6c
cmp eax, 4
je 0x4caf7b
cmp eax, 0x3d
je 0x4caf7b
jmp 0x4caf82
cmp eax, 0x41
je 0x4caf7b
cmp eax, 0x45
je 0x4caf7b
cmp eax, 0x50
jne 0x4caf82
mov ecx, 1
jmp 0x4caf84
xor ecx, ecx
mov edx, ecx
mov ebx, eax
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x34]
mov ebp, ecx
mov ecx, ebx
mov ebx, eax
mov eax, dword [esp + 0x5c]
mov esi, dword [eax + 0x1c]
test esi, 2
jne 0x4cafa8
mov byte [eax + 0x30], dl
mov eax, dword [esp + 0x30]
mov dword [esp + 0x60], eax
mov dword [esp + 0x64], ecx
mov dword [esp + 0x68], ebp
mov dword [esp + 0x6c], ebx
add esp, 0x58
ret
mov dword [eax + 0x34], 0
mov dword [esp + 0x60], ecx
mov dword [esp + 0x64], 0x39
lea eax, str._n_tX__0
mov dword [esp + 0x68], eax
mov dword [esp + 0x6c], 1
add esp, 0x58
ret
call sym.runtime.panicIndex
mov dword [esp + 0x38], ecx
mov dword [esp + 0x48], 0
mov dword [esp + 0x4c], 0
mov dword [esp + 0x50], 0
mov dword [esp + 0x54], 0
mov dword [esp], ebp
call sym.runtime.convT32
mov eax, dword [esp + 4]
lea ecx, [0x5c2dc0]
mov dword [esp + 0x48], ecx
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x38]
mov eax, dword [eax + 0xc]
mov dword [esp], eax
call sym.runtime.convT32
mov eax, dword [esp + 4]
lea ecx, [0x5c2dc0]
mov dword [esp + 0x50], ecx
mov dword [esp + 0x54], eax
lea eax, [0x5fa39b]
mov dword [esp], eax
mov dword [esp + 4], 0x28
lea eax, [esp + 0x48]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 2
mov dword [esp + 0x10], 2
call sym.fmt.Sprintf
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x18]
mov dword [esp], eax
mov dword [esp + 4], ecx
call sym.runtime.convTstring
mov eax, dword [esp + 8]
lea ecx, [0x5c2b80]
mov dword [esp], ecx
mov dword [esp + 4], eax
call sym.runtime.gopanic
mov ecx, ebp
call sym.runtime.panicIndex
mov dword [esp + 0x3c], ecx
mov dword [esp + 0x48], 0
mov dword [esp + 0x4c], 0
mov dword [esp + 0x50], 0
mov dword [esp + 0x54], 0
mov dword [esp], edx
call sym.runtime.convT32
mov eax, dword [esp + 4]
lea ecx, [0x5c2dc0]
mov dword [esp + 0x48], ecx
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x3c]
mov eax, dword [eax + 0xc]
mov dword [esp], eax
call sym.runtime.convT32
mov eax, dword [esp + 4]
lea ecx, [0x5c2dc0]
mov dword [esp + 0x50], ecx
mov dword [esp + 0x54], eax
lea eax, [0x5fa39b]
mov dword [esp], eax
mov dword [esp + 4], 0x28
lea eax, [esp + 0x48]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 2
mov dword [esp + 0x10], 2
call sym.fmt.Sprintf
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x18]
mov dword [esp], eax
mov dword [esp + 4], ecx
call sym.runtime.convTstring
mov eax, dword [esp + 8]
lea ecx, [0x5c2b80]
mov dword [esp], ecx
mov dword [esp + 4], eax
call sym.runtime.gopanic
nop
call sym.runtime.morestack_noctxt
jmp sym.go_scanner._Scanner_.Scan