Function at 0x583f64
Capabilities:
Parse credit card information

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x1c
mov ebx, eax
mov eax, dword [ebx + 0x14]
test eax, eax
jne 0x584204
mov eax, dword [ebx + 0x20]
mov dword [ebx + 0x1c], eax
mov edx, dword [ebx + 0x18]
cmp eax, 0x6e
je 0x58402c
mov eax, dword [ebx + 0xc]
test eax, eax
je 0x583fb0
mov ecx, dword [ebx + 8]
cmp dword [ebx + 4], ecx
jb 0x583fb0
mov dword [ebx + 4], eax
mov eax, dword [ebx + 0x10]
mov dword [ebx + 8], eax
mov dword [ebx + 0x10], 0
mov dword [ebx + 0xc], 0
mov eax, dword [ebx + 0x28]
and edx, 0x20
je 0x583fd4
cmp eax, 1
jl 0x583fd4
cmp eax, 2
jle 0x583fca
lea edx, [eax - 4]
cmp edx, 1
ja 0x583fd4
mov eax, ebx
call fcn.00581b24
mov eax, dword [ebx + 0x28]
mov edx, dword [ebx + 4]
mov ecx, dword [ebx + 8]
cmp edx, ecx
jb case.0x583fe3.0
cmp eax, 9
ja case.0x583fe3.0
jmp dword [eax*4 + 0x62f0e8]
mov di, word [edx]
lea esi, [edx + 2]
mov ebp, esi
mov dword [ebx + 4], esi
cmp eax, 9
jbe switch.0x00584024
lea eax, [edi - 0x24]
cmp ax, 0x58
jbe 0x584234
lea esi, [esi]
mov dword [ebx + 0x20], 0x70
mov word [ebx + 0x24], di
mov eax, 1
add esp, 0x1c
pop ebx
pop esi
pop edi
pop ebp
ret
jmp dword [eax*4 + 0x62f110]
test dh, 4
je 0x583f8a
mov dword [ebx + 0x20], 0x41
mov word [ebx + 0x24], 0
mov al, 1
jmp 0x58401c
mov dword [ebx + 0x20], 0x65
mov eax, dword [ebx + 0x14]
test eax, eax
jne 0x584204
mov dword [ebx + 0x14], 7
xor eax, eax
jmp 0x58401c
mov dword [ebx + 0x20], 0x65
mov eax, dword [ebx + 0x14]
test eax, eax
jne 0x584204
mov dword [ebx + 0x14], 9
xor eax, eax
jmp 0x58401c
mov dword [ebx + 0x20], 0x65
mov eax, 1
add esp, 0x1c
pop ebx
pop esi
pop edi
pop ebp
ret
cmp di, 0x3d
jne case.0x584237.1
cmp ecx, esi
jbe case.0x584237.1
cmp word [edx + 2], 0x5d
jne case.0x584237.1
add edx, 4
mov dword [ebx + 4], edx
mov dword [ebx + 0x28], 6
mov dword [ebx + 0x20], 0x58
mov word [ebx + 0x24], 0x3d
mov eax, 1
jmp 0x58401c
cmp di, 0x3a
jne case.0x584237.1
cmp esi, ecx
jae case.0x584237.1
cmp word [edx + 2], 0x5d
jne case.0x584237.1
add edx, 4
mov dword [ebx + 4], edx
mov dword [ebx + 0x28], 6
mov dword [ebx + 0x20], 0x58
mov word [ebx + 0x24], 0x3a
mov eax, 1
jmp 0x58401c
cmp di, 0x2e
jne case.0x584237.1
cmp ecx, esi
jbe case.0x584237.1
cmp word [edx + 2], 0x5d
jne case.0x584237.1
add edx, 4
mov dword [ebx + 4], edx
mov dword [ebx + 0x28], 6
mov dword [ebx + 0x20], 0x58
mov word [ebx + 0x24], 0x2e
mov eax, 1
jmp 0x58401c
cmp di, 0x5b
je 0x58463c
ja 0x584240
cmp di, 0x2d
jne case.0x584237.1
cmp dword [ebx + 0x1c], 0x5b
je 0x584713
cmp ecx, esi
jbe 0x58419b
cmp word [edx + 2], 0x5d
je 0x584713
mov dword [ebx + 0x20], 0x52
mov word [ebx + 0x24], 0x2d
mov eax, 1
jmp 0x58401c
cmp di, 0x39
jbe 0x584210
cmp di, 0x5c
je 0x5846c2
cmp di, 0x7d
je 0x584686
mov dword [ebx + 0x20], 0x65
mov eax, dword [ebx + 0x14]
test eax, eax
jne 0x584204
mov dword [ebx + 0x14], 0xa
xor eax, eax
jmp 0x58401c
lea eax, [edi - 0x24]
cmp ax, 0x3a
ja case.0x584237.1
movzx eax, ax
jmp dword [eax*4 + 0x62f138]
xor eax, eax
add esp, 0x1c
pop ebx
pop esi
pop edi
pop ebp
ret
cmp di, 0x30
jb 0x5845c4
mov dword [ebx + 0x20], 0x64
sub edi, 0x30
mov word [ebx + 0x24], di
mov eax, 1
jmp 0x58401c
movzx eax, ax
jmp dword [eax*4 + 0x62f224]
cmp di, 0x5c
je 0x5845df
cmp di, 0x5d
jne case.0x584237.1
cmp dword [ebx + 0x1c], 0x5b
je 0x584782
mov eax, dword [ebx + 0x18]
and eax, 1
neg eax
add eax, 2
mov dword [ebx + 0x28], eax
mov dword [ebx + 0x20], 0x5d
mov eax, 1
jmp 0x58401c
mov dword [ebx + 0x20], 0x2e
mov eax, 1
jmp 0x58401c
mov eax, dword [ebx + 0x1c]
cmp eax, 0x6e
je 0x5848e8
cmp eax, 0x28
je 0x58489c
mov dword [ebx + 0x20], 0x70
mov word [ebx + 0x24], 0x5e
mov eax, 1
jmp 0x58401c
cmp ecx, esi
jbe 0x58461c
mov di, word [esi]
add esi, 2
mov dword [ebx + 4], esi
cmp di, 0x39
ja 0x584799
cmp di, 0x31
jb 0x584a18
mov eax, dword [ebx]
or dword [eax + 8], 1
mov dword [ebx + 0x20], 0x62
sub edi, 0x30
mov word [ebx + 0x24], di
mov eax, 1
jmp 0x58401c
mov eax, dword [ebx + 0x1c]
cmp eax, 0x6e
je 0x5846fc
cmp eax, 0x28
je 0x5846fc
cmp eax, 0x5e
je 0x5846fc
mov dword [ebx + 0x20], 0x2a
mov eax, 1
jmp 0x58401c
test byte [ebx + 0x18], 0x20
jne 0x584770
cmp ecx, ebp
jbe case.0x584237.0
sub ecx, ebp
cmp ecx, 3
jle 0x58434b
cmp word [ebp], 0x5c
je 0x5843a1
mov dword [ebx + 0x20], 0x70
mov word [ebx + 0x24], 0x24
mov eax, 1
jmp 0x58401c
mov eax, ecx
sub eax, esi
cmp eax, 0xb
jle 0x584375
cmp word [esi], 0x5b
je 0x5849b3
mov dword [ebx + 0x28], 6
cmp ecx, esi
jbe 0x58438a
cmp word [esi], 0x5e
je 0x58492a
mov dword [ebx + 0x20], 0x5b
mov word [ebx + 0x24], 1
mov eax, 1
jmp 0x58401c
cmp word [ebp + 2], 0x29
jne 0x58434b
mov eax, dword [ebx]
or dword [eax + 8], 0x100
mov dword [ebx + 0x20], 0x24
jmp 0x584397
mov eax, dword [ebx + 0x18]
test al, 2
je 0x584c49
cmp ecx, esi
jbe 0x584c49
cmp word [edx + 2], 0x3f
jne 0x584c49
mov eax, dword [ebx]
mov ebp, dword [eax + 8]
mov esi, ebp
or esi, 0x80
mov dword [eax + 8], esi
mov di, word [edx + 4]
lea esi, [edx + 6]
mov dword [ebx + 4], esi
cmp di, 0x23
je 0x584a8f
ja 0x5848f6
cmp di, 0x21
je 0x584a6f
mov dword [ebx + 0x20], 0x65
mov ebp, dword [ebx + 0x14]
test ebp, ebp
jne 0x584204
mov dword [ebx + 0x14], 0xd
xor eax, eax
jmp 0x58401c
test byte [ebx + 0x18], 2
je 0x584441
cmp ecx, esi
jbe 0x584441
cmp word [edx + 2], 0x3f
je 0x584b8f
mov dword [ebx + 0x20], 0x2a
mov word [ebx + 0x24], 1
mov eax, 1
jmp 0x58401c
cmp dword [ebx + 0x1c], 0x28
jne 0x584467
mov eax, dword [ebx]
or dword [eax + 8], 0x100
mov dword [ebx + 0x20], 0x29
mov word [ebx + 0x24], 0x29
mov eax, 1
jmp 0x58401c
cmp ecx, esi
jbe 0x58461c
test byte [ebx + 0x18], 2
je 0x584c6b
mov eax, ebx
call fcn.00583b38
mov esi, dword [ebx + 0x14]
test esi, esi
jne 0x584c5d
cmp dword [ebx + 0x20], 0x43
jne 0x584397
mov eax, dword [ebx + 0x24]
sub eax, 0x44
cmp ax, 0x33
jbe 0x5847d8
mov dword [ebx + 0x20], 0x65
mov dword [ebx + 0x14], 0xf
xor eax, eax
jmp 0x58401c
mov eax, ecx
sub eax, esi
cmp eax, 0xb
jle 0x5844e5
cmp word [edx + 2], 0x5b
je 0x584af2
mov dword [ebx + 0x28], 6
cmp esi, ecx
jae 0x58438a
cmp word [edx + 2], 0x5e
jne 0x58438a
add edx, 4
mov dword [ebx + 4], edx
mov dword [ebx + 0x20], 0x5b
mov word [ebx + 0x24], 0
jmp 0x584397
test byte [ebx + 0x18], 2
je 0x58452c
cmp esi, ecx
jae 0x58452c
cmp word [edx + 2], 0x3f
je 0x584bb5
mov dword [ebx + 0x20], 0x3f
mov word [ebx + 0x24], 1
mov eax, 1
jmp 0x58401c
test byte [ebx + 0x18], 2
je 0x584558
cmp esi, ecx
jae 0x584558
cmp word [edx + 2], 0x3f
je 0x584bdb
mov dword [ebx + 0x20], 0x2b
mov word [ebx + 0x24], 1
mov eax, 1
jmp 0x58401c
mov dword [ebx + 0x20], 0x7c
mov eax, 1
jmp 0x58401c
test byte [ebx + 0x18], 0x20
jne 0x5849a1
cmp ecx, ebp
ja 0x5848b6
mov eax, dword [ebx]
or dword [eax + 8], 0x108
mov dword [ebx + 0x20], 0x70
mov word [ebx + 0x24], 0x7b
mov eax, 1
jmp 0x58401c
mov dword [ebx + 0x20], 0x5e
mov eax, 1
jmp 0x58401c
cmp di, 0x2c
jne 0x5841ce
mov dword [ebx + 0x20], 0x2c
mov eax, 1
jmp 0x58401c
mov eax, dword [ebx]
mov edx, dword [eax + 8]
mov edi, edx
or edi, 0x40
mov dword [eax + 8], edi
test byte [ebx + 0x18], 2
je 0x584c32
or dl, 0xc0
mov dword [eax + 8], edx
cmp ecx, esi
jbe 0x58461c
mov eax, ebx
call fcn.00583b38
mov eax, dword [ebx + 0x20]
cmp eax, 0x43
je 0x58472a
cmp eax, 0x70
je 0x584397
mov dword [ebx + 0x20], 0x65
mov edi, dword [ebx + 0x14]
test edi, edi
jne 0x584204
mov dword [ebx + 0x14], 5
xor eax, eax
jmp 0x58401c
cmp ecx, esi
jbe case.0x583fe3.6
mov ax, word [edx + 2]
add edx, 4
mov dword [ebx + 4], edx
cmp ax, 0x3a
je 0x584980
cmp ax, 0x3d
je 0x58495f
cmp ax, 0x2e
je 0x584947
mov dword [ebx + 4], esi
mov dword [ebx + 0x20], 0x70
mov word [ebx + 0x24], 0x5b
mov eax, 1
jmp 0x58401c
cmp eax, 4
jne 0x5841ce
mov dword [ebx + 0x28], 1
test byte [ebx + 0x18], 2
je 0x5846ab
cmp ecx, esi
jbe 0x5846ab
cmp word [edx + 2], 0x3f
je 0x584c0c
mov dword [ebx + 0x20], 0x7d
mov word [ebx + 0x24], 1
mov eax, 1
jmp 0x58401c
cmp eax, 5
jne 0x5841ce
cmp ecx, esi
jbe 0x5841ce
cmp word [edx + 2], 0x7d
jne 0x5841ce
add edx, 4
mov dword [ebx + 4], edx
mov dword [ebx + 0x28], 2
mov dword [ebx + 0x20], 0x7d
mov al, 1
jmp 0x58401c
mov dword [ebx + 0x20], 0x70
mov word [ebx + 0x24], 0x2a
mov eax, 1
jmp 0x58401c
mov dword [ebx + 0x20], 0x70
mov word [ebx + 0x24], 0x2d
mov eax, 1
jmp 0x58401c
mov eax, dword [ebx + 0x24]
cmp ax, 0x73
je 0x584a50
cmp ax, 0x77
je 0x584a31
cmp ax, 0x64
jne 0x58461c
mov eax, dword [ebx + 4]
mov dword [ebx + 0xc], eax
mov eax, dword [ebx + 8]
mov dword [ebx + 0x10], eax
mov dword [ebx + 4], 0x62f860
mov dword [ebx + 8], 0x62f872
mov eax, dword [ebx + 0x1c]
mov dword [ebx + 0x20], eax
jmp 0x583f6d
mov eax, ebx
call fcn.00581b24
mov ebp, dword [ebx + 4]
mov ecx, dword [ebx + 8]
jmp 0x584339
mov dword [ebx + 0x20], 0x70
mov word [ebx + 0x24], 0x5d
mov eax, 1
jmp 0x58401c
cmp di, 0x3e
je 0x584b75
cmp di, 0x7b
je 0x584b57
cmp di, 0x3c
je 0x584b3d
movzx eax, di
mov dword [esp], eax
call fcn.0050e498
test eax, eax
je case.0x584237.1
mov eax, dword [ebx]
or dword [eax + 8], 0x110
jmp case.0x584237.1
movzx eax, ax
jmp dword [eax*4 + 0x62f388]
mov eax, dword [ebx + 4]
mov dword [ebx + 0xc], eax
mov eax, dword [ebx + 8]
mov dword [ebx + 0x10], eax
mov dword [ebx + 4], 0x62f8f4
mov dword [ebx + 8], 0x62f90c
jmp 0x584765
mov eax, dword [ebx + 4]
mov dword [ebx + 0xc], eax
mov eax, dword [ebx + 8]
mov dword [ebx + 0x10], eax
mov dword [ebx + 4], 0x62f8c6
mov dword [ebx + 8], 0x62f8dc
jmp 0x584765
mov eax, dword [ebx + 4]
mov dword [ebx + 0xc], eax
mov eax, dword [ebx + 8]
mov dword [ebx + 0x10], eax
mov dword [ebx + 4], 0x62f898
mov dword [ebx + 8], 0x62f8ae
jmp 0x584765
mov eax, dword [ebx + 4]
mov dword [ebx + 0xc], eax
mov eax, dword [ebx + 8]
mov dword [ebx + 0x10], eax
mov dword [ebx + 4], 0x62f90c
mov dword [ebx + 8], 0x62f926
jmp 0x584765
mov eax, dword [ebx + 4]
mov dword [ebx + 0xc], eax
mov eax, dword [ebx + 8]
mov dword [ebx + 0x10], eax
mov dword [ebx + 4], 0x62f8dc
mov dword [ebx + 8], 0x62f8f4
jmp 0x584765
mov eax, dword [ebx + 4]
mov dword [ebx + 0xc], eax
mov eax, dword [ebx + 8]
mov dword [ebx + 0x10], eax
mov dword [ebx + 4], 0x62f8ae
mov dword [ebx + 8], 0x62f8c6
jmp 0x584765
mov eax, dword [ebx]
or dword [eax + 8], 0x100
mov dword [ebx + 0x20], 0x5e
mov eax, 1
jmp 0x58401c
movzx eax, word [ebp]
mov dword [esp], eax
call fcn.0050e528
test eax, eax
je 0x584592
mov eax, dword [ebx]
or dword [eax + 8], 4
mov dword [ebx + 0x28], 4
mov dword [ebx + 0x20], 0x7b
mov eax, 1
jmp 0x58401c
mov dword [ebx + 0x20], 0x5e
mov al, 1
jmp 0x58401c
cmp di, 0x3a
je 0x584ac4
cmp di, 0x3d
jne 0x58440c
or ebp, 0x82
mov dword [eax + 8], ebp
mov dword [ebx + 0x20], 0x4c
mov word [ebx + 0x24], 1
mov eax, 1
jmp 0x58401c
add esi, 2
mov dword [ebx + 4], esi
mov dword [ebx + 0x20], 0x5b
mov word [ebx + 0x24], 0
mov eax, 1
jmp 0x58401c
mov dword [ebx + 0x28], 7
mov dword [ebx + 0x20], 0x49
mov eax, 1
jmp 0x58401c
mov dword [ebx + 0x28], 8
mov eax, dword [ebx]
or dword [eax + 8], 0x400
mov dword [ebx + 0x20], 0x45
mov eax, 1
jmp 0x58401c
mov dword [ebx + 0x28], 9
mov eax, dword [ebx]
or dword [eax + 8], 0x400
mov dword [ebx + 0x20], 0x43
mov eax, 1
jmp 0x58401c
mov eax, ebx
call fcn.00581b24
mov ebp, dword [ebx + 4]
mov ecx, dword [ebx + 8]
jmp 0x58458a
cmp word [esi + 2], 0x3a
jne 0x584375
mov ax, word [esi + 4]
cmp ax, 0x3c
je 0x5849d2
cmp ax, 0x3e
jne 0x584375
cmp word [esi + 6], 0x3a
jne 0x584375
cmp word [esi + 8], 0x5d
jne 0x584375
cmp word [esi + 0xa], 0x5d
jne 0x584375
add esi, 0xc
mov dword [ebx + 4], esi
mov edx, dword [ebx]
or dword [edx + 8], 0x80
cmp ax, 0x3c
setne al
movzx eax, al
lea eax, [eax + eax + 0x3c]
mov dword [ebx + 0x20], eax
jmp 0x584397
cmp di, 0x28
je 0x584adb
cmp di, 0x29
jne 0x5847b7
jmp 0x584467
mov eax, dword [ebx + 4]
mov dword [ebx + 0xc], eax
mov eax, dword [ebx + 8]
mov dword [ebx + 0x10], eax
mov dword [ebx + 4], 0x62f884
mov dword [ebx + 8], 0x62f898
jmp 0x584765
mov eax, dword [ebx + 4]
mov dword [ebx + 0xc], eax
mov eax, dword [ebx + 8]
mov dword [ebx + 0x10], eax
mov dword [ebx + 4], 0x62f872
mov dword [ebx + 8], 0x62f884
jmp 0x584765
or ebp, 0x82
mov dword [eax + 8], ebp
mov dword [ebx + 0x20], 0x4c
mov word [ebx + 0x24], 0
mov eax, 1
jmp 0x58401c
cmp ecx, esi
jbe 0x583f6d
lea eax, [edx + 8]
cmp word [edx + 6], 0x29
jne 0x584ab6
jmp 0x584c01
add eax, 2
cmp word [eax - 2], 0x29
je 0x584c01
mov esi, eax
cmp ecx, eax
ja 0x584aa8
mov dword [ebx + 4], eax
jmp 0x583f6d
mov dword [ebx + 0x20], 0x28
mov word [ebx + 0x24], 0
mov eax, 1
jmp 0x58401c
mov dword [ebx + 0x20], 0x28
mov word [ebx + 0x24], 1
mov eax, 1
jmp 0x58401c
cmp word [edx + 4], 0x3a
jne 0x5844e5
mov ax, word [edx + 6]
cmp ax, 0x3c
je 0x584b11
cmp ax, 0x3e
jne 0x5844e5
cmp word [edx + 8], 0x3a
jne 0x5844e5
cmp word [edx + 0xa], 0x5d
jne 0x5844e5
cmp word [edx + 0xc], 0x5d
jne 0x5844e5
add edx, 0xe
mov dword [ebx + 4], edx
jmp 0x5849f9
mov eax, dword [ebx]
or dword [eax + 8], 0x80
mov dword [ebx + 0x20], 0x3c
mov eax, 1
jmp 0x58401c
mov dword [ebx + 0x28], 5
mov eax, dword [ebx]
or dword [eax + 8], 4
mov dword [ebx + 0x20], 0x7b
mov eax, 1
jmp 0x58401c
mov eax, dword [ebx]
or dword [eax + 8], 0x80
mov dword [ebx + 0x20], 0x3e
mov eax, 1
jmp 0x58401c
add edx, 4
mov dword [ebx + 4], edx
mov eax, dword [ebx]
or dword [eax + 8], 0x80
mov dword [ebx + 0x20], 0x2a
mov word [ebx + 0x24], 0
mov eax, 1
jmp 0x58401c
add edx, 4
mov dword [ebx + 4], edx
mov eax, dword [ebx]
or dword [eax + 8], 0x80
mov dword [ebx + 0x20], 0x3f
mov word [ebx + 0x24], 0
mov eax, 1
jmp 0x58401c
add edx, 4
mov dword [ebx + 4], edx
mov eax, dword [ebx]
or dword [eax + 8], 0x80
mov dword [ebx + 0x20], 0x2b
mov word [ebx + 0x24], 0
mov eax, 1
jmp 0x58401c
add esi, 2
mov dword [ebx + 4], esi
jmp 0x583f6d
add edx, 4
mov dword [ebx + 4], edx
mov eax, dword [ebx]
or dword [eax + 8], 0x80
mov dword [ebx + 0x20], 0x7d
mov word [ebx + 0x24], 0
mov eax, 1
jmp 0x58401c
mov dword [ebx + 0x20], 0x70
mov word [ebx + 0x24], 0x5c
mov eax, 1
jmp 0x58401c
mov dword [ebx + 0x20], 0x28
test al, 0x10
je 0x584391
jmp 0x58450c
mov dword [ebx + 0x20], 0x65
xor eax, eax
jmp 0x58401c
movzx eax, word [edx + 2]
mov dword [esp], eax
call fcn.0050e498
test eax, eax
je 0x584c84
mov eax, dword [ebx]
or dword [eax + 8], 0x110
mov dword [ebx + 0x20], 0x70
mov eax, dword [ebx + 4]
mov dx, word [eax]
mov word [ebx + 0x24], dx
add eax, 2
mov dword [ebx + 4], eax
mov eax, 1
jmp 0x58401c