Function at 0x421be0
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.0x421c02
jmp dword [ecx*4 + 0x42226c]
mov eax, dword [esp + 0x18]
movsx ecx, word [edi + 0x10]
push eax
push ecx
call fcn.004214a0
add esp, 8
mov word [edi + 0x10], ax
test ax, ax
jge 0x421c69
cmp byte [edi + 0x126], 0
jne 0x421c5e
xor eax, eax
nop
movzx edx, byte [eax + 0x61cb78]
cmp byte [edx + esi + 0x400], 0
jne 0x421c49
inc eax
cmp eax, 6
jb 0x421c30
jmp 0x421c4d
mov byte [edi + 0x16], 0x56
cmp eax, 6
jne case.0x421c02.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 + 0x6ec0e0], 8
jae case.0x421c02.88
movsx ecx, ax
movzx eax, byte [ecx + 0x6ec0e0]
movzx edx, byte [ecx + 0x6ec0e1]
shl eax, 8
or eax, edx
xor ecx, ecx
movzx edx, byte [ecx + 0x61cb78]
cmp eax, edx
jne 0x421ca6
cmp byte [edx + esi + 0x400], 0
jne 0x421cd0
inc ecx
cmp ecx, 6
jb 0x421c91
cmp eax, 0x22
jne 0x421cb6
mov eax, 6
mov byte [edi + 0x16], al
mov ecx, dword [ebx + 0x160]
test ecx, ecx
je 0x421ce7
movzx edx, al
mov cx, word [ecx + edx*2]
mov word [edi + 0x12], cx
jmp 0x421cf2
push str.Duplicated_method_n
push 2
call fcn.0041dc50
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 0x421f78
inc byte [esi + 0xc7f]
mov al, byte [esi + 0xc7f]
jmp 0x422132
cmp byte [esp + 0x18], 0xd
jne case.0x421c02.88
mov byte [edi + 0x16], 0x57
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
ret
cmp byte [esp + 0x18], 0xa
jne 0x421c5e
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 0x421d5a
cmp bl, 0x20
je case.0x421c02.88
mov cl, byte [edi + 0x16]
xor eax, eax
nop
cmp cl, byte [eax + 0x61cb78]
je 0x421d6e
inc eax
cmp eax, 6
jb 0x421d60
cmp eax, 6
je 0x421f41
cmp bl, 0x20
jne 0x421dbc
movzx eax, byte [esi + 0xc7f]
lea edx, [eax + eax*2]
cmp word [esi + edx*2 + 0xa], bp
jne 0x421d9a
mov bl, 0x2f
mov eax, edi
call fcn.00421b30
test eax, eax
jl 0x421e01
xor bl, bl
mov eax, edi
call fcn.00421b30
test eax, eax
jl 0x421e01
mov byte [edi + 0x16], 0xf
inc byte [esi + 0xc7f]
mov al, byte [esi + 0xc7f]
jmp 0x422132
mov eax, dword [edi + 0xc]
sub eax, 0
je 0x421e69
sub eax, 1
je 0x421e3d
sub eax, 1
jne 0x421e2a
mov al, bl
call fcn.00421af0
mov bl, al
test bl, bl
jge 0x421e09
mov bl, 0x25
mov eax, edi
call fcn.00421b30
test eax, eax
jl 0x421e01
movzx eax, byte [edi + 0x14]
push eax
push edi
mov dword [edi + 0xc], ebp
call fcn.00421be0
add esp, 8
test eax, eax
jge 0x421e26
pop edi
pop esi
pop ebp
or eax, 0xffffffff
pop ebx
ret
mov al, byte [edi + 0x14]
call fcn.00421af0
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.0x421e36
jmp dword [eax*4 + 0x42227c]
mov al, bl
call fcn.00421af0
test al, al
jge 0x421e5a
mov bl, 0x25
mov eax, edi
call fcn.00421b30
test eax, eax
jl 0x421e01
mov dword [edi + 0xc], ebp
jmp 0x421e26
mov byte [edi + 0x14], bl
mov dword [edi + 0xc], 2
jmp 0x421f6e
cmp bl, 0x25
jne 0x421e2a
mov dword [edi + 0xc], 1
jmp 0x421f6e
test bl, bl
je 0x421e01
cmp bl, 0x26
je 0x421e8c
cmp bl, 0x3b
jne 0x421f21
test ebp, ebp
jne 0x421f21
mov eax, edi
call fcn.00421b30
test eax, eax
jl 0x421e01
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 0x422134
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 0x421f6e
cmp bl, 0x3d
jne 0x421fba
test ebp, ebp
je 0x421fb4
cmp byte [edi + 0x15], 0
jne 0x421f41
mov byte [esp + 0x18], 0x5f
mov bl, byte [esp + 0x18]
cmp byte [edi + 0x16], 8
je 0x421f59
cmp bl, 0xd
jne 0x421f59
mov byte [esp + 0x18], 0
mov bl, byte [esp + 0x18]
mov byte [edi + 0x16], 0x57
mov eax, edi
call fcn.00421b30
test eax, eax
jl 0x421e01
jbe 0x421f6e
mov byte [edi + 0x16], 0x56
cmp byte [edi + 0x16], 8
jne case.0x421c02.88
push 5
push edi
call fcn.00421860
add esp, 8
test eax, eax
je 0x422259
push 0x21
push edi
call fcn.00421860
add esp, 8
test eax, eax
je 0x422259
mov eax, dword [edi]
movzx ecx, byte [eax + 0x421]
test ecx, ecx
jne 0x42223e
jmp 0x422249
mov byte [edi + 0x15], 1
jmp 0x421f41
cmp bl, 0x2b
jne 0x421fd1
test ebp, ebp
jne 0x421f41
mov byte [esp + 0x18], 0x20
jmp 0x421f3d
cmp bl, 0x2f
jne case.default.0x421e36
cmp byte [esi + 0x44c], 0
jne 0x421f41
mov dword [edi + 8], 1
jmp 0x421f41
cmp bl, 0x2f
je 0x421f6e
cmp bl, 0x2e
jne 0x42200d
mov dword [edi + 8], 2
jmp 0x421f6e
mov dword [edi + 8], 0
jmp case.default.0x421e36
cmp bl, 0x2e
jne 0x4220a3
movzx eax, byte [esi + 0xc7f]
lea edx, [eax + eax*2]
cmp word [esi + edx*2 + 0xa], 2
lea eax, [esi + edx*2 + 0xa]
jbe 0x422097
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 0x422060
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 0x422097
movzx ecx, word [esi + 0xc7c]
mov edx, dword [esi + 4]
cmp byte [ecx + edx], 0x2f
jne 0x422060
mov dword [edi + 8], 3
jmp 0x421f6e
cmp bl, 0x2f
jne 0x4220b4
mov dword [edi + 8], 1
jmp 0x421f6e
mov bl, 0x2e
mov eax, edi
mov dword [edi + 8], 0
call fcn.00421b30
test eax, eax
jge 0x4220eb
pop edi
pop esi
pop ebp
or eax, 0xffffffff
pop ebx
ret
cmp bl, 0x2e
je 0x421f6e
cmp bl, 0x2f
je 0x421f6e
mov dword [edi + 8], 1
jmp case.default.0x421e36
mov bl, byte [esp + 0x18]
cmp bl, 0x3f
jne 0x421f41
test ebp, ebp
jne 0x421f41
cmp byte [esi + 0x44c], 0
jne 0x421f41
xor bl, bl
mov eax, edi
call fcn.00421b30
test eax, eax
jl 0x421e01
inc byte [esi + 0xc7f]
mov al, byte [esi + 0xc7f]
cmp al, 0xa8
jb 0x4221f2
cmp al, 0xa8
jne 0x42214d
push str.More_hdr_frags_than_we_can_deal_with_n
push 2
call fcn.0041dc50
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 0x4221a9
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 0x4221d0
jmp 0x4221c0
movzx eax, byte [ecx]
lea ecx, [eax + eax*2 + 6]
cmp byte [esi + ecx*2], 0
lea ecx, [esi + ecx*2]
jne 0x4221c0
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.00421b30
test eax, eax
jge case.0x421c02.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 0x421f6e
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