Function at 0x460fc0
Capabilities:
Parse credit card information

Disassembly:
sub esp, 0x20
push ebx
push ebp
xor eax, eax
push esi
mov esi, ecx
mov ecx, dword [esp + 0x30]
mov edx, dword [esi + 8]
mov dword [ecx + 4], edx
mov dword [ecx + 0xc], eax
mov ecx, dword [esi + 8]
mov edx, dword [esi + 0xc]
lea ecx, [edx + ecx*2]
or ebx, 0xffffffff
push edi
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], eax
mov dword [esp + 0x18], eax
xor ebp, ebp
mov dword [esp + 0x28], eax
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], eax
mov dword [esp + 0x1c], ecx
mov edx, dword [esp + 0x1c]
movzx edi, word [edx]
cmp edi, eax
jne 0x4610a2
mov edi, dword [esi + 0x1c]
mov eax, edx
sub eax, dword [esi + 0xc]
sar eax, 1
test edi, edi
mov dword [esi + 8], eax
je 0x46171d
mov eax, dword [edi + 0xd4]
mov dword [esp + 0x2c], eax
call fcn.004609d0
test al, al
mov edx, dword [esp + 0x34]
je 0x461721
mov eax, dword [esi + 0x1c]
mov ecx, dword [edx + 4]
mov edi, dword [esi + 8]
mov eax, dword [eax + 0xd4]
sub edi, ecx
sub eax, dword [esp + 0x2c]
je 0x461074
sub ecx, eax
test ebp, ebp
mov dword [edx + 4], ecx
je 0x461065
sub ebp, eax
jmp 0x461071
cmp dword [esp + 0x28], 0
je 0x461071
sub dword [esi], eax
sub dword [esi + 4], eax
sub dword [esi + 8], eax
mov ecx, dword [esi + 0x1c]
mov eax, dword [edx + 4]
mov ecx, dword [ecx + 0x58]
add eax, edi
cmp dword [ecx + 0x18], 8
jb 0x46108a
mov ecx, dword [ecx + 4]
jmp 0x46108d
add ecx, 4
lea eax, [ecx + eax*2]
mov dword [esi + 0xc], ecx
movzx edi, word [eax]
test edi, edi
mov dword [esp + 0x1c], eax
je 0x461721
test ebp, ebp
je 0x4610e2
push edi
push 0x4c2e34
call int.00489cfb
add esp, 8
test eax, eax
je 0x46139a
mov ecx, dword [esp + 0x1c]
mov eax, ecx
sub eax, dword [esi + 0xc]
mov dword [esi], ebp
sar eax, 1
sub eax, ebp
lea edx, [eax + ebp - 1]
xor ebp, ebp
mov dword [esp + 0x28], eax
mov dword [esi + 4], edx
mov dword [esp + 0x24], ebp
mov dword [esp + 0x20], ebp
jmp 0x4610e6
mov ecx, dword [esp + 0x1c]
cmp dword [esp + 0x14], 0
je 0x461354
cmp edi, 0x3e
jne 0x4611c1
mov eax, dword [esp + 0x10]
test al, 0xc0
jne 0x4611dc
sub ecx, dword [esi + 0xc]
sar ecx, 1
lea eax, [ecx + 1]
mov ecx, dword [esp + 0x18]
cmp ecx, 1
mov dword [esi + 8], eax
jne 0x46115b
cmp ebx, ecx
mov dword [esp + 0x14], 0
jne 0x4611aa
cmp dword [esp + 0x20], 0x2f
jne 0x4611aa
cmp dword [esp + 0x24], 0
je 0x46114e
mov eax, dword [esp + 0x24]
push eax
push 0x4c2e44
call int.00489cfb
add esp, 8
test eax, eax
je 0x4611aa
mov eax, dword [esp + 0x34]
or dword [eax + 0xc], 0x10000
jmp 0x4611aa
add eax, 0xffffffff
cmp eax, ecx
jle 0x46139a
mov ecx, dword [esp + 0x18]
mov eax, dword [esp + 0x1c]
lea edx, [ecx + ecx]
sub eax, edx
mov dword [esp + 0x2c], ecx
mov ecx, dword [esp + 0x14]
add eax, 2
sub ecx, eax
sub dword [esp + 0x2c], 1
je 0x4611a2
mov dx, word [eax]
mov di, word [eax + ecx]
add eax, 2
cmp dx, di
je 0x461180
add dword [esp + 0x1c], 2
xor eax, eax
jmp 0x461002
mov dword [esp + 0x14], 0
test byte [esp + 0x10], 0x20
je 0x4616ba
add dword [esp + 0x1c], 2
xor eax, eax
jmp 0x461002
cmp edi, 0x3c
jne 0x4611d8
cmp ebx, 2
je 0x4617d2
cmp ebx, 0xffffffff
je 0x4617d2
mov eax, dword [esp + 0x10]
test bl, 1
je 0x461311
test al, 0xc0
je 0x461247
cmp edi, 0x22
jne 0x461217
test al, al
jns 0x4612f9
add dword [esp + 0x1c], 2
xor eax, 0x80
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x20]
mov dword [esp + 0x24], eax
mov dword [esp + 0x20], edi
xor eax, eax
jmp 0x461002
cmp edi, 0x27
jne 0x4612f9
test al, 0x40
je 0x4612f9
add dword [esp + 0x1c], 2
xor eax, 0x40
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x20]
mov dword [esp + 0x24], eax
mov dword [esp + 0x20], edi
xor eax, eax
jmp 0x461002
cmp edi, 0x22
jne 0x461278
test eax, 0x100
je 0x4612f9
add dword [esp + 0x1c], 2
xor eax, 0x180
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x20]
mov dword [esp + 0x24], eax
mov dword [esp + 0x20], edi
xor eax, eax
jmp 0x461002
cmp edi, 0x27
jne 0x4612a5
test eax, 0x100
je 0x4612f9
add dword [esp + 0x1c], 2
xor eax, 0x140
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x20]
mov dword [esp + 0x24], eax
mov dword [esp + 0x20], edi
xor eax, eax
jmp 0x461002
cmp edi, 0x3d
jne 0x4612d8
cmp dword [esp + 0x20], edi
je 0x4612d8
test eax, 0x100
jne 0x4612df
add dword [esp + 0x1c], 2
xor eax, 0x100
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x20]
mov dword [esp + 0x24], eax
mov dword [esp + 0x20], edi
xor eax, eax
jmp 0x461002
test eax, 0x100
je 0x4612f9
push edi
push 0x4c2bd8
call int.00489cfb
add esp, 8
test eax, eax
jne 0x4612f9
xor dword [esp + 0x10], 0x100
mov eax, dword [esp + 0x20]
add dword [esp + 0x1c], 2
mov dword [esp + 0x24], eax
mov dword [esp + 0x20], edi
xor eax, eax
jmp 0x461002
test bl, 0x40
je 0x46139a
cmp edi, 0x22
jne 0x461338
test al, 0x40
jne 0x46139a
add dword [esp + 0x1c], 2
xor eax, 0x80
mov dword [esp + 0x10], eax
xor eax, eax
jmp 0x461002
cmp edi, 0x27
jne 0x46139a
test al, al
js 0x46139a
add dword [esp + 0x1c], 2
xor eax, 0x40
mov dword [esp + 0x10], eax
xor eax, eax
jmp 0x461002
mov edx, dword [esp + 0x10]
test edx, edx
je 0x4616d5
test dl, 0x10
je 0x4613a6
cmp edi, 0x3c
je 0x4617df
push edi
push 0x4c2bd8
call int.00489cfb
add esp, 8
test eax, eax
jne 0x46139a
xor dword [esp + 0x10], 0x10
mov ebx, 2
mov dword [esp + 0x18], 1
mov dword [esp + 0x14], 0x4c2e54
add dword [esp + 0x1c], 2
xor eax, eax
jmp 0x461002
test dl, 1
je 0x461494
mov eax, 1
xor edx, eax
cmp edi, 0x60
mov dword [esp + 0x10], edx
ja 0x461473
cmp edi, 0x40
jbe 0x4613d1
cmp edi, 0x5b
jb 0x461473
cmp edi, 0x5f
je 0x461473
cmp edi, 0x3a
je 0x461473
cmp edi, 0x2f
jne 0x46140b
add dword [esp + 0x1c], 2
mov ebp, ecx
sub ebp, dword [esi + 0xc]
mov dword [esp + 0x18], eax
sar ebp, 1
xor ebx, ebx
add ebp, eax
mov dword [esp + 0x14], 0x4c2e58
xor eax, eax
jmp 0x461002
cmp edi, 0x21
jne 0x461423
add dword [esp + 0x1c], 2
or edx, 2
mov dword [esp + 0x10], edx
xor eax, eax
jmp 0x461002
cmp edi, 0x3f
jne 0x461450
add dword [esp + 0x1c], 2
mov ebp, ecx
sub ebp, dword [esi + 0xc]
mov dword [esp + 0x14], 0x4c2e5c
sar ebp, 1
add ebp, eax
mov dword [esp + 0x18], 2
lea ebx, [edi - 0x2f]
xor eax, eax
jmp 0x461002
mov ecx, dword [esi + 8]
push 0xffffffffffffffff
push ecx
push 0
push ecx
mov dword [esp + 0x28], eax
mov eax, esp
mov dword [eax], 0
push ecx
mov eax, esp
mov dword [eax], 0x4c2e64
jmp 0x4615de
add dword [esp + 0x1c], 2
mov ebp, ecx
sub ebp, dword [esi + 0xc]
mov dword [esp + 0x18], eax
mov ebx, eax
sar ebp, 1
mov dword [esp + 0x14], 0x4c2e58
xor eax, eax
jmp 0x461002
test dl, 2
je 0x46158c
xor edx, 2
cmp edi, 0x2d
mov dword [esp + 0x10], edx
jne 0x4614bc
add dword [esp + 0x1c], 2
or edx, 4
mov dword [esp + 0x10], edx
xor eax, eax
jmp 0x461002
test dl, 0x20
je 0x461513
push edi
push 0x4c2e88
call int.00489cfb
add esp, 8
test eax, eax
mov dword [esp + 0x14], 0x4c2e58
mov dword [esp + 0x18], 1
je 0x4614f4
add dword [esp + 0x1c], 2
mov ebx, 0x40
xor eax, eax
jmp 0x461002
mov eax, dword [esi + 8]
push 0xffffffffffffffff
push eax
push 0
push ecx
mov eax, esp
mov dword [eax], 0
push ecx
mov eax, esp
mov dword [eax], 0x4c2e90
jmp 0x46165f
cmp edi, 0x5b
jne 0x46152b
add dword [esp + 0x1c], 2
or edx, 8
mov dword [esp + 0x10], edx
xor eax, eax
jmp 0x461002
cmp edi, 0x44
jne 0x461543
add dword [esp + 0x1c], 2
or edx, 0x20
mov dword [esp + 0x10], edx
xor eax, eax
jmp 0x461002
mov edx, dword [esi + 8]
push 0xffffffffffffffff
push edx
push 0
push ecx
mov eax, esp
mov dword [eax], 0
push ecx
mov eax, esp
mov dword [eax], 0x4c2eb8
mov eax, dword [esp + 0x48]
add eax, 0x10
push eax
mov dword [esp + 0x2c], 0x4c2e58
mov dword [esp + 0x30], 1
call fcn.0045e220
add dword [esp + 0x34], 2
add esp, 0x18
or ebx, 0xffffffff
xor eax, eax
jmp 0x461002
test dl, 4
je 0x461605
xor edx, 4
cmp edi, 0x2d
mov dword [esp + 0x10], edx
jne 0x4615bc
add dword [esp + 0x1c], 2
mov dword [esp + 0x14], 0x4c2ee8
mov dword [esp + 0x18], 3
lea ebx, [edi - 0xd]
xor eax, eax
jmp 0x461002
mov ecx, dword [esi + 8]
push 0xffffffffffffffff
push ecx
push 0
push ecx
mov eax, esp
mov dword [eax], 0
push ecx
mov eax, esp
mov dword [esp + 0x2c], 1
mov dword [eax], 0x4c2ef0
mov edx, dword [esp + 0x48]
add edx, 0x10
push edx
mov dword [esp + 0x2c], 0x4c2e58
call fcn.0045e220
add dword [esp + 0x34], 2
add esp, 0x18
or ebx, 0xffffffff
xor eax, eax
jmp 0x461002
test dl, 8
je 0x46167e
xor edx, 8
cmp edi, 0x43
mov dword [esp + 0x10], edx
jne 0x461635
add dword [esp + 0x1c], 2
mov dword [esp + 0x14], 0x4c2f18
mov dword [esp + 0x18], 3
lea ebx, [edi - 0x3b]
xor eax, eax
jmp 0x461002
mov eax, dword [esi + 8]
push 0xffffffffffffffff
push eax
push 0
push ecx
mov eax, esp
mov dword [eax], 0
push ecx
mov eax, esp
mov dword [esp + 0x28], 0x4c2e58
mov dword [esp + 0x2c], 1
mov dword [eax], 0x4c2f20
mov ecx, dword [esp + 0x48]
add ecx, 0x10
push ecx
call fcn.0045e220
add dword [esp + 0x34], 2
add esp, 0x18
or ebx, 0xffffffff
xor eax, eax
jmp 0x461002
test dl, 0x20
je 0x46139a
cmp edi, 0x3c
jne 0x46169f
add dword [esp + 0x1c], 2
or edx, 1
mov dword [esp + 0x10], edx
xor eax, eax
jmp 0x461002
cmp edi, 0x3e
jne 0x46139a
mov eax, dword [esp + 0x1c]
sub eax, dword [esi + 0xc]
lea ebx, [edi + 2]
sar eax, 1
add eax, 1
mov dword [esi + 8], eax
mov eax, dword [esp + 0x34]
mov ecx, dword [esi + 8]
sub ecx, dword [eax + 4]
mov dword [eax], ebx
mov dword [eax + 8], ecx
mov eax, ebx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret 4
cmp edi, 0x3c
jne 0x4616ee
add dword [esp + 0x1c], 2
mov dword [esp + 0x10], 1
xor eax, eax
jmp 0x461002
push edi
push 0x4c2bd8
mov ebx, 4
call int.00489cfb
add esp, 8
test eax, eax
je 0x461385
add dword [esp + 0x1c], 2
mov dword [esp + 0x10], 0x10
xor eax, eax
jmp 0x461002
mov edx, dword [esp + 0x34]
mov eax, dword [edx + 4]
cmp dword [esi + 8], eax
jne 0x461745
pop edi
pop esi
pop ebp
mov dword [edx + 8], 0
mov dword [edx], 0
mov eax, 0xfffffffe
pop ebx
add esp, 0x20
ret 4
cmp ebx, 4
je 0x4616ba
cmp ebx, 2
je 0x4616ba
test byte [esp + 0x10], 0x20
mov ecx, 0x4c2d60
jne 0x4617a3
cmp ebx, 0x40
je 0x4617a3
cmp ebx, 1
jne 0x461774
mov ecx, 0x4c2d84
jmp 0x4617a8
test ebx, ebx
jne 0x46177f
mov ecx, 0x4c2d98
jmp 0x4617a8
cmp ebx, 8
jne 0x46178b
mov ecx, 0x4c2da8
jmp 0x4617a8
cmp ebx, 0x10
jne 0x461797
mov ecx, 0x4c2dc4
jmp 0x4617a8
cmp ebx, 0x20
jne 0x4617a8
mov ecx, 0x4c2df4
jmp 0x4617a8
mov ecx, 0x4c2d68
mov edx, dword [esp + 0x34]
or ebx, 0xffffffff
push ebx
push eax
push 2
push ecx
mov eax, esp
push ecx
mov dword [eax], ecx
mov eax, esp
add edx, 0x10
push edx
mov dword [eax], 0x4c2e04
call fcn.0045e220
add esp, 0x18
jmp 0x4616ba
sub ecx, dword [esi + 0xc]
sar ecx, 1
mov dword [esi + 8], ecx
jmp 0x4616ba
sub ecx, dword [esi + 0xc]
mov ebx, 4
sar ecx, 1
mov dword [esi + 8], ecx
jmp 0x4616ba