Function at 0x449ba4
Capabilities:
Parse credit card information

Disassembly:
push ebp
mov ebp, esp
mov eax, 0x1828
call fcn.004540a0
push ebx
push esi
push edi
xor ebx, ebx
cmp dword [ebp + 0xc], ebx
mov edi, ecx
mov dword [ebp - 0xc], edi
jne 0x449bfa
cmp byte [ebp + 0x10], 0xff
jne 0x449bfa
mov byte [ebp + 0x10], bl
mov byte [ebp - 0x12], bl
push 0x20
call fcn.0044bdc7
test eax, eax
pop ecx
je 0x44a2c2
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.0044d9a4
mov esi, eax
jmp 0x44a2c4
cmp byte [ebp + 0x10], 0
mov byte [ebp - 0x12], 1
je 0x449bcc
movzx esi, byte [ebp + 0x10]
lea eax, [esi + esi*2]
shl eax, 2
push eax
mov dword [ebp - 0x28], esi
call fcn.0044bdc7
mov ebx, eax
test ebx, ebx
pop ecx
mov dword [ebp - 0x20], ebx
jne 0x449c30
push 0x4565d8
push str.Out_of_memory.
jmp 0x44a6af
and dword [ebp - 8], 0
test esi, esi
jle 0x449bcc
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 0x449c50
mov eax, dword [eax + ecx*4]
mov dword [ebp - 0x10], eax
jmp 0x449c54
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 0x449cc0
cmp ecx, 1
jne 0x449c9a
push esi
call fcn.0041522e
pop ecx
mov dword [ebp - 0x24], eax
push dword [ebp - 8]
push dword [ebp + 8]
call fcn.00446633
test al, al
pop ecx
pop ecx
mov byte [edi], al
je 0x449d5c
mov cl, byte [esi]
test cl, cl
jne 0x449ce8
mov byte [edi], cl
jmp 0x449d97
jle 0x449c76
mov eax, dword [ebp - 0x24]
test eax, eax
jl 0x449cb2
cmp eax, 1
jle 0x449c76
cmp eax, 2
jle 0x449cb2
cmp eax, 5
jle 0x449c76
push dword [ebp - 0x10]
push esi
call fcn.0044b25d
pop ecx
pop ecx
mov byte [edi + 1], al
cmp byte [ebp + 8], 0x68
jne 0x449c76
cmp dword [ebp - 8], 1
jne 0x449c76
mov eax, dword [ebx]
test eax, eax
je 0x449c76
push str.Parse
push eax
call fcn.00441849
test eax, eax
pop ecx
pop ecx
jne 0x449c76
mov byte [edi], 1
jmp 0x449c8d
mov edx, dword [ebp - 0x10]
xor ebx, ebx
mov eax, esi
sub edx, esi
cmp cl, byte [0x46108d]
jne 0x449d05
cmp dword [ebp - 0x10], 0
je 0x449d0d
cmp byte [edx + eax], 0
je 0x449d0d
inc ebx
inc eax
mov cl, byte [eax]
test cl, cl
jne 0x449cf1
cmp byte [ebx + esi], 0
jne 0x449d97
mov ecx, dword [ebp - 0xc]
xor ebx, ebx
push ebx
push ebx
push ebx
push esi
call fcn.0041cc48
cmp eax, ebx
je 0x44a384
cmp byte [edi], 2
jne 0x449d49
mov cl, byte [eax + 0xf]
cmp cl, 2
jne 0x449d40
mov ecx, dword [eax + 4]
mov cl, byte [ecx + 0xf]
cmp cl, 4
ja 0x44a276
mov dword [edi + 4], 0x4565d8
mov word [edi + 2], bx
mov dword [edi + 8], eax
jmp 0x44a25c
mov al, byte [esi]
cmp al, byte [0x46108d]
jne 0x449d97
mov eax, dword [ebp - 0x10]
test eax, eax
je 0x449d72
cmp byte [eax], 0
jne 0x449d97
mov al, byte [esi + 1]
cmp al, 0x20
je 0x449d7d
cmp al, 9
jne 0x449d97
inc esi
inc esi
cmp dword [ebp - 0x10], 0
mov byte [edi + 1], 1
je 0x449d8d
add dword [ebp - 0x10], 2
cmp byte [ebp + 8], 1
jne 0x449d97
mov byte [ebp + 8], 2
push esi
call fcn.00453b00
mov word [edi + 2], ax
movzx eax, ax
push eax
push esi
call fcn.0044be3e
add esp, 0xc
test eax, eax
mov dword [edi + 4], eax
je 0x44a384
movzx ecx, byte [ebp + 8]
and dword [ebp - 4], 0
imul ecx, ecx, 0xe
add ecx, 0x461117
je 0x449e36
mov ebx, dword [ebp - 8]
lea esi, [ebx + 1]
jmp 0x449ddc
movzx edx, dl
cmp edx, esi
je 0x449de4
inc ecx
mov dl, byte [ecx]
test dl, dl
jne 0x449dd4
jmp 0x449e36
cmp byte [ebp + 8], 0x7c
jne 0x449e08
cmp ebx, 1
jle 0x449e02
push str.default
push eax
call fcn.00441849
test eax, eax
pop ecx
pop ecx
je 0x449e36
jmp 0x449e0e
cmp byte [ebp + 0x10], 2
ja 0x449e36
cmp byte [ebp + 8], 2
je 0x449e32
mov esi, dword [edi + 4]
push str.__t____:____
push esi
call fcn.00438ef0
test eax, eax
pop ecx
pop ecx
jne 0x449e32
push dword [ebp - 0x10]
push esi
call fcn.0044b25d
pop ecx
pop ecx
mov byte [edi + 1], al
jmp 0x449e36
mov byte [edi + 1], 1
cmp byte [edi + 1], 0
je 0x44a1fd
push 0
push 1
push 1
push 1
push dword [edi + 4]
call fcn.00401ab0
add esp, 0x14
test eax, eax
je 0x449e5b
mov byte [edi + 1], 0
cmp byte [edi + 1], 0
je 0x44a1fd
mov esi, dword [edi + 4]
mov ecx, esi
mov al, byte [ecx]
xor dl, dl
xor ebx, ebx
test al, al
je 0x449eae
movsx eax, al
sub eax, 0x22
je 0x449e9a
sub eax, 6
je 0x449e93
dec eax
jne 0x449e9f
test dl, dl
jne 0x449e9f
test ebx, ebx
je 0x44a284
dec ebx
jmp 0x449e9f
test dl, dl
jne 0x449e9f
inc ebx
jmp 0x449e9f
test dl, dl
sete dl
inc ecx
mov al, byte [ecx]
test al, al
jne 0x449e74
test ebx, ebx
jne 0x44a28c
cmp byte [esi], 0
je 0x44a125
cmp byte [esi], 0x2e
jne 0x449ec4
cmp byte [esi + 1], 0x3d
jne 0x449ec4
inc esi
inc esi
cmp byte [esi], 0
je 0x44a11b
movsx eax, byte [esi]
push eax
push 0x45a190
call fcn.00453c30
test eax, eax
pop ecx
pop ecx
je 0x449ee7
inc esi
cmp byte [esi], 0
jne 0x449ecd
mov al, byte [esi]
test al, al
je 0x44a11b
cmp al, 0x22
lea ebx, [esi + 1]
jne 0x449f12
mov al, byte [ebx]
test al, al
je 0x44a296
cmp al, 0x22
jne 0x449f0f
inc ebx
cmp byte [ebx], al
jne 0x44a110
inc ebx
jmp 0x449ef8
movsx eax, byte [ebx]
push eax
push 0x45a190
mov dword [ebp - 0x18], ebx
call fcn.00453c30
test eax, eax
pop ecx
pop ecx
jne 0x449f41
inc ebx
movsx eax, byte [ebx]
push eax
push 0x45a190
call fcn.00453c30
test eax, eax
pop ecx
pop ecx
je 0x449f29
mov dword [ebp - 0x18], ebx
cmp byte [ebx], 0x3d
jne 0x449f53
lea eax, [ebx - 1]
cmp byte [eax], 0x2e
jne 0x449f53
mov ebx, eax
mov dword [ebp - 0x18], ebx
cmp byte [esi], 0x2e
jne 0x449f71
movsx eax, byte [esi + 1]
push eax
push 0x45a18c
call fcn.00453c30
test eax, eax
pop ecx
pop ecx
jne 0x44a110
mov eax, ebx
sub eax, esi
cmp eax, 4
mov dword [ebp - 0x1c], eax
jae 0x449fe1
cmp eax, 1
jbe 0x449fe1
cmp eax, 2
mov al, byte [esi]
jne 0x449fab
cmp al, 0x6f
je 0x449f91
cmp al, 0x4f
jne 0x449fe1
lea eax, [esi + 1]
mov cl, byte [eax]
cmp cl, 0x72
je 0x449fa0
cmp cl, 0x52
jne 0x449fe1
mov byte [esi], 0x7c
mov byte [eax], 0x7c
jmp 0x44a110
cmp al, 0x41
je 0x44a07a
cmp al, 0x4e
je 0x449fc3
cmp al, 0x61
je 0x44a07a
cmp al, 0x6e
jne 0x449fe1
mov al, byte [esi + 1]
cmp al, 0x6f
je 0x449fce
cmp al, 0x4f
jne 0x449fe1
mov al, byte [esi + 2]
cmp al, 0x74
je 0x44a110
cmp al, 0x54
je 0x44a110
mov al, byte [ebx]
push 0x45a184
push esi
mov byte [ebp - 0x11], al
mov byte [ebx], 0
call fcn.00438ef0
test eax, eax
pop ecx
pop ecx
jne 0x44a29e
push eax
push 1
push eax
push 1
push esi
call fcn.00401ab0
add esp, 0x14
test eax, eax
jne 0x44a10b
cmp byte [esi], 0x3f
jne 0x44a023
cmp byte [esi + 1], al
je 0x44a10b
movsx eax, byte [0x46108d]
cmp byte [ebp - 0x11], 0x28
push eax
push esi
sete byte [ebp - 0x13]
call fcn.00453c30
test eax, eax
pop ecx
pop ecx
je 0x44a0a5
cmp byte [ebp - 0x13], 0
jne 0x44a2a6
xor eax, eax
cmp dword [ebp - 0x10], eax
je 0x44a058
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.0044b39d
test eax, eax
je 0x44a384
jmp 0x44a10b
mov al, byte [esi + 1]
cmp al, 0x6e
je 0x44a089
cmp al, 0x4e
jne 0x449fe1
mov al, byte [esi + 2]
cmp al, 0x64
je 0x44a098
cmp al, 0x44
jne 0x449fe1
mov byte [esi], 0x26
mov byte [esi + 1], 0x26
mov byte [esi + 2], 0x20
jmp 0x44a110
cmp dword [ebp - 4], 0x200
jge 0x44a2ae
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 0x44a0e6
and dword [ebp + ebx - 0x1824], 0
jmp 0x44a105
mov ecx, dword [ebp - 0xc]
push 0
push 0
push dword [ebp - 0x1c]
push esi
call fcn.0041cc48
test eax, eax
mov dword [ebp + ebx - 0x1824], eax
je 0x44a384
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 0x449eb7
cmp dword [ebp - 4], 0
jne 0x44a1a8
mov eax, dword [edi + 4]
cmp byte [eax], 0x22
jne 0x44a258
inc eax
mov cl, byte [eax]
test cl, cl
je 0x44a384
cmp cl, 0x22
jne 0x44a131
inc eax
cmp byte [eax], cl
je 0x44a131
cmp byte [eax], 0
jne 0x44a21e
cmp byte [ebp + 8], 0x88
je 0x44a21e
cmp byte [ebp + 8], 0x87
je 0x44a21e
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.00453cf0
push 0
push 0
push 0xffffffffffffffff
push 0xffffffffffffffff
push 1
push 0x45a180
push 0x459ed4
push dword [edi + 4]
call fcn.0041c523
push dword [edi + 4]
call fcn.00453b00
add esp, 0x30
mov word [edi + 2], ax
jmp 0x44a21e
mov esi, dword [ebp - 4]
cmp esi, 1
jne 0x44a1c9
push 0
push 0
push dword [edi + 4]
call fcn.0044e398
add esp, 0xc
test eax, eax
je 0x44a1c9
mov byte [edi + 1], 0
jmp 0x44a227
push 0x45a190
push dword [edi + 4]
call fcn.00438ef0
test eax, eax
pop ecx
pop ecx
jne 0x44a21e
cmp byte [ebp - 0x1820], al
jne 0x44a21e
mov eax, dword [ebp - 0x1828]
mov al, byte [eax]
cmp al, byte [0x46108d]
jne 0x44a21e
mov byte [edi + 1], 0
mov byte [edi], 1
jmp 0x44a21e
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.0044b39d
test eax, eax
je 0x44a384
cmp dword [ebp - 4], 0
je 0x44a258
mov esi, dword [ebp - 4]
lea esi, [esi + esi*2]
shl esi, 2
lea eax, [esi + 0xc]
push eax
call fcn.0044bdc7
test eax, eax
pop ecx
mov dword [edi + 8], eax
je 0x44a2b6
push esi
lea ecx, [ebp - 0x1828]
push ecx
push eax
call fcn.00453500
mov eax, dword [edi + 8]
add esp, 0xc
and dword [esi + eax], 0
jmp 0x44a25c
and dword [edi + 8], 0
inc dword [ebp - 8]
mov eax, dword [ebp - 8]
cmp eax, dword [ebp - 0x28]
jl 0x449c38
mov edi, dword [ebp - 0xc]
mov ebx, dword [ebp - 0x20]
jmp 0x449bcc
push esi
push str.Not_allowed_as_an_output_variable.
mov ecx, dword [ebp - 0xc]
jmp 0x44a6b1
push ecx
push str.Missing____
jmp 0x44a27c
push dword [edi + 4]
push 0x459c4c
jmp 0x44a27c
push esi
push str.Missing_close_quote
jmp 0x44a27c
push eax
push str.The_leftmost_character_above_is_illegal_in_an_expression.
jmp 0x44a27c
push esi
push str.Dynamic_function_calls_are_not_supported.
jmp 0x44a27c
push esi
push str.Too_many_var_func_refs.
jmp 0x44a27c
push 0x4565d8
push str.Out_of_memory.
jmp 0x44a27c
xor esi, esi
test esi, esi
je 0x449c21
lea eax, [edi + 4]
mov ecx, dword [eax]
mov dword [esi + 0x10], ecx
cmp dword [edi], 0
jne 0x44a2dd
mov dword [edi], esi
jmp 0x44a2e2
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 0x44a2fe
mov eax, dword [ebx + 4]
mov dword [ebp + 0x14], eax
mov eax, 0x4565d8
jmp 0x44a306
mov eax, 0x4565d8
mov dword [ebp + 0x14], eax
cmp cl, 1
jbe 0x44a313
mov edx, dword [ebx + 0x10]
mov dword [ebp + 0xc], edx
jmp 0x44a316
mov dword [ebp + 0xc], eax
cmp cl, 2
jbe 0x44a323
mov edx, dword [ebx + 0x1c]
mov dword [ebp - 8], edx
jmp 0x44a326
mov dword [ebp - 8], eax
cmp cl, 3
jbe 0x44a32e
mov eax, dword [ebx + 0x28]
mov dword [ebp - 4], eax
mov al, byte [ebp + 8]
cmp al, 8
je 0x44a5db
cmp al, 0x68
je 0x44a43d
cmp al, 0x8b
jbe 0x44a5e2
cmp al, 0x8f
jbe 0x44a364
cmp al, 0xd2
jne 0x44a5e2
mov byte [0x4634a4], 1
jmp 0x44a5e2
push 1
mov ecx, esi
call fcn.0044384a
test al, al
jne 0x44a38b
push 1
push dword [ebp + 0x14]
mov ecx, edi
call fcn.0044dabe
test eax, eax
mov dword [esi + 0xc], eax
jne 0x44a38b
xor eax, eax
jmp 0x44a686
cmp byte [ebp + 8], 0x8d
je 0x44a3f5
cmp byte [ebp + 8], 0x8e
je 0x44a3f5
cmp byte [ebp + 8], 0x8f
jne 0x44a5e2
mov eax, dword [ebp + 0xc]
cmp byte [eax], 0
je 0x44a5e2
push 2
mov ecx, esi
call fcn.0044384a
test al, al
jne 0x44a5e2
mov ebx, dword [ebp + 0xc]
push ebx
call fcn.00453b00
cmp eax, 1
pop ecx
ja 0x44a4dc
movsx eax, byte [ebx]
push eax
call fcn.00441cd7
push eax
push 0x45a0f4
call fcn.00453c30
add esp, 0xc
test eax, eax
jne 0x44a5e2
jmp 0x44a4dc
mov eax, dword [ebp + 0xc]
cmp byte [eax], 0
je 0x44a5e2
push 2
mov ecx, esi
call fcn.0044384a
test al, al
jne 0x44a5e2
mov ebx, dword [ebp + 0xc]
push ebx
call fcn.00453b00
cmp eax, 1
pop ecx
ja 0x44a4dc
movsx eax, byte [ebx]
push eax
call fcn.00441cd7
cmp eax, 0x52
pop ecx
je 0x44a5e2
jmp 0x44a4dc
movzx eax, cl
sub eax, 0
je 0x44a5db
dec eax
mov ecx, esi
je 0x44a593
xor ebx, ebx
inc ebx
push ebx
call fcn.0044384a
test al, al
je 0x44a467
mov dword [esi + 0xc], ebx
jmp 0x44a5e2
push str.Read
push dword [ebp + 0x14]
call fcn.00441849
test eax, eax
pop ecx
pop ecx
jne 0x44a486
mov dword [esi + 0xc], 5
jmp 0x44a5e2
push str.Parse
push dword [ebp + 0x14]
call fcn.00441849
test eax, eax
pop ecx
pop ecx
jne 0x44a4a5
mov dword [esi + 0xc], 6
jmp 0x44a5e2
push 0
push dword [ebp + 0x14]
call fcn.00419310
neg eax
sbb eax, eax
neg eax
add eax, 3
cmp eax, 3
pop ecx
pop ecx
mov dword [esi + 0xc], eax
jne 0x44a534
push 2
mov ecx, esi
call fcn.0044384a
test al, al
jne 0x44a4e9
push dword [ebp + 0xc]
call fcn.00414ca2
test eax, eax
pop ecx
jne 0x44a4e9
push dword [ebp + 0xc]
push str.Parameter_2_invalid
jmp 0x44a6af
mov eax, dword [ebp - 8]
cmp byte [eax], 0
je 0x44a5e2
push 3
mov ecx, esi
call fcn.0044384a
test al, al
jne 0x44a5e2
mov ebx, dword [ebp - 8]
push ebx
call fcn.00453b00
cmp eax, 1
pop ecx
ja 0x44a527
mov al, byte [ebx]
cmp al, 0x30
je 0x44a5e2
cmp al, 0x31
je 0x44a5e2
push dword [ebp - 8]
push str.Parameter_3_invalid
jmp 0x44a6af
cmp byte [ebp + 0x10], 2
jbe 0x44a554
push 3
mov ecx, esi
call fcn.0044384a
test al, al
jne 0x44a554
push dword [ebp - 8]
call fcn.00414ca2
test eax, eax
pop ecx
je 0x44a527
mov eax, dword [ebp - 4]
cmp byte [eax], 0
je 0x44a5e2
push 4
mov ecx, esi
call fcn.0044384a
test al, al
jne 0x44a5e2
mov ebx, dword [ebp - 4]
push ebx
call fcn.00453b00
cmp eax, 1
pop ecx
ja 0x44a586
mov al, byte [ebx]
cmp al, 0x30
je 0x44a5e2
cmp al, 0x31
je 0x44a5e2
push dword [ebp - 4]
push str.Parameter_4_invalid
jmp 0x44a6af
push 1
call fcn.0044384a
test al, al
jne 0x44a5d2
cmp byte [ebx + 1], al
jne 0x44a5d2
xor ebx, ebx
push ebx
push ebx
push 1
push ebx
push dword [ebp + 0x14]
call fcn.00401ab0
add esp, 0x14
test eax, eax
jne 0x44a5db
push ebx
push dword [ebp + 0x14]
call fcn.00419310
neg eax
sbb eax, eax
neg eax
pop ecx
add eax, 3
pop ecx
mov dword [esi + 0xc], eax
jmp 0x44a5e2
mov dword [esi + 0xc], 1
jmp 0x44a5e2
mov dword [esi + 0xc], 2
cmp byte [edi + 0x3c], 0
je 0x44a601
mov eax, dword [edi + 0x18]
mov dword [eax + 4], esi
mov byte [edi + 0x3c], 0
mov eax, dword [0x46332c]
cmp byte [eax + 0x30], 0
jne 0x44a601
mov byte [eax + 0x30], 1
cmp byte [ebp + 8], 0x6b
jne 0x44a624
mov eax, dword [edi + 0x18]
inc dword [edi + 0x38]
test eax, eax
je 0x44a64e
cmp dword [eax + 4], 0
jne 0x44a64e
mov dword [esi + 0xc], 1
mov byte [edi + 0x3c], 1
jmp 0x44a64e
cmp byte [ebp + 8], 0x6c
jne 0x44a64e
dec dword [edi + 0x38]
mov eax, dword [edi + 0x38]
xor ecx, ecx
cmp dword [0x46332c], ecx
je 0x44a64e
cmp eax, ecx
jne 0x44a64e
mov dword [esi + 0xc], 1
mov dword [0x46332c], ecx
mov dword [edi + 0x40], ecx
cmp byte [ebp - 0x12], 0
je 0x44a680
mov eax, dword [edi + 0x10]
jmp 0x44a67c
cmp dword [eax + 4], 0
jne 0x44a680
mov cl, byte [esi]
cmp cl, 0x6b
jne 0x44a66c
cmp dword [esi + 0xc], 0
jne 0x44a68d
cmp cl, 9
je 0x44a699
cmp cl, 0x6c
je 0x44a6a5
mov dword [eax + 4], esi
mov eax, dword [eax + 8]
test eax, eax
jne 0x44a659
inc dword [edi + 8]
xor eax, eax
inc eax
pop edi
pop esi
pop ebx
leave
ret 0x10
push 0x4565d8
push str.A_label_must_not_point_to_a_function.
jmp 0x44a6af
push 0x4565d8
push str.A_label_must_not_point_to_an_ELSE.
jmp 0x44a6af
push 0x4565d8
push str.A_label_must_not_point_to_the_end_of_a_block._For_loops__use_Continue_vs._Goto.
mov ecx, edi
call fcn.0044a877
jmp 0x44a686