Function at 0x53ed50
Capabilities:
Parse credit card information

Disassembly:
sub esp, 0x14
lea eax, [esp + 4]
push ebx
mov dword [esp + 8], eax
mov eax, dword [0x5fbd50]
lea ecx, [esp + 8]
push ebp
push esi
cmp ecx, eax
push edi
jae 0x53edc2
mov eax, dword [0x5dd554]
mov edx, dword [esp + 0x28]
mov ecx, dword [esp + 0x2c]
push 0x53f760
mov dword [eax + 0x180], edx
mov edx, dword [esp + 0x34]
mov dword [eax + 0x184], ecx
mov ecx, dword [esp + 0x38]
mov dword [eax + 0x188], edx
mov edx, dword [esp + 0x3c]
mov dword [eax + 0x198], ecx
mov ecx, dword [esp + 0x40]
mov dword [eax + 0x190], edx
mov dword [eax + 0x194], ecx
call fcn.0053de10
add esp, 4
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x14
ret
mov ebp, dword [esp + 0x30]
mov eax, dword [0x5fbd48]
mov edx, eax
dec eax
test edx, edx
mov dword [0x5fbd48], eax
jg 0x53edef
push 0
call fcn.00543d90
mov eax, dword [0x5dd554]
add esp, 4
mov word [eax + 0xd0], 1
mov esi, dword [esp + 0x34]
test ebp, ebp
je 0x53ee01
push esi
push ebp
call fcn.0053e750
add esp, 8
mov ecx, dword [esp + 0x28]
mov eax, ecx
and eax, 1
jne 0x53ee16
cmp word [ecx], 0x25
je 0x53eeb0
test eax, eax
jne 0x53f011
cmp word [ecx], 0x23
jne 0x53f011
mov edi, dword [esp + 0x2c]
test ebp, ebp
je 0x53ee3d
test byte [edi + 2], 0x80
jne 0x53ee3d
mov edx, 1
jmp 0x53ee3f
xor edx, edx
test ebp, ebp
je 0x53ee55
lea eax, [esi + esi*2]
mov bl, byte [ebp + eax*4 + 5]
test bl, bl
je 0x53ee55
mov eax, 0x80
jmp 0x53ee57
xor eax, eax
mov ebx, dword [esp + 0x3c]
neg ebx
sbb ebx, ebx
and ebx, 2
add ebx, eax
lea edx, [ebx + edx + 8]
push edx
push edi
push ecx
call fcn.00528400
add esp, 0xc
mov ebx, eax
and eax, 1
jne 0x53ee84
cmp word [ebx], 0x2f
je 0x53ef7f
test eax, eax
jne 0x53efa3
cmp word [ebx], 0x2e
je 0x53ef8b
test eax, eax
jne 0x53efa3
cmp word [ebx], 0x3d
jne 0x53efa3
mov eax, dword [ebx + 4]
jmp 0x53ef63
mov ebx, dword [ecx + 4]
mov edi, dword [ecx + 8]
test bl, 1
mov dword [esp + 0x10], edi
jne 0x53f191
cmp word [ebx], 0x23
jne 0x53f191
test ebp, ebp
je 0x53eee2
mov ecx, dword [esp + 0x2c]
test byte [ecx + 2], 0x80
jne 0x53eee2
mov ecx, 1
jmp 0x53eee4
xor ecx, ecx
test ebp, ebp
je 0x53eefa
lea edx, [esi + esi*2]
mov al, byte [ebp + edx*4 + 5]
test al, al
je 0x53eefa
mov eax, 0x80
jmp 0x53eefc
xor eax, eax
lea eax, [eax + ecx + 0xa]
mov ecx, dword [esp + 0x2c]
push eax
push ecx
push ebx
call fcn.00528400
add esp, 0xc
mov esi, eax
and eax, 1
jne 0x53ef20
cmp word [esi], 1
je 0x53f145
test eax, eax
jne 0x53f071
cmp word [esi], 2
je 0x53f145
test eax, eax
jne 0x53f071
cmp word [esi], 0x2f
je 0x53f04b
test eax, eax
jne 0x53f071
cmp word [esi], 0x3d
jne 0x53f071
mov edx, dword [esi + 4]
push edi
push edx
call fcn.0052c720
add esp, 8
test ebp, ebp
mov dword [esp + 0x28], eax
jne 0x53edc6
mov eax, dword [esp + 0x38]
dec eax
mov dword [esp + 0x38], eax
je 0x53ef97
jmp 0x53edc6
mov eax, dword [esp + 0x28]
push str.illegal_use_of_a_macro_name
push eax
jmp 0x53efb8
mov ecx, dword [esp + 0x28]
push str.illegal_use_of_a_syntactic_form_name
push ecx
jmp 0x53efb8
mov eax, dword [esp + 0x28]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x14
ret
test bl, 1
jne 0x53efc7
cmp word [ebx], 0x3f
jne 0x53efc7
mov edx, dword [esp + 0x28]
push str.illegal_use_of_an_expansion_time_value_name
push edx
push 0
push str.compile
call fcn.00529fd0
add esp, 0x10
test byte [edi + 2], 0x80
je 0x53eff9
test bl, 1
jne 0x53eff9
cmp word [ebx], 0
jne 0x53eff9
xor eax, eax
push 1
test ebp, ebp
setne al
push eax
push 0
push edi
call fcn.0052c8f0
add esp, 4
push eax
push ebx
call fcn.0053ec60
add esp, 0x14
mov ebx, eax
test ebp, ebp
je 0x53f03d
push esi
push ebp
call fcn.0053e840
add esp, 8
mov eax, ebx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x14
ret
test ebp, ebp
je 0x53f041
test cl, 1
jne 0x53f041
cmp word [ecx], 0x27
jne 0x53f041
mov eax, dword [ecx + 4]
mov edx, dword [ecx + 8]
push esi
push ebp
mov ecx, dword [eax + 0xc]
push edx
push ecx
call fcn.005247c0
add esp, 0x10
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x14
ret
mov ecx, dword [esp + 0x28]
pop edi
pop esi
pop ebp
mov eax, ecx
pop ebx
add esp, 0x14
ret
mov edx, dword [esp + 0x38]
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x2c]
push edx
mov edx, dword [esp + 0x2c]
push eax
push ebp
push ecx
push edx
push esi
call fcn.0053ebf0
add esp, 0x18
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x14
ret
mov edi, esi
and edi, 1
jne 0x53f0c1
cmp word [esi], 0x2e
jne 0x53f0c1
test ebp, ebp
je 0x53f0a2
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x28]
mov esi, dword [esi + 4]
push eax
push ebp
push ecx
push edx
call esi
add esp, 0x10
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x14
ret
mov eax, dword [esp + 0x38]
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x28]
mov esi, dword [esi + 8]
push eax
push ecx
push edx
call esi
add esp, 0xc
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x14
ret
test edi, edi
jne 0x53f0df
cmp word [esi], 0x3f
jne 0x53f0df
push str.illegal_use_of_an_expansion_time_value_name
push ebx
push edi
push str.compile
call fcn.00529fd0
add esp, 0x10
mov eax, dword [esp + 0x2c]
test byte [eax + 2], 0x80
je 0x53f114
test edi, edi
jne 0x53f114
cmp word [esi], di
jne 0x53f114
xor ecx, ecx
push 1
test ebp, ebp
setne cl
push ecx
mov edx, eax
push edi
push edx
call fcn.0052c8f0
add esp, 4
push eax
push esi
call fcn.0053ec60
add esp, 0x14
mov esi, eax
test ebp, ebp
je 0x53f169
cmp esi, dword [0x5fbf10]
jne 0x53f145
cmp dword [esp + 0x10], 0x5fbe30
jne 0x53f145
mov eax, dword [esp + 0x34]
push eax
push ebp
call fcn.0053e840
add esp, 8
mov eax, 0x5fbf20
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x14
ret
test ebp, ebp
je 0x53f169
mov ecx, dword [esp + 0x34]
mov edx, dword [esp + 0x2c]
mov eax, dword [esp + 0x28]
push ecx
push ebp
push edx
push eax
call fcn.0053f380
add esp, 0x10
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x14
ret
mov ecx, dword [esp + 0x38]
mov edx, dword [esp + 0x2c]
push ecx
push edx
call fcn.00528360
add esp, 4
push eax
mov eax, dword [esp + 0x30]
push eax
call fcn.0053fd80
add esp, 0xc
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x14
ret
test ebp, ebp
je 0x53f34c
test bl, 1
jne 0x53f32c
cmp word [ebx], 0x25
jne 0x53f32c
mov eax, dword [ebx + 4]
test al, 1
jne 0x53f32c
cmp word [eax], 0x23
jne 0x53f32c
mov edx, dword [esp + 0x38]
mov eax, dword [esp + 0x34]
lea ecx, [esp + 0x18]
mov dword [esp + 0x20], ebx
push ecx
mov ecx, dword [esp + 0x34]
push edx
mov edx, dword [esp + 0x34]
push eax
push ecx
push edx
push ebx
call fcn.0053ea70
mov ecx, dword [0x5fbcd8]
mov ebp, eax
mov eax, dword [esp + 0x30]
add esp, 0x18
cmp eax, ecx
jne 0x53f310
mov eax, dword [ebp + 8]
test al, 1
jne 0x53f310
cmp word [eax], 0x25
jne 0x53f310
mov edi, dword [eax + 4]
mov eax, dword [eax + 8]
test al, 1
mov dword [esp + 0x1c], eax
jne 0x53f310
cmp word [eax], 0x25
jne 0x53f310
push edi
call fcn.0052c810
mov esi, eax
add esp, 4
test esi, esi
jl 0x53f310
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x3c], 0x5fbe30
push ecx
xor ebx, ebx
call fcn.0052c810
add esp, 4
cmp eax, esi
jne 0x53f310
cmp edi, 0x5fbe30
je 0x53f2ca
mov ebp, dword [esp + 0x10]
mov edx, dword [esp + 0x28]
mov eax, dword [esp + 0x2c]
mov esi, dword [edi + 4]
push edx
push eax
push 0
push esi
push str.lambda
call fcn.00528100
mov ecx, dword [ebp + 4]
add esp, 0x14
push 0x5fbe30
push 0x5fbe30
push ecx
call fcn.0052c720
push eax
push esi
call fcn.0052c720
add esp, 0x10
push eax
call fcn.0052c720
add esp, 8
test ebx, ebx
je 0x53f2b6
mov dword [ebx + 8], eax
jmp 0x53f2ba
mov dword [esp + 0x3c], eax
mov edi, dword [edi + 8]
mov ebp, dword [ebp + 8]
cmp edi, 0x5fbe30
mov ebx, eax
jne 0x53f26a
mov edx, dword [esp + 0x38]
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x30]
push 0
push edx
mov edx, dword [esp + 0x34]
push eax
mov eax, dword [esp + 0x28]
push ecx
mov ecx, dword [esp + 0x4c]
push edx
push eax
push ecx
call fcn.0052c720
mov edx, dword [0x5dd504]
push eax
push edx
call fcn.0052c720
add esp, 0x10
push eax
call fcn.0053ed50
add esp, 0x18
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x14
ret
cmp ebp, dword [esp + 0x20]
je 0x53f328
mov eax, dword [esp + 0x10]
push eax
push ebp
call fcn.0052c720
add esp, 8
mov dword [esp + 0x28], eax
mov ecx, dword [esp + 0x28]
mov edx, dword [esp + 0x34]
mov eax, dword [esp + 0x30]
push edx
mov edx, dword [esp + 0x30]
push eax
push edx
push ecx
call fcn.0053f380
add esp, 0x10
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x14
ret
mov eax, dword [esp + 0x38]
mov ecx, dword [esp + 0x2c]
push eax
push ecx
call fcn.00528360
mov edx, dword [esp + 0x30]
add esp, 4
push eax
push edx
call fcn.0053fd80
add esp, 0xc
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x14
ret