Function at 0x4d9f20
Capabilities:
Parse credit card information

Disassembly:
push ebx
push ebp
push esi
mov esi, dword [esp + 0x18]
xor ebx, ebx
push edi
mov ecx, dword [esi + 8]
mov edx, dword [esi + 4]
cmp ecx, edx
jae 0x4d9fa5
mov eax, dword [esi + 0x18]
mov edi, 0x20
cmp eax, edi
je 0x4d9f4f
cmp eax, 9
je 0x4d9f4f
cmp eax, 0xa
je 0x4d9f4f
cmp eax, 0xd
jne 0x4d9fa5
cmp ecx, edx
jae 0x4d9f8a
mov dl, byte [esi + 0xd]
inc ecx
cmp eax, 0x100
mov byte [esi + 0xc], dl
mov dword [esi + 0x14], eax
mov dword [esi + 8], ecx
jl 0x4d9f6b
inc ecx
mov dword [esi + 8], ecx
mov eax, dword [esi + 0x1c]
mov edx, dword [esi + 8]
xor ecx, ecx
cmp eax, 0x100
setge cl
add ecx, edx
mov dword [esi + 0x18], eax
push ecx
mov ecx, esi
call fcn.0049e140
jmp 0x4d9f9b
mov byte [esi + 0xc], 0
mov dword [esi + 0x14], edi
mov dword [esi + 0x18], edi
mov dword [esi + 0x1c], edi
mov byte [esi + 0xd], 1
mov ecx, dword [esi + 8]
mov edx, dword [esi + 4]
cmp ecx, edx
jb 0x4d9f34
mov eax, dword [esi + 0x10]
mov ecx, dword [esp + 0x18]
push eax
mov eax, dword [esi + 8]
mov edx, dword [ecx]
dec eax
push eax
call dword [edx + 0x48]
mov edi, dword [esi + 0x18]
cmp edi, 0x80
jge 0x4da20f
push edi
call fcn.004f79d4
add esp, 4
test eax, eax
jne 0x4d9fe6
cmp edi, 0x2e
je 0x4d9fe6
cmp edi, 0x5f
je 0x4d9fe6
cmp edi, 0x5c
jne 0x4da20f
mov ecx, dword [esi + 8]
mov eax, dword [esi + 4]
cmp ecx, eax
jae 0x4da125
mov ebp, dword [esp + 0x24]
mov edi, dword [esi + 0x18]
cmp edi, 0x20
je 0x4da125
cmp edi, 9
je 0x4da125
cmp edi, 0xa
je 0x4da125
cmp edi, 0xd
je 0x4da125
lea edx, [ebp - 1]
cmp ebx, edx
jge 0x4da125
push edi
call fcn.004f79d4
add esp, 4
test eax, eax
jne 0x4da0b2
cmp edi, 0x2a
je 0x4da125
cmp edi, 0x2f
je 0x4da125
cmp edi, 0x2d
je 0x4da125
cmp edi, 0x2b
je 0x4da125
cmp edi, 0x28
je 0x4da125
cmp edi, 0x29
je 0x4da125
cmp edi, 0x3d
je 0x4da125
cmp edi, 0x25
je 0x4da125
cmp edi, 0x5b
je 0x4da125
cmp edi, 0x5d
je 0x4da125
cmp edi, 0x3c
je 0x4da125
cmp edi, 0x3e
je 0x4da125
cmp edi, 0x2c
je 0x4da125
cmp edi, 0x3b
je 0x4da125
cmp edi, 0x3a
je 0x4da125
mov ecx, dword [esp + 0x20]
mov al, byte [esi + 0x18]
mov byte [ebx + ecx], al
mov ecx, dword [esi + 8]
mov eax, dword [esi + 4]
inc ebx
cmp ecx, eax
jae 0x4da101
mov eax, dword [esi + 0x18]
mov dl, byte [esi + 0xd]
inc ecx
cmp eax, 0x100
mov byte [esi + 0xc], dl
mov dword [esi + 0x14], eax
mov dword [esi + 8], ecx
jl 0x4da0e2
inc ecx
mov dword [esi + 8], ecx
mov eax, dword [esi + 0x1c]
mov edx, dword [esi + 8]
xor ecx, ecx
cmp eax, 0x100
setge cl
add ecx, edx
mov dword [esi + 0x18], eax
push ecx
mov ecx, esi
call fcn.0049e140
jmp 0x4da117
mov eax, 0x20
mov byte [esi + 0xc], 0
mov dword [esi + 0x14], eax
mov dword [esi + 0x18], eax
mov dword [esi + 0x1c], eax
mov byte [esi + 0xd], 1
mov edx, dword [esi + 8]
mov eax, dword [esi + 4]
cmp edx, eax
jb 0x4d9ff8
mov edx, dword [esp + 0x20]
mov edi, edx
mov byte [ebx + edx], 0
mov al, byte [edx]
test al, al
je 0x4da15f
movsx eax, byte [edi]
push eax
call fcn.004f7907
add esp, 4
test eax, eax
je 0x4da153
movsx ecx, byte [edi]
push ecx
call fcn.004f8b9c
add esp, 4
mov byte [edi], al
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x4da135
mov edx, dword [esp + 0x20]
mov eax, dword [esp + 0x14]
push edx
mov edi, dword [eax + 4]
mov ecx, dword [eax]
mov ebp, dword [eax + 0xc]
mov ebx, dword [eax + 0x10]
mov dword [esp + 0x20], edi
mov edi, dword [eax + 8]
call fcn.004db760
test al, al
je 0x4da186
mov eax, 3
jmp 0x4da1da
mov edx, dword [esp + 0x20]
mov ecx, edi
push edx
call fcn.004db760
test al, al
je 0x4da19d
mov eax, 5
jmp 0x4da1da
mov edi, dword [esp + 0x20]
mov ecx, ebp
push edi
call fcn.004db760
test al, al
je 0x4da1b4
mov eax, 6
jmp 0x4da1da
push edi
mov ecx, ebx
call fcn.004db760
test al, al
je 0x4da1c7
mov eax, 7
jmp 0x4da1da
mov ecx, dword [esp + 0x1c]
push edi
call fcn.004db760
test al, al
je 0x4da1f8
mov eax, 4
mov ecx, dword [esp + 0x18]
mov dword [esi + 0x10], eax
push eax
mov eax, dword [esi + 8]
mov edx, dword [ecx]
dec eax
push eax
call dword [edx + 0x48]
mov dword [esi + 0x10], 0
pop edi
pop esi
pop ebp
pop ebx
ret
mov ecx, dword [esp + 0x18]
mov eax, dword [esi + 8]
mov dword [esi + 0x10], 0
dec eax
mov edx, dword [ecx]
push 0
push eax
call dword [edx + 0x48]
pop edi
pop esi
pop ebp
pop ebx
ret