Function at 0x445aac
Capabilities:
Parse credit card information

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffbb8
xor eax, eax
xor edx, edx
xor ecx, ecx
push ebx
push esi
push edi
mov edi, 3
mov esi, dword [ebp + 0x10]
mov dword [ebp - 8], eax
mov dword [ebp - 0xc], edx
xor eax, eax
mov dword [ebp - 0x10], ecx
mov dword [ebp - 0x18], eax
test esi, esi
jne 0x445adf
xor eax, eax
jmp 0x4463e8
xor edx, edx
mov dword [esi], edx
cmp dword [ebp + 0x14], 0
jne 0x445af6
mov dword [esi], 0x4871f3
xor eax, eax
jmp 0x4463e8
mov edx, dword [ebp + 0x14]
xor ecx, ecx
mov dword [edx], ecx
test dword [ebp + 0xc], 0xfffffd80
je 0x445b13
mov dword [esi], 0x48720c
xor eax, eax
jmp 0x4463e8
cmp dword [ebp + 0x18], 0
jne 0x445b20
mov dword [ebp + 0x18], 0x486c1a
mov edx, dword [ebp + 0x18]
mov dword [ebp - 0x60], edx
mov ecx, dword [ebp + 0x18]
add ecx, 0x100
mov dword [ebp - 0x5c], ecx
mov eax, dword [ebp + 0x18]
add eax, 0x200
mov dword [ebp - 0x58], eax
mov edx, dword [ebp + 0x18]
add edx, 0x260
mov dword [ebp - 0x54], edx
mov ecx, dword [ebp + 8]
dec ecx
mov dword [ebp - 0x20], ecx
mov eax, dword [ebp - 0x18]
lea edx, [ebp + eax*4 - 0x380]
mov dword [ebp - 0x50], edx
mov ecx, dword [ebp - 0x18]
lea eax, [ebp + ecx - 0x448]
mov dword [ebp - 0x4c], eax
jmp 0x446294
test byte [ebp + 0xc], 8
je 0x445b98
mov edx, dword [ebp - 0x54]
test byte [edx + ebx], 1
jne 0x445b50
cmp ebx, 0x23
jne 0x445b98
inc dword [ebp - 0x20]
mov ecx, dword [ebp - 0x20]
xor ebx, ebx
mov bl, byte [ecx]
test ebx, ebx
je 0x445b50
cmp ebx, 0xa
jne 0x445b83
jmp 0x445b50
mov eax, ebx
cmp eax, 0x3f
jg 0x445be4
je case.0x445bb1.36
add eax, 0xffffffdc
cmp eax, 0xa
ja case.0x445bb1.37
jmp dword [eax*4 + 0x445bb8]
cmp eax, 0x5e
jg 0x445c00
je case.0x445bb1.36
sub eax, 0x5b
je 0x445da1
dec eax
je 0x445c15
jmp case.0x445bb1.37
sub eax, 0x7b
je 0x445cfe
dec eax
je 0x445d94
jmp case.0x445bb1.37
mov edx, dword [ebp - 0x20]
lea ecx, [ebp - 0x60]
mov dword [ebp - 0x2c], edx
push ecx
push 0
lea ecx, [ebp - 0x20]
mov eax, dword [ebp + 0xc]
push eax
mov edx, dword [ebp - 8]
push edx
push esi
push ecx
call fcn.004445d0
add esp, 0x18
mov ebx, eax
cmp dword [esi], 0
jne 0x446383
test ebx, ebx
jl 0x445c55
mov eax, dword [ebp - 0x2c]
mov ebx, 0x5c
mov dword [ebp - 0x20], eax
jmp case.0x445bb1.37
inc edi
cmp ebx, 0xfffffff4
jg 0x445b50
mov eax, ebx
neg eax
add eax, 0xfffffff4
cmp eax, dword [ebp - 0xc]
jle 0x445c6e
mov dword [ebp - 0xc], eax
inc edi
mov edx, dword [ebp - 0x20]
cmp byte [edx + 1], 0x7b
jne 0x445b50
lea ecx, [ebp - 0x60]
push ecx
mov eax, dword [ebp - 0x20]
add eax, 2
push eax
call fcn.00444774
add esp, 8
test eax, eax
je 0x445b50
lea edx, [ebp - 0x60]
lea ecx, [ebp - 0x28]
push edx
push esi
push ecx
lea eax, [ebp - 0x24]
push eax
mov edx, dword [ebp - 0x20]
add edx, 2
push edx
call fcn.004447fc
add esp, 0x14
mov dword [ebp - 0x20], eax
cmp dword [esi], 0
jne 0x446383
cmp dword [ebp - 0x24], 0
jne 0x445cd1
cmp dword [ebp - 0x28], 1
je 0x445cdd
cmp dword [ebp - 0x28], 0xffffffff
je 0x445cdd
cmp dword [ebp - 0x24], 1
jne 0x445ce0
cmp dword [ebp - 0x28], 0xffffffff
jne 0x445ce0
inc edi
jmp 0x445ce3
add edi, 5
mov ecx, dword [ebp - 0x20]
cmp byte [ecx + 1], 0x3f
jne 0x445b50
inc dword [ebp - 0x20]
jmp 0x445b50
inc edi
jmp 0x445b50
lea eax, [ebp - 0x60]
push eax
mov edx, dword [ebp - 0x20]
inc edx
push edx
call fcn.00444774
add esp, 8
test eax, eax
je case.0x445bb1.37
lea ecx, [ebp - 0x60]
lea eax, [ebp - 0x28]
push ecx
push esi
push eax
lea edx, [ebp - 0x24]
push edx
mov ecx, dword [ebp - 0x20]
inc ecx
push ecx
call fcn.004447fc
add esp, 0x14
mov dword [ebp - 0x20], eax
cmp dword [esi], 0
jne 0x446383
cmp dword [ebp - 0x24], 0
jne 0x445d4f
cmp dword [ebp - 0x28], 1
je 0x445d5b
cmp dword [ebp - 0x28], 0xffffffff
je 0x445d5b
cmp dword [ebp - 0x24], 1
jne 0x445d5e
cmp dword [ebp - 0x28], 0xffffffff
jne 0x445d5e
inc edi
jmp 0x445d7f
dec edi
cmp dword [ebp - 0x24], 1
jne 0x445d68
inc edi
jmp 0x445d71
cmp dword [ebp - 0x24], 0
jle 0x445d71
add edi, 4
cmp dword [ebp - 0x28], 0
jle 0x445d7c
add edi, 4
jmp 0x445d7f
add edi, 2
mov eax, dword [ebp - 0x20]
cmp byte [eax + 1], 0x3f
jne 0x445b50
inc dword [ebp - 0x20]
jmp 0x445b50
mov edx, dword [ebp - 0x10]
add edx, 3
add edi, edx
jmp 0x445b50
xor ebx, ebx
inc dword [ebp - 0x20]
mov eax, dword [ebp - 0x20]
cmp byte [eax], 0x5e
jne 0x445db1
inc dword [ebp - 0x20]
mov edx, dword [ebp - 0x20]
cmp byte [edx], 0x5c
jne 0x445dee
lea ecx, [ebp - 0x60]
push ecx
push 1
mov eax, dword [ebp + 0xc]
lea ecx, [ebp - 0x20]
push eax
mov edx, dword [ebp - 8]
push edx
push esi
push ecx
call fcn.004445d0
add esp, 0x18
cmp dword [esi], 0
jne 0x446383
neg eax
cmp eax, 3
jne 0x445de7
inc ebx
jmp 0x445def
mov ebx, 0xa
jmp 0x445def
inc ebx
inc dword [ebp - 0x20]
mov eax, dword [ebp - 0x20]
mov al, byte [eax]
test al, al
je 0x445dff
cmp al, 0x5d
jne 0x445db1
dec ebx
jne 0x445e0a
add edi, 3
jmp 0x445b50
add edi, 0x21
mov edx, dword [ebp - 0x20]
cmp byte [edx], 0
je 0x445b50
mov ecx, dword [ebp - 0x20]
cmp byte [ecx + 1], 0x7b
jne 0x445b50
lea eax, [ebp - 0x60]
push eax
mov edx, dword [ebp - 0x20]
add edx, 2
push edx
call fcn.00444774
add esp, 8
test eax, eax
je 0x445b50
lea ecx, [ebp - 0x60]
lea eax, [ebp - 0x28]
push ecx
push esi
push eax
lea edx, [ebp - 0x24]
push edx
mov ecx, dword [ebp - 0x20]
add ecx, 2
push ecx
call fcn.004447fc
add esp, 0x14
mov dword [ebp - 0x20], eax
cmp dword [esi], 0
jne 0x446383
cmp dword [ebp - 0x24], 0
jne 0x445e7b
cmp dword [ebp - 0x28], 1
je 0x445e87
cmp dword [ebp - 0x28], 0xffffffff
je 0x445e87
cmp dword [ebp - 0x24], 1
jne 0x445e8a
cmp dword [ebp - 0x28], 0xffffffff
jne 0x445e8a
inc edi
jmp 0x445e8d
add edi, 5
mov eax, dword [ebp - 0x20]
cmp byte [eax + 1], 0x3f
jne 0x445b50
inc dword [ebp - 0x20]
jmp 0x445b50
xor edx, edx
mov dword [ebp - 0x14], edx
mov ecx, dword [ebp - 0x20]
cmp byte [ecx + 1], 0x3f
jne 0x4460cc
mov eax, dword [ebp - 0x20]
xor ebx, ebx
mov bl, byte [eax + 2]
mov eax, ebx
add eax, 0xffffffdf
cmp eax, 0x1d
ja case.0x445ed0.33
mov al, byte [eax + 0x445ed7]
jmp dword [eax*4 + 0x445ef5]
add dword [ebp - 0x20], 3
jmp 0x445f12
inc dword [ebp - 0x20]
mov edx, dword [ebp - 0x20]
mov al, byte [edx]
test al, al
je 0x445f1f
cmp al, 0x29
jne 0x445f0f
mov edx, dword [ebp - 0x20]
cmp byte [edx], 0
jne 0x445b50
mov dword [esi], 0x487226
jmp 0x446383
add dword [ebp - 0x20], 2
jmp 0x4460cf
mov ecx, dword [ebp - 0x20]
mov al, byte [ecx + 3]
cmp al, 0x3d
je 0x445f4d
cmp al, 0x21
jne 0x445f60
add dword [ebp - 0x20], 3
mov dword [ebp - 0x14], 3
add edi, 3
jmp 0x4460cf
mov dword [esi], 0x48723e
jmp 0x446383
mov edx, dword [ebp - 0x20]
xor ecx, ecx
mov cl, byte [edx + 3]
mov eax, dword [ebp - 0x54]
test byte [eax + ecx], 4
je 0x445faf
add dword [ebp - 0x20], 4
add edi, 2
jmp 0x445f88
inc dword [ebp - 0x20]
mov edx, dword [ebp - 0x20]
xor ecx, ecx
mov cl, byte [edx]
mov eax, dword [ebp - 0x54]
test byte [eax + ecx], 4
jne 0x445f85
mov edx, dword [ebp - 0x20]
cmp byte [edx], 0x29
je 0x4460cf
mov dword [esi], 0x48725f
jmp 0x446383
inc dword [ebp - 0x20]
mov ecx, dword [ebp - 0x20]
cmp byte [ecx + 2], 0x3f
jne 0x445fd9
mov eax, dword [ebp - 0x20]
xor edx, edx
mov dl, byte [eax + 3]
push edx
push 0x48727a
call fcn.00444078
add esp, 8
test eax, eax
jne 0x4460cf
add dword [ebp - 0x20], 2
mov dword [esi], 0x48727e
jmp 0x446383
xor ecx, ecx
lea eax, [ebp - 0x30]
mov dword [ebp - 0x34], ecx
mov dword [ebp - 0x30], ecx
add dword [ebp - 0x20], 2
mov edx, dword [ebp - 0x20]
xor ebx, ebx
mov bl, byte [edx]
mov edx, ebx
cmp edx, 0x58
jg 0x44601d
je 0x446047
sub edx, 0x29
je 0x446059
sub edx, 4
je 0x446054
sub edx, 0xd
je 0x446077
sub edx, 0x1b
je 0x44604c
jmp 0x44608d
sub edx, 0x69
je 0x446033
sub edx, 4
je 0x446038
sub edx, 6
je 0x44603d
sub edx, 5
je 0x446042
jmp 0x44608d
or dword [eax], 1
jmp 0x446098
or dword [eax], 2
jmp 0x446098
or dword [eax], 4
jmp 0x446098
or dword [eax], 8
jmp 0x446098
or dword [eax], 0x40
jmp 0x446098
or dword [eax], 0x200
jmp 0x446098
lea eax, [ebp - 0x34]
jmp 0x446098
cmp dword [ebp - 0x18], 0
jne 0x446077
mov ecx, dword [ebp + 0xc]
mov eax, dword [ebp - 0x34]
or ecx, dword [ebp - 0x30]
not eax
and ecx, eax
xor edx, edx
mov dword [ebp + 0xc], ecx
mov dword [ebp - 0x34], edx
mov dword [ebp - 0x30], edx
mov eax, dword [ebp - 0x30]
or eax, dword [ebp - 0x34]
test al, 7
je 0x4460a0
mov dword [ebp - 0x14], 2
add edi, 4
jmp 0x4460a0
mov dword [esi], 0x48729b
jmp 0x446383
inc dword [ebp - 0x20]
jmp 0x445ff7
cmp ebx, 0x29
jne 0x4460cf
cmp dword [ebp - 0x14], 2
jne 0x445b50
cmp dword [ebp - 0x10], 0
je 0x4460bf
cmp dword [ebp - 0x10], 3
jne 0x445b50
mov ecx, dword [ebp - 0x14]
add dword [ebp - 0x10], ecx
jmp 0x445b50
inc dword [ebp - 8]
cmp dword [ebp - 0x18], 0xc8
jb 0x4460e3
mov dword [esi], 0x4872bb
jmp 0x446383
mov al, byte [ebp - 0x10]
mov edx, dword [ebp - 0x4c]
mov byte [edx], al
mov ecx, dword [ebp - 0x14]
mov dword [ebp - 0x10], ecx
mov eax, dword [ebp - 0x50]
mov dword [eax], edi
inc dword [ebp - 0x18]
add edi, 3
jmp 0x445b50
add edi, 3
mov dword [ebp - 0x38], 1
mov dword [ebp - 0x3c], 1
cmp dword [ebp - 0x18], 0
jbe 0x446138
dec dword [ebp - 0x18]
add dword [ebp - 0x50], 0xfffffffc
dec dword [ebp - 0x4c]
mov edx, dword [ebp - 0x50]
mov ecx, edi
sub ecx, dword [edx]
mov dword [ebp - 0x40], ecx
mov eax, dword [ebp - 0x4c]
xor edx, edx
mov dl, byte [eax]
mov dword [ebp - 0x10], edx
jmp 0x44613d
xor ecx, ecx
mov dword [ebp - 0x40], ecx
mov eax, dword [ebp - 0x20]
xor ebx, ebx
mov bl, byte [eax + 1]
cmp ebx, 0x7b
jne 0x44618b
lea eax, [ebp - 0x60]
push eax
mov edx, dword [ebp - 0x20]
add edx, 2
push edx
call fcn.00444774
add esp, 8
test eax, eax
je 0x44618b
lea ecx, [ebp - 0x60]
lea eax, [ebp - 0x3c]
push ecx
push esi
push eax
lea edx, [ebp - 0x38]
push edx
mov ecx, dword [ebp - 0x20]
add ecx, 2
push ecx
call fcn.004447fc
add esp, 0x14
mov dword [ebp - 0x20], eax
cmp dword [esi], 0
jne 0x446383
jmp 0x4461bf
cmp ebx, 0x2a
jne 0x4461a1
xor eax, eax
mov dword [ebp - 0x38], eax
mov dword [ebp - 0x3c], 0xffffffff
inc dword [ebp - 0x20]
jmp 0x4461bf
cmp ebx, 0x2b
jne 0x4461b2
mov dword [ebp - 0x3c], 0xffffffff
inc dword [ebp - 0x20]
jmp 0x4461bf
cmp ebx, 0x3f
jne 0x4461bf
xor edx, edx
mov dword [ebp - 0x38], edx
inc dword [ebp - 0x20]
cmp dword [ebp - 0x38], 0
jne 0x4461c8
inc edi
jmp 0x4461d8
cmp dword [ebp - 0x38], 1
jle 0x4461d8
mov ecx, dword [ebp - 0x38]
dec ecx
imul ecx, dword [ebp - 0x40]
add edi, ecx
mov eax, dword [ebp - 0x3c]
cmp eax, dword [ebp - 0x38]
jle 0x445b50
mov edx, dword [ebp - 0x3c]
mov ecx, dword [ebp - 0x40]
sub edx, dword [ebp - 0x38]
inc ecx
imul edx, ecx
add edi, edx
jmp 0x445b50
add edi, 2
xor eax, eax
mov dword [ebp - 4], eax
test byte [ebp + 0xc], 8
je 0x446229
mov edx, dword [ebp - 0x54]
test byte [edx + ebx], 1
jne 0x446269
cmp ebx, 0x23
jne 0x446229
inc dword [ebp - 0x20]
mov ecx, dword [ebp - 0x20]
xor ebx, ebx
mov bl, byte [ecx]
test ebx, ebx
je 0x446269
cmp ebx, 0xa
jne 0x446214
jmp 0x446269
cmp ebx, 0x5c
jne 0x446266
mov eax, dword [ebp - 0x20]
lea edx, [ebp - 0x60]
mov dword [ebp - 0x44], eax
push edx
push 0
lea edx, [ebp - 0x20]
mov ecx, dword [ebp + 0xc]
push ecx
mov eax, dword [ebp - 8]
push eax
push esi
push edx
call fcn.004445d0
add esp, 0x18
mov ebx, eax
cmp dword [esi], 0
jne 0x446383
test ebx, ebx
jge 0x446266
mov eax, dword [ebp - 0x44]
mov dword [ebp - 0x20], eax
jmp 0x446289
inc dword [ebp - 4]
cmp dword [ebp - 4], 0xff
jge 0x446289
inc dword [ebp - 0x20]
mov edx, dword [ebp - 0x20]
xor ebx, ebx
mov bl, byte [edx]
mov eax, dword [ebp - 0x54]
test byte [eax + ebx], 0x80
je 0x446200
dec dword [ebp - 0x20]
add edi, dword [ebp - 4]
jmp 0x445b50
inc dword [ebp - 0x20]
mov edx, dword [ebp - 0x20]
xor ebx, ebx
mov bl, byte [edx]
test ebx, ebx
jne 0x445b6f
add edi, 4
cmp edi, 0x10003
jle 0x4462be
mov dword [esi], 0x4872d8
xor eax, eax
jmp 0x4463e8
mov eax, edi
add eax, 0xd
push eax
call dword [0x48a1d8]
pop ecx
mov ebx, eax
test ebx, ebx
jne 0x4462de
mov dword [esi], 0x4872f5
xor eax, eax
jmp 0x4463e8
mov dword [ebx], 0x50435245
mov dx, word [ebp + 0xc]
mov word [ebx + 8], dx
lea edx, [ebx + 0xd]
mov ecx, dword [ebp + 0x18]
mov dword [ebx + 4], ecx
mov eax, dword [ebp + 8]
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x1c], edx
mov ecx, dword [ebp - 0x1c]
xor eax, eax
lea edx, [ebp - 0x60]
mov byte [ecx], 0x45
mov dword [ebp - 8], eax
push edx
push 0xffffffffffffffff
push 0
push esi
lea ecx, [ebp - 0x20]
push ecx
lea eax, [ebp - 0x1c]
push eax
lea edx, [ebp - 8]
push edx
push 0xffffffffffffffff
mov ecx, dword [ebp + 0xc]
push ecx
call fcn.0044570c
add esp, 0x24
mov al, byte [ebp - 8]
mov byte [ebx + 0xa], al
mov dl, byte [ebp - 0xc]
mov byte [ebx + 0xb], dl
cmp dword [esi], 0
jne 0x44634b
mov ecx, dword [ebp - 0x20]
cmp byte [ecx], 0
je 0x44634b
mov dword [esi], 0x48730a
mov eax, dword [ebp - 0x1c]
mov byte [eax], 0
inc dword [ebp - 0x1c]
lea edx, [ebx + 0xd]
mov ecx, dword [ebp - 0x1c]
sub ecx, edx
cmp edi, ecx
jge 0x446366
mov dword [esi], 0x487320
xor eax, eax
mov al, byte [ebx + 0xa]
cmp eax, dword [ebp - 0xc]
jge 0x446376
mov dword [esi], 0x48733e
cmp dword [esi], 0
je 0x446392
push ebx
call dword [0x48a1dc]
pop ecx
mov edx, dword [ebp - 0x20]
mov ecx, dword [ebp + 0x14]
sub edx, dword [ebp + 8]
xor eax, eax
mov dword [ecx], edx
jmp 0x4463e8
test byte [ebp + 0xc], 0x10
jne 0x4463e6
mov edx, dword [ebp + 0xc]
mov dword [ebp - 0x48], edx
lea ecx, [ebp - 0x48]
push ecx
lea esi, [ebx + 0xd]
push esi
call fcn.004458e8
add esp, 8
test eax, eax
je 0x4463b9
or word [ebx + 8], 0x10
jmp 0x4463e6
lea eax, [ebp - 0x48]
push eax
push esi
call fcn.004459e4
add esp, 8
test eax, eax
jl 0x4463d5
mov byte [ebx + 0xc], al
or word [ebx + 8], 0x8000
jmp 0x4463e6
push esi
call fcn.00445978
pop ecx
test eax, eax
je 0x4463e6
or word [ebx + 8], 0x4000
mov eax, ebx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret