Function at 0x4496b1
Capabilities:
Parse credit card information

Disassembly:
push ebp
mov ebp, esp
mov eax, 0x1828
call fcn.00454e20
push ebx
push esi
push edi
xor ebx, ebx
cmp dword [ebp + 0xc], ebx
mov edi, ecx
mov dword [ebp - 0xc], edi
jne 0x449707
cmp byte [ebp + 0x10], 0xff
jne 0x449707
mov byte [ebp + 0x10], bl
mov byte [ebp - 0x12], bl
push 0x20
call fcn.0044b893
test eax, eax
pop ecx
je 0x449dcf
push dword [ebp + 0x10]
xor ecx, ecx
mov cl, byte [edi + 0x49]
push ebx
push dword [ebp + 8]
push dword [edi + 0x4c]
push ecx
mov ecx, eax
call fcn.0044d467
mov esi, eax
jmp 0x449dd1
cmp byte [ebp + 0x10], 0
mov byte [ebp - 0x12], 1
je 0x4496d9
movzx esi, byte [ebp + 0x10]
lea eax, [esi + esi*2]
shl eax, 2
push eax
mov dword [ebp - 0x28], esi
call fcn.0044b893
mov ebx, eax
test ebx, ebx
pop ecx
mov dword [ebp - 0x20], ebx
jne 0x44973d
push 0x4575d8
push str.Out_of_memory.
jmp 0x44a1bc
and dword [ebp - 8], 0
test esi, esi
jle 0x4496d9
mov eax, dword [ebp + 0x14]
test eax, eax
mov ecx, dword [ebp - 8]
mov ebx, dword [ebp + 0xc]
mov esi, dword [ebx + ecx*4]
je 0x44975d
mov eax, dword [eax + ecx*4]
mov dword [ebp - 0x10], eax
jmp 0x449761
and dword [ebp - 0x10], 0
cmp byte [ebp + 8], 0x2b
mov edx, dword [ebp - 0x20]
lea eax, [ecx + ecx*2]
lea edi, [edx + eax*4]
mov byte [edi + 1], 0
jne 0x4497cd
cmp ecx, 1
jne 0x4497a7
push esi
call fcn.00415353
pop ecx
mov dword [ebp - 0x24], eax
push dword [ebp - 8]
push dword [ebp + 8]
call fcn.00446222
test al, al
pop ecx
pop ecx
mov byte [edi], al
je 0x449869
mov cl, byte [esi]
test cl, cl
jne 0x4497f5
mov byte [edi], cl
jmp 0x4498a4
jle 0x449783
mov eax, dword [ebp - 0x24]
test eax, eax
jl 0x4497bf
cmp eax, 1
jle 0x449783
cmp eax, 2
jle 0x4497bf
cmp eax, 5
jle 0x449783
push dword [ebp - 0x10]
push esi
call fcn.0044ad6a
pop ecx
pop ecx
mov byte [edi + 1], al
cmp byte [ebp + 8], 0x68
jne 0x449783
cmp dword [ebp - 8], 1
jne 0x449783
mov eax, dword [ebx]
test eax, eax
je 0x449783
push str.Parse
push eax
call fcn.00441439
test eax, eax
pop ecx
pop ecx
jne 0x449783
mov byte [edi], 1
jmp 0x44979a
mov edx, dword [ebp - 0x10]
xor ebx, ebx
mov eax, esi
sub edx, esi
cmp cl, byte [0x46208d]
jne 0x449812
cmp dword [ebp - 0x10], 0
je 0x44981a
cmp byte [edx + eax], 0
je 0x44981a
inc ebx
inc eax
mov cl, byte [eax]
test cl, cl
jne 0x4497fe
cmp byte [ebx + esi], 0
jne 0x4498a4
mov ecx, dword [ebp - 0xc]
xor ebx, ebx
push ebx
push ebx
push ebx
push esi
call fcn.0041c6e8
cmp eax, ebx
je 0x449e91
cmp byte [edi], 2
jne 0x449856
mov cl, byte [eax + 0xf]
cmp cl, 2
jne 0x44984d
mov ecx, dword [eax + 4]
mov cl, byte [ecx + 0xf]
cmp cl, 4
ja 0x449d83
mov dword [edi + 4], 0x4575d8
mov word [edi + 2], bx
mov dword [edi + 8], eax
jmp 0x449d69
mov al, byte [esi]
cmp al, byte [0x46208d]
jne 0x4498a4
mov eax, dword [ebp - 0x10]
test eax, eax
je 0x44987f
cmp byte [eax], 0
jne 0x4498a4
mov al, byte [esi + 1]
cmp al, 0x20
je 0x44988a
cmp al, 9
jne 0x4498a4
inc esi
inc esi
cmp dword [ebp - 0x10], 0
mov byte [edi + 1], 1
je 0x44989a
add dword [ebp - 0x10], 2
cmp byte [ebp + 8], 1
jne 0x4498a4
mov byte [ebp + 8], 2
push esi
call fcn.00454880
mov word [edi + 2], ax
movzx eax, ax
push eax
push esi
call fcn.0044b90a
add esp, 0xc
test eax, eax
mov dword [edi + 4], eax
je 0x449e91
movzx ecx, byte [ebp + 8]
and dword [ebp - 4], 0
imul ecx, ecx, 0xe
add ecx, 0x462117
je 0x449943
mov ebx, dword [ebp - 8]
lea esi, [ebx + 1]
jmp 0x4498e9
movzx edx, dl
cmp edx, esi
je 0x4498f1
inc ecx
mov dl, byte [ecx]
test dl, dl
jne 0x4498e1
jmp 0x449943
cmp byte [ebp + 8], 0x7c
jne 0x449915
cmp ebx, 1
jle 0x44990f
push str.default
push eax
call fcn.00441439
test eax, eax
pop ecx
pop ecx
je 0x449943
jmp 0x44991b
cmp byte [ebp + 0x10], 2
ja 0x449943
cmp byte [ebp + 8], 2
je 0x44993f
mov esi, dword [edi + 4]
push str.__t____:____
push esi
call fcn.00438acb
test eax, eax
pop ecx
pop ecx
jne 0x44993f
push dword [ebp - 0x10]
push esi
call fcn.0044ad6a
pop ecx
pop ecx
mov byte [edi + 1], al
jmp 0x449943
mov byte [edi + 1], 1
cmp byte [edi + 1], 0
je 0x449d0a
push 0
push 1
push 1
push 1
push dword [edi + 4]
call fcn.00401ab6
add esp, 0x14
test eax, eax
je 0x449968
mov byte [edi + 1], 0
cmp byte [edi + 1], 0
je 0x449d0a
mov esi, dword [edi + 4]
mov ecx, esi
mov al, byte [ecx]
xor dl, dl
xor ebx, ebx
test al, al
je 0x4499bb
movsx eax, al
sub eax, 0x22
je 0x4499a7
sub eax, 6
je 0x4499a0
dec eax
jne 0x4499ac
test dl, dl
jne 0x4499ac
test ebx, ebx
je 0x449d91
dec ebx
jmp 0x4499ac
test dl, dl
jne 0x4499ac
inc ebx
jmp 0x4499ac
test dl, dl
sete dl
inc ecx
mov al, byte [ecx]
test al, al
jne 0x449981
test ebx, ebx
jne 0x449d99
cmp byte [esi], 0
je 0x449c32
cmp byte [esi], 0x2e
jne 0x4499d1
cmp byte [esi + 1], 0x3d
jne 0x4499d1
inc esi
inc esi
cmp byte [esi], 0
je 0x449c28
movsx eax, byte [esi]
push eax
push 0x45b190
call fcn.004549b0
test eax, eax
pop ecx
pop ecx
je 0x4499f4
inc esi
cmp byte [esi], 0
jne 0x4499da
mov al, byte [esi]
test al, al
je 0x449c28
cmp al, 0x22
lea ebx, [esi + 1]
jne 0x449a1f
mov al, byte [ebx]
test al, al
je 0x449da3
cmp al, 0x22
jne 0x449a1c
inc ebx
cmp byte [ebx], al
jne 0x449c1d
inc ebx
jmp 0x449a05
movsx eax, byte [ebx]
push eax
push 0x45b190
mov dword [ebp - 0x18], ebx
call fcn.004549b0
test eax, eax
pop ecx
pop ecx
jne 0x449a4e
inc ebx
movsx eax, byte [ebx]
push eax
push 0x45b190
call fcn.004549b0
test eax, eax
pop ecx
pop ecx
je 0x449a36
mov dword [ebp - 0x18], ebx
cmp byte [ebx], 0x3d
jne 0x449a60
lea eax, [ebx - 1]
cmp byte [eax], 0x2e
jne 0x449a60
mov ebx, eax
mov dword [ebp - 0x18], ebx
cmp byte [esi], 0x2e
jne 0x449a7e
movsx eax, byte [esi + 1]
push eax
push 0x45b18c
call fcn.004549b0
test eax, eax
pop ecx
pop ecx
jne 0x449c1d
mov eax, ebx
sub eax, esi
cmp eax, 4
mov dword [ebp - 0x1c], eax
jae 0x449aee
cmp eax, 1
jbe 0x449aee
cmp eax, 2
mov al, byte [esi]
jne 0x449ab8
cmp al, 0x6f
je 0x449a9e
cmp al, 0x4f
jne 0x449aee
lea eax, [esi + 1]
mov cl, byte [eax]
cmp cl, 0x72
je 0x449aad
cmp cl, 0x52
jne 0x449aee
mov byte [esi], 0x7c
mov byte [eax], 0x7c
jmp 0x449c1d
cmp al, 0x41
je 0x449b87
cmp al, 0x4e
je 0x449ad0
cmp al, 0x61
je 0x449b87
cmp al, 0x6e
jne 0x449aee
mov al, byte [esi + 1]
cmp al, 0x6f
je 0x449adb
cmp al, 0x4f
jne 0x449aee
mov al, byte [esi + 2]
cmp al, 0x74
je 0x449c1d
cmp al, 0x54
je 0x449c1d
mov al, byte [ebx]
push 0x45b184
push esi
mov byte [ebp - 0x11], al
mov byte [ebx], 0
call fcn.00438acb
test eax, eax
pop ecx
pop ecx
jne 0x449dab
push eax
push 1
push eax
push 1
push esi
call fcn.00401ab6
add esp, 0x14
test eax, eax
jne 0x449c18
cmp byte [esi], 0x3f
jne 0x449b30
cmp byte [esi + 1], al
je 0x449c18
movsx eax, byte [0x46208d]
cmp byte [ebp - 0x11], 0x28
push eax
push esi
sete byte [ebp - 0x13]
call fcn.004549b0
test eax, eax
pop ecx
pop ecx
je 0x449bb2
cmp byte [ebp - 0x13], 0
jne 0x449db3
xor eax, eax
cmp dword [ebp - 0x10], eax
je 0x449b65
mov eax, esi
sub eax, dword [edi + 4]
add eax, dword [ebp - 0x10]
lea ecx, [ebp - 4]
push ecx
lea ecx, [ebp - 0x1828]
push ecx
mov ecx, dword [ebp - 0xc]
push eax
push esi
call fcn.0044aeaa
test eax, eax
je 0x449e91
jmp 0x449c18
mov al, byte [esi + 1]
cmp al, 0x6e
je 0x449b96
cmp al, 0x4e
jne 0x449aee
mov al, byte [esi + 2]
cmp al, 0x64
je 0x449ba5
cmp al, 0x44
jne 0x449aee
mov byte [esi], 0x26
mov byte [esi + 1], 0x26
mov byte [esi + 2], 0x20
jmp 0x449c1d
cmp dword [ebp - 4], 0x200
jge 0x449dbb
mov ebx, dword [ebp - 4]
mov ax, word [ebp - 0x1c]
lea ebx, [ebx + ebx*2]
shl ebx, 2
mov dword [ebp + ebx - 0x1828], esi
mov word [ebp + ebx - 0x181e], ax
mov al, byte [ebp - 0x13]
test al, al
mov byte [ebp + ebx - 0x1820], al
je 0x449bf3
and dword [ebp + ebx - 0x1824], 0
jmp 0x449c12
mov ecx, dword [ebp - 0xc]
push 0
push 0
push dword [ebp - 0x1c]
push esi
call fcn.0041c6e8
test eax, eax
mov dword [ebp + ebx - 0x1824], eax
je 0x449e91
inc dword [ebp - 4]
mov ebx, dword [ebp - 0x18]
mov al, byte [ebp - 0x11]
mov byte [ebx], al
cmp byte [ebx], 0
mov esi, ebx
jne 0x4499c4
cmp dword [ebp - 4], 0
jne 0x449cb5
mov eax, dword [edi + 4]
cmp byte [eax], 0x22
jne 0x449d65
inc eax
mov cl, byte [eax]
test cl, cl
je 0x449e91
cmp cl, 0x22
jne 0x449c3e
inc eax
cmp byte [eax], cl
je 0x449c3e
cmp byte [eax], 0
jne 0x449d2b
cmp byte [ebp + 8], 0x88
je 0x449d2b
cmp byte [ebp + 8], 0x87
je 0x449d2b
dec eax
mov byte [edi + 1], 0
mov byte [eax], 0
mov ecx, dword [edi + 4]
sub eax, ecx
push eax
lea eax, [ecx + 1]
push eax
push ecx
call fcn.00454a70
push 0
push 0
push 0xffffffffffffffff
push 0xffffffffffffffff
push 1
push 0x45b180
push 0x45aed4
push dword [edi + 4]
call fcn.0041bfe4
push dword [edi + 4]
call fcn.00454880
add esp, 0x30
mov word [edi + 2], ax
jmp 0x449d2b
mov esi, dword [ebp - 4]
cmp esi, 1
jne 0x449cd6
push 0
push 0
push dword [edi + 4]
call fcn.0044de5b
add esp, 0xc
test eax, eax
je 0x449cd6
mov byte [edi + 1], 0
jmp 0x449d34
push 0x45b190
push dword [edi + 4]
call fcn.00438acb
test eax, eax
pop ecx
pop ecx
jne 0x449d2b
cmp byte [ebp - 0x1820], al
jne 0x449d2b
mov eax, dword [ebp - 0x1828]
mov al, byte [eax]
cmp al, byte [0x46208d]
jne 0x449d2b
mov byte [edi + 1], 0
mov byte [edi], 1
jmp 0x449d2b
mov ecx, dword [ebp - 0xc]
lea eax, [ebp - 4]
push eax
lea eax, [ebp - 0x1828]
push eax
push dword [ebp - 0x10]
push dword [edi + 4]
call fcn.0044aeaa
test eax, eax
je 0x449e91
cmp dword [ebp - 4], 0
je 0x449d65
mov esi, dword [ebp - 4]
lea esi, [esi + esi*2]
shl esi, 2
lea eax, [esi + 0xc]
push eax
call fcn.0044b893
test eax, eax
pop ecx
mov dword [edi + 8], eax
je 0x449dc3
push esi
lea ecx, [ebp - 0x1828]
push ecx
push eax
call fcn.00454280
mov eax, dword [edi + 8]
add esp, 0xc
and dword [esi + eax], 0
jmp 0x449d69
and dword [edi + 8], 0
inc dword [ebp - 8]
mov eax, dword [ebp - 8]
cmp eax, dword [ebp - 0x28]
jl 0x449745
mov edi, dword [ebp - 0xc]
mov ebx, dword [ebp - 0x20]
jmp 0x4496d9
push esi
push str.Not_allowed_as_an_output_variable.
mov ecx, dword [ebp - 0xc]
jmp 0x44a1be
push ecx
push str.Missing____
jmp 0x449d89
push dword [edi + 4]
push 0x45ac4c
jmp 0x449d89
push esi
push str.Missing_close_quote
jmp 0x449d89
push eax
push str.The_leftmost_character_above_is_illegal_in_an_expression.
jmp 0x449d89
push esi
push str.Dynamic_function_calls_are_not_supported.
jmp 0x449d89
push esi
push str.Too_many_var_func_refs.
jmp 0x449d89
push 0x4575d8
push str.Out_of_memory.
jmp 0x449d89
xor esi, esi
test esi, esi
je 0x44972e
lea eax, [edi + 4]
mov ecx, dword [eax]
mov dword [esi + 0x10], ecx
cmp dword [edi], 0
jne 0x449dea
mov dword [edi], esi
jmp 0x449def
mov ecx, dword [eax]
mov dword [ecx + 0x14], esi
mov cl, byte [ebp + 0x10]
test cl, cl
mov dword [eax], esi
mov dword [edi + 0x23c], esi
jbe 0x449e0b
mov eax, dword [ebx + 4]
mov dword [ebp + 0x14], eax
mov eax, 0x4575d8
jmp 0x449e13
mov eax, 0x4575d8
mov dword [ebp + 0x14], eax
cmp cl, 1
jbe 0x449e20
mov edx, dword [ebx + 0x10]
mov dword [ebp + 0xc], edx
jmp 0x449e23
mov dword [ebp + 0xc], eax
cmp cl, 2
jbe 0x449e30
mov edx, dword [ebx + 0x1c]
mov dword [ebp - 8], edx
jmp 0x449e33
mov dword [ebp - 8], eax
cmp cl, 3
jbe 0x449e3b
mov eax, dword [ebx + 0x28]
mov dword [ebp - 4], eax
mov al, byte [ebp + 8]
cmp al, 8
je 0x44a0e8
cmp al, 0x68
je 0x449f4a
cmp al, 0x8b
jbe 0x44a0ef
cmp al, 0x8f
jbe 0x449e71
cmp al, 0xd2
jne 0x44a0ef
mov byte [0x4644c4], 1
jmp 0x44a0ef
push 1
mov ecx, esi
call fcn.00443439
test al, al
jne 0x449e98
push 1
push dword [ebp + 0x14]
mov ecx, edi
call fcn.0044d581
test eax, eax
mov dword [esi + 0xc], eax
jne 0x449e98
xor eax, eax
jmp 0x44a193
cmp byte [ebp + 8], 0x8d
je 0x449f02
cmp byte [ebp + 8], 0x8e
je 0x449f02
cmp byte [ebp + 8], 0x8f
jne 0x44a0ef
mov eax, dword [ebp + 0xc]
cmp byte [eax], 0
je 0x44a0ef
push 2
mov ecx, esi
call fcn.00443439
test al, al
jne 0x44a0ef
mov ebx, dword [ebp + 0xc]
push ebx
call fcn.00454880
cmp eax, 1
pop ecx
ja 0x449fe9
movsx eax, byte [ebx]
push eax
call fcn.004418c7
push eax
push 0x45b0f4
call fcn.004549b0
add esp, 0xc
test eax, eax
jne 0x44a0ef
jmp 0x449fe9
mov eax, dword [ebp + 0xc]
cmp byte [eax], 0
je 0x44a0ef
push 2
mov ecx, esi
call fcn.00443439
test al, al
jne 0x44a0ef
mov ebx, dword [ebp + 0xc]
push ebx
call fcn.00454880
cmp eax, 1
pop ecx
ja 0x449fe9
movsx eax, byte [ebx]
push eax
call fcn.004418c7
cmp eax, 0x52
pop ecx
je 0x44a0ef
jmp 0x449fe9
movzx eax, cl
sub eax, 0
je 0x44a0e8
dec eax
mov ecx, esi
je 0x44a0a0
xor ebx, ebx
inc ebx
push ebx
call fcn.00443439
test al, al
je 0x449f74
mov dword [esi + 0xc], ebx
jmp 0x44a0ef
push str.Read
push dword [ebp + 0x14]
call fcn.00441439
test eax, eax
pop ecx
pop ecx
jne 0x449f93
mov dword [esi + 0xc], 5
jmp 0x44a0ef
push str.Parse
push dword [ebp + 0x14]
call fcn.00441439
test eax, eax
pop ecx
pop ecx
jne 0x449fb2
mov dword [esi + 0xc], 6
jmp 0x44a0ef
push 0
push dword [ebp + 0x14]
call fcn.0041942f
neg eax
sbb eax, eax
neg eax
add eax, 3
cmp eax, 3
pop ecx
pop ecx
mov dword [esi + 0xc], eax
jne 0x44a041
push 2
mov ecx, esi
call fcn.00443439
test al, al
jne 0x449ff6
push dword [ebp + 0xc]
call fcn.00414dc7
test eax, eax
pop ecx
jne 0x449ff6
push dword [ebp + 0xc]
push str.Parameter_2_invalid
jmp 0x44a1bc
mov eax, dword [ebp - 8]
cmp byte [eax], 0
je 0x44a0ef
push 3
mov ecx, esi
call fcn.00443439
test al, al
jne 0x44a0ef
mov ebx, dword [ebp - 8]
push ebx
call fcn.00454880
cmp eax, 1
pop ecx
ja 0x44a034
mov al, byte [ebx]
cmp al, 0x30
je 0x44a0ef
cmp al, 0x31
je 0x44a0ef
push dword [ebp - 8]
push str.Parameter_3_invalid
jmp 0x44a1bc
cmp byte [ebp + 0x10], 2
jbe 0x44a061
push 3
mov ecx, esi
call fcn.00443439
test al, al
jne 0x44a061
push dword [ebp - 8]
call fcn.00414dc7
test eax, eax
pop ecx
je 0x44a034
mov eax, dword [ebp - 4]
cmp byte [eax], 0
je 0x44a0ef
push 4
mov ecx, esi
call fcn.00443439
test al, al
jne 0x44a0ef
mov ebx, dword [ebp - 4]
push ebx
call fcn.00454880
cmp eax, 1
pop ecx
ja 0x44a093
mov al, byte [ebx]
cmp al, 0x30
je 0x44a0ef
cmp al, 0x31
je 0x44a0ef
push dword [ebp - 4]
push str.Parameter_4_invalid
jmp 0x44a1bc
push 1
call fcn.00443439
test al, al
jne 0x44a0df
cmp byte [ebx + 1], al
jne 0x44a0df
xor ebx, ebx
push ebx
push ebx
push 1
push ebx
push dword [ebp + 0x14]
call fcn.00401ab6
add esp, 0x14
test eax, eax
jne 0x44a0e8
push ebx
push dword [ebp + 0x14]
call fcn.0041942f
neg eax
sbb eax, eax
neg eax
pop ecx
add eax, 3
pop ecx
mov dword [esi + 0xc], eax
jmp 0x44a0ef
mov dword [esi + 0xc], 1
jmp 0x44a0ef
mov dword [esi + 0xc], 2
cmp byte [edi + 0x3c], 0
je 0x44a10e
mov eax, dword [edi + 0x18]
mov dword [eax + 4], esi
mov byte [edi + 0x3c], 0
mov eax, dword [0x46434c]
cmp byte [eax + 0x30], 0
jne 0x44a10e
mov byte [eax + 0x30], 1
cmp byte [ebp + 8], 0x6b
jne 0x44a131
mov eax, dword [edi + 0x18]
inc dword [edi + 0x38]
test eax, eax
je 0x44a15b
cmp dword [eax + 4], 0
jne 0x44a15b
mov dword [esi + 0xc], 1
mov byte [edi + 0x3c], 1
jmp 0x44a15b
cmp byte [ebp + 8], 0x6c
jne 0x44a15b
dec dword [edi + 0x38]
mov eax, dword [edi + 0x38]
xor ecx, ecx
cmp dword [0x46434c], ecx
je 0x44a15b
cmp eax, ecx
jne 0x44a15b
mov dword [esi + 0xc], 1
mov dword [0x46434c], ecx
mov dword [edi + 0x40], ecx
cmp byte [ebp - 0x12], 0
je 0x44a18d
mov eax, dword [edi + 0x10]
jmp 0x44a189
cmp dword [eax + 4], 0
jne 0x44a18d
mov cl, byte [esi]
cmp cl, 0x6b
jne 0x44a179
cmp dword [esi + 0xc], 0
jne 0x44a19a
cmp cl, 9
je 0x44a1a6
cmp cl, 0x6c
je 0x44a1b2
mov dword [eax + 4], esi
mov eax, dword [eax + 8]
test eax, eax
jne 0x44a166
inc dword [edi + 8]
xor eax, eax
inc eax
pop edi
pop esi
pop ebx
leave
ret 0x10
push 0x4575d8
push str.A_label_must_not_point_to_a_function.
jmp 0x44a1bc
push 0x4575d8
push str.A_label_must_not_point_to_an_ELSE.
jmp 0x44a1bc
push 0x4575d8
push str.A_label_must_not_point_to_the_end_of_a_block._For_loops__use_Continue_vs._Goto.
mov ecx, edi
call fcn.0044a384
jmp 0x44a193