Function at 0x100aa100
Capabilities:
Parse credit card information

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x4c
mov eax, dword [0x10210050]
xor eax, esp
mov dword [esp + 0x48], eax
push ebx
push esi
mov esi, ecx
push edi
mov edi, dword [esi + 0x34]
mov ebx, dword [esi + 4]
mov ecx, dword [edi + 0x60]
lea eax, [ecx - 1]
mov dword [edi + 0x60], eax
cmp cx, 0x50
ja 0x100aa154
mov ecx, edi
call fcn.100aae90
mov eax, dword [edi + 0x60]
and eax, 0xffff
cmp eax, 0x50
ja 0x100aa154
cmp eax, 0xc
jbe 0x100aa7b2
cmp eax, 0x44
jae 0x100aa7be
mov eax, dword [esi + 0x10]
add eax, 0xffffffc5
cmp eax, 0xe5
ja case.0x100aa16c.60
movzx eax, byte [eax + 0x100aa848]
jmp dword [eax*4 + 0x100aa814]
mov ecx, esi
call fcn.1009fe80
jmp 0x100aa75b
mov edx, ebx
mov ecx, esi
call fcn.100a9a20
jmp 0x100aa75b
mov edx, ebx
mov ecx, esi
call fcn.100a8900
jmp 0x100aa75b
mov ecx, esi
call fcn.1009fe80
mov ecx, esi
call fcn.100a8430
push ebx
push 0x103
mov edx, 0x106
mov ecx, esi
call fcn.100a5270
add esp, 8
jmp 0x100aa75b
mov edx, ebx
mov ecx, esi
call fcn.100a9580
jmp 0x100aa75b
mov edx, ebx
mov ecx, esi
call fcn.100a8b40
jmp 0x100aa75b
cmp dword [esi + 0x20], 0x121
mov eax, dword [esi + 4]
mov dword [esi + 8], eax
je 0x100aa1ff
movups xmm0, xmmword [esi + 0x20]
mov dword [esi + 0x20], 0x121
movups xmmword [esi + 0x10], xmm0
jmp 0x100aa20c
lea edx, [esi + 0x18]
mov ecx, esi
call fcn.1009f660
mov dword [esi + 0x10], eax
lea edx, [esp + 0x38]
mov ecx, esi
xor edi, edi
call fcn.100a5880
mov eax, dword [esi + 0x10]
cmp eax, 0x2e
jne 0x100aa234
lea edx, [esp + 0x38]
mov ecx, esi
call fcn.100a6510
mov eax, dword [esi + 0x10]
cmp eax, 0x2e
je 0x100aa221
cmp eax, 0x3a
jne 0x100aa247
lea edx, [esp + 0x38]
mov ecx, esi
lea edi, [eax - 0x39]
call fcn.100a6510
push ebx
push edi
lea edx, [esp + 0x20]
mov ecx, esi
call fcn.100a70e0
mov ecx, dword [esi + 0x30]
lea eax, [esp + 0x20]
push eax
lea edx, [esp + 0x44]
call fcn.10091650
mov edi, dword [esi + 0x30]
add esp, 0xc
mov edx, dword [edi]
mov eax, dword [edi + 0x10]
mov ecx, dword [edx + 0x40]
mov al, byte [ecx + eax - 1]
cmp al, 0x80
je 0x100aa296
movsx eax, al
mov ecx, edi
sub dword [edi + 0x18], eax
mov al, byte [edi + 0x35]
dec al
push ebx
mov byte [edi + 0x35], al
call fcn.10090720
jmp 0x100aa758
dec dword [edi + 0x24]
mov ecx, edi
push ebx
mov byte [edi + 0x35], 0x79
call fcn.10090720
jmp 0x100aa758
cmp dword [esi + 0x20], 0x121
mov eax, dword [esi + 4]
mov dword [esi + 8], eax
je 0x100aa2ca
movups xmm0, xmmword [esi + 0x20]
mov dword [esi + 0x20], 0x121
movups xmmword [esi + 0x10], xmm0
jmp 0x100aa2d7
lea edx, [esi + 0x18]
mov ecx, esi
call fcn.1009f660
mov dword [esi + 0x10], eax
cmp dword [esi + 0x10], 0x109
jne 0x100aa3ca
cmp dword [esi + 0x20], 0x121
mov eax, dword [esi + 4]
mov dword [esi + 8], eax
je 0x100aa304
movups xmm0, xmmword [esi + 0x20]
mov dword [esi + 0x20], 0x121
movups xmmword [esi + 0x10], xmm0
jmp 0x100aa311
lea edx, [esi + 0x18]
mov ecx, esi
call fcn.1009f660
mov dword [esi + 0x10], eax
cmp dword [esi + 0x10], 0x124
mov edi, dword [esi + 0x30]
movzx eax, byte [edi + 0x32]
mov dword [esp + 0x14], eax
jne 0x100aa7d0
cmp dword [esi + 0x20], 0x121
mov eax, dword [esi + 0x18]
mov dword [esp + 0x10], eax
mov eax, dword [esi + 4]
mov dword [esi + 8], eax
je 0x100aa350
movups xmm0, xmmword [esi + 0x20]
mov dword [esi + 0x20], 0x121
movups xmmword [esi + 0x10], xmm0
jmp 0x100aa35d
lea edx, [esi + 0x18]
mov ecx, esi
call fcn.1009f660
mov dword [esi + 0x10], eax
mov edx, dword [esp + 0x10]
mov ecx, esi
call fcn.100a5340
mov edx, 1
mov ecx, esi
call fcn.100a5460
push dword [esi + 4]
lea edx, [esp + 0x1c]
mov ecx, esi
push 0
call fcn.100a70e0
mov eax, dword [edi + 0x28]
add esp, 8
add eax, dword [esp + 0x14]
lea ecx, [eax + eax*2]
mov eax, dword [edi + 8]
mov eax, dword [eax + 0x44]
mov eax, dword [eax]
cmp byte [eax + ecx*8 + 9], 3
lea eax, [eax + ecx*8]
jne 0x100aa3b0
mov eax, dword [edi + 0x10]
xor ecx, ecx
mov dword [ecx + 4], eax
jmp 0x100aa75b
movsx eax, word [eax + 0xc]
lea ecx, [eax + eax*2]
mov eax, dword [edi]
mov eax, dword [eax + 0x48]
lea ecx, [eax + ecx*4]
mov eax, dword [edi + 0x10]
mov dword [ecx + 4], eax
jmp 0x100aa75b
mov ecx, esi
call fcn.100a9c30
jmp 0x100aa75b
cmp dword [esi + 0x20], 0x121
mov eax, dword [esi + 4]
mov dword [esi + 8], eax
je 0x100aa3f6
movups xmm0, xmmword [esi + 0x20]
mov dword [esi + 0x20], 0x121
movups xmmword [esi + 0x10], xmm0
jmp 0x100aa403
lea edx, [esi + 0x18]
mov ecx, esi
call fcn.1009f660
mov dword [esi + 0x10], eax
mov ecx, esi
call fcn.100a52f0
cmp dword [esi + 0x10], 0x120
mov edi, eax
jne 0x100aa7dc
cmp dword [esi + 0x20], 0x121
mov eax, dword [esi + 4]
mov dword [esi + 8], eax
je 0x100aa439
movups xmm0, xmmword [esi + 0x20]
mov dword [esi + 0x20], 0x121
movups xmmword [esi + 0x10], xmm0
jmp 0x100aa446
lea edx, [esi + 0x18]
mov ecx, esi
call fcn.1009f660
mov dword [esi + 0x10], eax
mov edx, dword [esi + 0x10]
cmp edx, 0x3b
je 0x100aa456
cmp edx, 0x120
jne 0x100aa45f
mov ecx, esi
call fcn.100aa100
jmp 0x100aa446
mov eax, dword [esi + 0x30]
mov ecx, dword [eax + 0x2c]
mov eax, dword [esi + 0x44]
cmp ecx, dword [eax + 0x1c]
jge 0x100aa48f
mov edx, dword [esi + 0x44]
mov eax, ecx
shl eax, 4
add eax, dword [edx + 0x18]
cmp dword [eax], edi
je 0x100aa7e8
mov edx, dword [esi + 0x44]
inc ecx
add eax, 0x10
cmp ecx, dword [edx + 0x1c]
mov edx, dword [esi + 0x10]
jl 0x100aa478
add edx, 0xfffffefc
cmp edx, 0x1d
ja case.0x100aa4a1.263
movzx eax, byte [edx + 0x100aa93c]
jmp dword [eax*4 + 0x100aa930]
mov eax, 1
mov edx, edi
push eax
push ebx
mov ecx, esi
call fcn.100a5ad0
add esp, 8
jmp 0x100aa75b
xor eax, eax
mov edx, edi
push eax
push ebx
mov ecx, esi
call fcn.100a5ad0
add esp, 8
jmp 0x100aa75b
cmp dword [esi + 0x20], 0x121
mov eax, dword [esi + 4]
mov dword [esi + 8], eax
je 0x100aa4f5
movups xmm0, xmmword [esi + 0x20]
mov dword [esi + 0x20], 0x121
movups xmmword [esi + 0x10], xmm0
jmp 0x100aa502
lea edx, [esi + 0x18]
mov ecx, esi
call fcn.1009f660
mov dword [esi + 0x10], eax
mov edi, dword [esi + 0x30]
movzx edx, byte [edi + 0x32]
test edx, edx
je 0x100aa52e
mov eax, dword [edi + 0x28]
add eax, edx
lea ecx, [eax + eax*2]
mov eax, dword [edi + 8]
mov eax, dword [eax + 0x44]
mov eax, dword [eax]
lea eax, [eax + ecx*8]
lea eax, [eax - 0x18]
dec edx
cmp byte [eax + 9], 3
jne 0x100aa552
test edx, edx
jg 0x100aa520
mov dword [esp + 0x10], 0
mov ecx, dword [esi + 0x10]
lea eax, [ecx - 0x104]
cmp eax, 0x1d
ja case.0x100aa54b.263
movzx eax, byte [eax + 0x100aa964]
jmp dword [eax*4 + 0x100aa95c]
movzx eax, byte [eax + 0xa]
inc eax
mov dword [esp + 0x10], eax
jmp 0x100aa536
cmp ecx, 0x3b
je case.0x100aa54b.260
lea edx, [esp + 0x38]
mov ecx, esi
call fcn.100a73f0
mov ebx, eax
mov eax, dword [esp + 0x38]
cmp eax, 0x12
je 0x100aa596
cmp eax, 0x13
je 0x100aa596
lea edx, [esp + 0x38]
mov ecx, edi
cmp ebx, 1
jne 0x100aa58f
call fcn.100913f0
jmp 0x100aa5dc
call fcn.10091390
jmp 0x100aa5d8
push 0xffffffffffffffff
lea edx, [esp + 0x3c]
mov ecx, edi
call fcn.10090c90
add esp, 4
cmp dword [esp + 0x38], 0x12
jne 0x100aa5d1
cmp ebx, 1
jne 0x100aa5d1
mov eax, dword [edi + 0xc]
cmp byte [eax + 0xf], 0
jne 0x100aa5d1
mov eax, dword [edi]
mov ecx, dword [eax + 0x34]
mov eax, dword [esp + 0x40]
lea ecx, [ecx + eax*4]
mov eax, dword [ecx]
and eax, 0xffffffc5
or eax, 0x45
mov dword [ecx], eax
or ebx, 0xffffffff
jmp 0x100aa5d8
xor ebx, ebx
mov eax, dword [esp + 0x10]
push ebx
mov edx, eax
mov ecx, edi
call fcn.10090410
add esp, 4
cmp dword [esi + 0x10], 0x3b
jne 0x100aa75b
cmp dword [esi + 0x20], 0x121
mov eax, dword [esi + 4]
mov dword [esi + 8], eax
je 0x100aa616
movups xmm0, xmmword [esi + 0x20]
mov dword [esi + 0x20], 0x121
movups xmmword [esi + 0x10], xmm0
jmp 0x100aa75b
lea edx, [esi + 0x18]
mov ecx, esi
call fcn.1009f660
mov dword [esi + 0x10], eax
jmp 0x100aa75b
cmp dword [esi + 0x20], 0x121
mov eax, dword [esi + 4]
mov dword [esp + 0x14], eax
mov dword [esi + 8], eax
je 0x100aa64c
movups xmm0, xmmword [esi + 0x20]
mov dword [esi + 0x20], 0x121
movups xmmword [esi + 0x10], xmm0
jmp 0x100aa659
lea edx, [esi + 0x18]
mov ecx, esi
call fcn.1009f660
mov dword [esi + 0x10], eax
mov ebx, dword [esi + 0x30]
push str.opcodes
push 0x3fffffff
push 4
mov edi, dword [ebx]
mov ecx, dword [ebx + 8]
mov edx, dword [edi + 0x34]
lea eax, [edi + 0x14]
mov ecx, dword [ecx + 0x34]
push eax
push dword [ebx + 0x10]
call fcn.100a1850
mov dword [edi + 0x34], eax
add esp, 0x14
mov ecx, dword [ebx + 0x10]
mov edx, edi
mov dword [eax + ecx*4], 0x7fffff38
mov ecx, ebx
mov eax, dword [ebx + 8]
inc dword [ebx + 0x10]
push dword [eax + 8]
call fcn.10090720
mov edi, dword [ebx + 0x10]
add esp, 4
mov ecx, dword [esi + 0x34]
mov edx, str.break
dec edi
push 5
call fcn.100ab380
add esp, 4
mov edx, eax
mov ecx, esi
push edi
push dword [esp + 0x18]
call fcn.100a5a50
add esp, 8
jmp 0x100aa75b
cmp dword [esi + 0x20], 0x121
mov eax, dword [esi + 4]
mov dword [esi + 8], eax
je 0x100aa6f7
movups xmm0, xmmword [esi + 0x20]
mov ecx, esi
mov dword [esi + 0x20], 0x121
movups xmmword [esi + 0x10], xmm0
call fcn.100a87d0
jmp 0x100aa75b
lea edx, [esi + 0x18]
mov ecx, esi
call fcn.1009f660
mov ecx, esi
mov dword [esi + 0x10], eax
call fcn.100a87d0
jmp 0x100aa75b
mov edi, dword [esi + 0x30]
lea edx, [esp + 0x20]
mov ecx, esi
call fcn.100a7790
mov eax, dword [esi + 0x10]
cmp eax, 0x3d
je 0x100aa743
cmp eax, 0x2c
je 0x100aa743
cmp dword [esp + 0x20], 0x12
jne 0x100aa808
mov eax, dword [edi]
mov ecx, dword [eax + 0x34]
mov eax, dword [esp + 0x28]
mov byte [ecx + eax*4 + 3], 1
jmp 0x100aa75b
push 1
lea edx, [esp + 0x1c]
mov dword [esp + 0x1c], 0
mov ecx, esi
call fcn.100a8600
add esp, 4
mov edi, dword [esi + 0x30]
movzx edx, byte [edi + 0x32]
test edx, edx
je 0x100aa78e
mov eax, dword [edi + 0x28]
add eax, edx
lea ecx, [eax + eax*2]
mov eax, dword [edi + 8]
mov eax, dword [eax + 0x44]
mov eax, dword [eax]
lea eax, [eax + ecx*8]
nop dword [eax]
sub eax, 0x18
dec edx
cmp byte [eax + 9], 3
jne 0x100aa7ab
test edx, edx
jg 0x100aa780
xor al, al
mov ecx, dword [esp + 0x54]
mov byte [edi + 0x34], al
mov eax, dword [esi + 0x34]
pop edi
pop esi
pop ebx
inc dword [eax + 0x60]
xor ecx, esp
call fcn.1016fd3e
mov esp, ebp
pop ebp
ret
mov al, byte [eax + 0xa]
inc al
jmp 0x100aa790
mov edx, 5
mov ecx, edi
call fcn.10096620
push str.C_stack_overflow
push edi
mov dword [edi + 0x60], 0x43
call fcn.10096390
mov edx, 0x124
mov ecx, esi
call fcn.100a5160
mov edx, 0x120
mov ecx, esi
call fcn.100a5160
push dword [eax + 8]
lea eax, [edi + 0x10]
push eax
push str.label__s_already_defined_on_line__d
push dword [esi + 0x34]
call fcn.100a4110
add esp, 0x10
mov edx, eax
mov ecx, esi
call fcn.10090230
mov edx, str.syntax_error
mov ecx, esi
call fcn.1009e240
jae 0x100aa7b7
or dl, byte [eax]
sub byte [esi - 0x5e64eff6], ah
or dl, byte [eax]
ret