Function at 0x4248c0
Capabilities:
Parse credit card information

Disassembly:
sub esp, 8
push ebx
push ebp
push esi
push edi
mov edi, eax
mov dl, byte [edi + 0x24]
mov esi, dword [edi]
mov ebx, dword [edi + 0xe8]
movzx eax, dl
xor ebp, ebp
lea ecx, [eax - 0x57]
cmp ecx, 3
mov dword [esp + 0x14], ebp
ja case.default.0x4248e9
jmp dword [ecx*4 + 0x425044]
movsx ecx, word [edi + 0x1c]
mov dl, byte [esp + 0x1c]
call fcn.004240d0
test ax, ax
mov word [edi + 0x1c], ax
jge 0x424951
cmp byte [edi + 0x166], 0
jne 0x424943
xor eax, eax
movzx ecx, byte [eax + 0x52f454]
cmp byte [ecx + esi + 0x418], 0
jne 0x42492c
add eax, 1
cmp eax, 6
jb 0x424911
jmp 0x424930
mov byte [edi + 0x24], 0x58
cmp eax, 6
je 0x424d1f
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 8
ret
mov byte [edi + 0x24], 0x58
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 8
ret
movsx edx, ax
cmp byte [edx + 0x543a98], 8
jae case.0x4248e9.90
movsx eax, ax
xor edx, edx
mov dh, byte [eax + 0x543a98]
mov dl, byte [eax + 0x543a99]
xor eax, eax
movzx ecx, byte [eax + 0x52f454]
cmp edx, ecx
jne 0x424989
cmp byte [ecx + esi + 0x418], 0
jne 0x4249b5
add eax, 1
cmp eax, 6
jb 0x424974
cmp edx, 0x22
jne 0x42499b
mov edx, 6
mov byte [edi + 0x24], dl
mov eax, dword [ebx + 0x16c]
test eax, eax
je 0x4249d2
movzx ecx, dl
mov ax, word [eax + ecx*2]
mov word [edi + 0x1e], ax
jmp 0x4249dd
push str.Duplicated_method_n
mov esi, 2
call fcn.004214d0
add esp, 4
or eax, 0xffffffff
pop edi
pop esi
pop ebp
pop ebx
add esp, 8
ret
mov cx, word [ebx + 0x228]
mov word [edi + 0x1e], cx
cmp dl, 8
je 0x424d15
add byte [esi + 0xc99], 1
mov al, byte [esi + 0xc99]
jmp 0x424e5b
cmp byte [esp + 0x1c], 0xd
jne case.0x4248e9.90
mov byte [edi + 0x24], 0x59
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 8
ret
cmp dword [edi + 0x18], ebp
jne 0x424d1f
cmp byte [esp + 0x1c], 0xa
jne 0x424943
mov byte [edi + 0x24], 0x57
mov word [edi + 0x1c], bp
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 8
ret
movzx eax, byte [eax + esi + 0x418]
mov bl, byte [esp + 0x1c]
lea eax, [eax + eax*2]
cmp word [esi + eax*2 + 0xa], bp
jne 0x424a56
cmp bl, 0x20
je case.0x4248e9.90
xor eax, eax
cmp dl, byte [eax + 0x52f454]
je 0x424a68
add eax, 1
cmp eax, 6
jb 0x424a58
cmp eax, 6
je 0x424cd8
cmp bl, 0x20
jne 0x424b2c
movzx eax, byte [esi + 0xc99]
lea ecx, [eax + eax*2]
cmp word [esi + ecx*2 + 0xa], bp
jne 0x424a9c
mov bl, 0x2f
mov eax, edi
call fcn.004247d0
test eax, eax
jl 0x424dd6
cmp dword [edi + 0x14], 3
jne 0x424b05
movzx eax, byte [esi + 0xc99]
lea edx, [eax + eax*2]
cmp word [esi + edx*2 + 0xa], 2
lea eax, [esi + edx*2 + 0xa]
jbe 0x424b05
mov ecx, 0xffff
add word [esi + 0xc96], cx
add word [eax], cx
movzx eax, byte [esi + 0xc99]
lea eax, [eax + eax*2]
lea eax, [esi + eax*2 + 0xa]
add word [esi + 0xc96], cx
add word [eax], cx
movzx eax, byte [esi + 0xc99]
lea edx, [eax + eax*2]
cmp word [esi + edx*2 + 0xa], 1
lea eax, [esi + edx*2 + 0xa]
jbe 0x424b05
movzx edx, word [esi + 0xc96]
mov ebx, dword [esi + 4]
cmp byte [edx + ebx], 0x2f
jne 0x424ad5
xor bl, bl
mov eax, edi
call fcn.004247d0
test eax, eax
jl 0x424dd6
mov byte [edi + 0x24], 0xf
add byte [esi + 0xc99], 1
mov al, byte [esi + 0xc99]
jmp 0x424e5b
mov eax, dword [edi + 0x18]
sub eax, 0
je 0x424bf4
sub eax, 1
je 0x424bb7
sub eax, 1
jne 0x424ba4
mov al, bl
sub al, 0x30
cmp al, 9
jbe 0x424b6a
mov al, bl
sub al, 0x61
cmp al, 5
ja 0x424b58
mov al, bl
sub al, 0x57
jmp 0x424b6a
mov cl, bl
sub cl, 0x41
cmp cl, 5
ja 0x424d1f
mov al, bl
sub al, 0x37
test al, al
jl 0x424d1f
mov al, byte [edi + 0x22]
call fcn.004247a0
shl al, 4
mov byte [esp + 0x13], al
mov al, bl
call fcn.004247a0
mov cl, byte [esp + 0x13]
or cl, al
mov ebp, 1
mov byte [esp + 0x1c], cl
mov dword [esp + 0x14], ebp
mov dword [edi + 0x18], 0
mov bl, cl
mov eax, dword [edi + 0x14]
cmp eax, 3
ja case.default.0x424bb0
jmp dword [eax*4 + 0x425054]
mov al, bl
sub al, 0x30
cmp al, 9
jbe 0x424bdd
mov dl, bl
sub dl, 0x61
cmp dl, 5
mov al, bl
ja 0x424bcf
sub al, 0x57
jmp 0x424bdd
sub al, 0x41
cmp al, 5
ja 0x424d1f
mov al, bl
sub al, 0x37
test al, al
jl 0x424d1f
mov byte [edi + 0x22], bl
mov dword [edi + 0x18], 2
jmp 0x424d0b
cmp bl, 0x25
jne 0x424ba4
mov dword [edi + 0x18], 1
jmp 0x424d0b
test bl, bl
je 0x424dd6
cmp bl, 0x26
je 0x424c1b
cmp bl, 0x3b
jne 0x424caf
test ebp, ebp
jne 0x424caf
mov eax, edi
call fcn.004247d0
test eax, eax
jl 0x424dd6
movzx eax, byte [esi + 0xc99]
lea ecx, [eax + eax*2]
add word [esi + ecx*2 + 0xa], 0xffff
lea eax, [esi + ecx*2 + 0xa]
mov al, byte [esi + 0xc99]
mov dl, al
movzx eax, al
add eax, 2
add dl, 1
lea eax, [eax + eax*2]
mov byte [esi + eax*2], dl
add byte [esi + 0xc99], 1
mov al, byte [esi + 0xc99]
cmp al, 0xac
jae 0x424e5d
xor ecx, ecx
mov byte [edi + 0x23], cl
movzx eax, byte [esi + 0xc99]
lea edx, [eax + eax*2]
mov ax, word [esi + 0xc96]
mov word [esi + edx*2 + 8], ax
movzx eax, byte [esi + 0xc99]
lea edx, [eax + eax*2]
mov word [esi + edx*2 + 0xa], cx
movzx eax, byte [esi + 0xc99]
add eax, 2
lea eax, [eax + eax*2]
mov byte [esi + eax*2], cl
jmp 0x424d0b
cmp bl, 0x3d
jne 0x424d4c
test ebp, ebp
je 0x424d46
cmp byte [esi + 0x464], 0
je 0x424cd8
cmp byte [edi + 0x23], 0
jne 0x424cd8
mov byte [esp + 0x1c], 0x5f
mov bl, byte [esp + 0x1c]
cmp byte [edi + 0x24], 8
je 0x424cf6
cmp bl, 0xd
jne 0x424cf6
cmp dword [edi + 0x18], 0
jne 0x424d1f
mov byte [esp + 0x1c], 0
mov bl, byte [esp + 0x1c]
mov byte [edi + 0x24], 0x59
mov eax, edi
call fcn.004247d0
test eax, eax
jl 0x424dd6
jbe 0x424d0b
mov byte [edi + 0x24], 0x58
cmp byte [edi + 0x24], 8
jne case.0x4248e9.90
cmp dword [edi + 0x18], 0
je 0x424fe5
push str._forbidding_on_uri_sanitation_n
mov esi, 4
call fcn.004214d0
add esp, 4
mov ecx, 0x193
call fcn.00423ed0
or eax, 0xffffffff
pop edi
pop esi
pop ebp
pop ebx
add esp, 8
ret
mov byte [edi + 0x23], 1
jmp 0x424cd8
cmp bl, 0x2b
jne 0x424d5f
test ebp, ebp
jne 0x424cd8
mov byte [esp + 0x1c], 0x20
jmp 0x424cd4
cmp bl, 0x2f
jne case.default.0x424bb0
cmp byte [esi + 0x464], 0
jne 0x424cd8
mov dword [edi + 0x14], 1
jmp 0x424cd8
cmp bl, 0x2f
je 0x424d0b
cmp bl, 0x2e
jne 0x424d97
mov dword [edi + 0x14], 2
jmp 0x424d0b
mov dword [edi + 0x14], 0
jmp case.default.0x424bb0
cmp bl, 0x2e
jne 0x424db1
mov dword [edi + 0x14], 3
jmp 0x424d0b
cmp bl, 0x2f
jne 0x424dc2
mov dword [edi + 0x14], 1
jmp 0x424d0b
mov bl, 0x2e
mov eax, edi
mov dword [edi + 0x14], 0
call fcn.004247d0
test eax, eax
jge 0x424e0e
or eax, 0xffffffff
pop edi
pop esi
pop ebp
pop ebx
add esp, 8
ret
cmp bl, 0x2f
je 0x424e6d
cmp bl, 0x3f
je 0x424e6d
mov bl, 0x2e
mov eax, edi
call fcn.004247d0
test eax, eax
jl 0x424dd6
mov eax, edi
call fcn.004247d0
test eax, eax
jl 0x424dd6
mov dword [edi + 0x14], 0
mov bl, byte [esp + 0x1c]
cmp bl, 0x3f
jne 0x424cd8
test ebp, ebp
jne 0x424cd8
cmp byte [esi + 0x464], 0
jne 0x424cd8
cmp dword [edi + 0x18], ebp
jne 0x424d1f
xor bl, bl
mov eax, edi
call fcn.004247d0
test eax, eax
jl 0x424dd6
add byte [esi + 0xc99], 1
mov al, byte [esi + 0xc99]
cmp al, 0xac
jb 0x424f9b
cmp al, 0xac
jne 0x424ef6
push str.More_hdr_frags_than_we_can_deal_with_n
jmp 0x4249ba
movzx eax, byte [esi + 0xc99]
lea ecx, [eax + eax*2]
cmp word [esi + ecx*2 + 0xa], 2
lea eax, [esi + ecx*2 + 0xa]
jbe 0x424ed4
mov ecx, 0xffff
add word [esi + 0xc96], cx
add word [eax], cx
movzx eax, byte [esi + 0xc99]
lea edx, [eax + eax*2]
lea eax, [esi + edx*2 + 0xa]
add word [esi + 0xc96], cx
add word [eax], cx
movzx eax, byte [esi + 0xc99]
lea eax, [eax + eax*2]
cmp word [esi + eax*2 + 0xa], 1
lea eax, [esi + eax*2 + 0xa]
jbe 0x424ed4
movzx edx, word [esi + 0xc96]
mov ebp, dword [esi + 4]
cmp byte [edx + ebp], 0x2f
mov ebp, dword [esp + 0x14]
jne 0x424ea0
mov ecx, 1
mov dword [edi + 0x14], ecx
movzx eax, byte [esi + 0xc99]
lea eax, [eax + eax*2]
cmp word [esi + eax*2 + 0xa], cx
ja case.default.0x424bb0
jmp 0x424d0b
mov dx, word [esi + 0xc96]
movzx eax, al
lea ecx, [eax + eax*2]
mov word [esi + ecx*2 + 8], dx
movzx eax, byte [esi + 0xc99]
lea eax, [eax + eax*2]
mov word [esi + eax*2 + 0xa], 0
movzx eax, byte [esi + 0xc99]
add eax, 2
lea ecx, [eax + eax*2]
mov byte [esi + ecx*2], 0
movzx edx, byte [edi + 0x24]
movzx eax, byte [edx + esi + 0x418]
test eax, eax
jne 0x424f55
movzx eax, byte [edi + 0x24]
mov cl, byte [esi + 0xc99]
mov byte [eax + esi + 0x418], cl
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 8
ret
lea edx, [eax + eax*2 + 6]
cmp byte [esi + edx*2], 0
lea ecx, [esi + edx*2]
je 0x424f72
movzx eax, byte [ecx]
lea ecx, [eax + eax*2 + 6]
cmp byte [esi + ecx*2], 0
lea ecx, [esi + ecx*2]
jne 0x424f62
lea edx, [eax + eax*2 + 6]
mov al, byte [esi + 0xc99]
mov byte [esi + edx*2], al
mov bl, 0x20
mov eax, edi
call fcn.004247d0
test eax, eax
jge case.0x4248e9.90
or eax, 0xffffffff
pop edi
pop esi
pop ebp
pop ebx
add esp, 8
ret
mov dx, word [esi + 0xc96]
movzx eax, al
lea ecx, [eax + eax*2]
mov word [esi + ecx*2 + 8], dx
movzx eax, byte [esi + 0xc99]
xor ecx, ecx
lea eax, [eax + eax*2]
mov word [esi + eax*2 + 0xa], cx
movzx eax, byte [esi + 0xc99]
add eax, 2
lea edx, [eax + eax*2]
mov byte [esi + edx*2], cl
mov byte [edi + 0x23], cl
mov al, byte [esi + 0xc99]
mov byte [esi + 0x464], al
mov dword [edi + 0x14], ecx
jmp 0x424d0b
push 5
mov ecx, edi
call fcn.00424560
add esp, 4
test eax, eax
je 0x42502c
push 0x21
mov ecx, edi
call fcn.00424560
add esp, 4
test eax, eax
je 0x42502c
mov eax, dword [edi]
movzx ecx, byte [eax + 0x439]
test ecx, ecx
je 0x42501d
lea ecx, [ecx + ecx*2]
movzx ecx, word [eax + ecx*2 + 8]
add ecx, dword [eax + 4]
push ecx
call fcn.004b941e
add esp, 4
mov byte [edi + 0x165], al
or dword [edi + 0x160], 1
mov byte [edi + 0x24], 0x5a
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 8
ret