Function at 0x7886e67e
Capabilities:
Parse credit card information

Disassembly:
mov edi, edi
push ebx
push esi
mov esi, ecx
mov ecx, dword [esi + 0x20]
mov eax, dword [esi + 0x24]
mov ecx, dword [ecx + 8]
sub ecx, eax
push edi
cmp ecx, 3
lea edi, [eax - 2]
mov ecx, esi
jl 0x788917e0
call fcn.78878ec3
cmp ax, 0x7b
mov ecx, esi
jne 0x788917e8
call fcn.7886e625
mov ebx, eax
mov eax, dword [esi + 0x20]
mov eax, dword [eax + 8]
sub eax, dword [esi + 0x24]
je 0x7886e6d4
mov ecx, esi
call fcn.78878ec3
cmp ax, 0x7d
jne 0x7886e6d4
pop edi
pop esi
mov eax, ebx
pop ebx
ret
push edi
push 0xc00ce461
mov ecx, esi
jmp 0x788917ee
mov ecx, dword [esi + 0x48]
mov eax, ecx
shr eax, 2
test al, 1
jne 0x7887a446
cmp byte [esi + 0x60], 0
jne 0x7887a446
mov eax, dword [esi + 0x28]
push 0xffffffffffffffff
lea edx, [eax + 1]
push eax
mov dword [esi + 0x28], edx
push ecx
push 0x1c
call fcn.7887a452
pop edi
pop esi
pop ebx
leave
ret
push ecx
mov byte [esi + 0x60], 0
push 0x1d
jmp 0x78891efc
cmp byte [ebp + 0xc], 0
mov byte [ebp - 1], 0
jne 0x7887a7a4
mov eax, dword [ebp - 0x10]
cmp ax, word [ebp - 0xc]
ja 0x788919d8
push dword [ebp - 0xc]
push eax
mov edi, dword [ebp - 8]
mov ecx, edi
call fcn.78879c63
jmp 0x7887a7a7
mov edi, dword [ebp - 8]
mov byte [ebp - 1], 0
mov bl, 1
mov eax, dword [esi + 0x20]
mov eax, dword [eax + 8]
sub eax, dword [esi + 0x24]
test eax, eax
jle 0x7887a7b5
mov ecx, esi
call fcn.78878ec3
mov dword [ebp - 0xc], eax
movzx eax, ax
sub eax, 0x5b
je 0x78891962
dec eax
je 0x78891810
dec eax
je 0x7887a7ae
cmp byte [ebp - 1], 0
jne 0x7887a6ac
mov ecx, dword [esi + 0x20]
mov eax, dword [esi + 0x24]
mov edx, dword [ecx + 8]
sub edx, eax
cmp edx, 2
jl 0x7887ab3f
push eax
call fcn.78849fcf
cmp ax, 0x2d
jne 0x7887ab3f
push 1
mov ecx, esi
call fcn.78878b9c
cmp ax, 0x5d
je 0x7887ab3f
mov eax, dword [ebp - 0xc]
mov ecx, esi
mov dword [ebp - 0x10], eax
mov byte [ebp - 1], 1
call fcn.78878ec3
mov edi, dword [ebp - 8]
xor bl, bl
jmp 0x7887a721
test bl, bl
jne 0x7887a752
dec dword [esi + 0x24]
mov eax, edi
pop edi
pop esi
pop ebx
leave
ret 8
cmp byte [ebp + 0xc], 0
jne 0x7887a7a4
push dword [ebp - 0xc]
push dword [ebp - 0xc]
jmp 0x7887a6cb
push edi
push 0xc00ce461
jmp 0x788917ee
push edi
push 0xc00ce462
call fcn.788b5294
mov ecx, esi
call fcn.78878ec3
cmp byte [ebp + 0xc], 0
jne 0x7887a718
mov edi, dword [ebp - 8]
mov byte [edi + 0x15], 1
jmp 0x7887a71b
mov eax, dword [esi + 0x20]
mov eax, dword [eax + 8]
sub eax, dword [esi + 0x24]
test eax, eax
jle 0x7887a752
mov ecx, esi
call fcn.78878ec3
movzx ecx, ax
cmp ecx, 0x64
jg 0x788918c5
je 0x78891895
cmp ecx, 0x44
je 0x78891895
cmp ecx, 0x50
je 0x78891924
cmp ecx, 0x53
je 0x78891879
cmp ecx, 0x57
jne 0x788918d4
cmp byte [ebp + 0xc], 0
jne 0x7887a7a7
cmp byte [ebp - 1], 0
jne 0x788919d1
push dword [0x78922978]
mov ecx, dword [edi + 0x10]
call fcn.788206e3
jmp 0x7887a7a7
cmp byte [ebp + 0xc], 0
jne 0x7887a7a7
cmp byte [ebp - 1], 0
jne 0x788919d1
push dword [0x7891ed10]
jmp 0x7889186c
cmp byte [ebp + 0xc], 0
jne 0x7887a7a7
cmp byte [ebp - 1], 0
jne 0x788919d1
push dword [esi + 0x20]
cmp ax, 0x64
setne al
push 0
push eax
push 0x7884aef0
call fcn.78814fd4
jmp 0x78891949
cmp ecx, 0x70
je 0x78891924
cmp ecx, 0x73
je 0x78891905
cmp ecx, 0x77
je 0x788918e6
dec dword [esi + 0x24]
mov ecx, esi
call fcn.7887613c
mov dword [ebp - 0xc], eax
jmp 0x7887a752
cmp byte [ebp + 0xc], 0
jne 0x7887a7a7
cmp byte [ebp - 1], 0
jne 0x788919d1
push dword [0x7891ecd4]
jmp 0x7889186c
cmp byte [ebp + 0xc], 0
jne 0x7887a7a7
cmp byte [ebp - 1], 0
jne 0x788919d1
push dword [0x7891ecf4]
jmp 0x7889186c
cmp byte [ebp + 0xc], 0
jne 0x78891956
cmp byte [ebp - 1], 0
jne 0x788919d1
push dword [esi + 0x20]
cmp ax, 0x70
push dword [ebp + 8]
setne al
mov ecx, esi
push eax
call fcn.7886e67e
push eax
mov ecx, edi
call fcn.7886f6ba
jmp 0x7887a7a7
mov ecx, esi
call fcn.7886e67e
jmp 0x7887a7a7
mov ecx, dword [esi + 0x20]
mov edi, dword [esi + 0x24]
mov eax, dword [ecx + 8]
sub eax, edi
test eax, eax
jle 0x7887a752
push edi
call fcn.78849fcf
cmp ax, 0x3a
jne 0x7887a752
cmp byte [ebp - 1], 0
jne 0x7887a6ac
mov ecx, esi
call fcn.78878ec3
mov ecx, esi
call fcn.7886e625
mov eax, dword [esi + 0x20]
mov eax, dword [eax + 8]
sub eax, dword [esi + 0x24]
cmp eax, 2
jl 0x788919c9
mov ecx, esi
call fcn.78878ec3
cmp ax, 0x3a
jne 0x788919c9
mov ecx, esi
call fcn.78878ec3
cmp ax, 0x5d
je 0x7887a75c
mov dword [esi + 0x24], edi
jmp 0x7887a752
push 0x78891a20
jmp 0x788919dd
push 0x788919f8
call fcn.78849ff0
xor ecx, ecx
push ecx
push ecx
push ecx
push eax
push 0xc00ce197
push 0x80004005
push ecx
call fcn.788617eb
push edx
add byte [ebp], ah
jbe 0x788919fe
add byte gs:[edx], dh
jae 0x78891a04
add byte gs:[eax + eax + 0x20], ah
add byte [ebx], ah
push 0x72006100
add byte [eax], ah
add byte [edx], dh
popal
add byte [esi], ch
add byte [di], ah
add byte [eax], al
bound eax, qword [eax]
popal
add byte [eax + eax + 0x20], ah
add byte [ebx], ah
insb byte es:[edi], dx
add byte [ecx], ah
jae 0x78891a30
jae 0x78891a32
and byte [eax], al
imul eax, dword [eax], 0x20006e
arpl word [eax], ax
push 0x72006100
add byte [eax], ah
add byte [edx], dh
popal
add byte [esi], ch
add byte [di], ah
add byte [eax], al
push ebx
mov ecx, edi
call fcn.78849fcf
cmp ax, 0x3f
jne 0x78891a71
push 1
mov ecx, esi
call fcn.78878b9c
cmp ax, 0x29
je 0x7887a41b
mov ecx, esi
call fcn.78878ec3
mov eax, dword [esi + 0x20]
mov eax, dword [eax + 8]
sub eax, dword [esi + 0x24]
push 0
pop ebx
je 0x78891ebe
mov ecx, esi
call fcn.78878ec3
movzx eax, ax
sub eax, 0x21
je 0x78891eeb
sub eax, 6
je 0x78891c87
dec eax
je 0x78891b23
sub eax, 0x12
je 0x78891b17
dec eax
dec eax
je 0x78891c8e
dec eax
je 0x78891b0b
dec eax
je 0x78891aff
dec dword [esi + 0x24]
mov ecx, esi
mov dword [ebp - 8], 0x1d
call fcn.788b51dc
mov eax, dword [esi + 0x20]
mov eax, dword [eax + 8]
sub eax, dword [esi + 0x24]
je 0x78891ebe
mov ecx, esi
call fcn.78878ec3
cmp ax, 0x29
jne 0x78891af0
xor eax, eax
jmp 0x7887a441
cmp ax, 0x3a
jne 0x78891ebe
jmp 0x78891ef6
mov dword [ebp - 8], 0x20
jmp 0x78891ef6
mov dword [ebp - 8], 0x1e
jmp 0x78891ef2
mov dword [ebp - 8], 0x1d
jmp 0x78891ef6
mov edi, dword [esi + 0x24]
mov ecx, dword [esi + 0x20]
push edi
call fcn.78849fcf
cmp ax, 0x30
jb 0x78891b83
cmp ax, 0x39
ja 0x78891b83
mov ecx, esi
call fcn.7887a5f1
mov edi, eax
mov eax, dword [esi + 0x20]
mov eax, dword [eax + 8]
sub eax, dword [esi + 0x24]
test eax, eax
jle 0x78891b79
mov ecx, esi
call fcn.78878ec3
cmp ax, 0x29
jne 0x78891b79
push edi
mov ecx, esi
call fcn.788b536a
test al, al
je 0x78891b6f
push 0
push edi
jmp 0x78891bc7
push 0x78892014
jmp 0x78891ec3
push 0x78891fec
jmp 0x78891ec3
push eax
call fcn.7886e60e
test al, al
je 0x78891bd1
mov ecx, esi
call fcn.7886e625
mov ebx, eax
push ebx
mov ecx, esi
call fcn.788b53a1
test al, al
je 0x78891bd1
mov eax, dword [esi + 0x20]
mov eax, dword [eax + 8]
sub eax, dword [esi + 0x24]
test eax, eax
jle 0x78891bd1
mov ecx, esi
call fcn.78878ec3
cmp ax, 0x29
jne 0x78891bd1
push 0
push ebx
mov ecx, esi
call fcn.788b527d
push eax
push dword [esi + 0x48]
push 0x21
jmp 0x7887a43c
mov ecx, dword [esi + 0x20]
lea eax, [edi - 1]
mov dword [esi + 0x24], eax
mov byte [esi + 0x60], 1
mov edi, dword [ecx + 8]
push 3
sub edi, eax
pop ebx
cmp edi, ebx
mov dword [ebp - 8], 0x22
jl 0x78891ef6
push 1
mov ecx, esi
call fcn.78878b9c
cmp ax, 0x3f
jne 0x78891c54
push 2
mov ecx, esi
call fcn.78878b9c
cmp ax, 0x23
jne 0x78891c1d
push 0x78891fac
jmp 0x78891ec3
cmp ax, 0x27
jne 0x78891c2d
push 0x78891f78
jmp 0x78891ec3
cmp edi, 4
jl 0x78891c54
cmp ax, 0x3c
jne 0x78891c54
push ebx
mov ecx, esi
call fcn.78878b9c
cmp ax, 0x21
je 0x78891c54
push ebx
mov ecx, esi
call fcn.78878b9c
cmp ax, 0x3d
jne 0x78891c23
cmp edi, ebx
jl 0x78891ef6
push 1
mov ecx, esi
call fcn.78878b9c
cmp ax, 0x3f
jne 0x78891ef6
push 2
mov ecx, esi
call fcn.78878b9c
cmp ax, 0x23
je 0x78891ebe
jmp 0x78891ef6
mov dword [ebp - 8], 0x27
mov eax, dword [esi + 0x20]
mov eax, dword [eax + 8]
sub eax, dword [esi + 0x24]
je 0x78891ebe
mov ecx, esi
call fcn.78878ec3
mov edi, eax
movzx eax, di
cmp eax, 0x21
je 0x78891eb7
cmp eax, 0x3d
je 0x78891ea3
dec dword [esi + 0x24]
or dword [ebp - 0xc], 0xffffffff
or dword [ebp - 0x10], 0xffffffff
cmp di, 0x30
mov byte [ebp - 1], 0
jb 0x78891d35
cmp di, 0x39
ja 0x78891d35
mov ecx, esi
call fcn.7887a5f1
push eax
mov ecx, esi
mov dword [ebp - 0xc], eax
call fcn.788b536a
test al, al
jne 0x78891cf0
or dword [ebp - 0xc], 0xffffffff
mov edi, dword [esi + 0x20]
mov ebx, dword [esi + 0x24]
mov eax, dword [edi + 8]
sub eax, ebx
test eax, eax
jle 0x78891d25
push ebx
mov ecx, edi
call fcn.78849fcf
cmp ax, word [ebp - 8]
je 0x78891d25
push ebx
mov ecx, edi
call fcn.78849fcf
cmp ax, 0x2d
je 0x78891d25
push 0x78891f50
jmp 0x78891ec3
cmp dword [ebp - 0xc], 0
jne 0x78891d9a
push 0x78891f34
jmp 0x78891ec3
push edi
call fcn.7886e60e
test al, al
je 0x78891d8c
mov ecx, esi
call fcn.7886e625
mov edi, eax
push edi
mov ecx, esi
call fcn.788b53a1
test al, al
je 0x78891d5f
push edi
mov ecx, esi
call fcn.788b527d
mov dword [ebp - 0xc], eax
mov edi, dword [esi + 0x20]
mov ebx, dword [esi + 0x24]
mov eax, dword [edi + 8]
sub eax, ebx
test eax, eax
jle 0x78891d9a
push ebx
mov ecx, edi
call fcn.78849fcf
cmp ax, word [ebp - 8]
je 0x78891d9a
push ebx
mov ecx, edi
call fcn.78849fcf
cmp ax, 0x2d
je 0x78891d9a
jmp 0x78891d1b
cmp di, 0x2d
jne 0x78891e3c
mov byte [ebp - 1], 1
xor ebx, ebx
cmp dword [ebp - 0xc], 0xffffffff
jne 0x78891dac
cmp byte [ebp - 1], 1
jne 0x78891ebe
mov ecx, dword [esi + 0x20]
mov eax, dword [esi + 0x24]
mov edi, dword [ecx + 8]
sub edi, eax
cmp edi, ebx
jle 0x78891e76
push eax
call fcn.78849fcf
cmp ax, 0x2d
jne 0x78891e76
mov ecx, esi
call fcn.78878ec3
push dword [esi + 0x24]
mov ecx, dword [esi + 0x20]
call fcn.78849fcf
cmp ax, 0x30
jb 0x78891e43
cmp ax, 0x39
ja 0x78891e43
mov ecx, esi
call fcn.7887a5f1
push eax
mov ecx, esi
mov dword [ebp - 0x10], eax
call fcn.788b536a
test al, al
jne 0x78891e21
push 0x788ab400
call fcn.78849ff0
push ebx
push ebx
push ebx
push eax
push 0xc00ce197
push 0x80004005
push ebx
jmp 0x78891ed9
mov ecx, dword [esi + 0x20]
mov eax, dword [esi + 0x24]
mov edi, dword [ecx + 8]
sub edi, eax
cmp edi, ebx
jle 0x78891e76
push eax
call fcn.78849fcf
cmp ax, word [ebp - 8]
je 0x78891e76
push 0x78891f50
jmp 0x78891e08
push eax
call fcn.7886e60e
test al, al
je 0x78891e3c
mov ecx, esi
call fcn.7886e625
mov edi, eax
push edi
mov ecx, esi
call fcn.788b53a1
test al, al
je 0x78891e6f
push edi
mov ecx, esi
call fcn.788b527d
mov dword [ebp - 0x10], eax
jmp 0x78891e21
push 0x788ab3dc
jmp 0x78891e08
cmp dword [ebp - 0xc], 0xffffffff
jne 0x78891e84
cmp dword [ebp - 0x10], 0xffffffff
je 0x78891ebe
xor ebx, ebx
cmp edi, ebx
jle 0x78891ebe
mov ecx, esi
call fcn.78878ec3
cmp ax, word [ebp - 8]
jne 0x78891ebe
push dword [ebp - 0x10]
push dword [ebp - 0xc]
push dword [esi + 0x48]
jmp 0x7887a43a
cmp word [ebp - 8], 0x27
je 0x78891ebe
or dword [esi + 0x48], 0x40
mov dword [ebp - 8], 0x1e
jmp 0x78891ef6
cmp word [ebp - 8], 0x27
jne 0x78891ede
push 0x78891f08
call fcn.78849ff0
xor ecx, ecx
push ecx
push ecx
push ecx
push eax
push 0xc00ce197
push 0x80004005
push ecx
call fcn.788617eb
or dword [esi + 0x48], 0x40
mov dword [ebp - 8], 0x1f
jmp 0x78891ef6
mov dword [ebp - 8], 0x1f
and dword [esi + 0x48], 0xffffffbf
push dword [esi + 0x48]
push dword [ebp - 8]
call fcn.78879b00
jmp 0x7887a441