Function at 0x4f22b0
Capabilities:
Parse credit card information

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x58
push ebx
push esi
push edi
push dword [0x9da68c]
mov edi, ecx
call dword [0x70218c]
test eax, eax
je 0x4f22d0
cmp byte [eax], 0
je 0x4f22d2
xor eax, eax
mov esi, dword [eax + 0x17c]
lea ecx, [ebp - 0x58]
push 1
push dword [ebp + 8]
push edi
push esi
call fcn.004e0470
mov eax, dword [edi + 4]
push esi
mov ebx, dword [eax + 0xb]
call fcn.004b7530
mov ecx, eax
add esp, 4
mov eax, dword [0x9da9f8]
mov edx, 0x27
cmp ebx, eax
je 0x4f232c
mov dword [ecx + 4], ebx
test bl, 1
jne 0x4f2317
mov eax, dword [0x9dee94]
mov dword [ecx], eax
jmp 0x4f2335
movzx eax, word [ebx + 1]
cmp eax, 0x7c
cmovae eax, edx
mov eax, dword [eax*4 + 0x9deea0]
mov dword [ecx], eax
jmp 0x4f2335
mov dword [ecx + 4], eax
mov dword [ecx], 0x931b98
mov eax, dword [ecx + 4]
push 0
mov eax, dword [eax + 3]
sar eax, 1
push eax
call fcn.005051c0
push esi
mov ebx, eax
call fcn.004b7530
mov ecx, dword [0x9da9f8]
add esp, 0xc
mov edx, eax
mov dword [ebp - 4], edx
cmp ebx, ecx
je 0x4f238a
mov dword [edx + 4], ebx
test bl, 1
jne 0x4f2370
mov eax, dword [0x9dee94]
mov dword [edx], eax
jmp 0x4f2393
movzx eax, word [ebx + 1]
mov ecx, 0x27
cmp eax, 0x7c
cmovae eax, ecx
mov eax, dword [eax*4 + 0x9deea0]
mov dword [edx], eax
jmp 0x4f2393
mov dword [edx + 4], ecx
mov dword [edx], 0x931504
mov eax, dword [edi + 4]
push esi
mov ebx, dword [eax + 3]
call fcn.004b7530
mov ecx, eax
add esp, 4
mov eax, dword [0x9da9f8]
cmp ebx, eax
je 0x4f23d8
mov dword [ecx + 4], ebx
test bl, 1
jne 0x4f23be
mov eax, dword [0x9dee94]
mov dword [ecx], eax
jmp 0x4f23e1
movzx eax, word [ebx + 1]
mov edx, 0x27
cmp eax, 0x7c
cmovae eax, edx
mov eax, dword [eax*4 + 0x9deea0]
mov dword [ecx], eax
jmp 0x4f23e1
mov dword [ecx + 4], eax
mov dword [ecx], 0x93111c
mov eax, dword [ecx + 4]
mov edi, 0x46
mov ebx, dword [ebp - 0x38]
push esi
mov dword [ebp - 0xc], ebx
mov eax, dword [eax + 3]
sar eax, 1
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0x18], edi
call fcn.00496ba0
push esi
mov dword [ebp - 0x14], eax
call fcn.004971a0
mov edx, ebx
mov dword [ebp - 8], 0
add esp, 8
mov esi, eax
mov dword [ebp - 0x10], esi
test edx, edx
je 0x4f2a4a
mov eax, dword [ebp - 0x3c]
cmp eax, dword [ebp + 0xc]
jge 0x4f2a4a
mov ecx, dword [ebp - 0x34]
cmp ecx, 0xffffffff
je 0x4f2442
mov eax, dword [ebp - 0x44]
mov eax, dword [eax + 4]
mov eax, dword [eax + ecx*4 + 0xb]
jmp 0x4f2445
lea eax, [edx + edx]
mov ecx, dword [0x9da9f8]
mov edx, dword [ebp - 0x14]
cmp eax, ecx
je 0x4f247c
mov dword [edx + 4], eax
test al, 1
jne 0x4f2462
mov eax, dword [0x9dee94]
mov dword [edx], eax
jmp 0x4f2485
movzx eax, word [eax + 1]
mov ecx, 0x27
cmp eax, 0x7c
cmovae eax, ecx
mov eax, dword [eax*4 + 0x9deea0]
mov dword [edx], eax
jmp 0x4f2485
mov dword [edx + 4], ecx
mov dword [edx], 0x92d18c
mov eax, dword [edx]
mov ecx, edx
mov eax, dword [eax + 0x10c]
call eax
test al, al
je 0x4f249d
mov eax, dword [ebp - 0x14]
mov eax, dword [eax + 4]
jmp 0x4f24c7
mov ecx, dword [ebp - 0x14]
mov eax, dword [ecx]
mov eax, dword [eax + 0xb8]
call eax
test al, al
mov eax, dword [ebp - 0x14]
mov eax, dword [eax + 4]
je 0x4f24c4
sar eax, 1
push eax
call fcn.00547f50
add esp, 4
mov eax, dword [eax + 4]
jmp 0x4f24c7
mov eax, dword [eax + 3]
lea ecx, [ebp - 0x58]
mov dword [esi + 4], eax
call fcn.004e30b0
cmp ebx, 0x3b
jne 0x4f2636
mov eax, dword [esi + 4]
xor bl, bl
xor ecx, ecx
mov edi, dword [eax + 3]
sar edi, 1
test edi, edi
jle 0x4f2540
mov esi, eax
movzx edx, word [esi + 1]
cmp edx, 0x49
jne 0x4f24fd
movzx eax, byte [esi + ecx + 0xb]
jmp 0x4f251d
cmp edx, 0x4a
jne 0x4f2509
movzx eax, word [esi + ecx*2 + 0xb]
jmp 0x4f251d
mov eax, dword [esi + 0xb]
mov eax, dword [eax]
cmp edx, 0x4b
jne 0x4f2519
movzx eax, byte [eax + ecx]
jmp 0x4f251d
movzx eax, word [eax + ecx*2]
movzx eax, ax
cmp eax, 0x22
je 0x4f2539
cmp eax, 0x5c
je 0x4f2539
cmp eax, 0x24
je 0x4f2539
cmp eax, 0x20
jb 0x4f2539
cmp eax, 0x7f
jne 0x4f253b
mov bl, 1
inc ecx
cmp ecx, edi
jl 0x4f24f1
mov edi, dword [ebp - 0x18]
mov esi, dword [ebp - 4]
cmp edi, 0x3e
je 0x4f255f
cmp edi, 0x40
je 0x4f255f
push 0
push dword [0x9dfeb8]
mov ecx, esi
call fcn.004e0cb0
test bl, bl
mov ebx, dword [ebp - 0x10]
je 0x4f25e8
mov edi, dword [ebx + 4]
movzx eax, word [edi + 1]
cmp eax, 0x49
jne 0x4f2581
push ebx
call fcn.004efcb0
add esp, 4
jmp 0x4f25d6
cmp eax, 0x4a
jne 0x4f2591
push ebx
call fcn.004efe70
add esp, 4
jmp 0x4f25d6
cmp eax, 0x4b
jne 0x4f25a1
push ebx
call fcn.004efae0
add esp, 4
jmp 0x4f25d6
mov edi, dword [edi + 3]
sar edi, 1
push 0
push edi
call fcn.005073c0
push eax
call fcn.00497120
push edi
push 0
push ebx
mov esi, eax
push 0
push esi
call fcn.004ebf40
push dword [esi + 4]
call fcn.00497120
push eax
call fcn.004efe70
mov esi, dword [ebp - 4]
add esp, 0x28
push 0
push ebx
mov ecx, esi
mov dword [ebx + 4], eax
call fcn.004e0cb0
mov edi, dword [ebp - 0x18]
jmp 0x4f25f2
push 0
push ebx
mov ecx, esi
call fcn.004e0cb0
mov edx, dword [ebp - 0x38]
cmp edx, 0x3e
je 0x4f2611
cmp edx, 0x3f
je 0x4f2611
push 0
push dword [0x9dfeb8]
mov ecx, esi
call fcn.004e0cb0
mov edx, dword [ebp - 0x38]
mov ebx, dword [ebp - 0xc]
mov ecx, dword [0x9dfeb0]
lea eax, [ebx - 1]
xor esi, esi
cmp eax, 0x42
ja case.0x4f262f.4
movzx eax, byte [eax + 0x4f2af4]
jmp dword [eax*4 + 0x4f2adc]
push 0
cmp ebx, 0x3e
jne 0x4f264f
push dword [0x9dfec0]
mov ecx, dword [ebp - 4]
call fcn.004e0cb0
push 0
jmp 0x4f2654
cmp ebx, 0x3a
jne 0x4f269a
mov ecx, esi
call fcn.004e7dd0
cmp ax, 0x5f
jne 0x4f2698
mov eax, dword [esi + 4]
push dword [0x9da68c]
mov esi, dword [eax + 3]
call dword [0x70218c]
test eax, eax
je 0x4f267c
cmp byte [eax], 0
je 0x4f267e
xor eax, eax
push 0
sar esi, 1
sub esi, dword [ebp - 0x1c]
push esi
mov esi, dword [ebp - 0x10]
push 0
push esi
push eax
call fcn.0050f880
add esp, 0x14
mov dword [esi + 4], eax
push 0
mov ecx, dword [ebp - 4]
push esi
call fcn.004e0cb0
mov edx, dword [ebp - 0x38]
jmp 0x4f2614
cmp edx, 0x43
je case.0x4f262f.3
mov esi, ecx
lea eax, [edx - 1]
cmp eax, 0x54
ja case.0x4f26c1.5
movzx eax, byte [eax + 0x4f2b48]
jmp dword [eax*4 + 0x4f2b38]
add dword [ebp - 8], 2
jmp case.0x4f262f.3
sub dword [ebp - 8], 2
jmp case.0x4f262f.4
mov eax, dword [ebp - 8]
inc eax
cmp edi, 5
cmovne eax, dword [ebp - 8]
cmp edx, 6
lea ebx, [eax - 1]
cmovne ebx, eax
mov dword [ebp - 8], ebx
mov ebx, dword [ebp - 0xc]
jmp case.0x4f262f.3
xor esi, esi
jmp case.0x4f26c1.5
cmp ebx, 0x4e
jne case.0x4f26c1.2
mov esi, ecx
jmp 0x4f2730
mov esi, ecx
cmp ebx, 0x60
je 0x4f2709
cmp ebx, 0x5e
jne 0x4f2715
cmp edx, 1
jne 0x4f2715
mov esi, ecx
jmp 0x4f27c9
cmp ebx, 0xe
jne 0x4f2726
cmp edx, 1
jne 0x4f2730
mov esi, ecx
jmp 0x4f27c9
cmp ebx, 0x6b
je 0x4f2773
cmp ebx, 0x2c
je 0x4f2773
push ebx
call fcn.005be670
add esp, 4
test al, al
jne 0x4f276a
lea eax, [ebx - 0x2e]
cmp eax, 3
jbe 0x4f276a
mov ecx, dword [0x9dfeb0]
mov edx, dword [ebp - 0x38]
cmp ebx, 5
jne 0x4f277c
cmp edx, 6
jne 0x4f2794
mov esi, dword [ebp - 0x10]
mov edi, ebx
mov ebx, edx
mov dword [ebp - 0x18], edi
mov dword [ebp - 0xc], ebx
jmp 0x4f2422
mov ecx, dword [0x9dfeb0]
mov edx, dword [ebp - 0x38]
cmp edx, 1
jne 0x4f274e
mov esi, ecx
jmp 0x4f27c9
cmp ebx, 9
jne 0x4f278a
cmp edx, 0x43
je 0x4f2794
mov esi, ecx
jmp 0x4f27c9
cmp ebx, 0x64
jne 0x4f2794
cmp edx, 0x2b
jmp 0x4f2756
cmp edi, 0x64
jne 0x4f27a2
cmp ebx, 0x2b
jne 0x4f27a2
mov esi, ecx
jmp 0x4f27c9
cmp ebx, 0x3a
jne 0x4f27ba
cmp edx, 0xc
je 0x4f2a35
cmp edx, 0xd
jne 0x4f27c9
jmp 0x4f2a35
cmp ebx, 0xc
je 0x4f27c4
cmp ebx, 0xd
jne 0x4f27c9
cmp edx, 0x3a
je 0x4f27dc
mov edi, dword [ebp - 4]
test esi, esi
je 0x4f27df
push 0
push esi
mov ecx, edi
call fcn.004e0cb0
jmp 0x4f27df
mov edi, dword [ebp - 4]
cmp ebx, 0x43
jne 0x4f2a32
mov ecx, dword [ebp - 8]
test ecx, ecx
jle 0x4f2a32
mov dword [ebp - 0x18], ecx
nop word [eax + eax]
mov ecx, dword [edi + 4]
mov eax, dword [0x9dfae0]
mov dword [ebp - 0x20], eax
mov eax, dword [ecx + 0xb]
mov edx, dword [eax + 7]
mov eax, dword [ecx + 7]
sar edx, 1
sar eax, 1
cmp eax, edx
jne 0x4f29a5
mov esi, 4
test edx, edx
je 0x4f282c
lea esi, [edx + edx]
cmp esi, edx
jg 0x4f2860
call fcn.004cca20
push str.unreachable_code
lea eax, [ebp - 0x2c]
mov dword [ebp - 0x2c], 0x93b678
push 0x70436c
push eax
mov dword [ebp - 0x28], 0x5564
mov dword [ebp - 0x24], 0
call fcn.004b3c30
add esp, 0xc
mov eax, dword [edi + 4]
push dword [0x9da68c]
mov ebx, dword [eax + 0xb]
call dword [0x70218c]
test eax, eax
je 0x4f287b
cmp byte [eax], 0
je 0x4f287d
xor eax, eax
push dword [eax + 0x17c]
call fcn.004b7530
mov edx, eax
add esp, 4
mov eax, dword [0x9da9f8]
cmp ebx, eax
je 0x4f28c2
mov dword [edx + 4], ebx
test bl, 1
jne 0x4f28a8
mov ecx, dword [0x9dee94]
mov dword [edx], ecx
jmp 0x4f28cb
movzx eax, word [ebx + 1]
mov ecx, 0x27
cmp eax, 0x7c
cmovae eax, ecx
mov eax, dword [eax*4 + 0x9deea0]
mov dword [edx], eax
jmp 0x4f28cb
mov dword [edx + 4], eax
mov dword [edx], 0x9313b8
push 0
push esi
push edx
call fcn.004f53e0
add esp, 0xc
mov ebx, eax
push dword [0x9da68c]
call dword [0x70218c]
test eax, eax
je 0x4f28ee
cmp byte [eax], 0
je 0x4f28f0
xor eax, eax
push dword [eax + 0x17c]
call fcn.004b7530
mov ecx, eax
add esp, 4
mov eax, dword [0x9da9f8]
cmp ebx, eax
je 0x4f2934
mov dword [ecx + 4], ebx
test bl, 1
jne 0x4f291a
mov eax, dword [0x9dee94]
mov dword [ecx], eax
jmp 0x4f293d
movzx eax, word [ebx + 1]
mov edx, 0x27
cmp eax, 0x7c
cmovae eax, edx
mov eax, dword [eax*4 + 0x9deea0]
mov dword [ecx], eax
jmp 0x4f293d
mov dword [ecx + 4], eax
mov dword [ecx], 0x9313b8
mov ebx, dword [edi + 4]
mov eax, dword [ecx + 4]
mov dword [ebx + 0xb], eax
test al, 1
je 0x4f29a5
shr eax, 2
test al, 1
je 0x4f29a5
mov eax, ebx
shr eax, 2
not al
test al, 1
je 0x4f29a5
mov esi, dword [ebx - 1]
lea edi, [ebx - 1]
mov eax, esi
shr eax, 3
test al, 1
jne 0x4f29a2
nop dword [eax + eax]
mov ecx, esi
mov edx, esi
or ecx, 8
mov eax, esi
lock cmpxchg dword [edi], ecx
mov esi, eax
cmp esi, edx
jne 0x4f2970
push dword [0x9da68c]
call dword [0x70218c]
test eax, eax
je 0x4f2998
cmp byte [eax], 0
je 0x4f299a
xor eax, eax
push ebx
mov ecx, eax
call fcn.004b9550
mov edi, dword [ebp - 4]
mov ecx, dword [edi + 4]
mov edx, dword [ecx + 7]
sar edx, 1
lea eax, [edx*2 + 2]
mov dword [ecx + 7], eax
mov eax, dword [edi + 4]
mov ecx, dword [ebp - 0x20]
mov ebx, dword [eax + 0xb]
mov ecx, dword [ecx + 4]
mov dword [ebx + edx*4 + 0xb], ecx
test cl, 1
je 0x4f2a25
shr ecx, 2
test cl, 1
je 0x4f2a25
mov eax, ebx
shr eax, 2
not al
test al, 1
je 0x4f2a25
mov esi, dword [ebx - 1]
lea edi, [ebx - 1]
mov eax, esi
shr eax, 3
test al, 1
jne 0x4f2a22
nop
mov ecx, esi
mov edx, esi
or ecx, 8
mov eax, esi
lock cmpxchg dword [edi], ecx
mov esi, eax
cmp esi, edx
jne 0x4f29f0
push dword [0x9da68c]
call dword [0x70218c]
test eax, eax
je 0x4f2a18
cmp byte [eax], 0
je 0x4f2a1a
xor eax, eax
push ebx
mov ecx, eax
call fcn.004b9550
mov edi, dword [ebp - 4]
sub dword [ebp - 0x18], 1
jne 0x4f2800
mov ebx, dword [ebp - 0xc]
mov edx, dword [ebp - 0x38]
mov esi, dword [ebp - 0x10]
mov edi, ebx
mov dword [ebp - 0x18], edi
mov ebx, edx
mov dword [ebp - 0xc], ebx
test edx, edx
jne 0x4f2422
push dword [ebp - 4]
call fcn.00502be0
add esp, 4
mov ebx, eax
push dword [0x9da68c]
call dword [0x70218c]
test eax, eax
je 0x4f2a6c
cmp byte [eax], 0
je 0x4f2a6e
xor eax, eax
push dword [eax + 0x17c]
call fcn.004b7530
mov ecx, eax
add esp, 4
mov eax, dword [0x9da9f8]
cmp ebx, eax
je 0x4f2ab2
mov dword [ecx + 4], ebx
test bl, 1
jne 0x4f2a98
mov eax, dword [0x9dee94]
mov dword [ecx], eax
jmp 0x4f2abb
movzx eax, word [ebx + 1]
mov edx, 0x27
cmp eax, 0x7c
cmovae eax, edx
mov eax, dword [eax*4 + 0x9deea0]
mov dword [ecx], eax
jmp 0x4f2abb
mov dword [ecx + 4], eax
mov dword [ecx], 0x9313b8
mov eax, dword [ecx + 4]
push 0
mov eax, dword [eax + 7]
sar eax, 1
push eax
push 0
push ecx
call fcn.004ebb40
add esp, 0x10
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8