Function at 0x407550
Capabilities:
Parse credit card information

Disassembly:
push ebx
push ebp
push esi
push edi
mov edi, dword [esp + 0x14]
movzx eax, byte [edi + 0x16]
mov esi, dword [edi]
mov ebx, dword [edi + 0xc8]
lea ecx, [eax - 0x55]
xor ebp, ebp
cmp ecx, 3
ja case.default.0x407572
jmp dword [ecx*4 + 0x407bdc]
mov eax, dword [esp + 0x18]
movsx ecx, word [edi + 0x10]
push eax
push ecx
call fcn.00406e10
add esp, 8
mov word [edi + 0x10], ax
test ax, ax
jge 0x4075d9
cmp byte [edi + 0x126], 0
jne 0x4075ce
xor eax, eax
nop
movzx edx, byte [eax + 0x5dae90]
cmp byte [edx + esi + 0x400], 0
jne 0x4075b9
inc eax
cmp eax, 6
jb 0x4075a0
jmp 0x4075bd
mov byte [edi + 0x16], 0x56
cmp eax, 6
jne case.0x407572.88
pop edi
pop esi
pop ebp
or eax, 0xffffffff
pop ebx
ret
mov byte [edi + 0x16], 0x56
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
ret
movsx ecx, ax
cmp byte [ecx + 0x69f018], 8
jae case.0x407572.88
movsx ecx, ax
movzx eax, byte [ecx + 0x69f018]
movzx edx, byte [ecx + 0x69f019]
shl eax, 8
or eax, edx
xor ecx, ecx
movzx edx, byte [ecx + 0x5dae90]
cmp eax, edx
jne 0x407616
cmp byte [edx + esi + 0x400], 0
jne 0x407640
inc ecx
cmp ecx, 6
jb 0x407601
cmp eax, 0x22
jne 0x407626
mov eax, 6
mov byte [edi + 0x16], al
mov ecx, dword [ebx + 0x160]
test ecx, ecx
je 0x407657
movzx edx, al
mov cx, word [ecx + edx*2]
mov word [edi + 0x12], cx
jmp 0x407662
push str.Duplicated_method_n
push 2
call fcn.00403280
add esp, 8
pop edi
pop esi
pop ebp
or eax, 0xffffffff
pop ebx
ret
mov dx, word [ebx + 0x344]
mov word [edi + 0x12], dx
cmp al, 8
je 0x4078e8
inc byte [esi + 0xc7f]
mov al, byte [esi + 0xc7f]
jmp 0x407aa2
cmp byte [esp + 0x18], 0xd
jne case.0x407572.88
mov byte [edi + 0x16], 0x57
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
ret
cmp byte [esp + 0x18], 0xa
jne 0x4075ce
xor eax, eax
mov byte [edi + 0x16], 0x55
mov word [edi + 0x10], ax
pop edi
pop esi
pop ebp
pop ebx
ret
movzx eax, byte [eax + esi + 0x400]
mov bl, byte [esp + 0x18]
lea ecx, [eax + eax*2]
cmp word [esi + ecx*2 + 0xa], bp
jne 0x4076ca
cmp bl, 0x20
je case.0x407572.88
mov cl, byte [edi + 0x16]
xor eax, eax
nop
cmp cl, byte [eax + 0x5dae90]
je 0x4076de
inc eax
cmp eax, 6
jb 0x4076d0
cmp eax, 6
je 0x4078b1
cmp bl, 0x20
jne 0x40772c
movzx eax, byte [esi + 0xc7f]
lea edx, [eax + eax*2]
cmp word [esi + edx*2 + 0xa], bp
jne 0x40770a
mov bl, 0x2f
mov eax, edi
call fcn.004074a0
test eax, eax
jl 0x407771
xor bl, bl
mov eax, edi
call fcn.004074a0
test eax, eax
jl 0x407771
mov byte [edi + 0x16], 0xf
inc byte [esi + 0xc7f]
mov al, byte [esi + 0xc7f]
jmp 0x407aa2
mov eax, dword [edi + 0xc]
sub eax, 0
je 0x4077d9
sub eax, 1
je 0x4077ad
sub eax, 1
jne 0x40779a
mov al, bl
call fcn.00407460
mov bl, al
test bl, bl
jge 0x407779
mov bl, 0x25
mov eax, edi
call fcn.004074a0
test eax, eax
jl 0x407771
movzx eax, byte [edi + 0x14]
push eax
push edi
mov dword [edi + 0xc], ebp
call fcn.00407550
add esp, 8
test eax, eax
jge 0x407796
pop edi
pop esi
pop ebp
or eax, 0xffffffff
pop ebx
ret
mov al, byte [edi + 0x14]
call fcn.00407460
shl al, 4
or al, bl
mov byte [esp + 0x18], al
mov ebp, 1
mov dword [edi + 0xc], 0
mov bl, byte [esp + 0x18]
mov eax, dword [edi + 8]
cmp eax, 3
ja case.default.0x4077a6
jmp dword [eax*4 + 0x407bec]
mov al, bl
call fcn.00407460
test al, al
jge 0x4077ca
mov bl, 0x25
mov eax, edi
call fcn.004074a0
test eax, eax
jl 0x407771
mov dword [edi + 0xc], ebp
jmp 0x407796
mov byte [edi + 0x14], bl
mov dword [edi + 0xc], 2
jmp 0x4078de
cmp bl, 0x25
jne 0x40779a
mov dword [edi + 0xc], 1
jmp 0x4078de
test bl, bl
je 0x407771
cmp bl, 0x26
je 0x4077fc
cmp bl, 0x3b
jne 0x407891
test ebp, ebp
jne 0x407891
mov eax, edi
call fcn.004074a0
test eax, eax
jl 0x407771
movzx eax, byte [esi + 0xc7f]
lea ecx, [eax + eax*2]
lea eax, [esi + ecx*2 + 0xa]
mov edx, 0xffff
add word [eax], dx
mov al, byte [esi + 0xc7f]
mov cl, al
movzx eax, al
add eax, 2
inc cl
lea edx, [eax + eax*2]
mov byte [esi + edx*2], cl
inc byte [esi + 0xc7f]
mov al, byte [esi + 0xc7f]
cmp al, 0xa8
jae 0x407aa4
mov byte [edi + 0x15], 0
movzx eax, byte [esi + 0xc7f]
mov cx, word [esi + 0xc7c]
lea eax, [eax + eax*2]
mov word [esi + eax*2 + 8], cx
movzx eax, byte [esi + 0xc7f]
lea edx, [eax + eax*2]
xor eax, eax
mov word [esi + edx*2 + 0xa], ax
movzx eax, byte [esi + 0xc7f]
add eax, 2
lea ecx, [eax + eax*2]
mov byte [esi + ecx*2], 0
jmp 0x4078de
cmp bl, 0x3d
jne 0x40792a
test ebp, ebp
je 0x407924
cmp byte [edi + 0x15], 0
jne 0x4078b1
mov byte [esp + 0x18], 0x5f
mov bl, byte [esp + 0x18]
cmp byte [edi + 0x16], 8
je 0x4078c9
cmp bl, 0xd
jne 0x4078c9
mov byte [esp + 0x18], 0
mov bl, byte [esp + 0x18]
mov byte [edi + 0x16], 0x57
mov eax, edi
call fcn.004074a0
test eax, eax
jl 0x407771
jbe 0x4078de
mov byte [edi + 0x16], 0x56
cmp byte [edi + 0x16], 8
jne case.0x407572.88
push 5
push edi
call fcn.004071d0
add esp, 8
test eax, eax
je 0x407bc9
push 0x21
push edi
call fcn.004071d0
add esp, 8
test eax, eax
je 0x407bc9
mov eax, dword [edi]
movzx ecx, byte [eax + 0x421]
test ecx, ecx
jne 0x407bae
jmp 0x407bb9
mov byte [edi + 0x15], 1
jmp 0x4078b1
cmp bl, 0x2b
jne 0x407941
test ebp, ebp
jne 0x4078b1
mov byte [esp + 0x18], 0x20
jmp 0x4078ad
cmp bl, 0x2f
jne case.default.0x4077a6
cmp byte [esi + 0x44c], 0
jne 0x4078b1
mov dword [edi + 8], 1
jmp 0x4078b1
cmp bl, 0x2f
je 0x4078de
cmp bl, 0x2e
jne 0x40797d
mov dword [edi + 8], 2
jmp 0x4078de
mov dword [edi + 8], 0
jmp case.default.0x4077a6
cmp bl, 0x2e
jne 0x407a13
movzx eax, byte [esi + 0xc7f]
lea edx, [eax + eax*2]
cmp word [esi + edx*2 + 0xa], 2
lea eax, [esi + edx*2 + 0xa]
jbe 0x407a07
mov ecx, 0xffff
add word [esi + 0xc7c], cx
mov edx, ecx
add word [eax], dx
movzx eax, byte [esi + 0xc7f]
lea eax, [eax + eax*2]
lea eax, [esi + eax*2 + 0xa]
jmp 0x4079d0
mov ecx, 0xffff
add word [esi + 0xc7c], cx
mov edx, ecx
add word [eax], dx
movzx eax, byte [esi + 0xc7f]
lea eax, [eax + eax*2]
cmp word [esi + eax*2 + 0xa], 1
lea eax, [esi + eax*2 + 0xa]
jbe 0x407a07
movzx ecx, word [esi + 0xc7c]
mov edx, dword [esi + 4]
cmp byte [ecx + edx], 0x2f
jne 0x4079d0
mov dword [edi + 8], 3
jmp 0x4078de
cmp bl, 0x2f
jne 0x407a24
mov dword [edi + 8], 1
jmp 0x4078de
mov bl, 0x2e
mov eax, edi
mov dword [edi + 8], 0
call fcn.004074a0
test eax, eax
jge 0x407a5b
pop edi
pop esi
pop ebp
or eax, 0xffffffff
pop ebx
ret
cmp bl, 0x2e
je 0x4078de
cmp bl, 0x2f
je 0x4078de
mov dword [edi + 8], 1
jmp case.default.0x4077a6
mov bl, byte [esp + 0x18]
cmp bl, 0x3f
jne 0x4078b1
test ebp, ebp
jne 0x4078b1
cmp byte [esi + 0x44c], 0
jne 0x4078b1
xor bl, bl
mov eax, edi
call fcn.004074a0
test eax, eax
jl 0x407771
inc byte [esi + 0xc7f]
mov al, byte [esi + 0xc7f]
cmp al, 0xa8
jb 0x407b62
cmp al, 0xa8
jne 0x407abd
push str.More_hdr_frags_than_we_can_deal_with_n
push 2
call fcn.00403280
add esp, 8
pop edi
pop esi
pop ebp
or eax, 0xffffffff
pop ebx
ret
mov cx, word [esi + 0xc7c]
movzx eax, al
lea eax, [eax + eax*2]
mov word [esi + eax*2 + 8], cx
movzx eax, byte [esi + 0xc7f]
lea edx, [eax + eax*2]
xor eax, eax
mov word [esi + edx*2 + 0xa], ax
movzx eax, byte [esi + 0xc7f]
add eax, 2
lea ecx, [eax + eax*2]
mov byte [esi + ecx*2], 0
movzx edx, byte [edi + 0x16]
movzx eax, byte [edx + esi + 0x400]
test eax, eax
jne 0x407b19
movzx eax, byte [edi + 0x16]
mov cl, byte [esi + 0xc7f]
pop edi
mov byte [eax + esi + 0x400], cl
pop esi
pop ebp
xor eax, eax
pop ebx
ret
lea edx, [eax + eax*2 + 6]
cmp byte [esi + edx*2], 0
lea ecx, [esi + edx*2]
je 0x407b40
jmp 0x407b30
movzx eax, byte [ecx]
lea ecx, [eax + eax*2 + 6]
cmp byte [esi + ecx*2], 0
lea ecx, [esi + ecx*2]
jne 0x407b30
lea edx, [eax + eax*2 + 6]
mov al, byte [esi + 0xc7f]
mov byte [esi + edx*2], al
mov bl, 0x20
mov eax, edi
call fcn.004074a0
test eax, eax
jge case.0x407572.88
pop edi
pop esi
pop ebp
or eax, 0xffffffff
pop ebx
ret
mov dx, word [esi + 0xc7c]
movzx eax, al
lea ecx, [eax + eax*2]
mov word [esi + ecx*2 + 8], dx
movzx eax, byte [esi + 0xc7f]
lea eax, [eax + eax*2]
xor ecx, ecx
mov word [esi + eax*2 + 0xa], cx
movzx eax, byte [esi + 0xc7f]
add eax, 2
lea edx, [eax + eax*2]
xor eax, eax
mov byte [esi + edx*2], al
mov byte [edi + 0x15], al
mov cl, byte [esi + 0xc7f]
mov byte [esi + 0x44c], cl
mov dword [edi + 8], eax
jmp 0x4078de
lea edx, [ecx + ecx*2]
movzx ecx, word [eax + edx*2 + 8]
add ecx, dword [eax + 4]
push ecx
call dword [sym.imp.MSVCR90.dll_atoi]
add esp, 4
mov byte [edi + 0x125], al
or dword [edi + 0x120], 1
mov byte [edi + 0x16], 0x58
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
ret